[llvm] 63af3c0 - [GlobalISel] Remove ConstantFoldingMIRBuilder
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 23 01:13:41 PDT 2021
Author: Jay Foad
Date: 2021-04-23T09:13:27+01:00
New Revision: 63af3c000b3399b16703da920d874834c402e281
URL: https://github.com/llvm/llvm-project/commit/63af3c000b3399b16703da920d874834c402e281
DIFF: https://github.com/llvm/llvm-project/commit/63af3c000b3399b16703da920d874834c402e281.diff
LOG: [GlobalISel] Remove ConstantFoldingMIRBuilder
ConstantFoldingMIRBuilder was an experiment which is not used for
anything. The constant folding functionality is now part of
CSEMIRBuilder.
Differential Revision: https://reviews.llvm.org/D101050
Added:
Modified:
llvm/unittests/CodeGen/GlobalISel/ConstantFoldingTest.cpp
llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp
Removed:
llvm/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h
################################################################################
diff --git a/llvm/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h b/llvm/include/llvm/CodeGen/GlobalISel/ConstantFoldingMIRBuilder.h
deleted file mode 100644
index 9f85dca96f2d..000000000000
--- 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<DstOp> DstOps,
- ArrayRef<SrcOp> SrcOps,
- Optional<unsigned> 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
index 127aaffc2878..5053d542d2ba 100644
--- 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 @@ TEST_F(AArch64GISelMITest, FoldWithBuilder) {
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 @@ TEST_F(AArch64GISelMITest, FoldWithBuilder) {
// 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 @@ TEST_F(AArch64GISelMITest, FoldBinOp) {
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
index 8a5d8e783399..a8209fe22bcc 100644
--- 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"
More information about the llvm-commits
mailing list