[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