[LLVMdev] arithmetical operands signedness (original) (raw)
Christophe de Dinechin christophe at taodyne.com
Mon Sep 5 09:35:03 PDT 2011
- Previous message: [LLVMdev] arithmetical operands signedness
- Next message: [LLVMdev] arithmetical operands signedness
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 5 sept. 2011, at 17:48, Duncan Sands wrote:
since the result of a multiply doesn't depend on the signedness, I find it strange that your target differentiates between them. What I'm saying is that if you have (say) two i32 numbers a and b and you do a signed multiply: c = a *s b and an unsigned multiply d = a *u b then c and d are the same number (exactly the same bits set).
At least two architectures I know about have size-extending multiplication, for which your statement is not true:
Motorola MC68K has i16 x 16 -> i32 instructions in signed and unsigned forms
Itanium has signed and unsigned multiplications with i64 x i64 -> i64 where you can take the high or low part of the resulting i128. While xma.lu is a pseudo-op since it's the same as xma.lu, xma.hu and xma.h (unsigned and signed) are distinct.
I'm pretty sure there are other similar architectures.
Regards Christophe
- Previous message: [LLVMdev] arithmetical operands signedness
- Next message: [LLVMdev] arithmetical operands signedness
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]