1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX6 %s 3# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX7 %s 4# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX8 %s 5# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s 6# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s 7# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s 8 9--- 10name: shl_s32_ss 11legalized: true 12regBankSelected: true 13 14body: | 15 bb.0: 16 liveins: $sgpr0, $sgpr1 17 ; GFX6-LABEL: name: shl_s32_ss 18 ; GFX6: liveins: $sgpr0, $sgpr1 19 ; GFX6-NEXT: {{ $}} 20 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 21 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 22 ; GFX6-NEXT: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], [[COPY1]], implicit-def dead $scc 23 ; GFX6-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B32_]] 24 ; 25 ; GFX7-LABEL: name: shl_s32_ss 26 ; GFX7: liveins: $sgpr0, $sgpr1 27 ; GFX7-NEXT: {{ $}} 28 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 29 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 30 ; GFX7-NEXT: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], [[COPY1]], implicit-def dead $scc 31 ; GFX7-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B32_]] 32 ; 33 ; GFX8-LABEL: name: shl_s32_ss 34 ; GFX8: liveins: $sgpr0, $sgpr1 35 ; GFX8-NEXT: {{ $}} 36 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 37 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 38 ; GFX8-NEXT: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], [[COPY1]], implicit-def dead $scc 39 ; GFX8-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B32_]] 40 ; 41 ; GFX9-LABEL: name: shl_s32_ss 42 ; GFX9: liveins: $sgpr0, $sgpr1 43 ; GFX9-NEXT: {{ $}} 44 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 45 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 46 ; GFX9-NEXT: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], [[COPY1]], implicit-def dead $scc 47 ; GFX9-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B32_]] 48 ; 49 ; GFX10-LABEL: name: shl_s32_ss 50 ; GFX10: liveins: $sgpr0, $sgpr1 51 ; GFX10-NEXT: {{ $}} 52 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 53 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 54 ; GFX10-NEXT: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], [[COPY1]], implicit-def dead $scc 55 ; GFX10-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B32_]] 56 %0:sgpr(s32) = COPY $sgpr0 57 %1:sgpr(s32) = COPY $sgpr1 58 %2:sgpr(s32) = G_SHL %0, %1 59 S_ENDPGM 0, implicit %2 60... 61 62--- 63name: shl_s32_sv 64legalized: true 65regBankSelected: true 66 67body: | 68 bb.0: 69 liveins: $sgpr0, $vgpr0 70 ; GFX6-LABEL: name: shl_s32_sv 71 ; GFX6: liveins: $sgpr0, $vgpr0 72 ; GFX6-NEXT: {{ $}} 73 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 74 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 75 ; GFX6-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 76 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 77 ; 78 ; GFX7-LABEL: name: shl_s32_sv 79 ; GFX7: liveins: $sgpr0, $vgpr0 80 ; GFX7-NEXT: {{ $}} 81 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 82 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 83 ; GFX7-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 84 ; GFX7-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 85 ; 86 ; GFX8-LABEL: name: shl_s32_sv 87 ; GFX8: liveins: $sgpr0, $vgpr0 88 ; GFX8-NEXT: {{ $}} 89 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 90 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 91 ; GFX8-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 92 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 93 ; 94 ; GFX9-LABEL: name: shl_s32_sv 95 ; GFX9: liveins: $sgpr0, $vgpr0 96 ; GFX9-NEXT: {{ $}} 97 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 98 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 99 ; GFX9-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 100 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 101 ; 102 ; GFX10-LABEL: name: shl_s32_sv 103 ; GFX10: liveins: $sgpr0, $vgpr0 104 ; GFX10-NEXT: {{ $}} 105 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 106 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 107 ; GFX10-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 108 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 109 %0:sgpr(s32) = COPY $sgpr0 110 %1:vgpr(s32) = COPY $vgpr0 111 %2:vgpr(s32) = G_SHL %0, %1 112 S_ENDPGM 0, implicit %2 113... 114 115--- 116name: shl_s32_vs 117legalized: true 118regBankSelected: true 119 120body: | 121 bb.0: 122 liveins: $sgpr0, $vgpr0 123 ; GFX6-LABEL: name: shl_s32_vs 124 ; GFX6: liveins: $sgpr0, $vgpr0 125 ; GFX6-NEXT: {{ $}} 126 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 127 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 128 ; GFX6-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 129 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 130 ; 131 ; GFX7-LABEL: name: shl_s32_vs 132 ; GFX7: liveins: $sgpr0, $vgpr0 133 ; GFX7-NEXT: {{ $}} 134 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 135 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 136 ; GFX7-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 137 ; GFX7-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 138 ; 139 ; GFX8-LABEL: name: shl_s32_vs 140 ; GFX8: liveins: $sgpr0, $vgpr0 141 ; GFX8-NEXT: {{ $}} 142 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 143 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 144 ; GFX8-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 145 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 146 ; 147 ; GFX9-LABEL: name: shl_s32_vs 148 ; GFX9: liveins: $sgpr0, $vgpr0 149 ; GFX9-NEXT: {{ $}} 150 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 151 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 152 ; GFX9-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 153 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 154 ; 155 ; GFX10-LABEL: name: shl_s32_vs 156 ; GFX10: liveins: $sgpr0, $vgpr0 157 ; GFX10-NEXT: {{ $}} 158 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 159 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 160 ; GFX10-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 161 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 162 %0:vgpr(s32) = COPY $vgpr0 163 %1:sgpr(s32) = COPY $sgpr0 164 %2:vgpr(s32) = G_SHL %0, %1 165 S_ENDPGM 0, implicit %2 166... 167 168--- 169name: shl_s32_vv 170legalized: true 171regBankSelected: true 172 173body: | 174 bb.0: 175 liveins: $vgpr0, $vgpr1 176 ; GFX6-LABEL: name: shl_s32_vv 177 ; GFX6: liveins: $vgpr0, $vgpr1 178 ; GFX6-NEXT: {{ $}} 179 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 180 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 181 ; GFX6-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 182 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 183 ; 184 ; GFX7-LABEL: name: shl_s32_vv 185 ; GFX7: liveins: $vgpr0, $vgpr1 186 ; GFX7-NEXT: {{ $}} 187 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 188 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 189 ; GFX7-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 190 ; GFX7-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 191 ; 192 ; GFX8-LABEL: name: shl_s32_vv 193 ; GFX8: liveins: $vgpr0, $vgpr1 194 ; GFX8-NEXT: {{ $}} 195 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 196 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 197 ; GFX8-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 198 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 199 ; 200 ; GFX9-LABEL: name: shl_s32_vv 201 ; GFX9: liveins: $vgpr0, $vgpr1 202 ; GFX9-NEXT: {{ $}} 203 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 204 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 205 ; GFX9-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 206 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 207 ; 208 ; GFX10-LABEL: name: shl_s32_vv 209 ; GFX10: liveins: $vgpr0, $vgpr1 210 ; GFX10-NEXT: {{ $}} 211 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 212 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 213 ; GFX10-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 [[COPY1]], [[COPY]], implicit $exec 214 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B32_e64_]] 215 %0:vgpr(s32) = COPY $vgpr0 216 %1:vgpr(s32) = COPY $vgpr1 217 %2:vgpr(s32) = G_SHL %0, %1 218 S_ENDPGM 0, implicit %2 219... 220 221--- 222name: shl_s64_ss 223legalized: true 224regBankSelected: true 225 226body: | 227 bb.0: 228 liveins: $sgpr0_sgpr1, $sgpr2 229 ; GFX6-LABEL: name: shl_s64_ss 230 ; GFX6: liveins: $sgpr0_sgpr1, $sgpr2 231 ; GFX6-NEXT: {{ $}} 232 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 233 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2 234 ; GFX6-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[COPY]], [[COPY1]], implicit-def dead $scc 235 ; GFX6-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]] 236 ; 237 ; GFX7-LABEL: name: shl_s64_ss 238 ; GFX7: liveins: $sgpr0_sgpr1, $sgpr2 239 ; GFX7-NEXT: {{ $}} 240 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 241 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2 242 ; GFX7-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[COPY]], [[COPY1]], implicit-def dead $scc 243 ; GFX7-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]] 244 ; 245 ; GFX8-LABEL: name: shl_s64_ss 246 ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2 247 ; GFX8-NEXT: {{ $}} 248 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 249 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2 250 ; GFX8-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[COPY]], [[COPY1]], implicit-def dead $scc 251 ; GFX8-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]] 252 ; 253 ; GFX9-LABEL: name: shl_s64_ss 254 ; GFX9: liveins: $sgpr0_sgpr1, $sgpr2 255 ; GFX9-NEXT: {{ $}} 256 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 257 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2 258 ; GFX9-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[COPY]], [[COPY1]], implicit-def dead $scc 259 ; GFX9-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]] 260 ; 261 ; GFX10-LABEL: name: shl_s64_ss 262 ; GFX10: liveins: $sgpr0_sgpr1, $sgpr2 263 ; GFX10-NEXT: {{ $}} 264 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 265 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2 266 ; GFX10-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[COPY]], [[COPY1]], implicit-def dead $scc 267 ; GFX10-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]] 268 %0:sgpr(s64) = COPY $sgpr0_sgpr1 269 %1:sgpr(s32) = COPY $sgpr2 270 %2:sgpr(s64) = G_SHL %0, %1 271 S_ENDPGM 0, implicit %2 272... 273 274--- 275name: shl_s64_sv 276legalized: true 277regBankSelected: true 278 279body: | 280 bb.0: 281 liveins: $sgpr0_sgpr1, $vgpr0 282 ; GFX6-LABEL: name: shl_s64_sv 283 ; GFX6: liveins: $sgpr0_sgpr1, $vgpr0 284 ; GFX6-NEXT: {{ $}} 285 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 286 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 287 ; GFX6-NEXT: [[V_LSHL_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHL_B64_e64 [[COPY]], [[COPY1]], implicit $exec 288 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_LSHL_B64_e64_]] 289 ; 290 ; GFX7-LABEL: name: shl_s64_sv 291 ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0 292 ; GFX7-NEXT: {{ $}} 293 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 294 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 295 ; GFX7-NEXT: [[V_LSHL_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHL_B64_e64 [[COPY]], [[COPY1]], implicit $exec 296 ; GFX7-NEXT: S_ENDPGM 0, implicit [[V_LSHL_B64_e64_]] 297 ; 298 ; GFX8-LABEL: name: shl_s64_sv 299 ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0 300 ; GFX8-NEXT: {{ $}} 301 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 302 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 303 ; GFX8-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 304 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 305 ; 306 ; GFX9-LABEL: name: shl_s64_sv 307 ; GFX9: liveins: $sgpr0_sgpr1, $vgpr0 308 ; GFX9-NEXT: {{ $}} 309 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 310 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 311 ; GFX9-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 312 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 313 ; 314 ; GFX10-LABEL: name: shl_s64_sv 315 ; GFX10: liveins: $sgpr0_sgpr1, $vgpr0 316 ; GFX10-NEXT: {{ $}} 317 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 318 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 319 ; GFX10-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 320 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 321 %0:sgpr(s64) = COPY $sgpr0_sgpr1 322 %1:vgpr(s32) = COPY $vgpr0 323 %2:vgpr(s64) = G_SHL %0, %1 324 S_ENDPGM 0, implicit %2 325... 326 327--- 328name: shl_s64_vs 329legalized: true 330regBankSelected: true 331 332body: | 333 bb.0: 334 liveins: $sgpr0, $vgpr0_vgpr1 335 ; GFX6-LABEL: name: shl_s64_vs 336 ; GFX6: liveins: $sgpr0, $vgpr0_vgpr1 337 ; GFX6-NEXT: {{ $}} 338 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 339 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 340 ; GFX6-NEXT: [[V_LSHL_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHL_B64_e64 [[COPY]], [[COPY1]], implicit $exec 341 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_LSHL_B64_e64_]] 342 ; 343 ; GFX7-LABEL: name: shl_s64_vs 344 ; GFX7: liveins: $sgpr0, $vgpr0_vgpr1 345 ; GFX7-NEXT: {{ $}} 346 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 347 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 348 ; GFX7-NEXT: [[V_LSHL_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHL_B64_e64 [[COPY]], [[COPY1]], implicit $exec 349 ; GFX7-NEXT: S_ENDPGM 0, implicit [[V_LSHL_B64_e64_]] 350 ; 351 ; GFX8-LABEL: name: shl_s64_vs 352 ; GFX8: liveins: $sgpr0, $vgpr0_vgpr1 353 ; GFX8-NEXT: {{ $}} 354 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 355 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 356 ; GFX8-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 357 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 358 ; 359 ; GFX9-LABEL: name: shl_s64_vs 360 ; GFX9: liveins: $sgpr0, $vgpr0_vgpr1 361 ; GFX9-NEXT: {{ $}} 362 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 363 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 364 ; GFX9-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 365 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 366 ; 367 ; GFX10-LABEL: name: shl_s64_vs 368 ; GFX10: liveins: $sgpr0, $vgpr0_vgpr1 369 ; GFX10-NEXT: {{ $}} 370 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 371 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 372 ; GFX10-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 373 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 374 %0:vgpr(s64) = COPY $vgpr0_vgpr1 375 %1:sgpr(s32) = COPY $sgpr0 376 %2:vgpr(s64) = G_SHL %0, %1 377 S_ENDPGM 0, implicit %2 378... 379 380--- 381name: shl_s64_vv 382legalized: true 383regBankSelected: true 384 385body: | 386 bb.0: 387 liveins: $vgpr0_vgpr1, $vgpr2 388 ; GFX6-LABEL: name: shl_s64_vv 389 ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2 390 ; GFX6-NEXT: {{ $}} 391 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 392 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 393 ; GFX6-NEXT: [[V_LSHL_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHL_B64_e64 [[COPY]], [[COPY1]], implicit $exec 394 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_LSHL_B64_e64_]] 395 ; 396 ; GFX7-LABEL: name: shl_s64_vv 397 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 398 ; GFX7-NEXT: {{ $}} 399 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 400 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 401 ; GFX7-NEXT: [[V_LSHL_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHL_B64_e64 [[COPY]], [[COPY1]], implicit $exec 402 ; GFX7-NEXT: S_ENDPGM 0, implicit [[V_LSHL_B64_e64_]] 403 ; 404 ; GFX8-LABEL: name: shl_s64_vv 405 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 406 ; GFX8-NEXT: {{ $}} 407 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 408 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 409 ; GFX8-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 410 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 411 ; 412 ; GFX9-LABEL: name: shl_s64_vv 413 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 414 ; GFX9-NEXT: {{ $}} 415 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 416 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 417 ; GFX9-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 418 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 419 ; 420 ; GFX10-LABEL: name: shl_s64_vv 421 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 422 ; GFX10-NEXT: {{ $}} 423 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 424 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 425 ; GFX10-NEXT: [[V_LSHLREV_B64_e64_:%[0-9]+]]:vreg_64 = V_LSHLREV_B64_e64 [[COPY1]], [[COPY]], implicit $exec 426 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B64_e64_]] 427 %0:vgpr(s64) = COPY $vgpr0_vgpr1 428 %1:vgpr(s32) = COPY $vgpr2 429 %2:vgpr(s64) = G_SHL %0, %1 430 S_ENDPGM 0, implicit %2 431... 432 433