Why the Cortex M4 instruction SMMUL (32 = 32 x 32b) preserves a redundant sign bit and discards one useful bit of information? What could possibly be the justification for such blatant disregard of the ISO/IEC TR 18037 standard Fract format?
The ARM DSP extension including the SMMUL instruction was introduced into the ARM architecture in 2000 in ARMv5TE in 2004 in ARMv6.
I see it was added after the other DSP instructions, a bit later than I thought but still before the standard..And they refer to it as an extended multiply instruction rather than DSP, it might have helped if it was thought as DSP.
Looking a bit deeper as that struck me as a bit wrong - the ARM1136 technical Manual r0p1 from February 2003 has SMMUL in it even though that is before ARMv6 was defined. ARM wasn't so rigorous about versions and features then. ARM1136 was upgraded a bit when the ARMv6 definition came out but it already had this instruction.