summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorAmara Emerson <aemerson@apple.com>2019-09-02 08:18:55 +0000
committerAmara Emerson <aemerson@apple.com>2019-09-02 08:18:55 +0000
commit453ef4e376a13f5ab8d9e2c6019a57101d8409a4 (patch)
tree07fcfd2223cd243a38e5e3abb62b688fd7167897 /llvm/lib/CodeGen
parent254150982b7d1567080c7185d270d67069774d96 (diff)
downloadbcm5719-llvm-453ef4e376a13f5ab8d9e2c6019a57101d8409a4.tar.gz
bcm5719-llvm-453ef4e376a13f5ab8d9e2c6019a57101d8409a4.zip
[AArch64][GlobalISel] Fix zext narrowScalar to use the right type when creating
the merges. Fixes PR43171. llvm-svn: 370627
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
index c37b115fc91..1fc10a2d11c 100644
--- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -620,13 +620,15 @@ LegalizerHelper::LegalizeResult LegalizerHelper::narrowScalar(MachineInstr &MI,
if (TypeIdx != 0)
return UnableToLegalize;
- if (SizeOp0 % NarrowTy.getSizeInBits() != 0)
+ LLT SrcTy = MRI.getType(MI.getOperand(1).getReg());
+ uint64_t SizeOp1 = SrcTy.getSizeInBits();
+ if (SizeOp0 % SizeOp1 != 0)
return UnableToLegalize;
// Generate a merge where the bottom bits are taken from the source, and
// zero everything else.
- Register ZeroReg = MIRBuilder.buildConstant(NarrowTy, 0).getReg(0);
- unsigned NumParts = SizeOp0 / NarrowTy.getSizeInBits();
+ Register ZeroReg = MIRBuilder.buildConstant(SrcTy, 0).getReg(0);
+ unsigned NumParts = SizeOp0 / SizeOp1;
SmallVector<Register, 4> Srcs = {MI.getOperand(1).getReg()};
for (unsigned Part = 1; Part < NumParts; ++Part)
Srcs.push_back(ZeroReg);
OpenPOWER on IntegriCloud