brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.8 KiB · 5e0b313 Raw
222 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx90a -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX9 %s2 3# GFX9-LABEL: name: diffoporder_add4 5# GFX9: %{{[0-9]+}}:vreg_64_align2 = REG_SEQUENCE6 7# GFX9: S_MOV_B32 61448# GFX9-NEXT: V_ADD_CO_U329# GFX9-NEXT: V_ADDC_U3210# GFX9-NEXT: [[PTR0:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE11# GFX9-NEXT: %{{[0-9]+}}:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[PTR0]], -2048, 012# GFX9: %{{[0-9]+}}:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[PTR0]], 0, 013 14name: diffoporder_add15body:             |16  bb.0.entry:17    %0:sgpr_64 = COPY $sgpr0_sgpr118    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 019    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9920    %4:sreg_32_xm0 = COPY $sgpr10121    %5:sreg_32_xm0 = S_MOV_B32 022    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %323    $sgpr4 = COPY %424    $vgpr0 = V_MOV_B32_e32 0, implicit $exec25    %6:vreg_64_align2 = COPY $vgpr0_vgpr126    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec27    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec28    %9:vreg_64_align2 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub129    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec30    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec31    %12:sgpr_32 = COPY %1.sub132    %13:vgpr_32 = COPY %533    %14:vgpr_32, %15:sreg_64_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec34    %16:vgpr_32 = COPY %1235    %17:vgpr_32, dead %18:sreg_64_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec36    %19:vreg_64_align2 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub137    %20:vreg_64_align2 = V_LSHLREV_B64_e64 3, %9, implicit $exec38    %21:vgpr_32, %22:sreg_64_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec39    %23:vgpr_32, dead %24:sreg_64_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec40    %25:sgpr_32 = S_MOV_B32 409641    %26:vgpr_32, %27:sreg_64_xexec = V_ADD_CO_U32_e64 %25, %21, 0, implicit $exec42    %28:vgpr_32, dead %29:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %27, 0, implicit $exec43    %30:vreg_64_align2 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub144    %31:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec45    %32:sgpr_32 = S_MOV_B32 614446    %33:vgpr_32, %34:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %32, 0, implicit $exec47    %35:vgpr_32, dead %36:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %34, 0, implicit $exec48    %37:vreg_64_align2 = REG_SEQUENCE %33, %subreg.sub0, %35, %subreg.sub149    %38:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %37, 0, 0, implicit $exec50...51---52 53# GFX9-LABEL: name: LowestInMiddle54# GFX9: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 1120055# GFX9: [[BASE_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_5:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_1]]56# GFX9: [[BASE_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_64_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_5]]57# GFX9: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[BASE_LO]], %subreg.sub0, [[BASE_HI]], %subreg.sub158# GFX9: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -3200, 059#60# GFX9: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 640061# GFX9: [[BASE1_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_7:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_2]]62# GFX9: [[BASE1_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_64_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_7]]63# GFX9: [[REG_SEQUENCE3:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[BASE1_LO]], %subreg.sub0, [[BASE1_HI]], %subreg.sub164# GFX9: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE3]], 0, 0,65# GFX9: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0,66 67name: LowestInMiddle68body:             |69  bb.0.entry:70    %0:sgpr_64 = COPY $sgpr0_sgpr171    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 072    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9973    %4:sreg_32_xm0 = COPY $sgpr10174    %5:sreg_32_xm0 = S_MOV_B32 075    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %376    $sgpr4 = COPY %477    $vgpr0 = V_MOV_B32_e32 0, implicit $exec78    %6:vreg_64_align2 = COPY $vgpr0_vgpr179    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec80    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec81    %9:vreg_64_align2 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub182    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec83    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec84    %12:sgpr_32 = COPY %1.sub185    %13:vgpr_32 = COPY %586    %14:vgpr_32, %15:sreg_64_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec87    %16:vgpr_32 = COPY %1288    %17:vgpr_32, dead %18:sreg_64_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec89    %19:vreg_64_align2 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub190    %20:vreg_64_align2 = V_LSHLREV_B64_e64 3, %9, implicit $exec91    %21:vgpr_32, %22:sreg_64_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec92    %23:vgpr_32, dead %24:sreg_64_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec93    %25:sgpr_32 = S_MOV_B32 800094    %26:vgpr_32, %27:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %25, 0, implicit $exec95    %28:vgpr_32, dead %29:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %27, 0, implicit $exec96    %30:vreg_64_align2 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub197    %31:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec98    %32:sgpr_32 = S_MOV_B32 640099    %33:vgpr_32, %34:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %32, 0, implicit $exec100    %35:vgpr_32, dead %36:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %34, 0, implicit $exec101    %37:vreg_64_align2 = REG_SEQUENCE %33, %subreg.sub0, %35, %subreg.sub1102    %38:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %37, 0, 0, implicit $exec103    %39:sgpr_32 = S_MOV_B32 11200104    %40:vgpr_32, %41:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %39, 0, implicit $exec105    %42:vgpr_32, dead %43:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %41, 0, implicit $exec106    %44:vreg_64_align2 = REG_SEQUENCE %40, %subreg.sub0, %42, %subreg.sub1107    %45:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %44, 0, 0, implicit $exec108...109---110 111# GFX9-LABEL: name: NegativeDistance112# GFX9: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 10240113# GFX9: [[V_ADD_CO_U32_e64_4:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_5:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_1]]114# GFX9: [[BASE_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_64_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_5]]115# GFX9: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[V_ADD_CO_U32_e64_4]], %subreg.sub0, [[BASE_HI]], %subreg.sub1116# GFX9: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -4096, 0117# GFX9: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -2048, 0118# GFX9: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0119 120name: NegativeDistance121body:             |122  bb.0.entry:123    %0:sgpr_64 = COPY $sgpr0_sgpr1124    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0125    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99126    %4:sreg_32_xm0 = COPY $sgpr10127    %5:sreg_32_xm0 = S_MOV_B32 0128    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %3129    $sgpr4 = COPY %4130    $vgpr0 = V_MOV_B32_e32 0, implicit $exec131    %6:vreg_64_align2 = COPY $vgpr0_vgpr1132    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec133    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec134    %9:vreg_64_align2 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub1135    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec136    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec137    %12:sgpr_32 = COPY %1.sub1138    %13:vgpr_32 = COPY %5139    %14:vgpr_32, %15:sreg_64_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec140    %16:vgpr_32 = COPY %12141    %17:vgpr_32, dead %18:sreg_64_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec142    %19:vreg_64_align2 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub1143    %20:vreg_64_align2 = V_LSHLREV_B64_e64 3, %9, implicit $exec144    %21:vgpr_32, %22:sreg_64_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec145    %23:vgpr_32, dead %24:sreg_64_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec146    %25:sgpr_32 = S_MOV_B32 6144147    %26:vgpr_32, %27:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %25, 0, implicit $exec148    %28:vgpr_32, dead %29:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %27, 0, implicit $exec149    %30:vreg_64_align2 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub1150    %31:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec151    %32:sgpr_32 = S_MOV_B32 8192152    %33:vgpr_32, %34:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %32, 0, implicit $exec153    %35:vgpr_32, dead %36:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %34, 0, implicit $exec154    %37:vreg_64_align2 = REG_SEQUENCE %33, %subreg.sub0, %35, %subreg.sub1155    %38:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %37, 0, 0, implicit $exec156    %39:sgpr_32 = S_MOV_B32 10240157    %40:vgpr_32, %41:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %39, 0, implicit $exec158    %42:vgpr_32, dead %43:sreg_64_xexec = V_ADDC_U32_e64 %23, 0, killed %41, 0, implicit $exec159    %44:vreg_64_align2 = REG_SEQUENCE %40, %subreg.sub0, %42, %subreg.sub1160    %45:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %44, 0, 0, implicit $exec161...162---163 164# Tests for a successful compilation.165name: assert_hit166body:             |167    bb.0.entry:168    %0:sgpr_64 = COPY $sgpr0_sgpr1169    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0170    %3:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99171    %4:sreg_32_xm0 = COPY $sgpr101172    %5:sreg_32_xm0 = S_MOV_B32 0173    $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %3174    $sgpr4 = COPY %4175    $vgpr0 = V_MOV_B32_e32 0, implicit $exec176    %6:vreg_64_align2 = COPY $vgpr0_vgpr1177    %7:vgpr_32 = V_AND_B32_e32 255, %6.sub0, implicit $exec178    %8:vgpr_32 = V_MOV_B32_e32 0, implicit $exec179    %9:vreg_64_align2 = REG_SEQUENCE killed %7, %subreg.sub0, %8, %subreg.sub1180    %10:vgpr_32 = V_LSHLREV_B32_e64 7, %6.sub0, implicit $exec181    %11:vgpr_32 = V_AND_B32_e32 -32768, killed %10, implicit $exec182    %12:sgpr_32 = COPY %1.sub1183    %13:vgpr_32 = COPY %5184    %14:vgpr_32, %15:sreg_64_xexec = V_ADD_CO_U32_e64 %1.sub0, %11, 0, implicit $exec185    %16:vgpr_32 = COPY %12186    %17:vgpr_32, dead %18:sreg_64_xexec = V_ADDC_U32_e64 %16, %13, killed %15, 0, implicit $exec187    %19:vreg_64_align2 = REG_SEQUENCE %14, %subreg.sub0, %17, %subreg.sub1188    %20:vreg_64_align2 = V_LSHLREV_B64_e64 3, %9, implicit $exec189    %21:vgpr_32, %22:sreg_64_xexec = V_ADD_CO_U32_e64 %14, %20.sub0, 0, implicit $exec190    %23:vgpr_32, dead %24:sreg_64_xexec = V_ADDC_U32_e64 %17, %20.sub1, killed %22, 0, implicit $exec191 192    %25:sgpr_32 = S_MOV_B32 6144193    %26:vgpr_32, %27:sreg_64_xexec = V_ADD_CO_U32_e64 %21, %25, 0, implicit $exec194    %28:vgpr_32, dead %29:sreg_64_xexec = V_ADDC_U32_e64 %23, 4294967295, killed %27, 0, implicit $exec195    %30:vreg_64_align2 = REG_SEQUENCE %26, %subreg.sub0, %28, %subreg.sub1196    %31:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %30, 0, 0, implicit $exec197...198---199 200# GFX9-LABEL: name: diffoporder_add_store201# GFX9: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub0, 1000, 0,202# GFX9: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub1, 0, 0,203 204name: diffoporder_add_store205body:             |206  bb.0.entry:207 208    %0:vreg_64_align2 = COPY $vgpr0_vgpr1209 210    %1:sgpr_32 = S_MOV_B32 4000211    %2:vgpr_32, %3:sreg_64_xexec = V_ADD_CO_U32_e64 %0.sub0, %1, 0, implicit $exec212    %4:vgpr_32, dead %5:sreg_64_xexec = V_ADDC_U32_e64 %0.sub1, 0, %3, 0, implicit $exec213    %6:vreg_64_align2 = REG_SEQUENCE %2, %subreg.sub0, %4, %subreg.sub1214    GLOBAL_STORE_DWORD %6, %0.sub0, 0, 0, implicit $exec215 216    %8:sgpr_32 = S_MOV_B32 3000217    %9:vgpr_32, %10:sreg_64_xexec = V_ADD_CO_U32_e64 %0.sub0, %8, 0, implicit $exec218    %11:vgpr_32, dead %12:sreg_64_xexec = V_ADDC_U32_e64 %0.sub1, 0, %10, 0, implicit $exec219    %13:vreg_64_align2 = REG_SEQUENCE %9, %subreg.sub0, %11, %subreg.sub1220    GLOBAL_STORE_DWORD %13, %0.sub1, 0, 0, implicit $exec221...222