[Mlir-commits] [mlir] 67bdda6 - [mlir][NFC] Wrap static DenseMap inside of a function to avoid the need for a global static initializer
River Riddle
llvmlistbot at llvm.org
Wed Apr 8 14:23:18 PDT 2020
Author: River Riddle
Date: 2020-04-08T14:18:35-07:00
New Revision: 67bdda63502c0db94daf99d1d6fc8522d6361013
URL: https://github.com/llvm/llvm-project/commit/67bdda63502c0db94daf99d1d6fc8522d6361013
DIFF: https://github.com/llvm/llvm-project/commit/67bdda63502c0db94daf99d1d6fc8522d6361013.diff
LOG: [mlir][NFC] Wrap static DenseMap inside of a function to avoid the need for a global static initializer
This also helps to abstract away the exact implementation details of the loopup method if we wish to change it in the future.
Added:
Modified:
mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp b/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp
index 6f051c049c83..dfe95f3e59d6 100644
--- a/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp
+++ b/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp
@@ -462,56 +462,61 @@ Value Importer::processValue(llvm::Value *value) {
return nullptr;
}
+/// Return the MLIR OperationName for the given LLVM opcode.
+static StringRef lookupOperationNameFromOpcode(unsigned opcode) {
// Maps from LLVM opcode to MLIR OperationName. This is deliberately ordered
// as in llvm/IR/Instructions.def to aid comprehension and spot missing
// instructions.
#define INST(llvm_n, mlir_n) \
{ llvm::Instruction::llvm_n, LLVM::mlir_n##Op::getOperationName() }
-static const DenseMap<unsigned, StringRef> opcMap = {
- // Ret is handled specially.
- // Br is handled specially.
- // FIXME: switch
- // FIXME: indirectbr
- // FIXME: invoke
- INST(Resume, Resume),
- // FIXME: unreachable
- // FIXME: cleanupret
- // FIXME: catchret
- // FIXME: catchswitch
- // FIXME: callbr
- // FIXME: fneg
- INST(Add, Add), INST(FAdd, FAdd), INST(Sub, Sub), INST(FSub, FSub),
- INST(Mul, Mul), INST(FMul, FMul), INST(UDiv, UDiv), INST(SDiv, SDiv),
- INST(FDiv, FDiv), INST(URem, URem), INST(SRem, SRem), INST(FRem, FRem),
- INST(Shl, Shl), INST(LShr, LShr), INST(AShr, AShr), INST(And, And),
- INST(Or, Or), INST(Xor, XOr), INST(Alloca, Alloca), INST(Load, Load),
- INST(Store, Store),
- // Getelementptr is handled specially.
- INST(Ret, Return), INST(Fence, Fence),
- // FIXME: atomiccmpxchg
- // FIXME: atomicrmw
- INST(Trunc, Trunc), INST(ZExt, ZExt), INST(SExt, SExt),
- INST(FPToUI, FPToUI), INST(FPToSI, FPToSI), INST(UIToFP, UIToFP),
- INST(SIToFP, SIToFP), INST(FPTrunc, FPTrunc), INST(FPExt, FPExt),
- INST(PtrToInt, PtrToInt), INST(IntToPtr, IntToPtr), INST(BitCast, Bitcast),
- INST(AddrSpaceCast, AddrSpaceCast),
- // FIXME: cleanuppad
- // FIXME: catchpad
- // ICmp is handled specially.
- // FIXME: fcmp
- // PHI is handled specially.
- INST(Freeze, Freeze), INST(Call, Call),
- // FIXME: select
- // FIXME: vaarg
- // FIXME: extractelement
- // FIXME: insertelement
- // FIXME: shufflevector
- // FIXME: extractvalue
- // FIXME: insertvalue
- // FIXME: landingpad
-};
+ static const DenseMap<unsigned, StringRef> opcMap = {
+ // Ret is handled specially.
+ // Br is handled specially.
+ // FIXME: switch
+ // FIXME: indirectbr
+ // FIXME: invoke
+ INST(Resume, Resume),
+ // FIXME: unreachable
+ // FIXME: cleanupret
+ // FIXME: catchret
+ // FIXME: catchswitch
+ // FIXME: callbr
+ // FIXME: fneg
+ INST(Add, Add), INST(FAdd, FAdd), INST(Sub, Sub), INST(FSub, FSub),
+ INST(Mul, Mul), INST(FMul, FMul), INST(UDiv, UDiv), INST(SDiv, SDiv),
+ INST(FDiv, FDiv), INST(URem, URem), INST(SRem, SRem), INST(FRem, FRem),
+ INST(Shl, Shl), INST(LShr, LShr), INST(AShr, AShr), INST(And, And),
+ INST(Or, Or), INST(Xor, XOr), INST(Alloca, Alloca), INST(Load, Load),
+ INST(Store, Store),
+ // Getelementptr is handled specially.
+ INST(Ret, Return), INST(Fence, Fence),
+ // FIXME: atomiccmpxchg
+ // FIXME: atomicrmw
+ INST(Trunc, Trunc), INST(ZExt, ZExt), INST(SExt, SExt),
+ INST(FPToUI, FPToUI), INST(FPToSI, FPToSI), INST(UIToFP, UIToFP),
+ INST(SIToFP, SIToFP), INST(FPTrunc, FPTrunc), INST(FPExt, FPExt),
+ INST(PtrToInt, PtrToInt), INST(IntToPtr, IntToPtr),
+ INST(BitCast, Bitcast), INST(AddrSpaceCast, AddrSpaceCast),
+ // FIXME: cleanuppad
+ // FIXME: catchpad
+ // ICmp is handled specially.
+ // FIXME: fcmp
+ // PHI is handled specially.
+ INST(Freeze, Freeze), INST(Call, Call),
+ // FIXME: select
+ // FIXME: vaarg
+ // FIXME: extractelement
+ // FIXME: insertelement
+ // FIXME: shufflevector
+ // FIXME: extractvalue
+ // FIXME: insertvalue
+ // FIXME: landingpad
+ };
#undef INST
+ return opcMap.lookup(opcode);
+}
+
static ICmpPredicate getICmpPredicate(llvm::CmpInst::Predicate p) {
switch (p) {
default:
@@ -621,7 +626,7 @@ LogicalResult Importer::processInstruction(llvm::Instruction *inst) {
case llvm::Instruction::AddrSpaceCast:
case llvm::Instruction::Freeze:
case llvm::Instruction::BitCast: {
- OperationState state(loc, opcMap.lookup(inst->getOpcode()));
+ OperationState state(loc, lookupOperationNameFromOpcode(inst->getOpcode()));
SmallVector<Value, 4> ops;
ops.reserve(inst->getNumOperands());
for (auto *op : inst->operand_values()) {
More information about the Mlir-commits
mailing list