1- # RUN: llc -mtriple=i386-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=X32
2- # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=X64
1+ # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
2+ # RUN: llc -mtriple=i386-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,X86
3+ # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,X64
34
45--- |
56
3031...
3132---
3233name : test_copy
33- # ALL-LABEL: name: test_copy
3434alignment : 16
3535legalized : true
3636regBankSelected : true
37- # ALL: registers:
38- # ALL-NEXT: - { id: 0, class: gr8, preferred-register: '', flags: [ ] }
39- # ALL-NEXT: - { id: 1, class: gr32, preferred-register: '', flags: [ ] }
4037registers :
4138 - { id: 0, class: gpr, preferred-register: '' }
4239 - { id: 1, class: gpr, preferred-register: '' }
43- # ALL: %0:gr8 = COPY $al
44- # ALL-NEXT: %1:gr32 = MOVZX32rr8 %0
45- # ALL-NEXT: $eax = COPY %1
46- # ALL-NEXT: RET 0, implicit $eax
4740body : |
4841 bb.1 (%ir-block.0):
4942 liveins: $eax
5043
44+ ; CHECK-LABEL: name: test_copy
45+ ; CHECK: liveins: $eax
46+ ; CHECK-NEXT: {{ $}}
47+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr8 = COPY $al
48+ ; CHECK-NEXT: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[COPY]]
49+ ; CHECK-NEXT: $eax = COPY [[MOVZX32rr8_]]
50+ ; CHECK-NEXT: RET 0, implicit $eax
5151 %0(s8) = COPY $al
5252 %1(s32) = G_ZEXT %0(s8)
5353 $eax = COPY %1(s32)
@@ -56,24 +56,23 @@ body: |
5656 ...
5757---
5858name : test_copy2
59- # ALL-LABEL: name: test_copy2
6059alignment : 16
6160legalized : true
6261regBankSelected : true
63- # ALL: registers:
64- # ALL-NEXT: - { id: 0, class: gr8, preferred-register: '', flags: [ ] }
65- # ALL-NEXT: - { id: 1, class: gr32, preferred-register: '', flags: [ ] }
6662registers :
6763 - { id: 0, class: gpr, preferred-register: '' }
6864 - { id: 1, class: gpr, preferred-register: '' }
69- # ALL: %0:gr8 = COPY $al
70- # ALL-NEXT: %1:gr32 = MOVZX32rr8 %0
71- # ALL-NEXT: $eax = COPY %1
72- # ALL-NEXT: RET 0, implicit $eax
7365body : |
7466 bb.1 (%ir-block.0):
7567 liveins: $eax
7668
69+ ; CHECK-LABEL: name: test_copy2
70+ ; CHECK: liveins: $eax
71+ ; CHECK-NEXT: {{ $}}
72+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr8 = COPY $al
73+ ; CHECK-NEXT: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[COPY]]
74+ ; CHECK-NEXT: $eax = COPY [[MOVZX32rr8_]]
75+ ; CHECK-NEXT: RET 0, implicit $eax
7776 %0(s8) = COPY $al
7877 %1(s32) = G_ZEXT %0(s8)
7978 $eax = COPY %1(s32)
@@ -82,30 +81,35 @@ body: |
8281 ...
8382---
8483name : test_copy3
85- # ALL-LABEL: name: test_copy3
8684alignment : 16
8785legalized : true
8886regBankSelected : true
89- # ALL: registers:
90- # ALL-NEXT: - { id: 0, class: gr16[[ABCD:(_abcd)?]], preferred-register: '', flags: [ ] }
91- # X32-NEXT: - { id: 1, class: gr8_abcd_l, preferred-register: '', flags: [ ] }
92- # X64-NEXT: - { id: 1, class: gr8, preferred-register: '', flags: [ ] }
93- # ALL-NEXT: - { id: 2, class: gr32, preferred-register: '', flags: [ ] }
9487registers :
9588 - { id: 0, class: gpr, preferred-register: '' }
9689 - { id: 1, class: gpr, preferred-register: '' }
9790 - { id: 2, class: gpr, preferred-register: '' }
98- # ALL: %0:gr16 = COPY $ax
99- # X32-NEXT: %3:gr16_abcd = COPY %0
100- # X32-NEXT: %1:gr8_abcd_l = COPY %3.sub_8bit
101- # X64-NEXT: %1:gr8 = COPY %0.sub_8bit
102- # ALL-NEXT: %2:gr32 = MOVZX32rr8 %1
103- # ALL-NEXT: $eax = COPY %2
104- # ALL-NEXT: RET 0, implicit $eax
10591body : |
10692 bb.1 (%ir-block.0):
10793 liveins: $eax
10894
95+ ; X86-LABEL: name: test_copy3
96+ ; X86: liveins: $eax
97+ ; X86-NEXT: {{ $}}
98+ ; X86-NEXT: [[COPY:%[0-9]+]]:gr16 = COPY $ax
99+ ; X86-NEXT: [[COPY1:%[0-9]+]]:gr16_abcd = COPY [[COPY]]
100+ ; X86-NEXT: [[COPY2:%[0-9]+]]:gr8_abcd_l = COPY [[COPY1]].sub_8bit
101+ ; X86-NEXT: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[COPY2]]
102+ ; X86-NEXT: $eax = COPY [[MOVZX32rr8_]]
103+ ; X86-NEXT: RET 0, implicit $eax
104+ ;
105+ ; X64-LABEL: name: test_copy3
106+ ; X64: liveins: $eax
107+ ; X64-NEXT: {{ $}}
108+ ; X64-NEXT: [[COPY:%[0-9]+]]:gr16 = COPY $ax
109+ ; X64-NEXT: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit
110+ ; X64-NEXT: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[COPY1]]
111+ ; X64-NEXT: $eax = COPY [[MOVZX32rr8_]]
112+ ; X64-NEXT: RET 0, implicit $eax
109113 %0(s16) = COPY $ax
110114 %1(s8) = G_TRUNC %0(s16)
111115 %2(s32) = G_ZEXT %1(s8)
@@ -115,27 +119,25 @@ body: |
115119 ...
116120---
117121name : test_copy4
118- # ALL-LABEL: name: test_copy4
119122alignment : 16
120123legalized : true
121124regBankSelected : true
122- # ALL: registers:
123- # ALL-NEXT: - { id: 0, class: gr32, preferred-register: '', flags: [ ] }
124- # ALL-NEXT: - { id: 1, class: gr16, preferred-register: '', flags: [ ] }
125- # ALL-NEXT: - { id: 2, class: gr32, preferred-register: '', flags: [ ] }
126125registers :
127126 - { id: 0, class: gpr, preferred-register: '' }
128127 - { id: 1, class: gpr, preferred-register: '' }
129128 - { id: 2, class: gpr, preferred-register: '' }
130- # ALL: %0:gr32 = COPY $eax
131- # ALL-NEXT: %1:gr16 = COPY %0.sub_16bit
132- # ALL-NEXT: %2:gr32 = MOVZX32rr16 %1
133- # ALL-NEXT: $eax = COPY %2
134- # ALL-NEXT: RET 0, implicit $eax
135129body : |
136130 bb.1 (%ir-block.0):
137131 liveins: $eax
138132
133+ ; CHECK-LABEL: name: test_copy4
134+ ; CHECK: liveins: $eax
135+ ; CHECK-NEXT: {{ $}}
136+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $eax
137+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit
138+ ; CHECK-NEXT: [[MOVZX32rr16_:%[0-9]+]]:gr32 = MOVZX32rr16 [[COPY1]]
139+ ; CHECK-NEXT: $eax = COPY [[MOVZX32rr16_]]
140+ ; CHECK-NEXT: RET 0, implicit $eax
139141 %0(s32) = COPY $eax
140142 %1(s16) = G_TRUNC %0(s32)
141143 %2(s32) = G_ZEXT %1(s16)
@@ -145,30 +147,35 @@ body: |
145147 ...
146148---
147149name : test_copy5
148- # ALL-LABEL: name: test_copy5
149150alignment : 16
150151legalized : true
151152regBankSelected : true
152- # ALL: registers:
153- # ALL-NEXT: - { id: 0, class: gr32[[ABCD:(_abcd)?]], preferred-register: '', flags: [ ] }
154- # X32-NEXT: - { id: 1, class: gr8_abcd_l, preferred-register: '', flags: [ ] }
155- # X64-NEXT: - { id: 1, class: gr8, preferred-register: '', flags: [ ] }
156- # ALL-NEXT: - { id: 2, class: gr32, preferred-register: '', flags: [ ] }
157153registers :
158154 - { id: 0, class: gpr, preferred-register: '' }
159155 - { id: 1, class: gpr, preferred-register: '' }
160156 - { id: 2, class: gpr, preferred-register: '' }
161- # ALL: %0:gr32 = COPY $edx
162- # X32-NEXT: %3:gr32_abcd = COPY %0
163- # X32-NEXT: %1:gr8_abcd_l = COPY %3.sub_8bit
164- # X64-NEXT: %1:gr8 = COPY %0.sub_8bit
165- # ALL-NEXT: %2:gr32 = MOVZX32rr8 %1
166- # ALL-NEXT: $eax = COPY %2
167- # ALL-NEXT: RET 0, implicit $eax
168157body : |
169158 bb.1 (%ir-block.0):
170159 liveins: $eax,$edx
171160
161+ ; X86-LABEL: name: test_copy5
162+ ; X86: liveins: $eax, $edx
163+ ; X86-NEXT: {{ $}}
164+ ; X86-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edx
165+ ; X86-NEXT: [[COPY1:%[0-9]+]]:gr32_abcd = COPY [[COPY]]
166+ ; X86-NEXT: [[COPY2:%[0-9]+]]:gr8_abcd_l = COPY [[COPY1]].sub_8bit
167+ ; X86-NEXT: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[COPY2]]
168+ ; X86-NEXT: $eax = COPY [[MOVZX32rr8_]]
169+ ; X86-NEXT: RET 0, implicit $eax
170+ ;
171+ ; X64-LABEL: name: test_copy5
172+ ; X64: liveins: $eax, $edx
173+ ; X64-NEXT: {{ $}}
174+ ; X64-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edx
175+ ; X64-NEXT: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit
176+ ; X64-NEXT: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[COPY1]]
177+ ; X64-NEXT: $eax = COPY [[MOVZX32rr8_]]
178+ ; X64-NEXT: RET 0, implicit $eax
172179 %0(s32) = COPY $edx
173180 %1(s8) = G_TRUNC %0(s32)
174181 %2(s32) = G_ANYEXT %1(s8)
@@ -178,29 +185,26 @@ body: |
178185 ...
179186---
180187name : test_copy6
181- # ALL-LABEL: name: test_copy6
182188alignment : 16
183189legalized : true
184190regBankSelected : true
185- # ALL: registers:
186- # ALL-NEXT: - { id: 0, class: gr32, preferred-register: '', flags: [ ] }
187- # ALL-NEXT: - { id: 1, class: gr16, preferred-register: '', flags: [ ] }
188- # ALL-NEXT: - { id: 2, class: low32_addr_access_rbp, preferred-register: '', flags: [ ] }
189- # ALL-NEXT: - { id: 3, class: low32_addr_access_rbp, preferred-register: '', flags: [ ] }
190191registers :
191192 - { id: 0, class: gpr, preferred-register: '' }
192193 - { id: 1, class: gpr, preferred-register: '' }
193194 - { id: 2, class: gpr, preferred-register: '' }
194- # ALL: %0:gr32 = COPY $edx
195- # ALL-NEXT: %1:gr16 = COPY %0.sub_16bit
196- # ALL-NEXT: %3:low32_addr_access_rbp = IMPLICIT_DEF
197- # ALL-NEXT: %2:low32_addr_access_rbp = INSERT_SUBREG %3, %1, %subreg.sub_16bit
198- # ALL-NEXT: $eax = COPY %2
199- # ALL-NEXT: RET 0, implicit $eax
200195body : |
201196 bb.1 (%ir-block.0):
202197 liveins: $eax,$edx
203198
199+ ; CHECK-LABEL: name: test_copy6
200+ ; CHECK: liveins: $eax, $edx
201+ ; CHECK-NEXT: {{ $}}
202+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edx
203+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit
204+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:low32_addr_access_rbp = IMPLICIT_DEF
205+ ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:low32_addr_access_rbp = INSERT_SUBREG [[DEF]], [[COPY1]], %subreg.sub_16bit
206+ ; CHECK-NEXT: $eax = COPY [[INSERT_SUBREG]]
207+ ; CHECK-NEXT: RET 0, implicit $eax
204208 %0(s32) = COPY $edx
205209 %1(s16) = G_TRUNC %0(s32)
206210 %2(s32) = G_ANYEXT %1(s16)
0 commit comments