diff options
Diffstat (limited to 'lib/Target/AMDGPU/SIInsertSkips.cpp')
| -rw-r--r-- | lib/Target/AMDGPU/SIInsertSkips.cpp | 22 | 
1 files changed, 2 insertions, 20 deletions
diff --git a/lib/Target/AMDGPU/SIInsertSkips.cpp b/lib/Target/AMDGPU/SIInsertSkips.cpp index 61c8f359e168..dc9397cf7b85 100644 --- a/lib/Target/AMDGPU/SIInsertSkips.cpp +++ b/lib/Target/AMDGPU/SIInsertSkips.cpp @@ -133,28 +133,10 @@ bool SIInsertSkips::shouldSkip(const MachineBasicBlock &From,            I->getOpcode() == AMDGPU::S_CBRANCH_VCCZ)          return true; -      // V_READFIRSTLANE/V_READLANE destination register may be used as operand -      // by some SALU instruction. If exec mask is zero vector instruction -      // defining the register that is used by the scalar one is not executed -      // and scalar instruction will operate on undefined data. For -      // V_READFIRSTLANE/V_READLANE we should avoid predicated execution. -      if ((I->getOpcode() == AMDGPU::V_READFIRSTLANE_B32) || -          (I->getOpcode() == AMDGPU::V_READLANE_B32)) { +      if (TII->hasUnwantedEffectsWhenEXECEmpty(*I))          return true; -      } - -      if (I->isInlineAsm()) { -        const MCAsmInfo *MAI = MF->getTarget().getMCAsmInfo(); -        const char *AsmStr = I->getOperand(0).getSymbolName(); - -        // inlineasm length estimate is number of bytes assuming the longest -        // instruction. -        uint64_t MaxAsmSize = TII->getInlineAsmLength(AsmStr, *MAI); -        NumInstr += MaxAsmSize / MAI->getMaxInstLength(); -      } else { -        ++NumInstr; -      } +      ++NumInstr;        if (NumInstr >= SkipThreshold)          return true;      }  | 
