summaryrefslogtreecommitdiff
path: root/cpu/m32c.cpu
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-12-11 16:45:14 +1030
committerAlan Modra <amodra@gmail.com>2019-12-11 21:14:19 +1030
commit1d61b032265e69317f42e8019e072506f11890c5 (patch)
tree226c023afd93046735bb928dc67d6490f8466e97 /cpu/m32c.cpu
parent13c9c48599ebc8ad2f3a1fb9f672740219cd3841 (diff)
downloadbinutils-gdb-1d61b032265e69317f42e8019e072506f11890c5.tar.gz
Remove more shifts for sign/zero extension
cpu/ * epiphany.cpu (f-sdisp11): Don't sign extend with shifts. * lm32.cpu (f-branch, f-vall): Likewise. * m32.cpu (f-lab-8-16): Likewise. opcodes/ * arc-dis.c (BITS): Don't truncate high bits with shifts. * nios2-dis.c (nios2_print_insn_arg): Don't sign extend with shifts. * tic54x-dis.c (print_instruction): Likewise. * tilegx-opc.c (parse_insn_tilegx): Likewise. * tilepro-opc.c (parse_insn_tilepro): Likewise. * visium-dis.c (disassem_class0): Likewise. * pdp11-dis.c (sign_extend): Likewise. (SIGN_BITS): Delete. * epiphany-ibld.c: Regenerate. * lm32-ibld.c: Regenerate. * m32c-ibld.c: Regenerate.
Diffstat (limited to 'cpu/m32c.cpu')
-rw-r--r--cpu/m32c.cpu9
1 files changed, 6 insertions, 3 deletions
diff --git a/cpu/m32c.cpu b/cpu/m32c.cpu
index bcc36161f7c..5a38f1bd526 100644
--- a/cpu/m32c.cpu
+++ b/cpu/m32c.cpu
@@ -956,9 +956,12 @@
)
(df f-lab-8-16 "16 bit pc relative signed offset" (PCREL-ADDR SIGN-OPT all-isas) 8 16 UINT
((value pc) (or SI (sll (and (sub value (add pc 1)) #xff) 8)
- (srl (and (sub value (add pc 1)) #xffff) 8)))
- ((value pc) (add SI (or (srl (and value #xffff) 8)
- (sra (sll (and value #xff) 24) 16)) (add pc 1)))
+ (srl (and (sub value (add pc 1)) #xff00) 8)))
+ ((value pc) (add SI (sub (xor (or (srl (and value #xff00) 8)
+ (sll (and value #xff) 8))
+ #x8000)
+ #x8000)
+ (add pc 1)))
)
(df f-lab-8-24 "24 bit absolute" (all-isas ABS-ADDR) 8 24 UINT
((value pc) (or SI