forked from OSchip/llvm-project
[GlobalISel] Move extendRegister where it belongs. NFCI
Apparently I missed this one when I moved ValueHandler back in r288658. Sorry! llvm-svn: 289528
This commit is contained in:
parent
d92099991b
commit
2d9adbf524
|
@ -15,6 +15,7 @@
|
|||
#include "llvm/CodeGen/GlobalISel/CallLowering.h"
|
||||
#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
|
||||
#include "llvm/CodeGen/MachineOperand.h"
|
||||
#include "llvm/CodeGen/MachineRegisterInfo.h"
|
||||
#include "llvm/IR/DataLayout.h"
|
||||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
|
@ -139,3 +140,31 @@ bool CallLowering::handleAssignments(MachineIRBuilder &MIRBuilder,
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
unsigned CallLowering::ValueHandler::extendRegister(unsigned ValReg,
|
||||
CCValAssign &VA) {
|
||||
LLT LocTy{VA.getLocVT()};
|
||||
switch (VA.getLocInfo()) {
|
||||
default: break;
|
||||
case CCValAssign::Full:
|
||||
case CCValAssign::BCvt:
|
||||
// FIXME: bitconverting between vector types may or may not be a
|
||||
// nop in big-endian situations.
|
||||
return ValReg;
|
||||
case CCValAssign::AExt:
|
||||
assert(!VA.getLocVT().isVector() && "unexpected vector extend");
|
||||
// Otherwise, it's a nop.
|
||||
return ValReg;
|
||||
case CCValAssign::SExt: {
|
||||
unsigned NewReg = MRI.createGenericVirtualRegister(LocTy);
|
||||
MIRBuilder.buildSExt(NewReg, ValReg);
|
||||
return NewReg;
|
||||
}
|
||||
case CCValAssign::ZExt: {
|
||||
unsigned NewReg = MRI.createGenericVirtualRegister(LocTy);
|
||||
MIRBuilder.buildZExt(NewReg, ValReg);
|
||||
return NewReg;
|
||||
}
|
||||
}
|
||||
llvm_unreachable("unable to extend register");
|
||||
}
|
||||
|
|
|
@ -32,34 +32,6 @@ AArch64CallLowering::AArch64CallLowering(const AArch64TargetLowering &TLI)
|
|||
: CallLowering(&TLI) {
|
||||
}
|
||||
|
||||
unsigned CallLowering::ValueHandler::extendRegister(unsigned ValReg,
|
||||
CCValAssign &VA) {
|
||||
LLT LocTy{VA.getLocVT()};
|
||||
switch (VA.getLocInfo()) {
|
||||
default: break;
|
||||
case CCValAssign::Full:
|
||||
case CCValAssign::BCvt:
|
||||
// FIXME: bitconverting between vector types may or may not be a
|
||||
// nop in big-endian situations.
|
||||
return ValReg;
|
||||
case CCValAssign::AExt:
|
||||
assert(!VA.getLocVT().isVector() && "unexpected vector extend");
|
||||
// Otherwise, it's a nop.
|
||||
return ValReg;
|
||||
case CCValAssign::SExt: {
|
||||
unsigned NewReg = MRI.createGenericVirtualRegister(LocTy);
|
||||
MIRBuilder.buildSExt(NewReg, ValReg);
|
||||
return NewReg;
|
||||
}
|
||||
case CCValAssign::ZExt: {
|
||||
unsigned NewReg = MRI.createGenericVirtualRegister(LocTy);
|
||||
MIRBuilder.buildZExt(NewReg, ValReg);
|
||||
return NewReg;
|
||||
}
|
||||
}
|
||||
llvm_unreachable("unable to extend register");
|
||||
}
|
||||
|
||||
struct IncomingArgHandler : public CallLowering::ValueHandler {
|
||||
IncomingArgHandler(MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
|
||||
: ValueHandler(MIRBuilder, MRI) {}
|
||||
|
|
Loading…
Reference in New Issue