mirror of
https://github.com/RPCSX/llvm.git
synced 2025-04-02 08:11:54 +00:00
[GlobalISel]: Create VREGs for ConstantInt args
This patch changes the behavior of IRTranslating intrinsics where we now create VREG + G_CONSTANT for ConstantInt values. We already do this for FloatingPoint values. This makes it easier for the backends to select code and it won't have to de-duplicate creation+selection of constants. Reviewed by: ab git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298473 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a284ce24c9
commit
1b722a40ce
@ -772,10 +772,7 @@ bool IRTranslator::translateCall(const User &U, MachineIRBuilder &MIRBuilder) {
|
||||
// Some intrinsics take metadata parameters. Reject them.
|
||||
if (isa<MetadataAsValue>(Arg))
|
||||
return false;
|
||||
if (ConstantInt *CI = dyn_cast<ConstantInt>(Arg))
|
||||
MIB.addImm(CI->getSExtValue());
|
||||
else
|
||||
MIB.addUse(getOrCreateVReg(*Arg));
|
||||
MIB.addUse(getOrCreateVReg(*Arg));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -488,7 +488,8 @@ define void @store(i64* %addr, i64 addrspace(42)* %addr42, i64 %val1, i64 %val2)
|
||||
; CHECK-LABEL: name: intrinsics
|
||||
; CHECK: [[CUR:%[0-9]+]](s32) = COPY %w0
|
||||
; CHECK: [[BITS:%[0-9]+]](s32) = COPY %w1
|
||||
; CHECK: [[PTR:%[0-9]+]](p0) = G_INTRINSIC intrinsic(@llvm.returnaddress), 0
|
||||
; CHECK: [[CREG:%[0-9]+]](s32) = G_CONSTANT i32 0
|
||||
; CHECK: [[PTR:%[0-9]+]](p0) = G_INTRINSIC intrinsic(@llvm.returnaddress), [[CREG]]
|
||||
; CHECK: [[PTR_VEC:%[0-9]+]](p0) = G_FRAME_INDEX %stack.0.ptr.vec
|
||||
; CHECK: [[VEC:%[0-9]+]](<8 x s8>) = G_LOAD [[PTR_VEC]]
|
||||
; CHECK: G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.st2), [[VEC]](<8 x s8>), [[VEC]](<8 x s8>), [[PTR]](p0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user