Lines Matching full:load

10 ; CHECK-NEXT:    [[LOAD:%.*]] = load i16, ptr [[X:%.*]], align 4
11 ; CHECK-NEXT: [[OR:%.*]] = icmp eq i16 [[LOAD]], 17791
14 %load = load i16, ptr %x, align 4
15 %trunc = trunc i16 %load to i8
17 %and = and i16 %load, -256
25 ; CHECK-NEXT: [[LOAD:%.*]] = load i16, ptr [[X:%.*]], align 4
26 ; CHECK-NEXT: [[OR:%.*]] = icmp eq i16 [[LOAD]], 17791
29 %load = load i16, ptr %x, align 4
30 %trunc = trunc i16 %load to i8
32 %and = and i16 %load, -256
40 ; CHECK-NEXT: [[LOAD:%.*]] = load <2 x i16>, ptr [[X:%.*]], align 4
41 ; CHECK-NEXT: [[OR:%.*]] = icmp eq <2 x i16> [[LOAD]], splat (i16 17791)
44 %load = load <2 x i16>, ptr %x, align 4
45 %trunc = trunc <2 x i16> %load to <2 x i8>
47 %and = and <2 x i16> %load, <i16 -256, i16 -256>
55 ; CHECK-NEXT: [[LOAD:%.*]] = load i16, ptr [[X:%.*]], align 4
56 ; CHECK-NEXT: [[OR:%.*]] = icmp eq i16 [[LOAD]], 32581
59 %load = load i16, ptr %x, align 4
60 %and = and i16 %load, -256
62 %trunc = trunc i16 %load to i8
70 ; CHECK-NEXT: [[LOAD:%.*]] = load i16, ptr [[X:%.*]], align 4
71 ; CHECK-NEXT: [[OR:%.*]] = icmp eq i16 [[LOAD]], 32581
74 %load = load i16, ptr %x, align 4
75 %and = and i16 %load, -256
77 %trunc = trunc i16 %load to i8
85 ; CHECK-NEXT: [[LOAD:%.*]] = load <2 x i16>, ptr [[X:%.*]], align 4
86 ; CHECK-NEXT: [[OR:%.*]] = icmp eq <2 x i16> [[LOAD]], splat (i16 32581)
89 %load = load <2 x i16>, ptr %x, align 4
90 %and = and <2 x i16> %load, <i16 -256, i16 -256>
92 %trunc = trunc <2 x i16> %load to <2 x i8>
98 define i1 @or_basic(i16 %load) {
100 ; CHECK-NEXT: [[OR:%.*]] = icmp ne i16 [[LOAD:%.*]], 17791
103 %trunc = trunc i16 %load to i8
105 %and = and i16 %load, -256
111 define i1 @or_basic_commuted(i16 %load) {
113 ; CHECK-NEXT: [[OR:%.*]] = icmp ne i16 [[LOAD:%.*]], 32581
116 %and = and i16 %load, -256
118 %trunc = trunc i16 %load to i8
124 define <2 x i1> @or_vector(<2 x i16> %load) {
126 ; CHECK-NEXT: [[OR:%.*]] = icmp ne <2 x i16> [[LOAD:%.*]], splat (i16 17791)
129 %trunc = trunc <2 x i16> %load to <2 x i8>
131 %and = and <2 x i16> %load, <i16 -256, i16 -256>
137 define i1 @or_nontrivial_mask1(i16 %load) {
139 ; CHECK-NEXT: [[TMP1:%.*]] = and i16 [[LOAD:%.*]], 4095
143 %trunc = trunc i16 %load to i8
145 %and = and i16 %load, 3840
151 define i1 @or_nontrivial_mask2(i16 %load) {
153 ; CHECK-NEXT: [[TMP1:%.*]] = and i16 [[LOAD:%.*]], -3841
157 %trunc = trunc i16 %load to i8
159 %and = and i16 %load, -4096
165 define i1 @or_extra_use1(i16 %load) {
167 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
170 ; CHECK-NEXT: [[AND:%.*]] = and i16 [[LOAD]], -4096
175 %trunc = trunc i16 %load to i8
178 %and = and i16 %load, -4096
184 define i1 @or_extra_use2(i16 %load) {
186 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
188 ; CHECK-NEXT: [[AND:%.*]] = and i16 [[LOAD]], -4096
194 %trunc = trunc i16 %load to i8
196 %and = and i16 %load, -4096
203 define i1 @or_extra_use3(i16 %load) {
205 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
207 ; CHECK-NEXT: [[TMP1:%.*]] = and i16 [[LOAD]], -3841
211 %trunc = trunc i16 %load to i8
214 %and = and i16 %load, -4096
220 define i1 @or_extra_use4(i16 %load) {
222 ; CHECK-NEXT: [[AND:%.*]] = and i16 [[LOAD:%.*]], -4096
224 ; CHECK-NEXT: [[TMP1:%.*]] = and i16 [[LOAD]], -3841
228 %trunc = trunc i16 %load to i8
230 %and = and i16 %load, -4096
237 define i1 @or_wrong_pred1(i16 %load) {
239 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
241 ; CHECK-NEXT: [[AND:%.*]] = and i16 [[LOAD]], -256
246 %trunc = trunc i16 %load to i8
248 %and = and i16 %load, -256
254 define i1 @or_wrong_pred2(i16 %load) {
256 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
258 ; CHECK-NEXT: [[AND:%.*]] = and i16 [[LOAD]], -256
263 %trunc = trunc i16 %load to i8
265 %and = and i16 %load, -256
271 define i1 @or_wrong_pred3(i16 %load) {
273 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
275 ; CHECK-NEXT: [[AND:%.*]] = and i16 [[LOAD]], -256
280 %trunc = trunc i16 %load to i8
282 %and = and i16 %load, -256
288 define i1 @or_wrong_op(i16 %load, i16 %other) {
290 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
297 %trunc = trunc i16 %load to i8
305 define i1 @or_wrong_const1(i16 %load) {
309 %trunc = trunc i16 %load to i8
311 %and = and i16 %load, -256
317 define i1 @or_wrong_const2(i16 %load) {
319 ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[LOAD:%.*]] to i8
321 ; CHECK-NEXT: [[AND:%.*]] = and i16 [[LOAD]], -255
326 %trunc = trunc i16 %load to i8
328 %and = and i16 %load, -255