brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.2 KiB · c60ae60 Raw
266 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX8 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefixes=GFX11 %s6 7---8name: smed3_s16_vvv9legalized: true10regBankSelected: true11 12body: |13  bb.0:14    liveins: $vgpr0, $vgpr1, $vgpr215 16    ; GFX8-LABEL: name: smed3_s16_vvv17    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr218    ; GFX8-NEXT: {{  $}}19    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr020    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr121    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr222    ; GFX8-NEXT: [[V_MAX_I16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $exec23    ; GFX8-NEXT: [[V_MIN_I16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $exec24    ; GFX8-NEXT: [[V_MAX_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[V_MIN_I16_e64_]], [[COPY2]], implicit $exec25    ; GFX8-NEXT: [[V_MIN_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[V_MAX_I16_e64_]], [[V_MAX_I16_e64_1]], implicit $exec26    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MIN_I16_e64_1]]27    ;28    ; GFX9-LABEL: name: smed3_s16_vvv29    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr230    ; GFX9-NEXT: {{  $}}31    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr032    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr133    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr234    ; GFX9-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec35    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]]36    ;37    ; GFX10-LABEL: name: smed3_s16_vvv38    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr239    ; GFX10-NEXT: {{  $}}40    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr041    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr142    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr243    ; GFX10-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec44    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]]45    ;46    ; GFX11-LABEL: name: smed3_s16_vvv47    ; GFX11: liveins: $vgpr0, $vgpr1, $vgpr248    ; GFX11-NEXT: {{  $}}49    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr050    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr151    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr252    ; GFX11-NEXT: [[V_MED3_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec53    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_fake16_e64_]]54    %0:vgpr(s32) = COPY $vgpr055    %1:vgpr(s32) = COPY $vgpr156    %2:vgpr(s32) = COPY $vgpr257    %3:vgpr(s16) = G_TRUNC %058    %4:vgpr(s16) = G_TRUNC %159    %5:vgpr(s16) = G_TRUNC %260 61    %6:vgpr(s16) = G_SMAX %3, %462    %7:vgpr(s16) = G_SMIN %3, %463    %8:vgpr(s16) = G_SMAX %7, %564    %9:vgpr(s16) = G_SMIN %6, %865 66    S_ENDPGM 0, implicit %967...68 69---70name: smed3_s16_vvv_multiuse071legalized: true72regBankSelected: true73 74body: |75  bb.0:76    liveins: $vgpr0, $vgpr1, $vgpr277 78    ; GFX8-LABEL: name: smed3_s16_vvv_multiuse079    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr280    ; GFX8-NEXT: {{  $}}81    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr082    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr183    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr284    ; GFX8-NEXT: [[V_MAX_I16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $exec85    ; GFX8-NEXT: [[V_MIN_I16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $exec86    ; GFX8-NEXT: [[V_MAX_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[V_MIN_I16_e64_]], [[COPY2]], implicit $exec87    ; GFX8-NEXT: [[V_MIN_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[V_MAX_I16_e64_]], [[V_MAX_I16_e64_1]], implicit $exec88    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MIN_I16_e64_1]], implicit [[V_MAX_I16_e64_]]89    ;90    ; GFX9-LABEL: name: smed3_s16_vvv_multiuse091    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr292    ; GFX9-NEXT: {{  $}}93    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr094    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr195    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr296    ; GFX9-NEXT: [[V_MAX_I16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $exec97    ; GFX9-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec98    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]], implicit [[V_MAX_I16_e64_]]99    ;100    ; GFX10-LABEL: name: smed3_s16_vvv_multiuse0101    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2102    ; GFX10-NEXT: {{  $}}103    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0104    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1105    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2106    ; GFX10-NEXT: [[V_MAX_I16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_opsel_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec107    ; GFX10-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec108    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]], implicit [[V_MAX_I16_opsel_e64_]]109    ;110    ; GFX11-LABEL: name: smed3_s16_vvv_multiuse0111    ; GFX11: liveins: $vgpr0, $vgpr1, $vgpr2112    ; GFX11-NEXT: {{  $}}113    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0114    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1115    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2116    ; GFX11-NEXT: [[V_MAX_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec117    ; GFX11-NEXT: [[V_MED3_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec118    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_fake16_e64_]], implicit [[V_MAX_I16_fake16_e64_]]119    %0:vgpr(s32) = COPY $vgpr0120    %1:vgpr(s32) = COPY $vgpr1121    %2:vgpr(s32) = COPY $vgpr2122    %3:vgpr(s16) = G_TRUNC %0123    %4:vgpr(s16) = G_TRUNC %1124    %5:vgpr(s16) = G_TRUNC %2125 126    %6:vgpr(s16) = G_SMAX %3, %4127    %7:vgpr(s16) = G_SMIN %3, %4128    %8:vgpr(s16) = G_SMAX %7, %5129    %9:vgpr(s16) = G_SMIN %6, %8130 131    S_ENDPGM 0, implicit %9, implicit %6132...133 134---135name: smed3_s16_vvv_multiuse1136legalized: true137regBankSelected: true138 139body: |140  bb.0:141    liveins: $vgpr0, $vgpr1, $vgpr2142 143    ; GFX8-LABEL: name: smed3_s16_vvv_multiuse1144    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2145    ; GFX8-NEXT: {{  $}}146    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0147    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1148    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2149    ; GFX8-NEXT: [[V_MAX_I16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $exec150    ; GFX8-NEXT: [[V_MIN_I16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $exec151    ; GFX8-NEXT: [[V_MAX_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[V_MIN_I16_e64_]], [[COPY2]], implicit $exec152    ; GFX8-NEXT: [[V_MIN_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[V_MAX_I16_e64_]], [[V_MAX_I16_e64_1]], implicit $exec153    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MIN_I16_e64_1]], implicit [[V_MIN_I16_e64_]]154    ;155    ; GFX9-LABEL: name: smed3_s16_vvv_multiuse1156    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2157    ; GFX9-NEXT: {{  $}}158    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0159    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1160    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2161    ; GFX9-NEXT: [[V_MIN_I16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $exec162    ; GFX9-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec163    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]], implicit [[V_MIN_I16_e64_]]164    ;165    ; GFX10-LABEL: name: smed3_s16_vvv_multiuse1166    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2167    ; GFX10-NEXT: {{  $}}168    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0169    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1170    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2171    ; GFX10-NEXT: [[V_MIN_I16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_opsel_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec172    ; GFX10-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec173    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]], implicit [[V_MIN_I16_opsel_e64_]]174    ;175    ; GFX11-LABEL: name: smed3_s16_vvv_multiuse1176    ; GFX11: liveins: $vgpr0, $vgpr1, $vgpr2177    ; GFX11-NEXT: {{  $}}178    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0179    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1180    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2181    ; GFX11-NEXT: [[V_MIN_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec182    ; GFX11-NEXT: [[V_MED3_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec183    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_fake16_e64_]], implicit [[V_MIN_I16_fake16_e64_]]184    %0:vgpr(s32) = COPY $vgpr0185    %1:vgpr(s32) = COPY $vgpr1186    %2:vgpr(s32) = COPY $vgpr2187    %3:vgpr(s16) = G_TRUNC %0188    %4:vgpr(s16) = G_TRUNC %1189    %5:vgpr(s16) = G_TRUNC %2190 191    %6:vgpr(s16) = G_SMAX %3, %4192    %7:vgpr(s16) = G_SMIN %3, %4193    %8:vgpr(s16) = G_SMAX %7, %5194    %9:vgpr(s16) = G_SMIN %6, %8195 196    S_ENDPGM 0, implicit %9, implicit %7197...198 199---200name: smed3_s16_vvv_multiuse2201legalized: true202regBankSelected: true203 204body: |205  bb.0:206    liveins: $vgpr0, $vgpr1, $vgpr2207 208    ; GFX8-LABEL: name: smed3_s16_vvv_multiuse2209    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2210    ; GFX8-NEXT: {{  $}}211    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0212    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1213    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2214    ; GFX8-NEXT: [[V_MAX_I16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $exec215    ; GFX8-NEXT: [[V_MIN_I16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $exec216    ; GFX8-NEXT: [[V_MAX_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[V_MIN_I16_e64_]], [[COPY2]], implicit $exec217    ; GFX8-NEXT: [[V_MIN_I16_e64_1:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[V_MAX_I16_e64_]], [[V_MAX_I16_e64_1]], implicit $exec218    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MIN_I16_e64_1]], implicit [[V_MAX_I16_e64_1]]219    ;220    ; GFX9-LABEL: name: smed3_s16_vvv_multiuse2221    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2222    ; GFX9-NEXT: {{  $}}223    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0224    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1225    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2226    ; GFX9-NEXT: [[V_MIN_I16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $exec227    ; GFX9-NEXT: [[V_MAX_I16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_e64 [[V_MIN_I16_e64_]], [[COPY2]], implicit $exec228    ; GFX9-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec229    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]], implicit [[V_MAX_I16_e64_]]230    ;231    ; GFX10-LABEL: name: smed3_s16_vvv_multiuse2232    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2233    ; GFX10-NEXT: {{  $}}234    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0235    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1236    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2237    ; GFX10-NEXT: [[V_MIN_I16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_opsel_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $exec238    ; GFX10-NEXT: [[V_MAX_I16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_opsel_e64 0, [[V_MIN_I16_opsel_e64_]], 0, [[COPY2]], 0, 0, implicit $exec239    ; GFX10-NEXT: [[V_MED3_I16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec240    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_e64_]], implicit [[V_MAX_I16_opsel_e64_]]241    ;242    ; GFX11-LABEL: name: smed3_s16_vvv_multiuse2243    ; GFX11: liveins: $vgpr0, $vgpr1, $vgpr2244    ; GFX11-NEXT: {{  $}}245    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0246    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1247    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2248    ; GFX11-NEXT: [[V_MIN_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MIN_I16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec249    ; GFX11-NEXT: [[V_MAX_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I16_fake16_e64 [[V_MIN_I16_fake16_e64_]], [[COPY2]], implicit $exec250    ; GFX11-NEXT: [[V_MED3_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_MED3_I16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $exec251    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MED3_I16_fake16_e64_]], implicit [[V_MAX_I16_fake16_e64_]]252    %0:vgpr(s32) = COPY $vgpr0253    %1:vgpr(s32) = COPY $vgpr1254    %2:vgpr(s32) = COPY $vgpr2255    %3:vgpr(s16) = G_TRUNC %0256    %4:vgpr(s16) = G_TRUNC %1257    %5:vgpr(s16) = G_TRUNC %2258 259    %6:vgpr(s16) = G_SMAX %3, %4260    %7:vgpr(s16) = G_SMIN %3, %4261    %8:vgpr(s16) = G_SMAX %7, %5262    %9:vgpr(s16) = G_SMIN %6, %8263 264    S_ENDPGM 0, implicit %9, implicit %8265...266