← board

arm32: round or trunc of a 32-bit int leaves the high word garbage

print(round(7))   # arm32: 582096337806295047; x = 7; round(x) was fine

These rows differed: test_nilpy_round_keeps_intness and test_nilpy_round_ndigits_keeps_int (round(7) gave -4294967289 there).

Fix

In the ir_codegen_arm32.inc intrinsic 203/204 integer-argument arm, when the result is 64-bit and the source is not, the source's signedness decides:

Test

Rows for both round tests in test-arm32. Wrong with v446 and p447.