127 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=SI %s3# RUN: FileCheck -check-prefix=ERR %s < %t4# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s7 8# ERR-NOT: remark:9# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_SMULH %0:sgpr, %1:sgpr (in function: smulh_s32_ss)10# ERR-NOT: remark:11 12---13name: smulh_s32_ss14legalized: true15regBankSelected: true16 17body: |18 bb.0:19 liveins: $sgpr0, $sgpr120 21 ; SI-LABEL: name: smulh_s32_ss22 ; SI: liveins: $sgpr0, $sgpr123 ; SI-NEXT: {{ $}}24 ; SI-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr025 ; SI-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr126 ; SI-NEXT: [[SMULH:%[0-9]+]]:sgpr(s32) = G_SMULH [[COPY]], [[COPY1]]27 ; SI-NEXT: S_ENDPGM 0, implicit [[SMULH]](s32)28 ; GFX9-LABEL: name: smulh_s32_ss29 ; GFX9: liveins: $sgpr0, $sgpr130 ; GFX9-NEXT: {{ $}}31 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr032 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr133 ; GFX9-NEXT: [[S_MUL_HI_I32_:%[0-9]+]]:sreg_32 = S_MUL_HI_I32 [[COPY]], [[COPY1]]34 ; GFX9-NEXT: S_ENDPGM 0, implicit [[S_MUL_HI_I32_]]35 %0:sgpr(s32) = COPY $sgpr036 %1:sgpr(s32) = COPY $sgpr137 %2:sgpr(s32) = G_SMULH %0, %138 S_ENDPGM 0, implicit %239...40 41---42name: smulh_s32_sv43legalized: true44regBankSelected: true45 46body: |47 bb.0:48 liveins: $sgpr0, $vgpr049 50 ; SI-LABEL: name: smulh_s32_sv51 ; SI: liveins: $sgpr0, $vgpr052 ; SI-NEXT: {{ $}}53 ; SI-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr054 ; SI-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr055 ; SI-NEXT: [[V_MUL_HI_I32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_HI_I32_e64 [[COPY]], [[COPY1]], implicit $exec56 ; SI-NEXT: S_ENDPGM 0, implicit [[V_MUL_HI_I32_e64_]]57 ; GFX9-LABEL: name: smulh_s32_sv58 ; GFX9: liveins: $sgpr0, $vgpr059 ; GFX9-NEXT: {{ $}}60 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr061 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr062 ; GFX9-NEXT: [[V_MUL_HI_I32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_HI_I32_e64 [[COPY]], [[COPY1]], implicit $exec63 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MUL_HI_I32_e64_]]64 %0:sgpr(s32) = COPY $sgpr065 %1:vgpr(s32) = COPY $vgpr066 %2:vgpr(s32) = G_SMULH %0, %167 S_ENDPGM 0, implicit %268...69 70---71name: smulh_s32_vs72legalized: true73regBankSelected: true74 75body: |76 bb.0:77 liveins: $sgpr0, $vgpr078 79 ; SI-LABEL: name: smulh_s32_vs80 ; SI: liveins: $sgpr0, $vgpr081 ; SI-NEXT: {{ $}}82 ; SI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr083 ; SI-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr084 ; SI-NEXT: [[V_MUL_HI_I32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_HI_I32_e64 [[COPY]], [[COPY1]], implicit $exec85 ; SI-NEXT: S_ENDPGM 0, implicit [[V_MUL_HI_I32_e64_]]86 ; GFX9-LABEL: name: smulh_s32_vs87 ; GFX9: liveins: $sgpr0, $vgpr088 ; GFX9-NEXT: {{ $}}89 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr090 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr091 ; GFX9-NEXT: [[V_MUL_HI_I32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_HI_I32_e64 [[COPY]], [[COPY1]], implicit $exec92 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MUL_HI_I32_e64_]]93 %0:vgpr(s32) = COPY $vgpr094 %1:sgpr(s32) = COPY $sgpr095 %2:vgpr(s32) = G_SMULH %0, %196 S_ENDPGM 0, implicit %297...98 99---100name: smulh_s32_vv101legalized: true102regBankSelected: true103 104body: |105 bb.0:106 liveins: $vgpr0, $vgpr1107 108 ; SI-LABEL: name: smulh_s32_vv109 ; SI: liveins: $vgpr0, $vgpr1110 ; SI-NEXT: {{ $}}111 ; SI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0112 ; SI-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1113 ; SI-NEXT: [[V_MUL_HI_I32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_HI_I32_e64 [[COPY]], [[COPY1]], implicit $exec114 ; SI-NEXT: S_ENDPGM 0, implicit [[V_MUL_HI_I32_e64_]]115 ; GFX9-LABEL: name: smulh_s32_vv116 ; GFX9: liveins: $vgpr0, $vgpr1117 ; GFX9-NEXT: {{ $}}118 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0119 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1120 ; GFX9-NEXT: [[V_MUL_HI_I32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_HI_I32_e64 [[COPY]], [[COPY1]], implicit $exec121 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MUL_HI_I32_e64_]]122 %0:vgpr(s32) = COPY $vgpr0123 %1:vgpr(s32) = COPY $vgpr1124 %2:vgpr(s32) = G_SMULH %0, %1125 S_ENDPGM 0, implicit %2126...127