Make srem have the sign of the dividend.

This is how remainder is defined in C (as of C99), C++ (as of C++11), Rust,
and WebAssembly, for example.
This commit is contained in:
Dan Gohman
2017-05-09 11:43:58 -07:00
committed by Jakob Stoklund Olesen
parent 5bdb61a5f1
commit db9f64d2f3

View File

@@ -683,14 +683,13 @@ urem = Instruction(
srem = Instruction( srem = Instruction(
'srem', """ 'srem', """
Signed integer remainder. Signed integer remainder. The result has the sign of the dividend.
This operation traps if the divisor is zero. This operation traps if the divisor is zero.
.. todo:: Integer remainder vs modulus. .. todo:: Integer remainder vs modulus.
Clarify whether the result has the sign of the divisor or the Should we add a ``smod`` instruction for the case where
dividend. Should we add a ``smod`` instruction for the case where
the result has the same sign as the divisor? the result has the same sign as the divisor?
""", """,
ins=(x, y), outs=a, can_trap=True) ins=(x, y), outs=a, can_trap=True)