| /* |
| * tests for bit operations' instruction relaxation |
| * |
| * Author: libin |
| */ |
| |
| .include "relaxation_macro.h" |
| |
| .macro _bit_op_pattern insn insn1 |
| insn_32 "\insn r0, r0, 0" |
| insn_32 "\insn r0, r0, 0x1f" |
| insn_32 "\insn r15, r15, 0" |
| insn_32 "\insn r15, r15, 0x1f" |
| |
| tran_16_32 "\insn! r0,0", "\insn r0,r0,0" |
| |
| /* shouldn't alter */ |
| insn_32 "\insn1 r0, r0, 0" |
| insn_32 "\insn r16, r16, 0" |
| insn_32 "\insn r16, r16, 0x1f" |
| .endm |
| |
| .text |
| /* |
| * bitclr rD,rA,BN5 -> bitclr! rD,BN5 |
| * bitset rD,rA,BN5 -> bitset! rD,BN5 |
| * bittgl rD,rA,BN5 -> bittgl! rD,BN5 |
| */ |
| _bit_op_pattern "bitclr", "bitclr.c" |
| _bit_op_pattern "bitset", "bitset.c" |
| _bit_op_pattern "bittgl", "bittgl.c" |
| |
| /* bittst.c rA,BN5 <-> bittst! rD,BN5" */ |
| insn_32 "bittst.c r0, 0" |
| insn_32 "bittst.c r0, 0x1f" |
| insn_32 "bittst.c r15, 0" |
| insn_32 "bittst.c r15, 0x1f" |
| |
| tran_16_32 "bittst! r0,0", "bittst.c r0,0" |
| |
| /* shouldn't alter */ |
| insn_32 "bittst.c r16, 0" |
| insn_32 "bittst.c r16, 0x1f" |