Skip to content

Commit be651cb

Browse files
committed
re-enable bfloat
1 parent 9a366d1 commit be651cb

File tree

1 file changed

+0
-31
lines changed

1 file changed

+0
-31
lines changed

llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -295,21 +295,8 @@ void IRTranslator::addMachineCFGPred(CFGEdge Edge, MachineBasicBlock *NewPred) {
295295
MachinePreds[Edge].push_back(NewPred);
296296
}
297297

298-
static bool containsBF16Type(const User &U) {
299-
// BF16 cannot currently be represented by LLT, to avoid miscompiles we
300-
// prevent any instructions using them. FIXME: This can be removed once LLT
301-
// supports bfloat.
302-
return U.getType()->getScalarType()->isBFloatTy() ||
303-
any_of(U.operands(), [](Value *V) {
304-
return V->getType()->getScalarType()->isBFloatTy();
305-
});
306-
}
307-
308298
bool IRTranslator::translateBinaryOp(unsigned Opcode, const User &U,
309299
MachineIRBuilder &MIRBuilder) {
310-
if (containsBF16Type(U))
311-
return false;
312-
313300
// Get or create a virtual register for each value.
314301
// Unless the value is a Constant => loadimm cst?
315302
// or inline constant each time?
@@ -329,9 +316,6 @@ bool IRTranslator::translateBinaryOp(unsigned Opcode, const User &U,
329316

330317
bool IRTranslator::translateUnaryOp(unsigned Opcode, const User &U,
331318
MachineIRBuilder &MIRBuilder) {
332-
if (containsBF16Type(U))
333-
return false;
334-
335319
Register Op0 = getOrCreateVReg(*U.getOperand(0));
336320
Register Res = getOrCreateVReg(U);
337321
uint32_t Flags = 0;
@@ -349,9 +333,6 @@ bool IRTranslator::translateFNeg(const User &U, MachineIRBuilder &MIRBuilder) {
349333

350334
bool IRTranslator::translateCompare(const User &U,
351335
MachineIRBuilder &MIRBuilder) {
352-
if (containsBF16Type(U))
353-
return false;
354-
355336
auto *CI = cast<CmpInst>(&U);
356337
Register Op0 = getOrCreateVReg(*U.getOperand(0));
357338
Register Op1 = getOrCreateVReg(*U.getOperand(1));
@@ -1571,9 +1552,6 @@ bool IRTranslator::translateBitCast(const User &U,
15711552

15721553
bool IRTranslator::translateCast(unsigned Opcode, const User &U,
15731554
MachineIRBuilder &MIRBuilder) {
1574-
if (containsBF16Type(U))
1575-
return false;
1576-
15771555
uint32_t Flags = 0;
15781556
if (const Instruction *I = dyn_cast<Instruction>(&U))
15791557
Flags = MachineInstr::copyFlagsFromInstruction(*I);
@@ -2662,9 +2640,6 @@ bool IRTranslator::translateKnownIntrinsic(const CallInst &CI, Intrinsic::ID ID,
26622640

26632641
bool IRTranslator::translateInlineAsm(const CallBase &CB,
26642642
MachineIRBuilder &MIRBuilder) {
2665-
if (containsBF16Type(CB))
2666-
return false;
2667-
26682643
const InlineAsmLowering *ALI = MF->getSubtarget().getInlineAsmLowering();
26692644

26702645
if (!ALI) {
@@ -2753,9 +2728,6 @@ bool IRTranslator::translateCallBase(const CallBase &CB,
27532728
}
27542729

27552730
bool IRTranslator::translateCall(const User &U, MachineIRBuilder &MIRBuilder) {
2756-
if (containsBF16Type(U))
2757-
return false;
2758-
27592731
const CallInst &CI = cast<CallInst>(U);
27602732
const Function *F = CI.getCalledFunction();
27612733

@@ -3387,9 +3359,6 @@ bool IRTranslator::translateAtomicCmpXchg(const User &U,
33873359

33883360
bool IRTranslator::translateAtomicRMW(const User &U,
33893361
MachineIRBuilder &MIRBuilder) {
3390-
if (containsBF16Type(U))
3391-
return false;
3392-
33933362
const AtomicRMWInst &I = cast<AtomicRMWInst>(U);
33943363
auto Flags = TLI->getAtomicMemOperandFlags(I, *DL);
33953364

0 commit comments

Comments
 (0)