xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ptrtoint.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn -O0 -run-pass=legalizer -global-isel-abort=0 -o - %s  | FileCheck %s
3
4---
5name: test_ptrtoint_p0_to_s64
6body: |
7  bb.0:
8    liveins: $vgpr0_vgpr1
9
10    ; CHECK-LABEL: name: test_ptrtoint_p0_to_s64
11    ; CHECK: liveins: $vgpr0_vgpr1
12    ; CHECK-NEXT: {{  $}}
13    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
14    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
15    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT]](s64)
16    %0:_(p0) = COPY $vgpr0_vgpr1
17    %1:_(s64) = G_PTRTOINT %0
18    $vgpr0_vgpr1 = COPY %1
19...
20
21---
22name: test_ptrtoint_p1_to_s64
23body: |
24  bb.0:
25    liveins: $vgpr0_vgpr1
26
27    ; CHECK-LABEL: name: test_ptrtoint_p1_to_s64
28    ; CHECK: liveins: $vgpr0_vgpr1
29    ; CHECK-NEXT: {{  $}}
30    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
31    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p1)
32    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT]](s64)
33    %0:_(p1) = COPY $vgpr0_vgpr1
34    %1:_(s64) = G_PTRTOINT %0
35    $vgpr0_vgpr1 = COPY %1
36...
37
38---
39name: test_ptrtoint_p4_to_s64
40body: |
41  bb.0:
42    liveins: $vgpr0_vgpr1
43
44    ; CHECK-LABEL: name: test_ptrtoint_p4_to_s64
45    ; CHECK: liveins: $vgpr0_vgpr1
46    ; CHECK-NEXT: {{  $}}
47    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1
48    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p4)
49    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT]](s64)
50    %0:_(p4) = COPY $vgpr0_vgpr1
51    %1:_(s64) = G_PTRTOINT %0
52    $vgpr0_vgpr1 = COPY %1
53...
54
55---
56name: test_ptrtoint_p3_to_s32
57body: |
58  bb.0:
59    liveins: $vgpr0
60
61    ; CHECK-LABEL: name: test_ptrtoint_p3_to_s32
62    ; CHECK: liveins: $vgpr0
63    ; CHECK-NEXT: {{  $}}
64    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
65    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)
66    ; CHECK-NEXT: $vgpr0 = COPY [[PTRTOINT]](s32)
67    %0:_(p3) = COPY $vgpr0
68    %1:_(s32) = G_PTRTOINT %0
69    $vgpr0 = COPY %1
70...
71
72---
73name: test_ptrtoint_p5_to_s32
74body: |
75  bb.0:
76    liveins: $vgpr0
77
78    ; CHECK-LABEL: name: test_ptrtoint_p5_to_s32
79    ; CHECK: liveins: $vgpr0
80    ; CHECK-NEXT: {{  $}}
81    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
82    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p5)
83    ; CHECK-NEXT: $vgpr0 = COPY [[PTRTOINT]](s32)
84    %0:_(p5) = COPY $vgpr0
85    %1:_(s32) = G_PTRTOINT %0
86    $vgpr0 = COPY %1
87...
88
89---
90name: test_ptrtoint_p999_to_s64
91body: |
92  bb.0:
93    liveins: $vgpr0_vgpr1
94
95    ; CHECK-LABEL: name: test_ptrtoint_p999_to_s64
96    ; CHECK: liveins: $vgpr0_vgpr1
97    ; CHECK-NEXT: {{  $}}
98    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1
99    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p999)
100    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT]](s64)
101    %0:_(p999) = COPY $vgpr0_vgpr1
102    %1:_(s64) = G_PTRTOINT %0
103    $vgpr0_vgpr1 = COPY %1
104...
105
106---
107name: test_ptrtoint_p0_to_s32
108body: |
109  bb.0:
110    liveins: $vgpr0_vgpr1
111
112    ; CHECK-LABEL: name: test_ptrtoint_p0_to_s32
113    ; CHECK: liveins: $vgpr0_vgpr1
114    ; CHECK-NEXT: {{  $}}
115    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
116    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
117    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[PTRTOINT]](s64)
118    ; CHECK-NEXT: $vgpr0 = COPY [[TRUNC]](s32)
119    %0:_(p0) = COPY $vgpr0_vgpr1
120    %1:_(s32) = G_PTRTOINT %0
121    $vgpr0 = COPY %1
122...
123
124---
125name: test_ptrtoint_p0_to_s128
126body: |
127  bb.0:
128    liveins: $vgpr0_vgpr1
129
130    ; CHECK-LABEL: name: test_ptrtoint_p0_to_s128
131    ; CHECK: liveins: $vgpr0_vgpr1
132    ; CHECK-NEXT: {{  $}}
133    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
134    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
135    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
136    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[PTRTOINT]](s64), [[C]](s64)
137    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[MV]](s128)
138    %0:_(p0) = COPY $vgpr0_vgpr1
139    %1:_(s128) = G_PTRTOINT %0
140    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
141...
142
143---
144name: test_ptrtoint_v2p0_to_v2s64
145body: |
146  bb.0:
147    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
148
149    ; CHECK-LABEL: name: test_ptrtoint_v2p0_to_v2s64
150    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
151    ; CHECK-NEXT: {{  $}}
152    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
153    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>)
154    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[UV]](p0)
155    ; CHECK-NEXT: [[PTRTOINT1:%[0-9]+]]:_(s64) = G_PTRTOINT [[UV1]](p0)
156    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[PTRTOINT]](s64), [[PTRTOINT1]](s64)
157    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
158    %0:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
159    %1:_(<2 x s64>) = G_PTRTOINT %0
160    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
161...
162
163---
164name: test_ptrtoint_v2s32_to_v2p0
165body: |
166  bb.0:
167    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
168
169    ; CHECK-LABEL: name: test_ptrtoint_v2s32_to_v2p0
170    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
171    ; CHECK-NEXT: {{  $}}
172    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
173    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>)
174    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[UV]](p0)
175    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[PTRTOINT]](s64)
176    ; CHECK-NEXT: [[PTRTOINT1:%[0-9]+]]:_(s64) = G_PTRTOINT [[UV1]](p0)
177    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[PTRTOINT1]](s64)
178    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)
179    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
180    %0:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
181    %1:_(<2 x s32>) = G_PTRTOINT %0
182    $vgpr0_vgpr1 = COPY %1
183...
184
185---
186name: test_ptrtoint_p3_to_s29
187body: |
188  bb.0:
189    liveins: $vgpr0
190
191    ; CHECK-LABEL: name: test_ptrtoint_p3_to_s29
192    ; CHECK: liveins: $vgpr0
193    ; CHECK-NEXT: {{  $}}
194    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
195    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)
196    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s29) = G_TRUNC [[PTRTOINT]](s32)
197    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s29)
198    %0:_(p3) = COPY $vgpr0
199    %1:_(s29) = G_PTRTOINT %0
200    S_ENDPGM 0, implicit %1
201...
202
203---
204name: test_ptrtoint_p3_to_s33
205body: |
206  bb.0:
207    liveins: $vgpr0
208
209    ; CHECK-LABEL: name: test_ptrtoint_p3_to_s33
210    ; CHECK: liveins: $vgpr0
211    ; CHECK-NEXT: {{  $}}
212    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
213    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)
214    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s33) = G_ZEXT [[PTRTOINT]](s32)
215    ; CHECK-NEXT: S_ENDPGM 0, implicit [[ZEXT]](s33)
216    %0:_(p3) = COPY $vgpr0
217    %1:_(s33) = G_PTRTOINT %0
218    S_ENDPGM 0, implicit %1
219...
220