brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.1 KiB · 5f52113 Raw
234 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefixes=GCN,GFX10 %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefixes=GCN,GFX11 %s3 4# GCN-LABEL: name: diffoporder_add5# GCN: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, -2048, 06# GCN: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 07 8name: diffoporder_add9body:             |10  bb.0.entry:11    %0:sgpr_64 = COPY $sgpr0_sgpr112    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 013    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9914    %4:sreg_32_xm0 = COPY $sgpr10115    %5:sreg_32_xm0 = S_MOV_B32 016    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %317    $sgpr4 = COPY %418    $vgpr0 = V_MOV_B32_e32 0, implicit $exec19    %6:vreg_64 = COPY $vgpr0_vgpr120    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec21    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec22    %9:vreg_64 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub123    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec24    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec25    %12:sgpr_32 = COPY %1.sub126    %13:vgpr_32 = COPY %527    %14:vgpr_32, %15:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec28    %16:vgpr_32 = COPY %1229    %17:vgpr_32, dead %18:sreg_32_xm0_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec30    %19:vreg_64 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub131    %20:vreg_64 = V_LSHLREV_B64_e64 3, %9, implicit $exec32    %21:vgpr_32, %22:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec33    %23:vgpr_32, dead %24:sreg_32_xm0_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec34    %25:sgpr_32 = S_MOV_B32 409635    %26:vgpr_32, %27:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %25, %21, 0, implicit $exec36    %28:vgpr_32, dead %29:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %27, 0, implicit $exec37    %30:vreg_64 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub138    %31:vreg_64 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec39    %32:sgpr_32 = S_MOV_B32 614440    %33:vgpr_32, %34:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %32, 0, implicit $exec41    %35:vgpr_32, dead %36:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %34, 0, implicit $exec42    %37:vreg_64 = REG_SEQUENCE %33, %subreg.sub0, %35, %subreg.sub143    %38:vreg_64 = GLOBAL_LOAD_DWORDX2 %37, 0, 0, implicit $exec44...45---46 47# GCN-LABEL: name: LowestInMiddle48# GFX10: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 640049# GFX11: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 1120050 51# GCN: [[BASE_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_5:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_1]]52# GCN: [[BASE_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_32_xm0_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_5]]53# GCN: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[BASE_LO]], %subreg.sub0, [[BASE_HI]], %subreg.sub154# GFX10: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 1600, 055# GFX11: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -3200, 056#57# GFX11: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 640058# GFX11: [[BASE1_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_7:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_2]]59# GFX11: [[BASE1_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_32_xm0_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_7]]60# GFX11: [[REG_SEQUENCE3:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[BASE1_LO]], %subreg.sub0, [[BASE1_HI]], %subreg.sub161# GFX10: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0,62# GFX11: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE3]], 0, 0,63#64# GFX10: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 1120065# GFX10: [[BASE1_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_7:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_2]]66# GFX10: [[BASE1_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_32_xm0_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_7]]67# GFX10: [[REG_SEQUENCE3:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[BASE1_LO]], %subreg.sub0, [[BASE1_HI]], %subreg.sub168# GFX10: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE3]], 0, 0,69# GFX11: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0,70 71name: LowestInMiddle72body:             |73  bb.0.entry:74    %0:sgpr_64 = COPY $sgpr0_sgpr175    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 076    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9977    %4:sreg_32_xm0 = COPY $sgpr10178    %5:sreg_32_xm0 = S_MOV_B32 079    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %380    $sgpr4 = COPY %481    $vgpr0 = V_MOV_B32_e32 0, implicit $exec82    %6:vreg_64 = COPY $vgpr0_vgpr183    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec84    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec85    %9:vreg_64 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub186    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec87    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec88    %12:sgpr_32 = COPY %1.sub189    %13:vgpr_32 = COPY %590    %14:vgpr_32, %15:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec91    %16:vgpr_32 = COPY %1292    %17:vgpr_32, dead %18:sreg_32_xm0_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec93    %19:vreg_64 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub194    %20:vreg_64 = V_LSHLREV_B64_e64 3, %9, implicit $exec95    %21:vgpr_32, %22:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec96    %23:vgpr_32, dead %24:sreg_32_xm0_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec97    %25:sgpr_32 = S_MOV_B32 800098    %26:vgpr_32, %27:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %25, 0, implicit $exec99    %28:vgpr_32, dead %29:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %27, 0, implicit $exec100    %30:vreg_64 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub1101    %31:vreg_64 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec102    %32:sgpr_32 = S_MOV_B32 6400103    %33:vgpr_32, %34:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %32, 0, implicit $exec104    %35:vgpr_32, dead %36:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %34, 0, implicit $exec105    %37:vreg_64 = REG_SEQUENCE %33, %subreg.sub0, %35, %subreg.sub1106    %38:vreg_64 = GLOBAL_LOAD_DWORDX2 %37, 0, 0, implicit $exec107    %39:sgpr_32 = S_MOV_B32 11200108    %40:vgpr_32, %41:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %39, 0, implicit $exec109    %42:vgpr_32, dead %43:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %41, 0, implicit $exec110    %44:vreg_64 = REG_SEQUENCE %40, %subreg.sub0, %42, %subreg.sub1111    %45:vreg_64 = GLOBAL_LOAD_DWORDX2 %44, 0, 0, implicit $exec112...113---114 115# GCN-LABEL: name: NegativeDistance116# GFX10: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 8192117# GFX11: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 10240118# GCN: [[BASE_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_5:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_1]]119# GCN: [[BASE_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_32_xm0_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_5]]120# GCN: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[BASE_LO]], %subreg.sub0, [[BASE_HI]], %subreg.sub1121# GFX10: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -2048, 0122# GFX11: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -4096, 0123# GFX10: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0124# GFX11: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -2048, 0125# GFX10: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 10240126# GFX10: [[BASE1_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_7:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_2]]127# GFX10: [[BASE1_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_32_xm0_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_7]]128# GFX10: [[REG_SEQUENCE3:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[BASE1_LO]], %subreg.sub0, [[BASE1_HI]], %subreg.sub1129# GFX10: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE3]], 0, 0130# GFX11: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0131 132name: NegativeDistance133body:             |134  bb.0.entry:135    %0:sgpr_64 = COPY $sgpr0_sgpr1136    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0137    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99138    %4:sreg_32_xm0 = COPY $sgpr101139    %5:sreg_32_xm0 = S_MOV_B32 0140    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %3141    $sgpr4 = COPY %4142    $vgpr0 = V_MOV_B32_e32 0, implicit $exec143    %6:vreg_64 = COPY $vgpr0_vgpr1144    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec145    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec146    %9:vreg_64 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub1147    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec148    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec149    %12:sgpr_32 = COPY %1.sub1150    %13:vgpr_32 = COPY %5151    %14:vgpr_32, %15:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec152    %16:vgpr_32 = COPY %12153    %17:vgpr_32, dead %18:sreg_32_xm0_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec154    %19:vreg_64 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub1155    %20:vreg_64 = V_LSHLREV_B64_e64 3, %9, implicit $exec156    %21:vgpr_32, %22:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec157    %23:vgpr_32, dead %24:sreg_32_xm0_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec158    %25:sgpr_32 = S_MOV_B32 6144159    %26:vgpr_32, %27:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %25, 0, implicit $exec160    %28:vgpr_32, dead %29:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %27, 0, implicit $exec161    %30:vreg_64 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub1162    %31:vreg_64 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec163    %32:sgpr_32 = S_MOV_B32 8192164    %33:vgpr_32, %34:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %32, 0, implicit $exec165    %35:vgpr_32, dead %36:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %34, 0, implicit $exec166    %37:vreg_64 = REG_SEQUENCE %33, %subreg.sub0, %35, %subreg.sub1167    %38:vreg_64 = GLOBAL_LOAD_DWORDX2 %37, 0, 0, implicit $exec168    %39:sgpr_32 = S_MOV_B32 10240169    %40:vgpr_32, %41:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %39, 0, implicit $exec170    %42:vgpr_32, dead %43:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 0, killed %41, 0, implicit $exec171    %44:vreg_64 = REG_SEQUENCE %40, %subreg.sub0, %42, %subreg.sub1172    %45:vreg_64 = GLOBAL_LOAD_DWORDX2 %44, 0, 0, implicit $exec173...174---175 176# Tests for a successful compilation.177name: assert_hit178body:             |179    bb.0.entry:180    %0:sgpr_64 = COPY $sgpr0_sgpr1181    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0182    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99183    %4:sreg_32_xm0 = COPY $sgpr101184    %5:sreg_32_xm0 = S_MOV_B32 0185    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %3186    $sgpr4 = COPY %4187    $vgpr0 = V_MOV_B32_e32 0, implicit $exec188    %6:vreg_64 = COPY $vgpr0_vgpr1189    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec190    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec191    %9:vreg_64 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub1192    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec193    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec194    %12:sgpr_32 = COPY %1.sub1195    %13:vgpr_32 = COPY %5196    %14:vgpr_32, %15:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec197    %16:vgpr_32 = COPY %12198    %17:vgpr_32, dead %18:sreg_32_xm0_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec199    %19:vreg_64 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub1200    %20:vreg_64 = V_LSHLREV_B64_e64 3, %9, implicit $exec201    %21:vgpr_32, %22:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec202    %23:vgpr_32, dead %24:sreg_32_xm0_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec203 204    %25:sgpr_32 = S_MOV_B32 6144205    %26:vgpr_32, %27:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %21, %25, 0, implicit $exec206    %28:vgpr_32, dead %29:sreg_32_xm0_xexec = V_ADDC_U32_e64 %23, 4294967295, killed %27, 0, implicit $exec207    %30:vreg_64 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub1208    %31:vreg_64 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec209...210---211 212# GCN-LABEL: name: diffoporder_add_store213# GCN: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub0, 1000, 0214# GCN: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub1, 0, 0215 216name: diffoporder_add_store217body:             |218  bb.0.entry:219 220    %0:vreg_64 = COPY $vgpr0_vgpr1221 222    %1:sgpr_32 = S_MOV_B32 4000223    %2:vgpr_32, %3:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %0.sub0, %1, 0, implicit $exec224    %4:vgpr_32, dead %5:sreg_32_xm0_xexec = V_ADDC_U32_e64 %0.sub1, 0, %3, 0, implicit $exec225    %6:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %4, %subreg.sub1226    GLOBAL_STORE_DWORD %6, %0.sub0, 0, 0, implicit $exec227 228    %8:sgpr_32 = S_MOV_B32 3000229    %9:vgpr_32, %10:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 %0.sub0, %8, 0, implicit $exec230    %11:vgpr_32, dead %12:sreg_32_xm0_xexec = V_ADDC_U32_e64 %0.sub1, 0, %10, 0, implicit $exec231    %13:vreg_64 = REG_SEQUENCE %9, %subreg.sub0, %11, %subreg.sub1232    GLOBAL_STORE_DWORD %13, %0.sub1, 0, 0, implicit $exec233...234