summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp27
1 files changed, 6 insertions, 21 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index c44532e240f..66082df0108 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -1617,29 +1617,14 @@ bool IRTranslator::translateCall(const User &U, MachineIRBuilder &MIRBuilder) {
if (isa<FPMathOperator>(CI))
MIB->copyIRFlags(CI);
- for (auto &Arg : enumerate(CI.arg_operands())) {
+ for (auto &Arg : CI.arg_operands()) {
// Some intrinsics take metadata parameters. Reject them.
- if (isa<MetadataAsValue>(Arg.value()))
+ if (isa<MetadataAsValue>(Arg))
return false;
-
- // If this is required to be an immediate, don't materialize it in a
- // register.
- if (CI.paramHasAttr(Arg.index(), Attribute::ImmArg)) {
- if (ConstantInt *CI = dyn_cast<ConstantInt>(Arg.value())) {
- // imm arguments are more convenient than cimm (and realistically
- // probably sufficient), so use them.
- assert(CI->getBitWidth() <= 64 &&
- "large intrinsic immediates not handled");
- MIB.addImm(CI->getSExtValue());
- } else {
- MIB.addFPImm(cast<ConstantFP>(Arg.value()));
- }
- } else {
- ArrayRef<Register> VRegs = getOrCreateVRegs(*Arg.value());
- if (VRegs.size() > 1)
- return false;
- MIB.addUse(VRegs[0]);
- }
+ ArrayRef<Register> VRegs = getOrCreateVRegs(*Arg);
+ if (VRegs.size() > 1)
+ return false;
+ MIB.addUse(VRegs[0]);
}
// Add a MachineMemOperand if it is a target mem intrinsic.
OpenPOWER on IntegriCloud