@@ -296,21 +296,8 @@ void IRTranslator::addMachineCFGPred(CFGEdge Edge, MachineBasicBlock *NewPred) {
296296 MachinePreds[Edge].push_back (NewPred);
297297}
298298
299- static bool containsBF16Type (const User &U) {
300- // BF16 cannot currently be represented by LLT, to avoid miscompiles we
301- // prevent any instructions using them. FIXME: This can be removed once LLT
302- // supports bfloat.
303- return U.getType ()->getScalarType ()->isBFloatTy () ||
304- any_of (U.operands (), [](Value *V) {
305- return V->getType ()->getScalarType ()->isBFloatTy ();
306- });
307- }
308-
309299bool IRTranslator::translateBinaryOp (unsigned Opcode, const User &U,
310300 MachineIRBuilder &MIRBuilder) {
311- if (containsBF16Type (U))
312- return false ;
313-
314301 // Get or create a virtual register for each value.
315302 // Unless the value is a Constant => loadimm cst?
316303 // or inline constant each time?
@@ -330,9 +317,6 @@ bool IRTranslator::translateBinaryOp(unsigned Opcode, const User &U,
330317
331318bool IRTranslator::translateUnaryOp (unsigned Opcode, const User &U,
332319 MachineIRBuilder &MIRBuilder) {
333- if (containsBF16Type (U))
334- return false ;
335-
336320 Register Op0 = getOrCreateVReg (*U.getOperand (0 ));
337321 Register Res = getOrCreateVReg (U);
338322 uint32_t Flags = 0 ;
@@ -350,9 +334,6 @@ bool IRTranslator::translateFNeg(const User &U, MachineIRBuilder &MIRBuilder) {
350334
351335bool IRTranslator::translateCompare (const User &U,
352336 MachineIRBuilder &MIRBuilder) {
353- if (containsBF16Type (U))
354- return false ;
355-
356337 auto *CI = cast<CmpInst>(&U);
357338 Register Op0 = getOrCreateVReg (*U.getOperand (0 ));
358339 Register Op1 = getOrCreateVReg (*U.getOperand (1 ));
@@ -2660,9 +2641,6 @@ bool IRTranslator::translateKnownIntrinsic(const CallInst &CI, Intrinsic::ID ID,
26602641
26612642bool IRTranslator::translateInlineAsm (const CallBase &CB,
26622643 MachineIRBuilder &MIRBuilder) {
2663- if (containsBF16Type (CB))
2664- return false ;
2665-
26662644 const InlineAsmLowering *ALI = MF->getSubtarget ().getInlineAsmLowering ();
26672645
26682646 if (!ALI) {
@@ -2751,9 +2729,6 @@ bool IRTranslator::translateCallBase(const CallBase &CB,
27512729}
27522730
27532731bool IRTranslator::translateCall (const User &U, MachineIRBuilder &MIRBuilder) {
2754- if (containsBF16Type (U))
2755- return false ;
2756-
27572732 const CallInst &CI = cast<CallInst>(U);
27582733 auto TII = MF->getTarget ().getIntrinsicInfo ();
27592734 const Function *F = CI.getCalledFunction ();
@@ -3389,9 +3364,6 @@ bool IRTranslator::translateAtomicCmpXchg(const User &U,
33893364
33903365bool IRTranslator::translateAtomicRMW (const User &U,
33913366 MachineIRBuilder &MIRBuilder) {
3392- if (containsBF16Type (U))
3393- return false ;
3394-
33953367 const AtomicRMWInst &I = cast<AtomicRMWInst>(U);
33963368 auto Flags = TLI->getAtomicMemOperandFlags (I, *DL);
33973369
0 commit comments