[llvm] [GlobalISel] Improve bf16 converts with fast-math flags. (PR #200741)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 3 05:49:12 PDT 2026
================
@@ -2160,13 +2160,30 @@ Register LegalizerHelper::coerceToScalar(Register Val) {
return MIRBuilder.buildBitcast(NewTy, NewVal).getReg(0);
}
+// Extract just the fast-math flags from Flags
+static uint32_t extractFMF(uint32_t Flags) {
+ return Flags &
+ (MachineInstr::MIFlag::FmNoNans | MachineInstr::MIFlag::FmNoInfs |
+ MachineInstr::MIFlag::FmNsz | MachineInstr::MIFlag::FmArcp |
+ MachineInstr::MIFlag::FmContract | MachineInstr::MIFlag::FmAfn |
+ MachineInstr::MIFlag::FmReassoc);
+}
+
void LegalizerHelper::widenScalarSrc(MachineInstr &MI, LLT WideTy,
unsigned OpIdx, unsigned ExtOpcode) {
MachineOperand &MO = MI.getOperand(OpIdx);
auto ExtB = MIRBuilder.buildInstr(ExtOpcode, {WideTy}, {MO});
MO.setReg(ExtB.getReg(0));
}
+void LegalizerHelper::widenScalarSrcUsingFPExt(MachineInstr &MI, LLT WideTy,
+ unsigned OpIdx) {
+ MachineOperand &MO = MI.getOperand(OpIdx);
+ auto ExtB = MIRBuilder.buildInstr(TargetOpcode::G_FPEXT, {WideTy}, {MO},
+ extractFMF(MI.getFlags()));
----------------
arsenm wrote:
extractFMF seems unnecessary. It's only clearing flags that shouldn't be present in the first place
https://github.com/llvm/llvm-project/pull/200741
More information about the llvm-commits
mailing list