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