xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ptrmask.mir (revision 373c343a77a7afaa07179db1754a52b620dfaf2e)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer %s -o - | FileCheck %s
3
4---
5name: ptrmask_p1_s16
6body: |
7  bb.0:
8    liveins: $vgpr0_vgpr1, $vgpr2
9
10    ; CHECK-LABEL: name: ptrmask_p1_s16
11    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
12    ; CHECK-NEXT: {{  $}}
13    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
14    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
15    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32)
16    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535
17    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]
18    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p1) = G_PTRMASK [[COPY]], [[AND]](s64)
19    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p1)
20    %0:_(p1) = COPY $vgpr0_vgpr1
21    %1:_(s32) = COPY $vgpr2
22    %2:_(s16) = G_TRUNC %1
23    %3:_(p1) = G_PTRMASK %0, %2
24    $vgpr0_vgpr1 = COPY %3
25...
26
27---
28name: ptrmask_p1_s32
29body: |
30  bb.0:
31    liveins: $vgpr0_vgpr1, $vgpr2
32
33    ; CHECK-LABEL: name: ptrmask_p1_s32
34    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
35    ; CHECK-NEXT: {{  $}}
36    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
37    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
38    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)
39    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p1) = G_PTRMASK [[COPY]], [[ZEXT]](s64)
40    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p1)
41    %0:_(p1) = COPY $vgpr0_vgpr1
42    %1:_(s32) = COPY $vgpr2
43    %2:_(p1) = G_PTRMASK %0, %1
44    $vgpr0_vgpr1 = COPY %2
45...
46
47---
48name: ptrmask_p1_s64
49body: |
50  bb.0:
51    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
52
53    ; CHECK-LABEL: name: ptrmask_p1_s64
54    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
55    ; CHECK-NEXT: {{  $}}
56    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
57    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
58    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p1) = G_PTRMASK [[COPY]], [[COPY1]](s64)
59    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p1)
60    %0:_(p1) = COPY $vgpr0_vgpr1
61    %1:_(s64) = COPY $vgpr2_vgpr3
62    %2:_(p1) = G_PTRMASK %0, %1
63    $vgpr0_vgpr1 = COPY %2
64...
65
66---
67name: ptrmask_p1_s96
68body: |
69  bb.0:
70    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
71
72    ; CHECK-LABEL: name: ptrmask_p1_s96
73    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
74    ; CHECK-NEXT: {{  $}}
75    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
76    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr2_vgpr3_vgpr4
77    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s96)
78    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p1) = G_PTRMASK [[COPY]], [[TRUNC]](s64)
79    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p1)
80    %0:_(p1) = COPY $vgpr0_vgpr1
81    %1:_(s96) = COPY $vgpr2_vgpr3_vgpr4
82    %2:_(p1) = G_PTRMASK %0, %1
83    $vgpr0_vgpr1 = COPY %2
84...
85
86---
87name: ptrmask_p0_s16
88body: |
89  bb.0:
90    liveins: $vgpr0_vgpr1, $vgpr2
91
92    ; CHECK-LABEL: name: ptrmask_p0_s16
93    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
94    ; CHECK-NEXT: {{  $}}
95    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
96    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
97    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32)
98    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535
99    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]
100    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[COPY]], [[AND]](s64)
101    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p0)
102    %0:_(p0) = COPY $vgpr0_vgpr1
103    %1:_(s32) = COPY $vgpr2
104    %2:_(s16) = G_TRUNC %1
105    %3:_(p0) = G_PTRMASK %0, %2
106    $vgpr0_vgpr1 = COPY %3
107...
108
109---
110name: ptrmask_p0_s32
111body: |
112  bb.0:
113    liveins: $vgpr0_vgpr1, $vgpr2
114
115    ; CHECK-LABEL: name: ptrmask_p0_s32
116    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
117    ; CHECK-NEXT: {{  $}}
118    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
119    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
120    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)
121    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[COPY]], [[ZEXT]](s64)
122    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p0)
123    %0:_(p0) = COPY $vgpr0_vgpr1
124    %1:_(s32) = COPY $vgpr2
125    %2:_(p0) = G_PTRMASK %0, %1
126    $vgpr0_vgpr1 = COPY %2
127...
128
129---
130name: ptrmask_p0_s64
131body: |
132  bb.0:
133    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
134
135    ; CHECK-LABEL: name: ptrmask_p0_s64
136    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
137    ; CHECK-NEXT: {{  $}}
138    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
139    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
140    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[COPY]], [[COPY1]](s64)
141    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p0)
142    %0:_(p0) = COPY $vgpr0_vgpr1
143    %1:_(s64) = COPY $vgpr2_vgpr3
144    %2:_(p0) = G_PTRMASK %0, %1
145    $vgpr0_vgpr1 = COPY %2
146...
147
148---
149name: ptrmask_p0_s96
150body: |
151  bb.0:
152    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
153
154    ; CHECK-LABEL: name: ptrmask_p0_s96
155    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
156    ; CHECK-NEXT: {{  $}}
157    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
158    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr2_vgpr3_vgpr4
159    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s96)
160    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[COPY]], [[TRUNC]](s64)
161    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRMASK]](p0)
162    %0:_(p0) = COPY $vgpr0_vgpr1
163    %1:_(s96) = COPY $vgpr2_vgpr3_vgpr4
164    %2:_(p0) = G_PTRMASK %0, %1
165    $vgpr0_vgpr1 = COPY %2
166...
167
168---
169name: ptrmask_p3_s16
170body: |
171  bb.0:
172    liveins: $vgpr0, $vgpr1
173
174    ; CHECK-LABEL: name: ptrmask_p3_s16
175    ; CHECK: liveins: $vgpr0, $vgpr1
176    ; CHECK-NEXT: {{  $}}
177    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
178    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
179    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
180    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
181    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p3) = G_PTRMASK [[COPY]], [[AND]](s32)
182    ; CHECK-NEXT: $vgpr0 = COPY [[PTRMASK]](p3)
183    %0:_(p3) = COPY $vgpr0
184    %1:_(s32) = COPY $vgpr1
185    %2:_(s16) = G_TRUNC %1
186    %3:_(p3) = G_PTRMASK %0, %2
187    $vgpr0 = COPY %3
188...
189
190---
191name: ptrmask_p3_s32
192body: |
193  bb.0:
194    liveins: $vgpr0, $vgpr1
195
196    ; CHECK-LABEL: name: ptrmask_p3_s32
197    ; CHECK: liveins: $vgpr0, $vgpr1
198    ; CHECK-NEXT: {{  $}}
199    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
200    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
201    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p3) = G_PTRMASK [[COPY]], [[COPY1]](s32)
202    ; CHECK-NEXT: $vgpr0 = COPY [[PTRMASK]](p3)
203    %0:_(p3) = COPY $vgpr0
204    %1:_(s32) = COPY $vgpr1
205    %2:_(p3) = G_PTRMASK %0, %1
206    $vgpr0 = COPY %2
207...
208
209---
210name: ptrmask_p3_s64
211body: |
212  bb.0:
213    liveins: $vgpr0, $vgpr1_vgpr2
214
215    ; CHECK-LABEL: name: ptrmask_p3_s64
216    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2
217    ; CHECK-NEXT: {{  $}}
218    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
219    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2
220    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
221    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p3) = G_PTRMASK [[COPY]], [[TRUNC]](s32)
222    ; CHECK-NEXT: $vgpr0 = COPY [[PTRMASK]](p3)
223    %0:_(p3) = COPY $vgpr0
224    %1:_(s64) = COPY $vgpr1_vgpr2
225    %2:_(p3) = G_PTRMASK %0, %1
226    $vgpr0 = COPY %2
227...
228
229---
230name: ptrmask_p3_s96
231body: |
232  bb.0:
233    liveins: $vgpr0, $vgpr1_vgpr2_vgpr3
234
235    ; CHECK-LABEL: name: ptrmask_p3_s96
236    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2_vgpr3
237    ; CHECK-NEXT: {{  $}}
238    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
239    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr1_vgpr2_vgpr3
240    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s96)
241    ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p3) = G_PTRMASK [[COPY]], [[TRUNC]](s32)
242    ; CHECK-NEXT: $vgpr0 = COPY [[PTRMASK]](p3)
243    %0:_(p3) = COPY $vgpr0
244    %1:_(s96) = COPY $vgpr1_vgpr2_vgpr3
245    %2:_(p3) = G_PTRMASK %0, %1
246    $vgpr0 = COPY %2
247...
248