1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s 3 4--- 5name: add_ptrtoint_p1_to_s64_lhs 6tracksRegLiveness: true 7body: | 8 bb.0: 9 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 10 11 ; GCN-LABEL: name: add_ptrtoint_p1_to_s64_lhs 12 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 13 ; GCN-NEXT: {{ $}} 14 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 15 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 16 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[COPY1]](s64) 17 ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[PTR_ADD]](p1) 18 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT]](s64) 19 %0:_(p1) = COPY $vgpr0_vgpr1 20 %1:_(s64) = COPY $vgpr2_vgpr3 21 %2:_(s64) = G_PTRTOINT %0 22 %3:_(s64) = G_ADD %2, %1 23 $vgpr0_vgpr1 = COPY %3 24 25... 26 27--- 28name: add_ptrtoint_p1_to_s32_lhs 29tracksRegLiveness: true 30body: | 31 bb.0: 32 liveins: $vgpr0_vgpr1, $vgpr2 33 34 ; GCN-LABEL: name: add_ptrtoint_p1_to_s32_lhs 35 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2 36 ; GCN-NEXT: {{ $}} 37 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 38 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 39 ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p1) 40 ; GCN-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[PTRTOINT]], [[COPY1]] 41 ; GCN-NEXT: $vgpr0 = COPY [[ADD]](s32) 42 %0:_(p1) = COPY $vgpr0_vgpr1 43 %1:_(s32) = COPY $vgpr2 44 %2:_(s32) = G_PTRTOINT %0 45 %3:_(s32) = G_ADD %2, %1 46 $vgpr0 = COPY %3 47 48... 49 50--- 51name: add_ptrtoint_p3_to_s32_lhs 52tracksRegLiveness: true 53body: | 54 bb.0: 55 liveins: $vgpr0, $vgpr1 56 57 ; GCN-LABEL: name: add_ptrtoint_p3_to_s32_lhs 58 ; GCN: liveins: $vgpr0, $vgpr1 59 ; GCN-NEXT: {{ $}} 60 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 61 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 62 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p3) = G_PTR_ADD [[COPY]], [[COPY1]](s32) 63 ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[PTR_ADD]](p3) 64 ; GCN-NEXT: $vgpr0 = COPY [[PTRTOINT]](s32) 65 %0:_(p3) = COPY $vgpr0 66 %1:_(s32) = COPY $vgpr1 67 %2:_(s32) = G_PTRTOINT %0 68 %3:_(s32) = G_ADD %2, %1 69 $vgpr0 = COPY %3 70 71... 72 73--- 74name: inttoptr_add_ptrtoint_p1_to_s64_lhs 75tracksRegLiveness: true 76body: | 77 bb.0: 78 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 79 80 ; GCN-LABEL: name: inttoptr_add_ptrtoint_p1_to_s64_lhs 81 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 82 ; GCN-NEXT: {{ $}} 83 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 84 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 85 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[COPY1]](s64) 86 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[PTR_ADD]](p1) 87 %0:_(p1) = COPY $vgpr0_vgpr1 88 %1:_(s64) = COPY $vgpr2_vgpr3 89 %2:_(s64) = G_PTRTOINT %0 90 %3:_(s64) = G_ADD %2, %1 91 %4:_(p1) = G_INTTOPTR %3 92 $vgpr0_vgpr1 = COPY %4 93 94... 95 96--- 97name: add_ptrtoint_v2p3_to_v2s32_lhs 98tracksRegLiveness: true 99body: | 100 bb.0: 101 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 102 103 ; GCN-LABEL: name: add_ptrtoint_v2p3_to_v2s32_lhs 104 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 105 ; GCN-NEXT: {{ $}} 106 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 107 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 108 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(<2 x p3>) = G_PTR_ADD [[COPY]], [[COPY1]](<2 x s32>) 109 ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(<2 x s32>) = G_PTRTOINT [[PTR_ADD]](<2 x p3>) 110 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT]](<2 x s32>) 111 %0:_(<2 x p3>) = COPY $vgpr0_vgpr1 112 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3 113 %2:_(<2 x s32>) = G_PTRTOINT %0 114 %3:_(<2 x s32>) = G_ADD %2, %1 115 $vgpr0_vgpr1 = COPY %3 116 117... 118 119--- 120name: add_ptrtoint_v2p1_to_v2s32_lhs 121tracksRegLiveness: true 122body: | 123 bb.0: 124 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 125 126 ; GCN-LABEL: name: add_ptrtoint_v2p1_to_v2s32_lhs 127 ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 128 ; GCN-NEXT: {{ $}} 129 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 130 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 131 ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(<2 x s32>) = G_PTRTOINT [[COPY]](<2 x p1>) 132 ; GCN-NEXT: [[ADD:%[0-9]+]]:_(<2 x s32>) = G_ADD [[PTRTOINT]], [[COPY1]] 133 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[ADD]](<2 x s32>) 134 %0:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 135 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5 136 %2:_(<2 x s32>) = G_PTRTOINT %0 137 %3:_(<2 x s32>) = G_ADD %2, %1 138 $vgpr0_vgpr1 = COPY %3 139 140... 141 142--- 143name: add_ptrtoint_p1_to_s64_rhs 144tracksRegLiveness: true 145body: | 146 bb.0: 147 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 148 149 ; GCN-LABEL: name: add_ptrtoint_p1_to_s64_rhs 150 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 151 ; GCN-NEXT: {{ $}} 152 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 153 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 154 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[COPY1]](s64) 155 ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[PTR_ADD]](p1) 156 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT]](s64) 157 %0:_(p1) = COPY $vgpr0_vgpr1 158 %1:_(s64) = COPY $vgpr2_vgpr3 159 %2:_(s64) = G_PTRTOINT %0 160 %3:_(s64) = G_ADD %1, %2 161 $vgpr0_vgpr1 = COPY %3 162 163... 164 165--- 166name: add_ptrtoint_p1_to_s64_lhs_rhs 167tracksRegLiveness: true 168body: | 169 bb.0: 170 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 171 172 ; GCN-LABEL: name: add_ptrtoint_p1_to_s64_lhs_rhs 173 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 174 ; GCN-NEXT: {{ $}} 175 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 176 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr3 177 ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY1]](p1) 178 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[PTRTOINT]](s64) 179 ; GCN-NEXT: [[PTRTOINT1:%[0-9]+]]:_(s64) = G_PTRTOINT [[PTR_ADD]](p1) 180 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[PTRTOINT1]](s64) 181 %0:_(p1) = COPY $vgpr0_vgpr1 182 %1:_(p1) = COPY $vgpr2_vgpr3 183 %2:_(s64) = G_PTRTOINT %0 184 %3:_(s64) = G_PTRTOINT %1 185 %4:_(s64) = G_ADD %2, %3 186 $vgpr0_vgpr1 = COPY %4 187 188... 189