Skip to content

Commit 6bdb92d

Browse files
committed
AMDGPU/GlobalISel: Improve regbankselect for icmp s16
Account for 64-bit scalar eq/ne when available. llvm-svn: 365487
1 parent 8b8eee5 commit 6bdb92d

File tree

3 files changed

+376
-30
lines changed

3 files changed

+376
-30
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,20 +1653,25 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
16531653
}
16541654

16551655
case AMDGPU::G_ICMP: {
1656+
auto Pred = static_cast<CmpInst::Predicate>(MI.getOperand(1).getPredicate());
16561657
unsigned Size = MRI.getType(MI.getOperand(2).getReg()).getSizeInBits();
16571658
unsigned Op2Bank = getRegBankID(MI.getOperand(2).getReg(), MRI, *TRI);
16581659
unsigned Op3Bank = getRegBankID(MI.getOperand(3).getReg(), MRI, *TRI);
1659-
unsigned Op0Bank = Op2Bank == AMDGPU::SGPRRegBankID &&
1660-
Op3Bank == AMDGPU::SGPRRegBankID ?
1661-
AMDGPU::SCCRegBankID : AMDGPU::VCCRegBankID;
1660+
1661+
bool CanUseSCC = Op2Bank == AMDGPU::SGPRRegBankID &&
1662+
Op3Bank == AMDGPU::SGPRRegBankID &&
1663+
(Size == 32 || (Size == 64 &&
1664+
(Pred == CmpInst::ICMP_EQ || Pred == CmpInst::ICMP_NE) &&
1665+
MF.getSubtarget<GCNSubtarget>().hasScalarCompareEq64()));
1666+
1667+
unsigned Op0Bank = CanUseSCC ? AMDGPU::SCCRegBankID : AMDGPU::VCCRegBankID;
1668+
16621669
OpdsMapping[0] = AMDGPU::getValueMapping(Op0Bank, 1);
16631670
OpdsMapping[1] = nullptr; // Predicate Operand.
16641671
OpdsMapping[2] = AMDGPU::getValueMapping(Op2Bank, Size);
16651672
OpdsMapping[3] = AMDGPU::getValueMapping(Op3Bank, Size);
16661673
break;
16671674
}
1668-
1669-
16701675
case AMDGPU::G_EXTRACT_VECTOR_ELT: {
16711676
unsigned OutputBankID = isSALUMapping(MI) ?
16721677
AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
Lines changed: 283 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,325 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2-
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
3-
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
2+
# RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s
3+
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s
4+
# RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s
5+
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s
46

57
---
6-
name: icmp_ss
8+
name: icmp_eq_s32_ss
79
legalized: true
810

911
body: |
1012
bb.0:
1113
liveins: $sgpr0, $sgpr1
12-
; CHECK-LABEL: name: icmp_ss
13-
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
14-
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
15-
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
14+
; GFX7-LABEL: name: icmp_eq_s32_ss
15+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
16+
; GFX7: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
17+
; GFX7: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
18+
; GFX8-LABEL: name: icmp_eq_s32_ss
19+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
20+
; GFX8: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
21+
; GFX8: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
1622
%0:_(s32) = COPY $sgpr0
1723
%1:_(s32) = COPY $sgpr1
18-
%2:_(s1) = G_ICMP intpred(ne), %0, %1
24+
%2:_(s1) = G_ICMP intpred(eq), %0, %1
1925
...
2026

2127
---
22-
name: icmp_sv
28+
name: icmp_eq_s32_sv
2329
legalized: true
2430

2531
body: |
2632
bb.0:
2733
liveins: $sgpr0, $vgpr0
28-
; CHECK-LABEL: name: icmp_sv
29-
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
30-
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
31-
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
34+
; GFX7-LABEL: name: icmp_eq_s32_sv
35+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
36+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
37+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
38+
; GFX8-LABEL: name: icmp_eq_s32_sv
39+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
40+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
41+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
3242
%0:_(s32) = COPY $sgpr0
3343
%1:_(s32) = COPY $vgpr0
34-
%2:_(s1) = G_ICMP intpred(ne), %0, %1
44+
%2:_(s1) = G_ICMP intpred(eq), %0, %1
3545
...
3646

3747
---
38-
name: icmp_vs
48+
name: icmp_eq_s32_vs
3949
legalized: true
4050

4151
body: |
4252
bb.0:
4353
liveins: $sgpr0, $vgpr0
44-
; CHECK-LABEL: name: icmp_vs
45-
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
46-
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
47-
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY]]
54+
; GFX7-LABEL: name: icmp_eq_s32_vs
55+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
56+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
57+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY]]
58+
; GFX8-LABEL: name: icmp_eq_s32_vs
59+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
60+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
61+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY]]
4862
%0:_(s32) = COPY $sgpr0
4963
%1:_(s32) = COPY $vgpr0
50-
%2:_(s1) = G_ICMP intpred(ne), %1, %0
64+
%2:_(s1) = G_ICMP intpred(eq), %1, %0
5165
...
5266

5367
---
54-
name: icmp_vv
68+
name: icmp_eq_s32_vv
5569
legalized: true
5670

5771
body: |
5872
bb.0:
5973
liveins: $vgpr0, $vgpr1
60-
; CHECK-LABEL: name: icmp_vv
61-
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
62-
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
63-
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
74+
; GFX7-LABEL: name: icmp_eq_s32_vv
75+
; GFX7: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
76+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
77+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
78+
; GFX8-LABEL: name: icmp_eq_s32_vv
79+
; GFX8: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
80+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
81+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
6482
%0:_(s32) = COPY $vgpr0
6583
%1:_(s32) = COPY $vgpr1
84+
%2:_(s1) = G_ICMP intpred(eq), %0, %1
85+
...
86+
87+
---
88+
name: icmp_eq_s64_ss
89+
legalized: true
90+
91+
body: |
92+
bb.0:
93+
liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
94+
; GFX7-LABEL: name: icmp_eq_s64_ss
95+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
96+
; GFX7: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
97+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
98+
; GFX8-LABEL: name: icmp_eq_s64_ss
99+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
100+
; GFX8: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
101+
; GFX8: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
102+
%0:_(s64) = COPY $sgpr0_sgpr1
103+
%1:_(s64) = COPY $sgpr2_sgpr3
104+
%2:_(s1) = G_ICMP intpred(eq), %0, %1
105+
...
106+
107+
---
108+
name: icmp_eq_s64_sv
109+
legalized: true
110+
111+
body: |
112+
bb.0:
113+
liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
114+
; GFX7-LABEL: name: icmp_eq_s64_sv
115+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
116+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
117+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
118+
; GFX8-LABEL: name: icmp_eq_s64_sv
119+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
120+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
121+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
122+
%0:_(s64) = COPY $sgpr0_sgpr1
123+
%1:_(s64) = COPY $vgpr0_vgpr1
124+
%2:_(s1) = G_ICMP intpred(eq), %0, %1
125+
...
126+
127+
---
128+
name: icmp_eq_s64_vs
129+
legalized: true
130+
131+
body: |
132+
bb.0:
133+
liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
134+
; GFX7-LABEL: name: icmp_eq_s64_vs
135+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
136+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
137+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s64), [[COPY]]
138+
; GFX8-LABEL: name: icmp_eq_s64_vs
139+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
140+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
141+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s64), [[COPY]]
142+
%0:_(s64) = COPY $sgpr0_sgpr1
143+
%1:_(s64) = COPY $vgpr0_vgpr1
144+
%2:_(s1) = G_ICMP intpred(eq), %1, %0
145+
...
146+
147+
---
148+
name: icmp_eq_s64_vv
149+
legalized: true
150+
151+
body: |
152+
bb.0:
153+
liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
154+
; GFX7-LABEL: name: icmp_eq_s64_vv
155+
; GFX7: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
156+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
157+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
158+
; GFX8-LABEL: name: icmp_eq_s64_vv
159+
; GFX8: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
160+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
161+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
162+
%0:_(s64) = COPY $vgpr0_vgpr1
163+
%1:_(s64) = COPY $vgpr2_vgpr3
164+
%2:_(s1) = G_ICMP intpred(eq), %0, %1
165+
...
166+
167+
---
168+
name: icmp_ne_s64_ss
169+
legalized: true
170+
171+
body: |
172+
bb.0:
173+
liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
174+
; GFX7-LABEL: name: icmp_ne_s64_ss
175+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
176+
; GFX7: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
177+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
178+
; GFX8-LABEL: name: icmp_ne_s64_ss
179+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
180+
; GFX8: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
181+
; GFX8: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
182+
%0:_(s64) = COPY $sgpr0_sgpr1
183+
%1:_(s64) = COPY $sgpr2_sgpr3
184+
%2:_(s1) = G_ICMP intpred(ne), %0, %1
185+
...
186+
187+
---
188+
name: icmp_ne_s64_sv
189+
legalized: true
190+
191+
body: |
192+
bb.0:
193+
liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
194+
; GFX7-LABEL: name: icmp_ne_s64_sv
195+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
196+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
197+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
198+
; GFX8-LABEL: name: icmp_ne_s64_sv
199+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
200+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
201+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
202+
%0:_(s64) = COPY $sgpr0_sgpr1
203+
%1:_(s64) = COPY $vgpr0_vgpr1
66204
%2:_(s1) = G_ICMP intpred(ne), %0, %1
67205
...
206+
207+
---
208+
name: icmp_ne_s64_vs
209+
legalized: true
210+
211+
body: |
212+
bb.0:
213+
liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
214+
; GFX7-LABEL: name: icmp_ne_s64_vs
215+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
216+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
217+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s64), [[COPY]]
218+
; GFX8-LABEL: name: icmp_ne_s64_vs
219+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
220+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
221+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s64), [[COPY]]
222+
%0:_(s64) = COPY $sgpr0_sgpr1
223+
%1:_(s64) = COPY $vgpr0_vgpr1
224+
%2:_(s1) = G_ICMP intpred(ne), %1, %0
225+
...
226+
227+
---
228+
name: icmp_ne_s64_vv
229+
legalized: true
230+
231+
body: |
232+
bb.0:
233+
liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
234+
; GFX7-LABEL: name: icmp_ne_s64_vv
235+
; GFX7: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
236+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
237+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
238+
; GFX8-LABEL: name: icmp_ne_s64_vv
239+
; GFX8: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
240+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
241+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
242+
%0:_(s64) = COPY $vgpr0_vgpr1
243+
%1:_(s64) = COPY $vgpr2_vgpr3
244+
%2:_(s1) = G_ICMP intpred(ne), %0, %1
245+
...
246+
247+
---
248+
name: icmp_slt_s64_ss
249+
legalized: true
250+
251+
body: |
252+
bb.0:
253+
liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
254+
; GFX7-LABEL: name: icmp_slt_s64_ss
255+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
256+
; GFX7: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
257+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
258+
; GFX8-LABEL: name: icmp_slt_s64_ss
259+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
260+
; GFX8: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
261+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
262+
%0:_(s64) = COPY $sgpr0_sgpr1
263+
%1:_(s64) = COPY $sgpr2_sgpr3
264+
%2:_(s1) = G_ICMP intpred(slt), %0, %1
265+
...
266+
267+
---
268+
name: icmp_slt_s64_sv
269+
legalized: true
270+
271+
body: |
272+
bb.0:
273+
liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
274+
; GFX7-LABEL: name: icmp_slt_s64_sv
275+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
276+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
277+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
278+
; GFX8-LABEL: name: icmp_slt_s64_sv
279+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
280+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
281+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
282+
%0:_(s64) = COPY $sgpr0_sgpr1
283+
%1:_(s64) = COPY $vgpr0_vgpr1
284+
%2:_(s1) = G_ICMP intpred(slt), %0, %1
285+
...
286+
287+
---
288+
name: icmp_slt_s64_vs
289+
legalized: true
290+
291+
body: |
292+
bb.0:
293+
liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
294+
; GFX7-LABEL: name: icmp_slt_s64_vs
295+
; GFX7: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
296+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
297+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY1]](s64), [[COPY]]
298+
; GFX8-LABEL: name: icmp_slt_s64_vs
299+
; GFX8: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
300+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
301+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY1]](s64), [[COPY]]
302+
%0:_(s64) = COPY $sgpr0_sgpr1
303+
%1:_(s64) = COPY $vgpr0_vgpr1
304+
%2:_(s1) = G_ICMP intpred(slt), %1, %0
305+
...
306+
307+
---
308+
name: icmp_slt_s64_vv
309+
legalized: true
310+
311+
body: |
312+
bb.0:
313+
liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
314+
; GFX7-LABEL: name: icmp_slt_s64_vv
315+
; GFX7: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
316+
; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
317+
; GFX7: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
318+
; GFX8-LABEL: name: icmp_slt_s64_vv
319+
; GFX8: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
320+
; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
321+
; GFX8: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
322+
%0:_(s64) = COPY $vgpr0_vgpr1
323+
%1:_(s64) = COPY $vgpr2_vgpr3
324+
%2:_(s1) = G_ICMP intpred(slt), %0, %1
325+
...

0 commit comments

Comments
 (0)