• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 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
4
5---
6name: anyext_s32_to_s64_s
7legalized: true
8
9body: |
10  bb.0:
11    liveins: $sgpr0
12    ; CHECK-LABEL: name: anyext_s32_to_s64_s
13    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
14    ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s64) = G_ANYEXT [[COPY]](s32)
15    %0:_(s32) = COPY $sgpr0
16    %1:_(s64) = G_ANYEXT %0
17...
18
19---
20name: anyext_s32_to_s64_v
21legalized: true
22
23body: |
24  bb.0:
25    liveins: $vgpr0
26    ; CHECK-LABEL: name: anyext_s32_to_s64_v
27    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
28    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
29    ; CHECK: [[DEF:%[0-9]+]]:vgpr(s32) = G_IMPLICIT_DEF
30    ; CHECK: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY1]](s32), [[DEF]](s32)
31    %0:_(s32) = COPY $vgpr0
32    %1:_(s64) = G_ANYEXT %0
33...
34
35---
36name: anyext_s1_to_s16_scc
37legalized: true
38
39body: |
40  bb.0:
41    liveins: $sgpr0, $sgpr1
42    ; CHECK-LABEL: name: anyext_s1_to_s16_scc
43    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
44    ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
45    ; CHECK: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
46    ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)
47    ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s16) = G_ANYEXT [[TRUNC]](s1)
48    %0:_(s32) = COPY $sgpr0
49    %1:_(s32) = COPY $sgpr1
50    %2:_(s1) = G_ICMP intpred(eq), %0, %1
51    %3:_(s16) = G_ANYEXT %2
52...
53
54---
55name: anyext_s1_to_s32_scc
56legalized: true
57
58body: |
59  bb.0:
60    liveins: $sgpr0, $sgpr1
61    ; CHECK-LABEL: name: anyext_s1_to_s32_scc
62    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
63    ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
64    ; CHECK: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
65    ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)
66    ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1)
67    %0:_(s32) = COPY $sgpr0
68    %1:_(s32) = COPY $sgpr1
69    %2:_(s1) = G_ICMP intpred(eq), %0, %1
70    %3:_(s32) = G_ANYEXT %2
71...
72
73---
74name: anyext_s1_to_s64_scc
75legalized: true
76
77body: |
78  bb.0:
79    liveins: $sgpr0, $sgpr1
80    ; CHECK-LABEL: name: anyext_s1_to_s64_scc
81    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
82    ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
83    ; CHECK: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
84    ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)
85    ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s64) = G_ANYEXT [[TRUNC]](s1)
86    %0:_(s32) = COPY $sgpr0
87    %1:_(s32) = COPY $sgpr1
88    %2:_(s1) = G_ICMP intpred(eq), %0, %1
89    %3:_(s64) = G_ANYEXT %2
90...
91
92---
93name: anyext_s1_to_s16_vcc
94legalized: true
95
96body: |
97  bb.0:
98    liveins: $vgpr0, $vgpr1
99    ; CHECK-LABEL: name: anyext_s1_to_s16_vcc
100    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
101    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
102    ; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
103    ; CHECK: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
104    ; CHECK: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
105    ; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]
106    ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[SELECT]](s32)
107    %0:_(s32) = COPY $vgpr0
108    %1:_(s32) = COPY $vgpr1
109    %2:_(s1) = G_ICMP intpred(eq), %0, %1
110    %3:_(s16) = G_ANYEXT %2
111...
112
113---
114name: anyext_s1_to_s32_vcc
115legalized: true
116
117body: |
118  bb.0:
119    liveins: $vgpr0, $vgpr1
120    ; CHECK-LABEL: name: anyext_s1_to_s32_vcc
121    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
122    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
123    ; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
124    ; CHECK: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
125    ; CHECK: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
126    ; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]
127    %0:_(s32) = COPY $vgpr0
128    %1:_(s32) = COPY $vgpr1
129    %2:_(s1) = G_ICMP intpred(eq), %0, %1
130    %3:_(s32) = G_ANYEXT %2
131...
132
133---
134name: anyext_s1_to_s64_vcc
135legalized: true
136
137body: |
138  bb.0:
139    liveins: $vgpr0, $vgpr1
140    ; CHECK-LABEL: name: anyext_s1_to_s64_vcc
141    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
142    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
143    ; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
144    ; CHECK: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
145    ; CHECK: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
146    ; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]
147    ; CHECK: [[DEF:%[0-9]+]]:vgpr(s32) = G_IMPLICIT_DEF
148    ; CHECK: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[DEF]](s32)
149    %0:_(s32) = COPY $vgpr0
150    %1:_(s32) = COPY $vgpr1
151    %2:_(s1) = G_ICMP intpred(eq), %0, %1
152    %3:_(s64) = G_ANYEXT %2
153...
154
155---
156name: anyext_s1_to_s16_sgpr
157legalized: true
158
159body: |
160  bb.0:
161    liveins: $sgpr0
162    ; CHECK-LABEL: name: anyext_s1_to_s16_sgpr
163    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
164    ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
165    ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s16) = G_ANYEXT [[TRUNC]](s1)
166    %0:_(s32) = COPY $sgpr0
167    %1:_(s1) = G_TRUNC %0
168    %2:_(s16) = G_ANYEXT %1
169...
170
171---
172name: anyext_s1_to_s32_sgpr
173legalized: true
174
175body: |
176  bb.0:
177    liveins: $sgpr0
178    ; CHECK-LABEL: name: anyext_s1_to_s32_sgpr
179    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
180    ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
181    ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1)
182    %0:_(s32) = COPY $sgpr0
183    %1:_(s1) = G_TRUNC %0
184    %2:_(s32) = G_ANYEXT %1
185...
186
187---
188name: anyext_s1_to_s64_sgpr
189legalized: true
190
191body: |
192  bb.0:
193    liveins: $sgpr0
194    ; CHECK-LABEL: name: anyext_s1_to_s64_sgpr
195    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
196    ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
197    ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s64) = G_ANYEXT [[TRUNC]](s1)
198    %0:_(s32) = COPY $sgpr0
199    %1:_(s1) = G_TRUNC %0
200    %2:_(s64) = G_ANYEXT %1
201...
202
203---
204name: anyext_s1_to_s16_vgpr
205legalized: true
206
207body: |
208  bb.0:
209    liveins: $vgpr0
210    ; CHECK-LABEL: name: anyext_s1_to_s16_vgpr
211    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
212    ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
213    ; CHECK: [[ANYEXT:%[0-9]+]]:vgpr(s16) = G_ANYEXT [[TRUNC]](s1)
214    %0:_(s32) = COPY $vgpr0
215    %1:_(s1) = G_TRUNC %0
216    %2:_(s16) = G_ANYEXT %1
217...
218
219---
220name: anyext_s1_to_s32_vgpr
221legalized: true
222
223body: |
224  bb.0:
225    liveins: $vgpr0
226    ; CHECK-LABEL: name: anyext_s1_to_s32_vgpr
227    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
228    ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
229    ; CHECK: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1)
230    %0:_(s32) = COPY $vgpr0
231    %1:_(s1) = G_TRUNC %0
232    %2:_(s32) = G_ANYEXT %1
233...
234
235---
236name: anyext_s1_to_s64_vgpr
237legalized: true
238
239body: |
240  bb.0:
241    liveins: $vgpr0
242    ; CHECK-LABEL: name: anyext_s1_to_s64_vgpr
243    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
244    ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
245    ; CHECK: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1)
246    ; CHECK: [[DEF:%[0-9]+]]:vgpr(s32) = G_IMPLICIT_DEF
247    ; CHECK: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[ANYEXT]](s32), [[DEF]](s32)
248    %0:_(s32) = COPY $vgpr0
249    %1:_(s1) = G_TRUNC %0
250    %2:_(s64) = G_ANYEXT %1
251...
252