[llvm] 944e60f - Sparc: Merge SparcMCInstLower.cpp into SparcAsmPrinter.cpp

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun May 4 15:20:54 PDT 2025


Author: Fangrui Song
Date: 2025-05-04T15:20:50-07:00
New Revision: 944e60f08e3571db12f8ee15e7793e6a6e157c3b

URL: https://github.com/llvm/llvm-project/commit/944e60f08e3571db12f8ee15e7793e6a6e157c3b
DIFF: https://github.com/llvm/llvm-project/commit/944e60f08e3571db12f8ee15e7793e6a6e157c3b.diff

LOG: Sparc: Merge SparcMCInstLower.cpp into SparcAsmPrinter.cpp

Similar to https://reviews.llvm.org/D152311 for RISCV.

Added: 
    

Modified: 
    llvm/lib/Target/Sparc/CMakeLists.txt
    llvm/lib/Target/Sparc/Sparc.h
    llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
    llvm/utils/gn/secondary/llvm/lib/Target/Sparc/BUILD.gn

Removed: 
    llvm/lib/Target/Sparc/SparcMCInstLower.cpp


################################################################################
diff  --git a/llvm/lib/Target/Sparc/CMakeLists.txt b/llvm/lib/Target/Sparc/CMakeLists.txt
index bf76ed9d671b9..d41d205625af0 100644
--- a/llvm/lib/Target/Sparc/CMakeLists.txt
+++ b/llvm/lib/Target/Sparc/CMakeLists.txt
@@ -27,7 +27,6 @@ add_llvm_target(SparcCodeGen
   SparcRegisterInfo.cpp
   SparcSubtarget.cpp
   SparcTargetMachine.cpp
-  SparcMCInstLower.cpp
   SparcTargetObjectFile.cpp
 
   LINK_COMPONENTS

diff  --git a/llvm/lib/Target/Sparc/Sparc.h b/llvm/lib/Target/Sparc/Sparc.h
index afcbc47329541..60f20e6ab232f 100644
--- a/llvm/lib/Target/Sparc/Sparc.h
+++ b/llvm/lib/Target/Sparc/Sparc.h
@@ -29,8 +29,6 @@ class SparcTargetMachine;
 FunctionPass *createSparcISelDag(SparcTargetMachine &TM);
 FunctionPass *createSparcDelaySlotFillerPass();
 
-void LowerSparcMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
-                                    AsmPrinter &AP);
 void initializeSparcDAGToDAGISelLegacyPass(PassRegistry &);
 void initializeErrataWorkaroundPass(PassRegistry &);
 } // namespace llvm

diff  --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
index 18fdac0b52c1a..06c938e1cc215 100644
--- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
+++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
@@ -67,6 +67,11 @@ class SparcAsmPrinter : public AsmPrinter {
 
   void LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
                                  const MCSubtargetInfo &STI);
+
+  MCOperand lowerOperand(const MachineOperand &MO) const;
+
+private:
+  void lowerToMCInst(const MachineInstr *MI, MCInst &OutMI);
 };
 } // end of anonymous namespace
 
@@ -255,6 +260,68 @@ void SparcAsmPrinter::LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
   EmitADD(*OutStreamer, MCRegOP, RegO7, MCRegOP, STI);
 }
 
+MCOperand SparcAsmPrinter::lowerOperand(const MachineOperand &MO) const {
+  switch (MO.getType()) {
+  default:
+    llvm_unreachable("unknown operand type");
+    break;
+  case MachineOperand::MO_Register:
+    if (MO.isImplicit())
+      break;
+    return MCOperand::createReg(MO.getReg());
+
+  case MachineOperand::MO_Immediate:
+    return MCOperand::createImm(MO.getImm());
+
+  case MachineOperand::MO_MachineBasicBlock:
+  case MachineOperand::MO_GlobalAddress:
+  case MachineOperand::MO_BlockAddress:
+  case MachineOperand::MO_ExternalSymbol:
+  case MachineOperand::MO_ConstantPoolIndex: {
+    SparcMCExpr::Specifier Kind = (SparcMCExpr::Specifier)MO.getTargetFlags();
+    const MCSymbol *Symbol = nullptr;
+    switch (MO.getType()) {
+    default:
+      llvm_unreachable("");
+    case MachineOperand::MO_MachineBasicBlock:
+      Symbol = MO.getMBB()->getSymbol();
+      break;
+    case MachineOperand::MO_GlobalAddress:
+      Symbol = getSymbol(MO.getGlobal());
+      break;
+    case MachineOperand::MO_BlockAddress:
+      Symbol = GetBlockAddressSymbol(MO.getBlockAddress());
+      break;
+    case MachineOperand::MO_ExternalSymbol:
+      Symbol = GetExternalSymbolSymbol(MO.getSymbolName());
+      break;
+    case MachineOperand::MO_ConstantPoolIndex:
+      Symbol = GetCPISymbol(MO.getIndex());
+      break;
+    }
+
+    const MCExpr *expr = MCSymbolRefExpr::create(Symbol, OutContext);
+    if (Kind)
+      expr = SparcMCExpr::create(Kind, expr, OutContext);
+    return MCOperand::createExpr(expr);
+  }
+
+  case MachineOperand::MO_RegisterMask:
+    break;
+  }
+  return MCOperand();
+}
+
+void SparcAsmPrinter::lowerToMCInst(const MachineInstr *MI, MCInst &OutMI) {
+  OutMI.setOpcode(MI->getOpcode());
+
+  for (const MachineOperand &MO : MI->operands()) {
+    MCOperand MCOp = lowerOperand(MO);
+    if (MCOp.isValid())
+      OutMI.addOperand(MCOp);
+  }
+}
+
 void SparcAsmPrinter::emitInstruction(const MachineInstr *MI) {
   Sparc_MC::verifyInstructionPredicates(MI->getOpcode(),
                                         getSubtargetInfo().getFeatureBits());
@@ -278,7 +345,7 @@ void SparcAsmPrinter::emitInstruction(const MachineInstr *MI) {
   MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
   do {
     MCInst TmpInst;
-    LowerSparcMachineInstrToMCInst(&*I, TmpInst, *this);
+    lowerToMCInst(&*I, TmpInst);
     EmitToStreamer(*OutStreamer, TmpInst);
   } while ((++I != E) && I->isInsideBundle()); // Delay slot check.
 }

diff  --git a/llvm/lib/Target/Sparc/SparcMCInstLower.cpp b/llvm/lib/Target/Sparc/SparcMCInstLower.cpp
deleted file mode 100644
index cfcb29d6a4d9f..0000000000000
--- a/llvm/lib/Target/Sparc/SparcMCInstLower.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-//===-- SparcMCInstLower.cpp - Convert Sparc MachineInstr to MCInst -------===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains code to lower Sparc MachineInstrs to their corresponding
-// MCInst records.
-//
-//===----------------------------------------------------------------------===//
-
-#include "MCTargetDesc/SparcMCExpr.h"
-#include "Sparc.h"
-#include "llvm/CodeGen/AsmPrinter.h"
-#include "llvm/CodeGen/MachineFunction.h"
-#include "llvm/CodeGen/MachineInstr.h"
-#include "llvm/CodeGen/MachineOperand.h"
-#include "llvm/IR/Mangler.h"
-#include "llvm/MC/MCAsmInfo.h"
-#include "llvm/MC/MCContext.h"
-#include "llvm/MC/MCExpr.h"
-#include "llvm/MC/MCInst.h"
-
-using namespace llvm;
-
-
-static MCOperand LowerSymbolOperand(const MachineInstr *MI,
-                                    const MachineOperand &MO,
-                                    AsmPrinter &AP) {
-
-  SparcMCExpr::Specifier Kind = (SparcMCExpr::Specifier)MO.getTargetFlags();
-  const MCSymbol *Symbol = nullptr;
-
-  switch(MO.getType()) {
-  default: llvm_unreachable("Unknown type in LowerSymbolOperand");
-  case MachineOperand::MO_MachineBasicBlock:
-    Symbol = MO.getMBB()->getSymbol();
-    break;
-
-  case MachineOperand::MO_GlobalAddress:
-    Symbol = AP.getSymbol(MO.getGlobal());
-    break;
-
-  case MachineOperand::MO_BlockAddress:
-    Symbol = AP.GetBlockAddressSymbol(MO.getBlockAddress());
-    break;
-
-  case MachineOperand::MO_ExternalSymbol:
-    Symbol = AP.GetExternalSymbolSymbol(MO.getSymbolName());
-    break;
-
-  case MachineOperand::MO_ConstantPoolIndex:
-    Symbol = AP.GetCPISymbol(MO.getIndex());
-    break;
-  }
-
-  const MCExpr *expr = MCSymbolRefExpr::create(Symbol, AP.OutContext);
-  if (Kind)
-    expr = SparcMCExpr::create(Kind, expr, AP.OutContext);
-  return MCOperand::createExpr(expr);
-}
-
-static MCOperand LowerOperand(const MachineInstr *MI,
-                              const MachineOperand &MO,
-                              AsmPrinter &AP) {
-  switch(MO.getType()) {
-  default: llvm_unreachable("unknown operand type"); break;
-  case MachineOperand::MO_Register:
-    if (MO.isImplicit())
-      break;
-    return MCOperand::createReg(MO.getReg());
-
-  case MachineOperand::MO_Immediate:
-    return MCOperand::createImm(MO.getImm());
-
-  case MachineOperand::MO_MachineBasicBlock:
-  case MachineOperand::MO_GlobalAddress:
-  case MachineOperand::MO_BlockAddress:
-  case MachineOperand::MO_ExternalSymbol:
-  case MachineOperand::MO_ConstantPoolIndex:
-    return LowerSymbolOperand(MI, MO, AP);
-
-  case MachineOperand::MO_RegisterMask:   break;
-
-  }
-  return MCOperand();
-}
-
-void llvm::LowerSparcMachineInstrToMCInst(const MachineInstr *MI,
-                                          MCInst &OutMI,
-                                          AsmPrinter &AP)
-{
-
-  OutMI.setOpcode(MI->getOpcode());
-
-  for (const MachineOperand &MO : MI->operands()) {
-    MCOperand MCOp = LowerOperand(MI, MO, AP);
-
-    if (MCOp.isValid())
-      OutMI.addOperand(MCOp);
-  }
-}

diff  --git a/llvm/utils/gn/secondary/llvm/lib/Target/Sparc/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/Sparc/BUILD.gn
index 904066e8df36b..c521a4c265d35 100644
--- a/llvm/utils/gn/secondary/llvm/lib/Target/Sparc/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/Sparc/BUILD.gn
@@ -37,7 +37,6 @@ static_library("LLVMSparcCodeGen") {
     "SparcISelDAGToDAG.cpp",
     "SparcISelLowering.cpp",
     "SparcInstrInfo.cpp",
-    "SparcMCInstLower.cpp",
     "SparcMachineFunctionInfo.cpp",
     "SparcRegisterInfo.cpp",
     "SparcSubtarget.cpp",


        


More information about the llvm-commits mailing list