@@ -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 ));
@@ -2665,9 +2646,6 @@ bool IRTranslator::translateKnownIntrinsic(const CallInst &CI, Intrinsic::ID ID,
26652646
26662647bool IRTranslator::translateInlineAsm (const CallBase &CB,
26672648 MachineIRBuilder &MIRBuilder) {
2668- if (containsBF16Type (CB))
2669- return false ;
2670-
26712649 const InlineAsmLowering *ALI = MF->getSubtarget ().getInlineAsmLowering ();
26722650
26732651 if (!ALI) {
@@ -2756,9 +2734,6 @@ bool IRTranslator::translateCallBase(const CallBase &CB,
27562734}
27572735
27582736bool IRTranslator::translateCall (const User &U, MachineIRBuilder &MIRBuilder) {
2759- if (containsBF16Type (U))
2760- return false ;
2761-
27622737 const CallInst &CI = cast<CallInst>(U);
27632738 auto TII = MF->getTarget ().getIntrinsicInfo ();
27642739 const Function *F = CI.getCalledFunction ();
@@ -3394,9 +3369,6 @@ bool IRTranslator::translateAtomicCmpXchg(const User &U,
33943369
33953370bool IRTranslator::translateAtomicRMW (const User &U,
33963371 MachineIRBuilder &MIRBuilder) {
3397- if (containsBF16Type (U))
3398- return false ;
3399-
34003372 const AtomicRMWInst &I = cast<AtomicRMWInst>(U);
34013373 auto Flags = TLI->getAtomicMemOperandFlags (I, *DL);
34023374
0 commit comments