Revision db6e2e65
b/target-arm/helper.c | ||
---|---|---|
2171 | 2171 |
/* Signed modulo arithmetic. */ |
2172 | 2172 |
#define SARITH16(a, b, n, op) do { \ |
2173 | 2173 |
int32_t sum; \ |
2174 |
sum = (int16_t)((uint16_t)(a) op (uint16_t)(b)); \
|
|
2174 |
sum = (int32_t)(int16_t)(a) op (int32_t)(int16_t)(b); \
|
|
2175 | 2175 |
RESULT(sum, n, 16); \ |
2176 | 2176 |
if (sum >= 0) \ |
2177 | 2177 |
ge |= 3 << (n * 2); \ |
... | ... | |
2179 | 2179 |
|
2180 | 2180 |
#define SARITH8(a, b, n, op) do { \ |
2181 | 2181 |
int32_t sum; \ |
2182 |
sum = (int8_t)((uint8_t)(a) op (uint8_t)(b)); \
|
|
2182 |
sum = (int32_t)(int8_t)(a) op (int32_t)(int8_t)(b); \
|
|
2183 | 2183 |
RESULT(sum, n, 8); \ |
2184 | 2184 |
if (sum >= 0) \ |
2185 | 2185 |
ge |= 1 << n; \ |
Also available in: Unified diff