[LLVMdev] arithmetical operands signedness (original) (raw)
Duncan Sands baldrick at free.fr
Mon Sep 5 08:48:05 PDT 2011
- Previous message: [LLVMdev] arithmetical operands signedness
- Next message: [LLVMdev] arithmetical operands signedness
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Jonas,
my target handles operands of multiplying instructions differently based on signedness.
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).
I wonder then how I would do instruction selection based on the operands signs? The mul instruction sets a nsw for signed,
No it doesn't. nsw doesn't mean signed, it means that if the multiplication would overflow as a signed multiplication then the result is undefined which is completely different.
but when i try unsigned ops, there is
no wrap flag at all. I'm not sure this is enough information to work with, or?
No information is needed, see above.
Ciao, Duncan.
- Previous message: [LLVMdev] arithmetical operands signedness
- Next message: [LLVMdev] arithmetical operands signedness
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]