[PATCH] D77535: [GlobalISel] Add extended inline assembler support
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 6 07:00:05 PDT 2020
arsenm added inline comments.
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1634
+ MachineIRBuilder &MIRBuilder,
+ MachineInstrBuilder MIB,
+ GISelAsmOperandInfo &OpInfo,
----------------
Not sure why this is here, but it's weird to pass a MachineInstrBuilder to something
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1647
+ // register class, find it.
+ unsigned AssignedReg;
+ const TargetRegisterClass *RC;
----------------
s/unsigned/Register
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1816
- unsigned ExtraInfo = 0;
- if (IA.hasSideEffects())
- ExtraInfo |= InlineAsm::Extra_HasSideEffects;
- if (IA.getDialect() == InlineAsm::AD_Intel)
- ExtraInfo |= InlineAsm::Extra_AsmDialect;
+ llvm::Type *OpTy = OpInfo.CallOperandVal->getType();
----------------
Don't need llvm::
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1912
+ if (!OpInfo.Regs.empty() &&
+ Register::isVirtualRegister(OpInfo.Regs.front())) {
+ // Put the register class of the virtual registers in the flag word.
----------------
I think .isVirtual() should work here
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1946
+ LLVM_DEBUG(dbgs() << "Don't know how to handle tied "
+ "indirect register inputs yet");
+ return false;
----------------
Need a newline here
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1971
+ dbgs()
+ << "Couldn't retrieve register class of tied register operand");
+ return false;
----------------
Needs newline
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1973
+ return false;
+ ;
+ }
----------------
Extra semicolon
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1979
+ assert(MatchedOpInfo.ConstraintType == TargetLowering::C_Memory);
+ LLVM_DEBUG(dbgs() << "Tied memory operands not supported yet");
+ return false;
----------------
Missing newline
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1986
+ LLVM_DEBUG(dbgs() << "Indirect input operands with unknown constraint "
+ "not supported yet");
+ return false;
----------------
Missing newline
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:1997
+ LLVM_DEBUG(dbgs() << "Can't handle target constraint "
+ << OpInfo.ConstraintCode << " yet");
+ return false;
----------------
Missing newline
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:2027
+ "for constraint '"
+ << OpInfo.ConstraintCode << "'");
+ return false;
----------------
Missing newline
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:2035
+ dbgs()
+ << "Couldn't allocate input register for register constraint");
+ return false;
----------------
Missing newline
================
Comment at: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp:2122
+ case TargetLowering::C_Unknown:
+ LLVM_DEBUG(dbgs() << "Unexpected unknown constraint");
+ return false;
----------------
Missing newline
================
Comment at: llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp:860
+ Register SrcReg = Src.getReg();
+ MachineIRBuilder MIB(I);
+ MIB.buildCopy({DstReg}, {SrcReg});
----------------
Construct this once at the start of the function?
================
Comment at: llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp:861
+ MachineIRBuilder MIB(I);
+ MIB.buildCopy({DstReg}, {SrcReg});
+ Src.setReg(DstReg);
----------------
I would expect you just need to constrain the vreg to the class and don't necessarily need a copy?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77535/new/
https://reviews.llvm.org/D77535
More information about the llvm-commits
mailing list