Skip to content

Commit cb4a1b2

Browse files
committed
[𝘀𝗽𝗿] changes introduced through rebase
Created using spr 1.3.5 [skip ci]
1 parent 5a037ba commit cb4a1b2

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
#include "llvm/CodeGen/GlobalISel/CallLowering.h"
2424
#include "llvm/CodeGen/GlobalISel/GISelKnownBits.h"
25+
#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
2526
#include "llvm/CodeGen/RuntimeLibcallUtil.h"
2627
#include "llvm/CodeGen/TargetOpcodes.h"
2728

@@ -297,9 +298,9 @@ class LegalizerHelper {
297298
MachineInstrBuilder createStackTemporary(TypeSize Bytes, Align Alignment,
298299
MachinePointerInfo &PtrInfo);
299300

300-
/// Create a store of \p Val to a stack temporary and return a load of the
301-
/// same value as type \p DestVT.
302-
MachineInstrBuilder createStackStoreLoad(Register Val, LLT DstTy);
301+
/// Create a store of \p Val to a stack temporary and return a load as the
302+
/// same type as \p Res.
303+
MachineInstrBuilder createStackStoreLoad(const DstOp &Res, const SrcOp &Val);
303304

304305
/// Get a pointer to vector element \p Index located in memory for a vector of
305306
/// type \p VecTy starting at a base address of \p VecPtr. If \p Index is out

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3023,6 +3023,7 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) {
30233023
return UnableToLegalize;
30243024

30253025
LLT Ty = MRI.getType(MI.getOperand(0).getReg());
3026+
assert(!Ty.isPointerOrPointerVector() && "Can't widen type");
30263027
if (!Ty.isScalar()) {
30273028
// We need to widen the vector element type.
30283029
Observer.changingInstr(MI);
@@ -4664,18 +4665,18 @@ LegalizerHelper::createStackTemporary(TypeSize Bytes, Align Alignment,
46644665
return MIRBuilder.buildFrameIndex(FramePtrTy, FrameIdx);
46654666
}
46664667

4667-
MachineInstrBuilder LegalizerHelper::createStackStoreLoad(Register Val,
4668-
LLT DstTy) {
4669-
LLT SrcTy = MRI.getType(Val);
4670-
Align StackTypeAlign = getStackTemporaryAlignment(SrcTy);
4668+
MachineInstrBuilder LegalizerHelper::createStackStoreLoad(const DstOp &Res,
4669+
const SrcOp &Val) {
4670+
LLT SrcTy = Val.getLLTTy(MRI);
4671+
Align StackTypeAlign =
4672+
std::max(getStackTemporaryAlignment(SrcTy),
4673+
getStackTemporaryAlignment(Res.getLLTTy(MRI)));
46714674
MachinePointerInfo PtrInfo;
46724675
auto StackTemp =
46734676
createStackTemporary(SrcTy.getSizeInBytes(), StackTypeAlign, PtrInfo);
46744677

46754678
MIRBuilder.buildStore(Val, StackTemp, PtrInfo, StackTypeAlign);
4676-
return MIRBuilder.buildLoad(
4677-
DstTy, StackTemp, PtrInfo,
4678-
std::min(StackTypeAlign, getStackTemporaryAlignment(DstTy)));
4679+
return MIRBuilder.buildLoad(Res, StackTemp, PtrInfo, StackTypeAlign);
46794680
}
46804681

46814682
static Register clampVectorIndex(MachineIRBuilder &B, Register IdxReg,

llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,8 +1429,7 @@ bool AArch64LegalizerInfo::legalizeBitcast(MachineInstr &MI,
14291429
SrcTy.getElementType() != LLT::scalar(1))
14301430
return false;
14311431

1432-
auto Load = Helper.createStackStoreLoad(SrcReg, DstTy);
1433-
Helper.MIRBuilder.buildCopy(DstReg, Load.getReg(0));
1432+
Helper.createStackStoreLoad(DstReg, SrcReg);
14341433
MI.eraseFromParent();
14351434
return true;
14361435
}

llvm/test/CodeGen/AArch64/GlobalISel/legalize-bitcast.mir

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ body: |
5959
; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0
6060
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<8 x s8>) = G_ANYEXT %vec(<8 x s1>)
6161
; CHECK-NEXT: G_STORE [[ANYEXT]](<8 x s8>), [[FRAME_INDEX]](p0) :: (store (<8 x s1>) into %stack.0)
62-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s8) from %stack.0)
63-
; CHECK-NEXT: %bc:_(s8) = COPY [[LOAD]](s8)
62+
; CHECK-NEXT: %bc:_(s8) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s8) from %stack.0)
6463
; CHECK-NEXT: %ext:_(s32) = G_ANYEXT %bc(s8)
6564
; CHECK-NEXT: $w0 = COPY %ext(s32)
6665
; CHECK-NEXT: RET_ReallyLR implicit $w0

0 commit comments

Comments
 (0)