diff --git a/llvm/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h b/llvm/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h deleted file mode 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h +++ /dev/null @@ -1,78 +0,0 @@ -//===-- llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h --*- C++ -*-==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -/// \file -/// This file implements a version of MachineIRBuilder which does trivial -/// constant folding. -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CODEGEN_GLOBALISEL_CONSTANTFOLDINGMIRBUILDER_H -#define LLVM_CODEGEN_GLOBALISEL_CONSTANTFOLDINGMIRBUILDER_H - -#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h" -#include "llvm/CodeGen/GlobalISel/Utils.h" - -namespace llvm { - -/// An MIRBuilder which does trivial constant folding of binary ops. -/// Calls to buildInstr will also try to constant fold binary ops. -class ConstantFoldingMIRBuilder : public MachineIRBuilder { -public: - // Pull in base class constructors. - using MachineIRBuilder::MachineIRBuilder; - - virtual ~ConstantFoldingMIRBuilder() = default; - - // Try to provide an overload for buildInstr for binary ops in order to - // constant fold. - MachineInstrBuilder buildInstr(unsigned Opc, ArrayRef DstOps, - ArrayRef SrcOps, - Optional Flags = None) override { - switch (Opc) { - default: - break; - case TargetOpcode::G_ADD: - case TargetOpcode::G_AND: - case TargetOpcode::G_ASHR: - case TargetOpcode::G_LSHR: - case TargetOpcode::G_MUL: - case TargetOpcode::G_OR: - case TargetOpcode::G_SHL: - case TargetOpcode::G_SUB: - case TargetOpcode::G_XOR: - case TargetOpcode::G_UDIV: - case TargetOpcode::G_SDIV: - case TargetOpcode::G_UREM: - case TargetOpcode::G_SREM: { - assert(DstOps.size() == 1 && "Invalid dst ops"); - assert(SrcOps.size() == 2 && "Invalid src ops"); - const DstOp &Dst = DstOps[0]; - const SrcOp &Src0 = SrcOps[0]; - const SrcOp &Src1 = SrcOps[1]; - if (auto MaybeCst = - ConstantFoldBinOp(Opc, Src0.getReg(), Src1.getReg(), *getMRI())) - return buildConstant(Dst, MaybeCst->getSExtValue()); - break; - } - case TargetOpcode::G_SEXT_INREG: { - assert(DstOps.size() == 1 && "Invalid dst ops"); - assert(SrcOps.size() == 2 && "Invalid src ops"); - const DstOp &Dst = DstOps[0]; - const SrcOp &Src0 = SrcOps[0]; - const SrcOp &Src1 = SrcOps[1]; - if (auto MaybeCst = - ConstantFoldExtOp(Opc, Src0.getReg(), Src1.getImm(), *getMRI())) - return buildConstant(Dst, MaybeCst->getSExtValue()); - break; - } - } - return MachineIRBuilder::buildInstr(Opc, DstOps, SrcOps); - } -}; -} // namespace llvm - -#endif // LLVM_CODEGEN_GLOBALISEL_CONSTANTFOLDINGMIRBUILDER_H diff --git a/llvm/unittests/CodeGen/GlobalISel/ConstantFoldingTest.cpp b/llvm/unittests/CodeGen/GlobalISel/ConstantFoldingTest.cpp --- a/llvm/unittests/CodeGen/GlobalISel/ConstantFoldingTest.cpp +++ b/llvm/unittests/CodeGen/GlobalISel/ConstantFoldingTest.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "GISelMITest.h" -#include "llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h" +#include "llvm/CodeGen/GlobalISel/CSEMIRBuilder.h" #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h" #include "llvm/CodeGen/GlobalISel/Utils.h" #include "llvm/CodeGen/MachineFunction.h" @@ -22,7 +22,7 @@ if (!TM) return; // Try to use the FoldableInstructionsBuilder to build binary ops. - ConstantFoldingMIRBuilder CFB(B.getState()); + CSEMIRBuilder CFB(B.getState()); LLT s32 = LLT::scalar(32); int64_t Cst; auto MIBCAdd = @@ -41,7 +41,7 @@ // Try one of the other constructors of MachineIRBuilder to make sure it's // compatible. - ConstantFoldingMIRBuilder CFB1(*MF); + CSEMIRBuilder CFB1(*MF); CFB1.setInsertPt(*EntryMBB, EntryMBB->end()); auto MIBCSub = CFB1.buildInstr(TargetOpcode::G_SUB, {s32}, @@ -236,4 +236,4 @@ EXPECT_EQ(16ULL, FoldGSremMix.getValue().getLimitedValue()); } -} // namespace \ No newline at end of file +} // namespace diff --git a/llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp b/llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp --- a/llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp +++ b/llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp @@ -7,7 +7,6 @@ //===----------------------------------------------------------------------===// #include "GISelMITest.h" -#include "llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h" #include "llvm/CodeGen/GlobalISel/MIPatternMatch.h" #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h" #include "llvm/CodeGen/GlobalISel/Utils.h"