Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / legalize-ptrtoint.mir
blob59945720ebab5a8b3bfdd4d054eb9b0ea41a9d5b
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
4 ---
5 name: test_ptrtoint_p0_to_s64
6 body: |
7   bb.0:
8     liveins: $vgpr0_vgpr1
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 ...
21 ---
22 name: test_ptrtoint_p1_to_s64
23 body: |
24   bb.0:
25     liveins: $vgpr0_vgpr1
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 ...
38 ---
39 name: test_ptrtoint_p4_to_s64
40 body: |
41   bb.0:
42     liveins: $vgpr0_vgpr1
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 ...
55 ---
56 name: test_ptrtoint_p3_to_s32
57 body: |
58   bb.0:
59     liveins: $vgpr0
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 ...
72 ---
73 name: test_ptrtoint_p5_to_s32
74 body: |
75   bb.0:
76     liveins: $vgpr0
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 ...
89 ---
90 name: test_ptrtoint_p999_to_s64
91 body: |
92   bb.0:
93     liveins: $vgpr0_vgpr1
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
107 name: test_ptrtoint_p0_to_s32
108 body: |
109   bb.0:
110     liveins: $vgpr0_vgpr1
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
125 name: test_ptrtoint_p0_to_s128
126 body: |
127   bb.0:
128     liveins: $vgpr0_vgpr1
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
144 name: test_ptrtoint_v2p0_to_v2s64
145 body: |
146   bb.0:
147     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
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
164 name: test_ptrtoint_v2s32_to_v2p0
165 body: |
166   bb.0:
167     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
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
186 name: test_ptrtoint_p3_to_s29
187 body: |
188   bb.0:
189     liveins: $vgpr0
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
204 name: test_ptrtoint_p3_to_s33
205 body: |
206   bb.0:
207     liveins: $vgpr0
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