xref: /llvm-project/llvm/test/CodeGen/X86/apx/or.ll (revision 3ad2399148953837622d78d18ae9fd0db6ad0557)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s
3; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -verify-machineinstrs --show-mc-encoding | FileCheck --check-prefix=NF %s
4
5define i8 @or8rr(i8 noundef %a, i8 noundef %b) {
6; CHECK-LABEL: or8rr:
7; CHECK:       # %bb.0: # %entry
8; CHECK-NEXT:    orl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x09,0xf7]
9; CHECK-NEXT:    # kill: def $al killed $al killed $eax
10; CHECK-NEXT:    retq # encoding: [0xc3]
11;
12; NF-LABEL: or8rr:
13; NF:       # %bb.0: # %entry
14; NF-NEXT:    {nf} orl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x09,0xf7]
15; NF-NEXT:    # kill: def $al killed $al killed $eax
16; NF-NEXT:    retq # encoding: [0xc3]
17entry:
18    %or = or i8 %a, %b
19    ret i8 %or
20}
21
22define i16 @or16rr(i16 noundef %a, i16 noundef %b) {
23; CHECK-LABEL: or16rr:
24; CHECK:       # %bb.0: # %entry
25; CHECK-NEXT:    orl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x09,0xf7]
26; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
27; CHECK-NEXT:    retq # encoding: [0xc3]
28;
29; NF-LABEL: or16rr:
30; NF:       # %bb.0: # %entry
31; NF-NEXT:    {nf} orl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x09,0xf7]
32; NF-NEXT:    # kill: def $ax killed $ax killed $eax
33; NF-NEXT:    retq # encoding: [0xc3]
34entry:
35    %or = or i16 %a, %b
36    ret i16 %or
37}
38
39define i32 @or32rr(i32 noundef %a, i32 noundef %b) {
40; CHECK-LABEL: or32rr:
41; CHECK:       # %bb.0: # %entry
42; CHECK-NEXT:    orl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x09,0xf7]
43; CHECK-NEXT:    retq # encoding: [0xc3]
44;
45; NF-LABEL: or32rr:
46; NF:       # %bb.0: # %entry
47; NF-NEXT:    {nf} orl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x09,0xf7]
48; NF-NEXT:    retq # encoding: [0xc3]
49entry:
50    %or = or i32 %a, %b
51    ret i32 %or
52}
53
54define i64 @or64rr(i64 noundef %a, i64 noundef %b) {
55; CHECK-LABEL: or64rr:
56; CHECK:       # %bb.0: # %entry
57; CHECK-NEXT:    orq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x09,0xf7]
58; CHECK-NEXT:    retq # encoding: [0xc3]
59;
60; NF-LABEL: or64rr:
61; NF:       # %bb.0: # %entry
62; NF-NEXT:    {nf} orq %rsi, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x09,0xf7]
63; NF-NEXT:    retq # encoding: [0xc3]
64entry:
65    %or = or i64 %a, %b
66    ret i64 %or
67}
68
69define i8 @or8rm(i8 noundef %a, ptr %b) {
70; CHECK-LABEL: or8rm:
71; CHECK:       # %bb.0: # %entry
72; CHECK-NEXT:    orb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x0a,0x3e]
73; CHECK-NEXT:    retq # encoding: [0xc3]
74;
75; NF-LABEL: or8rm:
76; NF:       # %bb.0: # %entry
77; NF-NEXT:    {nf} orb (%rsi), %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x0a,0x3e]
78; NF-NEXT:    retq # encoding: [0xc3]
79entry:
80    %t = load i8, ptr %b
81    %or = or i8 %a, %t
82    ret i8 %or
83}
84
85define i16 @or16rm(i16 noundef %a, ptr %b) {
86; CHECK-LABEL: or16rm:
87; CHECK:       # %bb.0: # %entry
88; CHECK-NEXT:    orw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x0b,0x3e]
89; CHECK-NEXT:    retq # encoding: [0xc3]
90;
91; NF-LABEL: or16rm:
92; NF:       # %bb.0: # %entry
93; NF-NEXT:    {nf} orw (%rsi), %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x0b,0x3e]
94; NF-NEXT:    retq # encoding: [0xc3]
95entry:
96    %t = load i16, ptr %b
97    %or = or i16 %a, %t
98    ret i16 %or
99}
100
101define i32 @or32rm(i32 noundef %a, ptr %b) {
102; CHECK-LABEL: or32rm:
103; CHECK:       # %bb.0: # %entry
104; CHECK-NEXT:    orl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x0b,0x3e]
105; CHECK-NEXT:    retq # encoding: [0xc3]
106;
107; NF-LABEL: or32rm:
108; NF:       # %bb.0: # %entry
109; NF-NEXT:    {nf} orl (%rsi), %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x0b,0x3e]
110; NF-NEXT:    retq # encoding: [0xc3]
111entry:
112    %t = load i32, ptr %b
113    %or = or i32 %a, %t
114    ret i32 %or
115}
116
117define i64 @or64rm(i64 noundef %a, ptr %b) {
118; CHECK-LABEL: or64rm:
119; CHECK:       # %bb.0: # %entry
120; CHECK-NEXT:    orq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x0b,0x3e]
121; CHECK-NEXT:    retq # encoding: [0xc3]
122;
123; NF-LABEL: or64rm:
124; NF:       # %bb.0: # %entry
125; NF-NEXT:    {nf} orq (%rsi), %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x0b,0x3e]
126; NF-NEXT:    retq # encoding: [0xc3]
127entry:
128    %t = load i64, ptr %b
129    %or = or i64 %a, %t
130    ret i64 %or
131}
132
133define i16 @or16ri8(i16 noundef %a) {
134; CHECK-LABEL: or16ri8:
135; CHECK:       # %bb.0: # %entry
136; CHECK-NEXT:    orw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xcf,0x7b]
137; CHECK-NEXT:    retq # encoding: [0xc3]
138;
139; NF-LABEL: or16ri8:
140; NF:       # %bb.0: # %entry
141; NF-NEXT:    {nf} orw $123, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0xcf,0x7b]
142; NF-NEXT:    retq # encoding: [0xc3]
143entry:
144    %or = or i16 %a, 123
145    ret i16 %or
146}
147
148define i32 @or32ri8(i32 noundef %a) {
149; CHECK-LABEL: or32ri8:
150; CHECK:       # %bb.0: # %entry
151; CHECK-NEXT:    orl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xcf,0x7b]
152; CHECK-NEXT:    retq # encoding: [0xc3]
153;
154; NF-LABEL: or32ri8:
155; NF:       # %bb.0: # %entry
156; NF-NEXT:    {nf} orl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xcf,0x7b]
157; NF-NEXT:    retq # encoding: [0xc3]
158entry:
159    %or = or i32 %a, 123
160    ret i32 %or
161}
162
163define i64 @or64ri8(i64 noundef %a) {
164; CHECK-LABEL: or64ri8:
165; CHECK:       # %bb.0: # %entry
166; CHECK-NEXT:    orq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0xcf,0x7b]
167; CHECK-NEXT:    retq # encoding: [0xc3]
168;
169; NF-LABEL: or64ri8:
170; NF:       # %bb.0: # %entry
171; NF-NEXT:    {nf} orq $123, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x83,0xcf,0x7b]
172; NF-NEXT:    retq # encoding: [0xc3]
173entry:
174    %or = or i64 %a, 123
175    ret i64 %or
176}
177
178define i8 @or8ri(i8 noundef %a) {
179; CHECK-LABEL: or8ri:
180; CHECK:       # %bb.0: # %entry
181; CHECK-NEXT:    orb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xcf,0x7b]
182; CHECK-NEXT:    retq # encoding: [0xc3]
183;
184; NF-LABEL: or8ri:
185; NF:       # %bb.0: # %entry
186; NF-NEXT:    {nf} orb $123, %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0xcf,0x7b]
187; NF-NEXT:    retq # encoding: [0xc3]
188entry:
189    %or = or i8 %a, 123
190    ret i8 %or
191}
192
193define i16 @or16ri(i16 noundef %a) {
194; CHECK-LABEL: or16ri:
195; CHECK:       # %bb.0: # %entry
196; CHECK-NEXT:    orw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xcf,0xd2,0x04]
197; CHECK-NEXT:    # imm = 0x4D2
198; CHECK-NEXT:    retq # encoding: [0xc3]
199;
200; NF-LABEL: or16ri:
201; NF:       # %bb.0: # %entry
202; NF-NEXT:    {nf} orw $1234, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0xcf,0xd2,0x04]
203; NF-NEXT:    # imm = 0x4D2
204; NF-NEXT:    retq # encoding: [0xc3]
205entry:
206    %or = or i16 %a, 1234
207    ret i16 %or
208}
209
210define i32 @or32ri(i32 noundef %a) {
211; CHECK-LABEL: or32ri:
212; CHECK:       # %bb.0: # %entry
213; CHECK-NEXT:    orl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xcf,0x40,0xe2,0x01,0x00]
214; CHECK-NEXT:    # imm = 0x1E240
215; CHECK-NEXT:    retq # encoding: [0xc3]
216;
217; NF-LABEL: or32ri:
218; NF:       # %bb.0: # %entry
219; NF-NEXT:    {nf} orl $123456, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xcf,0x40,0xe2,0x01,0x00]
220; NF-NEXT:    # imm = 0x1E240
221; NF-NEXT:    retq # encoding: [0xc3]
222entry:
223    %or = or i32 %a, 123456
224    ret i32 %or
225}
226
227define i64 @or64ri(i64 noundef %a) {
228; CHECK-LABEL: or64ri:
229; CHECK:       # %bb.0: # %entry
230; CHECK-NEXT:    orq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xcf,0x40,0xe2,0x01,0x00]
231; CHECK-NEXT:    # imm = 0x1E240
232; CHECK-NEXT:    retq # encoding: [0xc3]
233;
234; NF-LABEL: or64ri:
235; NF:       # %bb.0: # %entry
236; NF-NEXT:    {nf} orq $123456, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x81,0xcf,0x40,0xe2,0x01,0x00]
237; NF-NEXT:    # imm = 0x1E240
238; NF-NEXT:    retq # encoding: [0xc3]
239entry:
240    %or = or i64 %a, 123456
241    ret i64 %or
242}
243
244define i8 @or8mr(ptr %a, i8 noundef %b) {
245; CHECK-LABEL: or8mr:
246; CHECK:       # %bb.0: # %entry
247; CHECK-NEXT:    orb (%rdi), %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x0a,0x37]
248; CHECK-NEXT:    retq # encoding: [0xc3]
249;
250; NF-LABEL: or8mr:
251; NF:       # %bb.0: # %entry
252; NF-NEXT:    {nf} orb (%rdi), %sil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x0a,0x37]
253; NF-NEXT:    retq # encoding: [0xc3]
254entry:
255  %t= load i8, ptr %a
256  %or = or i8 %t, %b
257  ret i8 %or
258}
259
260define i16 @or16mr(ptr %a, i16 noundef %b) {
261; CHECK-LABEL: or16mr:
262; CHECK:       # %bb.0: # %entry
263; CHECK-NEXT:    orw (%rdi), %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x0b,0x37]
264; CHECK-NEXT:    retq # encoding: [0xc3]
265;
266; NF-LABEL: or16mr:
267; NF:       # %bb.0: # %entry
268; NF-NEXT:    {nf} orw (%rdi), %si, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x0b,0x37]
269; NF-NEXT:    retq # encoding: [0xc3]
270entry:
271  %t= load i16, ptr %a
272  %or = or i16 %t, %b
273  ret i16 %or
274}
275
276define i32 @or32mr(ptr %a, i32 noundef %b) {
277; CHECK-LABEL: or32mr:
278; CHECK:       # %bb.0: # %entry
279; CHECK-NEXT:    orl (%rdi), %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x0b,0x37]
280; CHECK-NEXT:    retq # encoding: [0xc3]
281;
282; NF-LABEL: or32mr:
283; NF:       # %bb.0: # %entry
284; NF-NEXT:    {nf} orl (%rdi), %esi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x0b,0x37]
285; NF-NEXT:    retq # encoding: [0xc3]
286entry:
287  %t= load i32, ptr %a
288  %or = or i32 %t, %b
289  ret i32 %or
290}
291
292define i64 @or64mr(ptr %a, i64 noundef %b) {
293; CHECK-LABEL: or64mr:
294; CHECK:       # %bb.0: # %entry
295; CHECK-NEXT:    orq (%rdi), %rsi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x0b,0x37]
296; CHECK-NEXT:    retq # encoding: [0xc3]
297;
298; NF-LABEL: or64mr:
299; NF:       # %bb.0: # %entry
300; NF-NEXT:    {nf} orq (%rdi), %rsi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x0b,0x37]
301; NF-NEXT:    retq # encoding: [0xc3]
302entry:
303  %t= load i64, ptr %a
304  %or = or i64 %t, %b
305  ret i64 %or
306}
307
308define i16 @or16mi8(ptr %a) {
309; CHECK-LABEL: or16mi8:
310; CHECK:       # %bb.0: # %entry
311; CHECK-NEXT:    orw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x0f,0x7b]
312; CHECK-NEXT:    retq # encoding: [0xc3]
313;
314; NF-LABEL: or16mi8:
315; NF:       # %bb.0: # %entry
316; NF-NEXT:    {nf} orw $123, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0x0f,0x7b]
317; NF-NEXT:    retq # encoding: [0xc3]
318entry:
319  %t= load i16, ptr %a
320  %or = or i16 %t, 123
321  ret i16 %or
322}
323
324define i32 @or32mi8(ptr %a) {
325; CHECK-LABEL: or32mi8:
326; CHECK:       # %bb.0: # %entry
327; CHECK-NEXT:    orl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0x0f,0x7b]
328; CHECK-NEXT:    retq # encoding: [0xc3]
329;
330; NF-LABEL: or32mi8:
331; NF:       # %bb.0: # %entry
332; NF-NEXT:    {nf} orl $123, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0x0f,0x7b]
333; NF-NEXT:    retq # encoding: [0xc3]
334entry:
335  %t= load i32, ptr %a
336  %or = or i32 %t, 123
337  ret i32 %or
338}
339
340define i64 @or64mi8(ptr %a) {
341; CHECK-LABEL: or64mi8:
342; CHECK:       # %bb.0: # %entry
343; CHECK-NEXT:    orq $123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0x0f,0x7b]
344; CHECK-NEXT:    retq # encoding: [0xc3]
345;
346; NF-LABEL: or64mi8:
347; NF:       # %bb.0: # %entry
348; NF-NEXT:    {nf} orq $123, (%rdi), %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x83,0x0f,0x7b]
349; NF-NEXT:    retq # encoding: [0xc3]
350entry:
351  %t= load i64, ptr %a
352  %or = or i64 %t, 123
353  ret i64 %or
354}
355
356define i8 @or8mi(ptr %a) {
357; CHECK-LABEL: or8mi:
358; CHECK:       # %bb.0: # %entry
359; CHECK-NEXT:    orb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x0f,0x7b]
360; CHECK-NEXT:    retq # encoding: [0xc3]
361;
362; NF-LABEL: or8mi:
363; NF:       # %bb.0: # %entry
364; NF-NEXT:    {nf} orb $123, (%rdi), %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0x0f,0x7b]
365; NF-NEXT:    retq # encoding: [0xc3]
366entry:
367  %t= load i8, ptr %a
368  %or = or i8 %t, 123
369  ret i8 %or
370}
371
372define i16 @or16mi(ptr %a) {
373; CHECK-LABEL: or16mi:
374; CHECK:       # %bb.0: # %entry
375; CHECK-NEXT:    orw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x0f,0xd2,0x04]
376; CHECK-NEXT:    # imm = 0x4D2
377; CHECK-NEXT:    retq # encoding: [0xc3]
378;
379; NF-LABEL: or16mi:
380; NF:       # %bb.0: # %entry
381; NF-NEXT:    {nf} orw $1234, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0x0f,0xd2,0x04]
382; NF-NEXT:    # imm = 0x4D2
383; NF-NEXT:    retq # encoding: [0xc3]
384entry:
385  %t= load i16, ptr %a
386  %or = or i16 %t, 1234
387  ret i16 %or
388}
389
390define i32 @or32mi(ptr %a) {
391; CHECK-LABEL: or32mi:
392; CHECK:       # %bb.0: # %entry
393; CHECK-NEXT:    orl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x0f,0x40,0xe2,0x01,0x00]
394; CHECK-NEXT:    # imm = 0x1E240
395; CHECK-NEXT:    retq # encoding: [0xc3]
396;
397; NF-LABEL: or32mi:
398; NF:       # %bb.0: # %entry
399; NF-NEXT:    {nf} orl $123456, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0x0f,0x40,0xe2,0x01,0x00]
400; NF-NEXT:    # imm = 0x1E240
401; NF-NEXT:    retq # encoding: [0xc3]
402entry:
403  %t= load i32, ptr %a
404  %or = or i32 %t, 123456
405  ret i32 %or
406}
407
408define i64 @or64mi(ptr %a) {
409; CHECK-LABEL: or64mi:
410; CHECK:       # %bb.0: # %entry
411; CHECK-NEXT:    orq $123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x0f,0x40,0xe2,0x01,0x00]
412; CHECK-NEXT:    # imm = 0x1E240
413; CHECK-NEXT:    retq # encoding: [0xc3]
414;
415; NF-LABEL: or64mi:
416; NF:       # %bb.0: # %entry
417; NF-NEXT:    {nf} orq $123456, (%rdi), %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x81,0x0f,0x40,0xe2,0x01,0x00]
418; NF-NEXT:    # imm = 0x1E240
419; NF-NEXT:    retq # encoding: [0xc3]
420entry:
421  %t= load i64, ptr %a
422  %or = or i64 %t, 123456
423  ret i64 %or
424}
425
426@d64 = dso_local global i64 0
427
428define i1 @orflag8rr(i8 %a, i8 %b) {
429; CHECK-LABEL: orflag8rr:
430; CHECK:       # %bb.0:
431; CHECK-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
432; CHECK-NEXT:    orb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x08,0xc7]
433; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
434; CHECK-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
435; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
436; CHECK-NEXT:    retq # encoding: [0xc3]
437;
438; NF-LABEL: orflag8rr:
439; NF:       # %bb.0:
440; NF-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
441; NF-NEXT:    orb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x08,0xc7]
442; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
443; NF-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
444; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
445; NF-NEXT:    retq # encoding: [0xc3]
446  %xor = xor i8 %b, -1
447  %v0 = or i8 %a, %xor  ; 0xff << 50
448  %v1 = icmp eq i8 %v0, 0
449  store i8 %v0, ptr @d64
450  ret i1 %v1
451}
452
453define i1 @orflag16rr(i16 %a, i16 %b) {
454; CHECK-LABEL: orflag16rr:
455; CHECK:       # %bb.0:
456; CHECK-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
457; CHECK-NEXT:    orw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x09,0xc7]
458; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
459; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
460; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
461; CHECK-NEXT:    retq # encoding: [0xc3]
462;
463; NF-LABEL: orflag16rr:
464; NF:       # %bb.0:
465; NF-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
466; NF-NEXT:    orw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x09,0xc7]
467; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
468; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
469; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
470; NF-NEXT:    retq # encoding: [0xc3]
471  %xor = xor i16 %b, -1
472  %v0 = or i16 %a, %xor  ; 0xff << 50
473  %v1 = icmp eq i16 %v0, 0
474  store i16 %v0, ptr @d64
475  ret i1 %v1
476}
477
478define i1 @orflag32rr(i32 %a, i32 %b) {
479; CHECK-LABEL: orflag32rr:
480; CHECK:       # %bb.0:
481; CHECK-NEXT:    orl %edi, %esi # EVEX TO LEGACY Compression encoding: [0x09,0xfe]
482; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
483; CHECK-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
484; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
485; CHECK-NEXT:    retq # encoding: [0xc3]
486;
487; NF-LABEL: orflag32rr:
488; NF:       # %bb.0:
489; NF-NEXT:    orl %edi, %esi # EVEX TO LEGACY Compression encoding: [0x09,0xfe]
490; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
491; NF-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
492; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
493; NF-NEXT:    retq # encoding: [0xc3]
494  %v0 = or i32 %a, %b  ; 0xff << 50
495  %v1 = icmp eq i32 %v0, 0
496  store i32 %v0, ptr @d64
497  ret i1 %v1
498}
499
500define i1 @orflag64rr(i64 %a, i64 %b) {
501; CHECK-LABEL: orflag64rr:
502; CHECK:       # %bb.0:
503; CHECK-NEXT:    orq %rdi, %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x09,0xfe]
504; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
505; CHECK-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
506; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
507; CHECK-NEXT:    retq # encoding: [0xc3]
508;
509; NF-LABEL: orflag64rr:
510; NF:       # %bb.0:
511; NF-NEXT:    orq %rdi, %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x09,0xfe]
512; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
513; NF-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
514; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
515; NF-NEXT:    retq # encoding: [0xc3]
516  %v0 = or i64 %a, %b  ; 0xff << 50
517  %v1 = icmp eq i64 %v0, 0
518  store i64 %v0, ptr @d64
519  ret i1 %v1
520}
521
522define i1 @orflag8rm(ptr %ptr, i8 %b) {
523; CHECK-LABEL: orflag8rm:
524; CHECK:       # %bb.0:
525; CHECK-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
526; CHECK-NEXT:    orb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x0a,0x07]
527; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
528; CHECK-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
529; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
530; CHECK-NEXT:    retq # encoding: [0xc3]
531;
532; NF-LABEL: orflag8rm:
533; NF:       # %bb.0:
534; NF-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
535; NF-NEXT:    orb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x0a,0x07]
536; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
537; NF-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
538; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
539; NF-NEXT:    retq # encoding: [0xc3]
540  %a = load i8, ptr %ptr
541  %xor = xor i8 %b, -1
542  %v0 = or i8 %a, %xor  ; 0xff << 50
543  %v1 = icmp eq i8 %v0, 0
544  store i8 %v0, ptr @d64
545  ret i1 %v1
546}
547
548define i1 @orflag16rm(ptr %ptr, i16 %b) {
549; CHECK-LABEL: orflag16rm:
550; CHECK:       # %bb.0:
551; CHECK-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
552; CHECK-NEXT:    orw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x0b,0x07]
553; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
554; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
555; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
556; CHECK-NEXT:    retq # encoding: [0xc3]
557;
558; NF-LABEL: orflag16rm:
559; NF:       # %bb.0:
560; NF-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
561; NF-NEXT:    orw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x0b,0x07]
562; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
563; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
564; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
565; NF-NEXT:    retq # encoding: [0xc3]
566  %a = load i16, ptr %ptr
567  %xor = xor i16 %b, -1
568  %v0 = or i16 %a, %xor  ; 0xff << 50
569  %v1 = icmp eq i16 %v0, 0
570  store i16 %v0, ptr @d64
571  ret i1 %v1
572}
573
574define i1 @orflag32rm(ptr %ptr, i32 %b) {
575; CHECK-LABEL: orflag32rm:
576; CHECK:       # %bb.0:
577; CHECK-NEXT:    orl (%rdi), %esi # EVEX TO LEGACY Compression encoding: [0x0b,0x37]
578; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
579; CHECK-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
580; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
581; CHECK-NEXT:    retq # encoding: [0xc3]
582;
583; NF-LABEL: orflag32rm:
584; NF:       # %bb.0:
585; NF-NEXT:    orl (%rdi), %esi # EVEX TO LEGACY Compression encoding: [0x0b,0x37]
586; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
587; NF-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
588; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
589; NF-NEXT:    retq # encoding: [0xc3]
590  %a = load i32, ptr %ptr
591  %v0 = or i32 %a, %b  ; 0xff << 50
592  %v1 = icmp eq i32 %v0, 0
593  store i32 %v0, ptr @d64
594  ret i1 %v1
595}
596
597define i1 @orflag64rm(ptr %ptr, i64 %b) {
598; CHECK-LABEL: orflag64rm:
599; CHECK:       # %bb.0:
600; CHECK-NEXT:    orq (%rdi), %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x0b,0x37]
601; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
602; CHECK-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
603; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
604; CHECK-NEXT:    retq # encoding: [0xc3]
605;
606; NF-LABEL: orflag64rm:
607; NF:       # %bb.0:
608; NF-NEXT:    orq (%rdi), %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x0b,0x37]
609; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
610; NF-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
611; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
612; NF-NEXT:    retq # encoding: [0xc3]
613  %a = load i64, ptr %ptr
614  %v0 = or i64 %a, %b  ; 0xff << 50
615  %v1 = icmp eq i64 %v0, 0
616  store i64 %v0, ptr @d64
617  ret i1 %v1
618}
619
620define i1 @orflag8ri(i8 %a) {
621; CHECK-LABEL: orflag8ri:
622; CHECK:       # %bb.0:
623; CHECK-NEXT:    orb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xcf,0x84]
624; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
625; CHECK-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
626; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
627; CHECK-NEXT:    retq # encoding: [0xc3]
628;
629; NF-LABEL: orflag8ri:
630; NF:       # %bb.0:
631; NF-NEXT:    orb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xcf,0x84]
632; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
633; NF-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
634; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
635; NF-NEXT:    retq # encoding: [0xc3]
636  %xor = xor i8 123, -1
637  %v0 = or i8 %a, %xor  ; 0xff << 50
638  %v1 = icmp eq i8 %v0, 0
639  store i8 %v0, ptr @d64
640  ret i1 %v1
641}
642
643define i1 @orflag16ri(i16 %a) {
644; CHECK-LABEL: orflag16ri:
645; CHECK:       # %bb.0:
646; CHECK-NEXT:    orw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xcf,0x2d,0xfb]
647; CHECK-NEXT:    # imm = 0xFB2D
648; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
649; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
650; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
651; CHECK-NEXT:    retq # encoding: [0xc3]
652;
653; NF-LABEL: orflag16ri:
654; NF:       # %bb.0:
655; NF-NEXT:    orw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xcf,0x2d,0xfb]
656; NF-NEXT:    # imm = 0xFB2D
657; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
658; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
659; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
660; NF-NEXT:    retq # encoding: [0xc3]
661  %xor = xor i16 1234, -1
662  %v0 = or i16 %a, %xor  ; 0xff << 50
663  %v1 = icmp eq i16 %v0, 0
664  store i16 %v0, ptr @d64
665  ret i1 %v1
666}
667
668define i1 @orflag32ri(i32 %a) {
669; CHECK-LABEL: orflag32ri:
670; CHECK:       # %bb.0:
671; CHECK-NEXT:    orl $123456, %edi # EVEX TO LEGACY Compression encoding: [0x81,0xcf,0x40,0xe2,0x01,0x00]
672; CHECK-NEXT:    # imm = 0x1E240
673; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
674; CHECK-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
675; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
676; CHECK-NEXT:    retq # encoding: [0xc3]
677;
678; NF-LABEL: orflag32ri:
679; NF:       # %bb.0:
680; NF-NEXT:    orl $123456, %edi # EVEX TO LEGACY Compression encoding: [0x81,0xcf,0x40,0xe2,0x01,0x00]
681; NF-NEXT:    # imm = 0x1E240
682; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
683; NF-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
684; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
685; NF-NEXT:    retq # encoding: [0xc3]
686  %v0 = or i32 %a, 123456  ; 0xff << 50
687  %v1 = icmp eq i32 %v0, 0
688  store i32 %v0, ptr @d64
689  ret i1 %v1
690}
691
692define i1 @orflag64ri(i64 %a) {
693; CHECK-LABEL: orflag64ri:
694; CHECK:       # %bb.0:
695; CHECK-NEXT:    orq $123456, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x81,0xcf,0x40,0xe2,0x01,0x00]
696; CHECK-NEXT:    # imm = 0x1E240
697; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
698; CHECK-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
699; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
700; CHECK-NEXT:    retq # encoding: [0xc3]
701;
702; NF-LABEL: orflag64ri:
703; NF:       # %bb.0:
704; NF-NEXT:    orq $123456, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x81,0xcf,0x40,0xe2,0x01,0x00]
705; NF-NEXT:    # imm = 0x1E240
706; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
707; NF-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
708; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
709; NF-NEXT:    retq # encoding: [0xc3]
710  %v0 = or i64 %a, 123456  ; 0xff << 50
711  %v1 = icmp eq i64 %v0, 0
712  store i64 %v0, ptr @d64
713  ret i1 %v1
714}
715
716define i1 @orflag16ri8(i16 %a) {
717; CHECK-LABEL: orflag16ri8:
718; CHECK:       # %bb.0:
719; CHECK-NEXT:    orw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x83,0xcf,0x84]
720; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
721; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
722; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
723; CHECK-NEXT:    retq # encoding: [0xc3]
724;
725; NF-LABEL: orflag16ri8:
726; NF:       # %bb.0:
727; NF-NEXT:    orw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x83,0xcf,0x84]
728; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
729; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
730; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
731; NF-NEXT:    retq # encoding: [0xc3]
732  %xor = xor i16 123, -1
733  %v0 = or i16 %a, %xor  ; 0xff << 50
734  %v1 = icmp eq i16 %v0, 0
735  store i16 %v0, ptr @d64
736  ret i1 %v1
737}
738
739define i1 @orflag32ri8(i32 %a) {
740; CHECK-LABEL: orflag32ri8:
741; CHECK:       # %bb.0:
742; CHECK-NEXT:    orl $123, %edi # EVEX TO LEGACY Compression encoding: [0x83,0xcf,0x7b]
743; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
744; CHECK-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
745; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
746; CHECK-NEXT:    retq # encoding: [0xc3]
747;
748; NF-LABEL: orflag32ri8:
749; NF:       # %bb.0:
750; NF-NEXT:    orl $123, %edi # EVEX TO LEGACY Compression encoding: [0x83,0xcf,0x7b]
751; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
752; NF-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
753; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
754; NF-NEXT:    retq # encoding: [0xc3]
755  %v0 = or i32 %a, 123  ; 0xff << 50
756  %v1 = icmp eq i32 %v0, 0
757  store i32 %v0, ptr @d64
758  ret i1 %v1
759}
760
761define i1 @orflag64ri8(i64 %a) {
762; CHECK-LABEL: orflag64ri8:
763; CHECK:       # %bb.0:
764; CHECK-NEXT:    orq $123, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xcf,0x7b]
765; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
766; CHECK-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
767; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
768; CHECK-NEXT:    retq # encoding: [0xc3]
769;
770; NF-LABEL: orflag64ri8:
771; NF:       # %bb.0:
772; NF-NEXT:    orq $123, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xcf,0x7b]
773; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
774; NF-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
775; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
776; NF-NEXT:    retq # encoding: [0xc3]
777  %v0 = or i64 %a, 123  ; 0xff << 50
778  %v1 = icmp eq i64 %v0, 0
779  store i64 %v0, ptr @d64
780  ret i1 %v1
781}
782
783define void @or8mr_legacy(ptr %a, i8 noundef %b) {
784; CHECK-LABEL: or8mr_legacy:
785; CHECK:       # %bb.0: # %entry
786; CHECK-NEXT:    orb %sil, (%rdi) # encoding: [0x40,0x08,0x37]
787; CHECK-NEXT:    retq # encoding: [0xc3]
788;
789; NF-LABEL: or8mr_legacy:
790; NF:       # %bb.0: # %entry
791; NF-NEXT:    orb %sil, (%rdi) # encoding: [0x40,0x08,0x37]
792; NF-NEXT:    retq # encoding: [0xc3]
793entry:
794  %t= load i8, ptr %a
795  %or = or i8 %t, %b
796  store i8 %or, ptr %a
797  ret void
798}
799
800define void @or16mr_legacy(ptr %a, i16 noundef %b) {
801; CHECK-LABEL: or16mr_legacy:
802; CHECK:       # %bb.0: # %entry
803; CHECK-NEXT:    orw %si, (%rdi) # encoding: [0x66,0x09,0x37]
804; CHECK-NEXT:    retq # encoding: [0xc3]
805;
806; NF-LABEL: or16mr_legacy:
807; NF:       # %bb.0: # %entry
808; NF-NEXT:    orw %si, (%rdi) # encoding: [0x66,0x09,0x37]
809; NF-NEXT:    retq # encoding: [0xc3]
810entry:
811  %t= load i16, ptr %a
812  %or = or i16 %t, %b
813  store i16 %or, ptr %a
814  ret void
815}
816
817define void @or32mr_legacy(ptr %a, i32 noundef %b) {
818; CHECK-LABEL: or32mr_legacy:
819; CHECK:       # %bb.0: # %entry
820; CHECK-NEXT:    orl %esi, (%rdi) # encoding: [0x09,0x37]
821; CHECK-NEXT:    retq # encoding: [0xc3]
822;
823; NF-LABEL: or32mr_legacy:
824; NF:       # %bb.0: # %entry
825; NF-NEXT:    orl %esi, (%rdi) # encoding: [0x09,0x37]
826; NF-NEXT:    retq # encoding: [0xc3]
827entry:
828  %t= load i32, ptr %a
829  %or = or i32 %t, %b
830  store i32 %or, ptr %a
831  ret void
832}
833
834define void @or64mr_legacy(ptr %a, i64 noundef %b) {
835; CHECK-LABEL: or64mr_legacy:
836; CHECK:       # %bb.0: # %entry
837; CHECK-NEXT:    orq %rsi, (%rdi) # encoding: [0x48,0x09,0x37]
838; CHECK-NEXT:    retq # encoding: [0xc3]
839;
840; NF-LABEL: or64mr_legacy:
841; NF:       # %bb.0: # %entry
842; NF-NEXT:    orq %rsi, (%rdi) # encoding: [0x48,0x09,0x37]
843; NF-NEXT:    retq # encoding: [0xc3]
844entry:
845  %t= load i64, ptr %a
846  %or = or i64 %t, %b
847  store i64 %or, ptr %a
848  ret void
849}
850
851define void @or8mi_legacy(ptr %a) {
852; CHECK-LABEL: or8mi_legacy:
853; CHECK:       # %bb.0: # %entry
854; CHECK-NEXT:    orb $123, (%rdi) # encoding: [0x80,0x0f,0x7b]
855; CHECK-NEXT:    retq # encoding: [0xc3]
856;
857; NF-LABEL: or8mi_legacy:
858; NF:       # %bb.0: # %entry
859; NF-NEXT:    orb $123, (%rdi) # encoding: [0x80,0x0f,0x7b]
860; NF-NEXT:    retq # encoding: [0xc3]
861entry:
862  %t= load i8, ptr %a
863  %or = or i8 %t, 123
864  store i8 %or, ptr %a
865  ret void
866}
867
868define void @or16mi_legacy(ptr %a) {
869; CHECK-LABEL: or16mi_legacy:
870; CHECK:       # %bb.0: # %entry
871; CHECK-NEXT:    orw $1234, (%rdi) # encoding: [0x66,0x81,0x0f,0xd2,0x04]
872; CHECK-NEXT:    # imm = 0x4D2
873; CHECK-NEXT:    retq # encoding: [0xc3]
874;
875; NF-LABEL: or16mi_legacy:
876; NF:       # %bb.0: # %entry
877; NF-NEXT:    orw $1234, (%rdi) # encoding: [0x66,0x81,0x0f,0xd2,0x04]
878; NF-NEXT:    # imm = 0x4D2
879; NF-NEXT:    retq # encoding: [0xc3]
880entry:
881  %t= load i16, ptr %a
882  %or = or i16 %t, 1234
883  store i16 %or, ptr %a
884  ret void
885}
886
887define void @or32mi_legacy(ptr %a) {
888; CHECK-LABEL: or32mi_legacy:
889; CHECK:       # %bb.0: # %entry
890; CHECK-NEXT:    orl $123456, (%rdi) # encoding: [0x81,0x0f,0x40,0xe2,0x01,0x00]
891; CHECK-NEXT:    # imm = 0x1E240
892; CHECK-NEXT:    retq # encoding: [0xc3]
893;
894; NF-LABEL: or32mi_legacy:
895; NF:       # %bb.0: # %entry
896; NF-NEXT:    orl $123456, (%rdi) # encoding: [0x81,0x0f,0x40,0xe2,0x01,0x00]
897; NF-NEXT:    # imm = 0x1E240
898; NF-NEXT:    retq # encoding: [0xc3]
899entry:
900  %t= load i32, ptr %a
901  %or = or i32 %t, 123456
902  store i32 %or, ptr %a
903  ret void
904}
905
906define void @or64mi_legacy(ptr %a) {
907; CHECK-LABEL: or64mi_legacy:
908; CHECK:       # %bb.0: # %entry
909; CHECK-NEXT:    orl $123456, (%rdi) # encoding: [0x81,0x0f,0x40,0xe2,0x01,0x00]
910; CHECK-NEXT:    # imm = 0x1E240
911; CHECK-NEXT:    retq # encoding: [0xc3]
912;
913; NF-LABEL: or64mi_legacy:
914; NF:       # %bb.0: # %entry
915; NF-NEXT:    orl $123456, (%rdi) # encoding: [0x81,0x0f,0x40,0xe2,0x01,0x00]
916; NF-NEXT:    # imm = 0x1E240
917; NF-NEXT:    retq # encoding: [0xc3]
918entry:
919  %t= load i64, ptr %a
920  %or = or i64 %t, 123456
921  store i64 %or, ptr %a
922  ret void
923}
924