2 * tests for arithmetic instruction relaxation
7 .include "relaxation_macro.h"
9 .macro _arith_op_pattern insn insn1
10 insn_32 "\insn r0, r0, r15"
12 tran_16_32 "\insn! r0, r15", "\insn r0, r0, r15"
16 insn_32 "\insn1 r0, r0, r15"
17 insn_32 "\insn r0, r0, r16"
18 insn_32 "\insn r16, r16, r0"
19 insn_32 "\insn r16, r16, r17"
20 insn_32 "\insn r0, r1, r2"
24 /* add rD,rA,rB -> add! rD,rA */
25 _arith_op_pattern "add", "add.c"
27 /* sub rD,rA,rB -> sub rD,rA */
28 _arith_op_pattern "sub", "sub.c"
30 /* addi rD,SImm16 -> addi! rD,SImm6 */
31 insn_32 "addi r0, -32"
33 insn_32 "addi r15, -32"
34 insn_32 "addi r15, 31"
36 tran_16_32 "addi! r0,-32", "addi r0,-32"
39 insn_32 "addi.c r0, -32"
40 insn_32 "addi r0, -33"
42 insn_32 "addi r16, -32"
43 insn_32 "addi r16, 31"