@@ -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-
308298bool 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
330317bool 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
350334bool 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
15721553bool 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
26632641bool 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
27552730bool 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
33883360bool 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