[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / thumb2-teq.ll
blob825184a8ff3d79c1ab1214dcbbfb753c3839842c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s
4 ; These tests would be improved by 'movs r0, #0' being rematerialized below the
5 ; test as 'mov.w r0, #0'.
7 ; 0x000000bb = 187
8 define i32 @f2(i32 %a) {
9 ; CHECK-LABEL: f2:
10 ; CHECK:       @ %bb.0:
11 ; CHECK-NEXT:    movs r1, #24
12 ; CHECK-NEXT:    cmp r0, #187
13 ; CHECK-NEXT:    it eq
14 ; CHECK-NEXT:    moveq r1, #42
15 ; CHECK-NEXT:    mov r0, r1
16 ; CHECK-NEXT:    bx lr
17     %tmp = xor i32 %a, 187
18     %tmp1 = icmp eq i32 0, %tmp
19     %ret = select i1 %tmp1, i32 42, i32 24
20     ret i32 %ret
23 ; 0x00aa00aa = 11141290
24 define i32 @f3(i32 %a) {
25 ; CHECK-LABEL: f3:
26 ; CHECK:       @ %bb.0:
27 ; CHECK-NEXT:    movs r1, #24
28 ; CHECK-NEXT:    cmp.w r0, #11141290
29 ; CHECK-NEXT:    it eq
30 ; CHECK-NEXT:    moveq r1, #42
31 ; CHECK-NEXT:    mov r0, r1
32 ; CHECK-NEXT:    bx lr
33     %tmp = xor i32 %a, 11141290
34     %tmp1 = icmp eq i32 %tmp, 0
35     %ret = select i1 %tmp1, i32 42, i32 24
36     ret i32 %ret
39 ; 0xcc00cc00 = 3422604288
40 define i32 @f6(i32 %a) {
41 ; CHECK-LABEL: f6:
42 ; CHECK:       @ %bb.0:
43 ; CHECK-NEXT:    movs r1, #24
44 ; CHECK-NEXT:    cmp.w r0, #-872363008
45 ; CHECK-NEXT:    it eq
46 ; CHECK-NEXT:    moveq r1, #42
47 ; CHECK-NEXT:    mov r0, r1
48 ; CHECK-NEXT:    bx lr
49     %tmp = xor i32 %a, 3422604288
50     %tmp1 = icmp eq i32 0, %tmp
51     %ret = select i1 %tmp1, i32 42, i32 24
52     ret i32 %ret
55 ; 0xdddddddd = 3722304989
56 define i32 @f7(i32 %a) {
57 ; CHECK-LABEL: f7:
58 ; CHECK:       @ %bb.0:
59 ; CHECK-NEXT:    movs r1, #24
60 ; CHECK-NEXT:    cmp.w r0, #-572662307
61 ; CHECK-NEXT:    it eq
62 ; CHECK-NEXT:    moveq r1, #42
63 ; CHECK-NEXT:    mov r0, r1
64 ; CHECK-NEXT:    bx lr
65     %tmp = xor i32 %a, 3722304989
66     %tmp1 = icmp eq i32 %tmp, 0
67     %ret = select i1 %tmp1, i32 42, i32 24
68     ret i32 %ret
71 ; 0x00110000 = 1114112
72 define i32 @f10(i32 %a) {
73 ; CHECK-LABEL: f10:
74 ; CHECK:       @ %bb.0:
75 ; CHECK-NEXT:    movs r1, #24
76 ; CHECK-NEXT:    cmp.w r0, #1114112
77 ; CHECK-NEXT:    it eq
78 ; CHECK-NEXT:    moveq r1, #42
79 ; CHECK-NEXT:    mov r0, r1
80 ; CHECK-NEXT:    bx lr
81     %tmp = xor i32 %a, 1114112
82     %tmp1 = icmp eq i32 0, %tmp
83     %ret = select i1 %tmp1, i32 42, i32 24
84     ret i32 %ret
87 ; 0x000000bb = 187
88 define i1 @f12(i32 %a) {
89 ; CHECK-LABEL: f12:
90 ; CHECK:       @ %bb.0:
91 ; CHECK-NEXT:    subs r0, #187
92 ; CHECK-NEXT:    clz r0, r0
93 ; CHECK-NEXT:    lsrs r0, r0, #5
94 ; CHECK-NEXT:    bx lr
95     %tmp = xor i32 %a, 187
96     %tmp1 = icmp eq i32 0, %tmp
97     ret i1 %tmp1
100 ; 0x00aa00aa = 11141290
101 define i1 @f13(i32 %a) {
102 ; CHECK-LABEL: f13:
103 ; CHECK:       @ %bb.0:
104 ; CHECK-NEXT:    sub.w r0, r0, #11141290
105 ; CHECK-NEXT:    clz r0, r0
106 ; CHECK-NEXT:    lsrs r0, r0, #5
107 ; CHECK-NEXT:    bx lr
108     %tmp = xor i32 %a, 11141290
109     %tmp1 = icmp eq i32 %tmp, 0
110     ret i1 %tmp1
113 ; 0xcc00cc00 = 3422604288
114 define i1 @f16(i32 %a) {
115 ; CHECK-LABEL: f16:
116 ; CHECK:       @ %bb.0:
117 ; CHECK-NEXT:    sub.w r0, r0, #-872363008
118 ; CHECK-NEXT:    clz r0, r0
119 ; CHECK-NEXT:    lsrs r0, r0, #5
120 ; CHECK-NEXT:    bx lr
121     %tmp = xor i32 %a, 3422604288
122     %tmp1 = icmp eq i32 0, %tmp
123     ret i1 %tmp1
126 ; 0xdddddddd = 3722304989
127 define i1 @f17(i32 %a) {
128 ; CHECK-LABEL: f17:
129 ; CHECK:       @ %bb.0:
130 ; CHECK-NEXT:    sub.w r0, r0, #-572662307
131 ; CHECK-NEXT:    clz r0, r0
132 ; CHECK-NEXT:    lsrs r0, r0, #5
133 ; CHECK-NEXT:    bx lr
134     %tmp = xor i32 %a, 3722304989
135     %tmp1 = icmp eq i32 %tmp, 0
136     ret i1 %tmp1
139 ; 0x00110000 = 1114112
140 define i1 @f18(i32 %a) {
141 ; CHECK-LABEL: f18:
142 ; CHECK:       @ %bb.0:
143 ; CHECK-NEXT:    sub.w r0, r0, #1114112
144 ; CHECK-NEXT:    clz r0, r0
145 ; CHECK-NEXT:    lsrs r0, r0, #5
146 ; CHECK-NEXT:    bx lr
147     %tmp = xor i32 %a, 1114112
148     %tmp1 = icmp eq i32 0, %tmp
149     ret i1 %tmp1