brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.0 KiB · 703ad54 Raw
294 lines · plain
1# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 -start-before=machine-scheduler -stop-after=virtregrewriter,0 -o - %s | FileCheck %s2 3---4# If optimize-exec-mask-pre-ra over approximates live intervals (not replicating splits)5# then this triggers a register allocation failure.6 7# CHECK-LABEL: name: test8 9name:            test10alignment:       111tracksRegLiveness: true12registers:13  - { id: 0, class: sreg_32, preferred-register: '$vcc_lo' }14  - { id: 1, class: sreg_32, preferred-register: '$vcc_lo' }15  - { id: 2, class: sreg_32_xm0_xexec, preferred-register: '$vcc_lo' }16liveins:17  - { reg: '$sgpr4_sgpr5', virtual-reg: '%3' }18machineFunctionInfo:19  isEntryFunction: true20  scratchRSrcReg:  '$sgpr100_sgpr101_sgpr102_sgpr103'21  stackPtrOffsetReg: '$sgpr32'22body:             |23  bb.0.entry:24    liveins: $vgpr0, $sgpr4_sgpr525 26    %3:sgpr_64 = COPY $sgpr4_sgpr527    %4:vgpr_32 = COPY $vgpr028    %5:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %3, 16, 029    S_BITCMP1_B32 %5, 0, implicit-def $scc30    %6:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc31    %7:sreg_32 = S_MOV_B32 -132    %8:sreg_64_xexec = S_LOAD_DWORDX2_IMM %3, 136, 033    S_CBRANCH_SCC1 %bb.2, implicit undef $scc34    S_BRANCH %bb.135 36  bb.1:37    %9:sreg_64_xexec = S_LOAD_DWORDX2_IMM %3, 8, 038    %10:sgpr_128 = S_LOAD_DWORDX4_IMM %3, 24, 039    %11:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %3, 40, 040    %12:sgpr_128 = S_LOAD_DWORDX4_IMM %3, 48, 041    %13:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %3, 64, 042    S_BITCMP1_B32 %11, 0, implicit-def $scc43    %14:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc44    S_BITCMP1_B32 %13, 0, implicit-def $scc45    %15:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc46    S_BITCMP1_B32 %13, 8, implicit-def $scc47    %2:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc48    %16:sreg_64_xexec = S_LOAD_DWORDX2_IMM %3, 72, 049    %17:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %3, 80, 050    S_BITCMP1_B32 %17, 0, implicit-def $scc51    %18:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc52    S_BITCMP1_B32 %17, 8, implicit-def $scc53    %19:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc54    %20:sreg_64_xexec = S_LOAD_DWORDX2_IMM %3, 88, 055    %21:sgpr_128 = S_LOAD_DWORDX4_IMM %3, 104, 056    %22:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %3, 120, 057    S_BITCMP1_B32 %22, 0, implicit-def $scc58    %23:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc59    %24:sreg_64_xexec = S_LOAD_DWORDX2_IMM %3, 128, 060    %25:sreg_64 = S_MOV_B64 061    %26:sreg_64_xexec = S_LOAD_DWORDX2_IMM %25, 0, 062    %27:sreg_64 = S_MOV_B64_IMM_PSEUDO 465221841507372236863    %28:vreg_64 = V_MOV_B64_PSEUDO 0, implicit $exec64    %29:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %14, implicit $exec65    %30:sreg_64 = S_MOV_B64_IMM_PSEUDO 435800297721885497566    undef %31.sub1:sreg_64 = S_MOV_B32 -106425241667    %32:sreg_32 = S_OR_B32 %19, %18, implicit-def dead $scc68    undef %33.sub1:sreg_64 = S_MOV_B32 214643507269    %34:sreg_64 = S_MOV_B64_IMM_PSEUDO 459209425275434333770    %35:sreg_64 = S_MOV_B64_IMM_PSEUDO 459308932224639746371    %36:sreg_64 = S_MOV_B64_IMM_PSEUDO 459315033213282389872    %37:sreg_64 = S_MOV_B64_IMM_PSEUDO 459397171478415200273    %38:sreg_64 = S_MOV_B64_IMM_PSEUDO 459471091529307040974    %39:sreg_64 = S_MOV_B64_IMM_PSEUDO 459571871061372011275    %40:sreg_64 = S_MOV_B64_IMM_PSEUDO 459717441962846279876    %41:sreg_64 = S_MOV_B64_IMM_PSEUDO 459881859092061410677    %42:sreg_64 = S_MOV_B64_IMM_PSEUDO 460087737932169871678    %43:sreg_64 = S_MOV_B64_IMM_PSEUDO 460418001904843707779    undef %44.sub1:sreg_64 = S_MOV_B32 -107548945180    %45:sreg_64 = S_MOV_B64_IMM_PSEUDO 460917614002120371081    undef %46.sub1:sreg_64 = S_MOV_B32 -113280701082    %47:sreg_64 = S_MOV_B64_IMM_PSEUDO 450881895747182055683    %48:sreg_64 = S_MOV_B64_IMM_PSEUDO 449314776181570232784    %49:sreg_64 = S_MOV_B64_IMM_PSEUDO 452361726040472739685    %50:sreg_64 = S_MOV_B64_IMM_PSEUDO 453794133326023236886    %51:sreg_64 = S_MOV_B64_IMM_PSEUDO 455145216046098827087    %52:sreg_64 = S_MOV_B64_IMM_PSEUDO 456404794239527928088    %53:sreg_64 = S_MOV_B64_IMM_PSEUDO 457595746138365213089    %54:sreg_64 = S_MOV_B64_IMM_PSEUDO 458616562053893392190    %55:sreg_64 = S_MOV_B64_IMM_PSEUDO 459517281979369601791    %56:sreg_64 = S_MOV_B64_IMM_PSEUDO 460267881917264692392    undef %57.sub1:sreg_64 = S_MOV_B32 -110134116393    %7:sreg_32 = IMPLICIT_DEF94    %58:sreg_32 = IMPLICIT_DEF95    %59:sreg_32 = COPY %27.sub096    %60:vreg_64 = COPY %2897    %61:vreg_64 = COPY %2898    %62:vreg_64 = COPY %2899    %63:vreg_64 = COPY %28100    %64:vreg_64 = COPY %28101    S_BRANCH %bb.3102 103  bb.2:104    %65:sreg_32 = COPY $exec_lo, implicit-def $exec_lo105    %66:sreg_32 = S_AND_B32 %65, %7, implicit-def dead $scc106    $exec_lo = S_MOV_B32_term %66107    S_CBRANCH_EXECZ %bb.18, implicit $exec108    S_BRANCH %bb.5109 110  bb.3:111    %67:sreg_32 = S_AND_B32 $exec_lo, %6, implicit-def dead $scc112    $vcc_lo = COPY %67113    %58:sreg_32 = S_OR_B32 %58, $exec_lo, implicit-def dead $scc114    S_CBRANCH_VCCNZ %bb.7, implicit killed $vcc115 116  bb.4:117    %64:vreg_64 = IMPLICIT_DEF118    %63:vreg_64 = IMPLICIT_DEF119    %62:vreg_64 = IMPLICIT_DEF120    %61:vreg_64 = IMPLICIT_DEF121    %60:vreg_64 = IMPLICIT_DEF122    %28:vreg_64 = IMPLICIT_DEF123    %68:sreg_32 = S_MOV_B32 -1124    S_BRANCH %bb.9125 126  bb.5:127    S_CBRANCH_SCC1 %bb.18, implicit undef $scc128 129  bb.6:130    %69:sreg_32_xm0_xexec = S_XOR_B32 %6, -1, implicit-def dead $scc131    %70:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %3, 96, 0132    S_BITCMP1_B32 %70, 0, implicit-def $scc133    %71:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc134    S_BITCMP1_B32 %8.sub1, 0, implicit-def $scc135    %72:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc136    %73:sreg_32_xm0_xexec = S_XOR_B32 %72, -1, implicit-def dead $scc137    %74:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %73, implicit $exec138    %75:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %71, implicit $exec139    %76:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %69, implicit $exec140    S_BRANCH %bb.14141 142  bb.7:143    %77:vreg_64 = COPY %10.sub0_sub1144    %78:vreg_64 = FLAT_LOAD_DWORDX2 %77, 0, 0, implicit $exec, implicit $flat_scr145    %79:vreg_64 = COPY %10.sub2_sub3146    %80:vreg_64 = FLAT_LOAD_DWORDX2 %79, 0, 0, implicit $exec, implicit $flat_scr147    %81:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 1, %29, implicit $exec148    $vcc_lo = S_AND_B32 $exec_lo, %81, implicit-def dead $scc149    %82:sreg_64 = COPY %12.sub0_sub1150    S_CBRANCH_VCCNZ %bb.10, implicit killed $vcc151    S_BRANCH %bb.8152 153  bb.8:154    %82:sreg_64 = S_MOV_B64 0155    S_BRANCH %bb.10156 157  bb.9:158    %83:sreg_32 = S_XOR_B32 %68, -1, implicit-def dead $scc159    %84:sreg_32 = S_AND_B32 $exec_lo, %58, implicit-def $scc160    %59:sreg_32 = S_OR_B32 %84, %59, implicit-def $scc161    %4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec162    %85:sreg_32 = S_ANDN2_B32 %7, $exec_lo, implicit-def dead $scc163    %86:sreg_32 = S_AND_B32 %83, $exec_lo, implicit-def dead $scc164    %7:sreg_32 = S_OR_B32 %85, %86, implicit-def dead $scc165    $exec_lo = S_ANDN2_B32_term $exec_lo, %59, implicit-def $scc166    S_CBRANCH_EXECNZ %bb.3, implicit $exec167    S_BRANCH %bb.19168 169  bb.10:170    %87:sreg_64_xexec = S_LOAD_DWORDX2_IMM %26, 16, 0171    undef %88.sub1:sreg_64 = S_AND_B32 %87.sub1, 2147483647, implicit-def dead $scc172    %89:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F64_e64 2, %87, 0, 0, implicit $mode, implicit $exec173    %90:vreg_64 = V_CVT_F64_I32_e32 %89, implicit $mode, implicit $exec174    %91:vreg_64 = nofpexcept V_FMA_F64_e64 0, 0, 0, %30, 0, %87, 0, 0, implicit $mode, implicit $exec175    %0:sreg_32 = nofpexcept V_CMP_LT_F64_e64 0, %27, 0, %91, 0, implicit $mode, implicit $exec176    %31.sub0:sreg_64 = COPY %27.sub0177    %1:sreg_32 = nofpexcept V_CMP_GT_F64_e64 0, %31, 0, %90, 0, implicit $mode, implicit $exec178    S_CBRANCH_SCC0 %bb.12, implicit undef $scc179 180  bb.11:181    %92:sreg_32_xm0_xexec = S_OR_B32 %1, %0, implicit-def dead $scc182    undef %93.sub1:vreg_64 = V_CNDMASK_B32_e64 0, %21.sub3, 0, 0, %92, implicit $exec183    %93.sub0:vreg_64 = V_CNDMASK_B32_e64 0, %21.sub2, 0, 0, %92, implicit $exec184    S_BRANCH %bb.13185 186  bb.12:187    %93:vreg_64 = V_MOV_B64_PSEUDO 0, implicit $exec188 189  bb.13:190    %88.sub0:sreg_64 = COPY %87.sub0191    %94:vgpr_32 = COPY %16.sub0192    %95:vgpr_32 = V_CNDMASK_B32_e64 0, %82.sub0, 0, %94, %2, implicit $exec193    %96:vgpr_32 = COPY %16.sub1194    %97:vgpr_32 = V_CNDMASK_B32_e64 0, %82.sub1, 0, %96, %2, implicit $exec195    %98:vgpr_32 = V_CNDMASK_B32_e64 0, %97, 0, 2146959360, %18, implicit $exec196    dead %99:sreg_32 = S_AND_B32 %32, $exec_lo, implicit-def $scc197    %100:sreg_32_xm0_xexec = S_CSELECT_B32 -1, 0, implicit killed $scc198    undef %101.sub0:vreg_64 = V_CNDMASK_B32_e64 0, %95, 0, 0, %100, implicit $exec199    %101.sub1:vreg_64 = V_CNDMASK_B32_e64 0, %98, 0, 0, %19, implicit $exec200    %64:vreg_64 = contract nofpexcept V_ADD_F64_e64 0, %64, 0, %101, 0, 0, implicit $mode, implicit $exec201    %63:vreg_64 = contract nofpexcept V_ADD_F64_e64 0, %63, 0, %21.sub0_sub1, 0, 0, implicit $mode, implicit $exec202    %62:vreg_64 = contract nofpexcept V_ADD_F64_e64 0, %62, 0, %12.sub2_sub3, 0, 0, implicit $mode, implicit $exec203    %33.sub0:sreg_64 = COPY %27.sub0204    %102:sreg_32_xm0_xexec = nofpexcept V_CMP_EQ_F64_e64 0, %33, 0, %88, 0, implicit $mode, implicit $exec205    %103:sreg_32 = nofpexcept V_CMP_EQ_F64_e64 0, 0, 0, %87, 0, implicit $mode, implicit $exec206    %104:sreg_32 = S_XOR_B32 %15, %103, implicit-def dead $scc207    dead %105:sreg_32 = S_AND_B32 %104, $exec_lo, implicit-def $scc208    %106:sgpr_32 = S_CSELECT_B32 0, 2146435072, implicit killed $scc209    %107:vgpr_32 = V_CNDMASK_B32_e64 0, %93.sub1, 0, %106, %102, implicit $exec210    undef %108.sub1:vreg_64 = V_CNDMASK_B32_e64 0, %107, 0, 0, %23, implicit $exec211    %109:sreg_32_xm0_xexec = S_OR_B32 %23, %102, implicit-def dead $scc212    %108.sub0:vreg_64 = V_CNDMASK_B32_e64 0, %93.sub0, 0, 0, %109, implicit $exec213    %61:vreg_64 = contract nofpexcept V_ADD_F64_e64 0, %61, 0, %108, 0, 0, implicit $mode, implicit $exec214    %110:vreg_64 = nofpexcept V_FMA_F64_e64 0, %78, 0, %35, 0, %34, 0, 0, implicit $mode, implicit $exec215    %111:vreg_64 = nofpexcept V_FMA_F64_e64 0, %110, 0, 0, 0, %36, 0, 0, implicit $mode, implicit $exec216    %112:vreg_64 = nofpexcept V_FMA_F64_e64 0, %111, 0, 0, 0, %37, 0, 0, implicit $mode, implicit $exec217    %113:vreg_64 = nofpexcept V_FMA_F64_e64 0, %112, 0, 0, 0, %38, 0, 0, implicit $mode, implicit $exec218    %114:vreg_64 = nofpexcept V_FMA_F64_e64 0, %113, 0, 0, 0, %39, 0, 0, implicit $mode, implicit $exec219    %115:vreg_64 = nofpexcept V_FMA_F64_e64 0, %114, 0, 0, 0, %40, 0, 0, implicit $mode, implicit $exec220    %116:vreg_64 = nofpexcept V_FMA_F64_e64 0, %115, 0, 0, 0, %41, 0, 0, implicit $mode, implicit $exec221    %117:vreg_64 = nofpexcept V_FMA_F64_e64 0, %116, 0, 0, 0, %42, 0, 0, implicit $mode, implicit $exec222    %118:vreg_64 = nofpexcept V_ADD_F64_e64 0, %117, 0, %43, 0, 0, implicit $mode, implicit $exec223    %44.sub0:sreg_64 = COPY %43.sub0224    %119:vreg_64 = nofpexcept V_ADD_F64_e64 0, %118, 0, %44, 0, 0, implicit $mode, implicit $exec225    %120:vreg_64 = nofpexcept V_ADD_F64_e64 0, %24, 0, %119, 0, 0, implicit $mode, implicit $exec226    %121:vreg_64 = nofpexcept V_MUL_F64_e64 0, %9, 0, %120, 0, 0, implicit $mode, implicit $exec227    %122:vreg_64 = nofpexcept V_MUL_F64_e64 0, %121, 0, %45, 0, 0, implicit $mode, implicit $exec228    %46.sub0:sreg_64 = COPY %30.sub0229    %123:vreg_64 = nofpexcept V_FMA_F64_e64 0, %122, 0, %46, 0, %20, 0, 0, implicit $mode, implicit $exec230    %124:vreg_64 = nofpexcept V_FMA_F64_e64 0, %123, 0, %48, 0, %47, 0, 0, implicit $mode, implicit $exec231    %125:vreg_64 = nofpexcept V_FMA_F64_e64 0, %124, 0, 0, 0, %49, 0, 0, implicit $mode, implicit $exec232    %126:vreg_64 = nofpexcept V_FMA_F64_e64 0, %125, 0, 0, 0, %50, 0, 0, implicit $mode, implicit $exec233    %127:vreg_64 = nofpexcept V_FMA_F64_e64 0, %126, 0, 0, 0, %51, 0, 0, implicit $mode, implicit $exec234    %128:vreg_64 = nofpexcept V_FMA_F64_e64 0, %127, 0, 0, 0, %52, 0, 0, implicit $mode, implicit $exec235    %129:vreg_64 = nofpexcept V_FMA_F64_e64 0, %128, 0, 0, 0, %53, 0, 0, implicit $mode, implicit $exec236    %130:vreg_64 = nofpexcept V_FMA_F64_e64 0, %129, 0, 0, 0, %54, 0, 0, implicit $mode, implicit $exec237    %131:vreg_64 = nofpexcept V_FMA_F64_e64 0, %130, 0, 0, 0, %55, 0, 0, implicit $mode, implicit $exec238    %132:vreg_64 = nofpexcept V_FMA_F64_e64 0, %131, 0, 0, 0, %56, 0, 0, implicit $mode, implicit $exec239    %60:vreg_64 = contract nofpexcept V_ADD_F64_e64 0, %60, 0, %132, 0, 0, implicit $mode, implicit $exec240    %133:vreg_64 = nofpexcept V_FMA_F64_e64 0, %80, 0, 0, 0, %36, 0, 0, implicit $mode, implicit $exec241    %134:vreg_64 = nofpexcept V_FMA_F64_e64 0, %133, 0, 0, 0, %37, 0, 0, implicit $mode, implicit $exec242    %135:vreg_64 = nofpexcept V_FMA_F64_e64 0, %134, 0, 0, 0, %38, 0, 0, implicit $mode, implicit $exec243    %136:vreg_64 = nofpexcept V_FMA_F64_e64 0, %135, 0, 0, 0, %39, 0, 0, implicit $mode, implicit $exec244    %137:vreg_64 = nofpexcept V_FMA_F64_e64 0, %136, 0, 0, 0, %40, 0, 0, implicit $mode, implicit $exec245    %138:vreg_64 = nofpexcept V_FMA_F64_e64 0, %137, 0, 0, 0, %41, 0, 0, implicit $mode, implicit $exec246    %139:vreg_64 = nofpexcept V_FMA_F64_e64 0, %138, 0, 0, 0, %42, 0, 0, implicit $mode, implicit $exec247    %140:vreg_64 = nofpexcept V_MUL_F64_e64 0, %139, 0, %45, 0, 0, implicit $mode, implicit $exec248    %57.sub0:sreg_64 = COPY %48.sub0249    %141:vreg_64 = nofpexcept V_FMA_F64_e64 0, %140, 0, %57, 0, %47, 0, 0, implicit $mode, implicit $exec250    %142:vreg_64 = nofpexcept V_FMA_F64_e64 0, %141, 0, 0, 0, %49, 0, 0, implicit $mode, implicit $exec251    %143:vreg_64 = nofpexcept V_FMA_F64_e64 0, %142, 0, 0, 0, %50, 0, 0, implicit $mode, implicit $exec252    %144:vreg_64 = nofpexcept V_FMA_F64_e64 0, %143, 0, 0, 0, %51, 0, 0, implicit $mode, implicit $exec253    %145:vreg_64 = nofpexcept V_FMA_F64_e64 0, %144, 0, 0, 0, %52, 0, 0, implicit $mode, implicit $exec254    %146:vreg_64 = nofpexcept V_FMA_F64_e64 0, %145, 0, 0, 0, %53, 0, 0, implicit $mode, implicit $exec255    %147:vreg_64 = nofpexcept V_FMA_F64_e64 0, %146, 0, 0, 0, %54, 0, 0, implicit $mode, implicit $exec256    %148:vreg_64 = nofpexcept V_FMA_F64_e64 0, %147, 0, 0, 0, %55, 0, 0, implicit $mode, implicit $exec257    %149:vreg_64 = nofpexcept V_FMA_F64_e64 0, %148, 0, 0, 0, %56, 0, 0, implicit $mode, implicit $exec258    %28:vreg_64 = contract nofpexcept V_ADD_F64_e64 0, %28, 0, %149, 0, 0, implicit $mode, implicit $exec259    %58:sreg_32 = V_CMP_LE_U32_e64 %8.sub0, %4, implicit $exec260    %68:sreg_32 = S_MOV_B32 0261    S_BRANCH %bb.9262 263  bb.14:264    S_CBRANCH_SCC1 %bb.17, implicit undef $scc265    S_BRANCH %bb.15266 267  bb.15:268    %150:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 1, %74, implicit $exec269    $vcc_lo = S_AND_B32 $exec_lo, %150, implicit-def dead $scc270    S_CBRANCH_VCCNZ %bb.17, implicit killed $vcc271    S_BRANCH %bb.16272 273  bb.16:274    %151:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 1, %75, implicit $exec275    $vcc_lo = S_AND_B32 $exec_lo, %151, implicit-def dead $scc276    S_CBRANCH_VCCNZ %bb.16, implicit killed $vcc277    S_BRANCH %bb.17278 279  bb.17:280    %152:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 1, %76, implicit $exec281    $vcc_lo = S_AND_B32 $exec_lo, %152, implicit-def dead $scc282    S_CBRANCH_VCCNZ %bb.14, implicit killed $vcc283    S_BRANCH %bb.18284 285  bb.18:286    $exec_lo = S_OR_B32 $exec_lo, %65, implicit-def $scc287    S_ENDPGM 0288 289  bb.19:290    $exec_lo = S_OR_B32 $exec_lo, %59, implicit-def $scc291    S_BRANCH %bb.2292 293...294