Skip to content

Commit e537ed5

Browse files
momchil-velikovAlexisPerry
authored andcommitted
Revert "[AArch64] Lower extending sitofp using tbl (llvm#92528)"
This reverts commit d1a4f0c. There are reports about test failures with Eigen and JAX.
1 parent 8a617a5 commit e537ed5

File tree

3 files changed

+3
-313
lines changed

3 files changed

+3
-313
lines changed

llvm/lib/CodeGen/CodeGenPrepare.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -8331,8 +8331,7 @@ bool CodeGenPrepare::optimizeInst(Instruction *I, ModifyDT &ModifiedDT) {
83318331
if (OptimizeNoopCopyExpression(CI, *TLI, *DL))
83328332
return true;
83338333

8334-
if ((isa<UIToFPInst>(I) || isa<SIToFPInst>(I) || isa<FPToUIInst>(I) ||
8335-
isa<TruncInst>(I)) &&
8334+
if ((isa<UIToFPInst>(I) || isa<FPToUIInst>(I) || isa<TruncInst>(I)) &&
83368335
TLI->optimizeExtendOrTruncateConversion(
83378336
I, LI->getLoopFor(I->getParent()), *TTI))
83388337
return true;

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

+2-35
Original file line numberDiff line numberDiff line change
@@ -15965,24 +15965,6 @@ static Value *createTblShuffleForZExt(IRBuilderBase &Builder, Value *Op,
1596515965
return Result;
1596615966
}
1596715967

15968-
static Value *createTblShuffleForSExt(IRBuilderBase &Builder, Value *Op,
15969-
FixedVectorType *DstTy,
15970-
bool IsLittleEndian) {
15971-
auto *SrcTy = cast<FixedVectorType>(Op->getType());
15972-
auto SrcWidth = cast<IntegerType>(SrcTy->getElementType())->getBitWidth();
15973-
auto DstWidth = cast<IntegerType>(DstTy->getElementType())->getBitWidth();
15974-
15975-
SmallVector<int> Mask;
15976-
if (!createTblShuffleMask(SrcWidth, DstWidth, SrcTy->getNumElements(),
15977-
!IsLittleEndian, Mask))
15978-
return nullptr;
15979-
15980-
auto *FirstEltZero = Builder.CreateInsertElement(
15981-
PoisonValue::get(SrcTy), Builder.getInt8(0), uint64_t(0));
15982-
15983-
return Builder.CreateShuffleVector(Op, FirstEltZero, Mask);
15984-
}
15985-
1598615968
static void createTblForTrunc(TruncInst *TI, bool IsLittleEndian) {
1598715969
IRBuilder<> Builder(TI);
1598815970
SmallVector<Value *> Parts;
@@ -16163,29 +16145,14 @@ bool AArch64TargetLowering::optimizeExtendOrTruncateConversion(
1616316145
Value *ZExt = createTblShuffleForZExt(
1616416146
Builder, I->getOperand(0), FixedVectorType::getInteger(DstTy),
1616516147
FixedVectorType::getInteger(DstTy), Subtarget->isLittleEndian());
16166-
assert(ZExt && "Cannot fail for the i8 to float conversion");
16148+
if (!ZExt)
16149+
return false;
1616716150
auto *UI = Builder.CreateUIToFP(ZExt, DstTy);
1616816151
I->replaceAllUsesWith(UI);
1616916152
I->eraseFromParent();
1617016153
return true;
1617116154
}
1617216155

16173-
auto *SIToFP = dyn_cast<SIToFPInst>(I);
16174-
if (SIToFP && SrcTy->getElementType()->isIntegerTy(8) &&
16175-
DstTy->getElementType()->isFloatTy()) {
16176-
IRBuilder<> Builder(I);
16177-
auto *Shuffle = createTblShuffleForSExt(Builder, I->getOperand(0),
16178-
FixedVectorType::getInteger(DstTy),
16179-
Subtarget->isLittleEndian());
16180-
assert(Shuffle && "Cannot fail for the i8 to float conversion");
16181-
auto *Cast = Builder.CreateBitCast(Shuffle, VectorType::getInteger(DstTy));
16182-
auto *AShr = Builder.CreateAShr(Cast, 24, "", true);
16183-
auto *SI = Builder.CreateSIToFP(AShr, DstTy);
16184-
I->replaceAllUsesWith(SI);
16185-
I->eraseFromParent();
16186-
return true;
16187-
}
16188-
1618916156
// Convert 'fptoui <(8|16) x float> to <(8|16) x i8>' to a wide fptoui
1619016157
// followed by a truncate lowered to using tbl.4.
1619116158
auto *FPToUI = dyn_cast<FPToUIInst>(I);

llvm/test/CodeGen/AArch64/sitofp-to-tbl.ll

-276
This file was deleted.

0 commit comments

Comments
 (0)