From: Matt Arsenault Date: Thu, 16 May 2019 13:04:20 +0000 (+0000) Subject: GlobalISel: Add buildFMA to MachineIRBuilder X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eb6a004f3305a58dfafaa50dc2f536cb83859f5d;p=llvm GlobalISel: Add buildFMA to MachineIRBuilder git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360888 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h b/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h index f14d9d6e47f..f48843441ff 100644 --- a/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h +++ b/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h @@ -1268,6 +1268,12 @@ public: return buildInstr(TargetOpcode::G_FSUB, {Dst}, {Src0, Src1}); } + /// Build and insert \p Res = G_FMA \p Op0, \p Op1, \p Op2 + MachineInstrBuilder buildFMA(const DstOp &Dst, const SrcOp &Src0, + const SrcOp &Src1, const SrcOp &Src2) { + return buildInstr(TargetOpcode::G_FMA, {Dst}, {Src0, Src1, Src2}); + } + /// Build and insert \p Res = G_FNEG \p Op0 MachineInstrBuilder buildFNeg(const DstOp &Dst, const SrcOp &Src0) { return buildInstr(TargetOpcode::G_FNEG, {Dst}, {Src0}); diff --git a/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp b/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp index c64aebcd309..aec6d46b3c0 100644 --- a/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp +++ b/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp @@ -127,6 +127,7 @@ TEST_F(GISelMITest, TestBuildFPInsts) { B.buildFAdd(S64, Copies[0], Copies[1]); B.buildFSub(S64, Copies[0], Copies[1]); + B.buildFMA(S64, Copies[0], Copies[1], Copies[2]); B.buildFNeg(S64, Copies[0]); B.buildFAbs(S64, Copies[0]); B.buildFCopysign(S64, Copies[0], Copies[1]); @@ -134,8 +135,10 @@ TEST_F(GISelMITest, TestBuildFPInsts) { auto CheckStr = R"( ; CHECK: [[COPY0:%[0-9]+]]:_(s64) = COPY $x0 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1 + ; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2 ; CHECK: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[COPY0]]:_, [[COPY1]]:_ ; CHECK: [[FSUB:%[0-9]+]]:_(s64) = G_FSUB [[COPY0]]:_, [[COPY1]]:_ + ; CHECK: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[COPY0]]:_, [[COPY1]]:_, [[COPY2]]:_ ; CHECK: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[COPY0]]:_ ; CHECK: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[COPY0]]:_ ; CHECK: [[FCOPYSIGN:%[0-9]+]]:_(s64) = G_FCOPYSIGN [[COPY0]]:_, [[COPY1]]:_