1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX9 %s 3# RUN: FileCheck -check-prefixes=ERR-GFX910,ERR %s < %t 4 5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX10 %s 6# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX10 %s 7# RUN: FileCheck -check-prefixes=ERR-GFX910,ERR %s < %t 8 9# ERR-NOT: remark 10# ERR-GFX910: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_LSHR %0:sgpr, %1:sgpr(<2 x s16>) (in function: lshr_v2s16_ss) 11# ERR-NOT: remark 12 13--- 14name: lshr_v2s16_ss 15legalized: true 16regBankSelected: true 17 18body: | 19 bb.0: 20 liveins: $sgpr0, $sgpr1 21 ; GFX9-LABEL: name: lshr_v2s16_ss 22 ; GFX9: liveins: $sgpr0, $sgpr1 23 ; GFX9-NEXT: {{ $}} 24 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0 25 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1 26 ; GFX9-NEXT: [[LSHR:%[0-9]+]]:sgpr(<2 x s16>) = G_LSHR [[COPY]], [[COPY1]](<2 x s16>) 27 ; GFX9-NEXT: S_ENDPGM 0, implicit [[LSHR]](<2 x s16>) 28 ; GFX10-LABEL: name: lshr_v2s16_ss 29 ; GFX10: liveins: $sgpr0, $sgpr1 30 ; GFX10-NEXT: {{ $}} 31 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0 32 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1 33 ; GFX10-NEXT: [[LSHR:%[0-9]+]]:sgpr(<2 x s16>) = G_LSHR [[COPY]], [[COPY1]](<2 x s16>) 34 ; GFX10-NEXT: S_ENDPGM 0, implicit [[LSHR]](<2 x s16>) 35 %0:sgpr(<2 x s16>) = COPY $sgpr0 36 %1:sgpr(<2 x s16>) = COPY $sgpr1 37 %2:sgpr(<2 x s16>) = G_LSHR %0, %1 38 S_ENDPGM 0, implicit %2 39... 40 41--- 42name: lshr_v2s16_sv 43legalized: true 44regBankSelected: true 45 46body: | 47 bb.0: 48 liveins: $sgpr0, $vgpr0 49 ; GFX9-LABEL: name: lshr_v2s16_sv 50 ; GFX9: liveins: $sgpr0, $vgpr0 51 ; GFX9-NEXT: {{ $}} 52 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 53 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 54 ; GFX9-NEXT: [[V_PK_LSHRREV_B16_:%[0-9]+]]:vgpr_32 = V_PK_LSHRREV_B16 8, [[COPY1]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $exec 55 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_PK_LSHRREV_B16_]] 56 ; GFX10-LABEL: name: lshr_v2s16_sv 57 ; GFX10: liveins: $sgpr0, $vgpr0 58 ; GFX10-NEXT: {{ $}} 59 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 60 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 61 ; GFX10-NEXT: [[V_PK_LSHRREV_B16_:%[0-9]+]]:vgpr_32 = V_PK_LSHRREV_B16 8, [[COPY1]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $exec 62 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_PK_LSHRREV_B16_]] 63 %0:sgpr(<2 x s16>) = COPY $sgpr0 64 %1:vgpr(<2 x s16>) = COPY $vgpr0 65 %2:vgpr(<2 x s16>) = G_LSHR %0, %1 66 S_ENDPGM 0, implicit %2 67... 68 69--- 70name: lshr_v2s16_vs 71legalized: true 72regBankSelected: true 73 74body: | 75 bb.0: 76 liveins: $sgpr0, $vgpr0 77 ; GFX9-LABEL: name: lshr_v2s16_vs 78 ; GFX9: liveins: $sgpr0, $vgpr0 79 ; GFX9-NEXT: {{ $}} 80 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 81 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 82 ; GFX9-NEXT: [[V_PK_LSHRREV_B16_:%[0-9]+]]:vgpr_32 = V_PK_LSHRREV_B16 8, [[COPY1]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $exec 83 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_PK_LSHRREV_B16_]] 84 ; GFX10-LABEL: name: lshr_v2s16_vs 85 ; GFX10: liveins: $sgpr0, $vgpr0 86 ; GFX10-NEXT: {{ $}} 87 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 88 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 89 ; GFX10-NEXT: [[V_PK_LSHRREV_B16_:%[0-9]+]]:vgpr_32 = V_PK_LSHRREV_B16 8, [[COPY1]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $exec 90 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_PK_LSHRREV_B16_]] 91 %0:vgpr(<2 x s16>) = COPY $vgpr0 92 %1:sgpr(<2 x s16>) = COPY $sgpr0 93 %2:vgpr(<2 x s16>) = G_LSHR %0, %1 94 S_ENDPGM 0, implicit %2 95... 96 97--- 98name: lshr_v2s16_vv 99legalized: true 100regBankSelected: true 101 102body: | 103 bb.0: 104 liveins: $vgpr0, $vgpr1 105 ; GFX9-LABEL: name: lshr_v2s16_vv 106 ; GFX9: liveins: $vgpr0, $vgpr1 107 ; GFX9-NEXT: {{ $}} 108 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 109 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 110 ; GFX9-NEXT: [[V_PK_LSHRREV_B16_:%[0-9]+]]:vgpr_32 = V_PK_LSHRREV_B16 8, [[COPY1]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $exec 111 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_PK_LSHRREV_B16_]] 112 ; GFX10-LABEL: name: lshr_v2s16_vv 113 ; GFX10: liveins: $vgpr0, $vgpr1 114 ; GFX10-NEXT: {{ $}} 115 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 116 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 117 ; GFX10-NEXT: [[V_PK_LSHRREV_B16_:%[0-9]+]]:vgpr_32 = V_PK_LSHRREV_B16 8, [[COPY1]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $exec 118 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_PK_LSHRREV_B16_]] 119 %0:vgpr(<2 x s16>) = COPY $vgpr0 120 %1:vgpr(<2 x s16>) = COPY $vgpr1 121 %2:vgpr(<2 x s16>) = G_LSHR %0, %1 122 S_ENDPGM 0, implicit %2 123... 124