mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-19 01:19:41 +08:00
If the value to be shifted has the sign bit set, the sign bit would get copied into bits 32..63 of the temporary. Those would then be right shifted into the final value giving an incorrect final result. This was observed with upcoming GCC improvements which eliminate unnecessary extensions.
29 lines
303 B
ArmAsm
29 lines
303 B
ArmAsm
# check that lsr works correctly
|
|
# mach: mcore
|
|
|
|
.include "testutils.inc"
|
|
|
|
start
|
|
# Construct -1
|
|
bmaski r2, 32
|
|
|
|
# Construct 24
|
|
movi r3, 24
|
|
|
|
# logical shift right by r3 (24)
|
|
lsr r2, r3
|
|
|
|
# Construct 255
|
|
bmaski r1, 8
|
|
|
|
# Compare them, they should be equal
|
|
cmpne r2,r1
|
|
jbt .L1
|
|
pass
|
|
.L1:
|
|
fail
|
|
|
|
|
|
|
|
|