Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / GlobalISel / select-xor-scalar.mir
blobf444536a6a0b36e15712f5d43ba686e7bbb6150f
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-linux-gnu                                  -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL
4 --- |
5   define i8 @test_xor_i8(i8 %arg1, i8 %arg2) {
6     %ret = xor i8 %arg1, %arg2
7     ret i8 %ret
8   }
10   define i16 @test_xor_i16(i16 %arg1, i16 %arg2) {
11     %ret = xor i16 %arg1, %arg2
12     ret i16 %ret
13   }
15   define i32 @test_xor_i32(i32 %arg1, i32 %arg2) {
16     %ret = xor i32 %arg1, %arg2
17     ret i32 %ret
18   }
20   define i64 @test_xor_i64(i64 %arg1, i64 %arg2) {
21     %ret = xor i64 %arg1, %arg2
22     ret i64 %ret
23   }
25 ...
26 ---
27 name:            test_xor_i8
28 alignment:       16
29 legalized:       true
30 regBankSelected: true
31 registers:
32   - { id: 0, class: gpr, preferred-register: '' }
33   - { id: 1, class: gpr, preferred-register: '' }
34   - { id: 2, class: gpr, preferred-register: '' }
35 liveins:
36 fixedStack:
37 stack:
38 constants:
39 body:             |
40   bb.1 (%ir-block.0):
41     liveins: $edi, $esi
43     ; ALL-LABEL: name: test_xor_i8
44     ; ALL: liveins: $edi, $esi
45     ; ALL-NEXT: {{  $}}
46     ; ALL-NEXT: [[COPY:%[0-9]+]]:gr8 = COPY $dil
47     ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr8 = COPY $sil
48     ; ALL-NEXT: [[XOR8rr:%[0-9]+]]:gr8 = XOR8rr [[COPY]], [[COPY1]], implicit-def dead $eflags
49     ; ALL-NEXT: $al = COPY [[XOR8rr]]
50     ; ALL-NEXT: RET 0, implicit $al
51     %0(s8) = COPY $dil
52     %1(s8) = COPY $sil
53     %2(s8) = G_XOR %0, %1
54     $al = COPY %2(s8)
55     RET 0, implicit $al
57 ...
58 ---
59 name:            test_xor_i16
60 alignment:       16
61 legalized:       true
62 regBankSelected: true
63 registers:
64   - { id: 0, class: gpr, preferred-register: '' }
65   - { id: 1, class: gpr, preferred-register: '' }
66   - { id: 2, class: gpr, preferred-register: '' }
67 liveins:
68 fixedStack:
69 stack:
70 constants:
71 body:             |
72   bb.1 (%ir-block.0):
73     liveins: $edi, $esi
75     ; ALL-LABEL: name: test_xor_i16
76     ; ALL: liveins: $edi, $esi
77     ; ALL-NEXT: {{  $}}
78     ; ALL-NEXT: [[COPY:%[0-9]+]]:gr16 = COPY $di
79     ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr16 = COPY $si
80     ; ALL-NEXT: [[XOR16rr:%[0-9]+]]:gr16 = XOR16rr [[COPY]], [[COPY1]], implicit-def dead $eflags
81     ; ALL-NEXT: $ax = COPY [[XOR16rr]]
82     ; ALL-NEXT: RET 0, implicit $ax
83     %0(s16) = COPY $di
84     %1(s16) = COPY $si
85     %2(s16) = G_XOR %0, %1
86     $ax = COPY %2(s16)
87     RET 0, implicit $ax
89 ...
90 ---
91 name:            test_xor_i32
92 alignment:       16
93 legalized:       true
94 regBankSelected: true
95 registers:
96   - { id: 0, class: gpr, preferred-register: '' }
97   - { id: 1, class: gpr, preferred-register: '' }
98   - { id: 2, class: gpr, preferred-register: '' }
99 liveins:
100 fixedStack:
101 stack:
102 constants:
103 body:             |
104   bb.1 (%ir-block.0):
105     liveins: $edi, $esi
107     ; ALL-LABEL: name: test_xor_i32
108     ; ALL: liveins: $edi, $esi
109     ; ALL-NEXT: {{  $}}
110     ; ALL-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi
111     ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $esi
112     ; ALL-NEXT: [[XOR32rr:%[0-9]+]]:gr32 = XOR32rr [[COPY]], [[COPY1]], implicit-def dead $eflags
113     ; ALL-NEXT: $eax = COPY [[XOR32rr]]
114     ; ALL-NEXT: RET 0, implicit $eax
115     %0(s32) = COPY $edi
116     %1(s32) = COPY $esi
117     %2(s32) = G_XOR %0, %1
118     $eax = COPY %2(s32)
119     RET 0, implicit $eax
123 name:            test_xor_i64
124 alignment:       16
125 legalized:       true
126 regBankSelected: true
127 registers:
128   - { id: 0, class: gpr, preferred-register: '' }
129   - { id: 1, class: gpr, preferred-register: '' }
130   - { id: 2, class: gpr, preferred-register: '' }
131 liveins:
132 fixedStack:
133 stack:
134 constants:
135 body:             |
136   bb.1 (%ir-block.0):
137     liveins: $rdi, $rsi
139     ; ALL-LABEL: name: test_xor_i64
140     ; ALL: liveins: $rdi, $rsi
141     ; ALL-NEXT: {{  $}}
142     ; ALL-NEXT: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
143     ; ALL-NEXT: [[COPY1:%[0-9]+]]:gr64 = COPY $rsi
144     ; ALL-NEXT: [[XOR64rr:%[0-9]+]]:gr64 = XOR64rr [[COPY]], [[COPY1]], implicit-def dead $eflags
145     ; ALL-NEXT: $rax = COPY [[XOR64rr]]
146     ; ALL-NEXT: RET 0, implicit $rax
147     %0(s64) = COPY $rdi
148     %1(s64) = COPY $rsi
149     %2(s64) = G_XOR %0, %1
150     $rax = COPY %2(s64)
151     RET 0, implicit $rax