1/*
2 * tests for bit operations' instruction relaxation
3 *
4 * Author: libin
5 */
6
7.include "relaxation_macro.h"
8
9.macro _bit_op_pattern insn insn1
10  insn_32 "\insn r0,  r0,  0"
11  insn_32 "\insn r0,  r0,  0x1f"
12  insn_32 "\insn r15, r15, 0"
13  insn_32 "\insn r15, r15, 0x1f"
14
15  tran_16_32 "\insn! r0,0", "\insn r0,r0,0"
16
17  /* shouldn't alter */
18  insn_32 "\insn1 r0,  r0,  0"
19  insn_32 "\insn  r16, r16, 0"
20  insn_32 "\insn  r16, r16, 0x1f"
21.endm
22
23.text
24/*
25 * bitclr rD,rA,BN5 -> bitclr! rD,BN5
26 * bitset rD,rA,BN5 -> bitset! rD,BN5
27 * bittgl rD,rA,BN5 -> bittgl! rD,BN5
28 */
29_bit_op_pattern "bitclr", "bitclr.c"
30_bit_op_pattern "bitset", "bitset.c"
31_bit_op_pattern "bittgl", "bittgl.c"
32
33/* bittst.c rA,BN5 <-> bittst! rD,BN5" */
34insn_32 "bittst.c r0,  0"
35insn_32 "bittst.c r0,  0x1f"
36insn_32 "bittst.c r15, 0"
37insn_32 "bittst.c r15, 0x1f"
38
39tran_16_32 "bittst! r0,0", "bittst.c r0,0"
40
41/* shouldn't alter */
42insn_32 "bittst.c r16, 0"
43insn_32 "bittst.c r16, 0x1f"
44