diff options
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp index 0aa4708f35a..baaaf46d7fd 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp @@ -3462,7 +3462,7 @@ void AArch64InstrInfo::genAlternativeCodeSequence( unsigned Val = Root.getOperand(3).getImm(); Imm = Imm << Val; } - uint64_t UImm = Imm << (64 - BitSize) >> (64 - BitSize); + uint64_t UImm = SignExtend64(Imm, BitSize); uint64_t Encoding; if (AArch64_AM::processLogicalImmediate(UImm, BitSize, Encoding)) { MachineInstrBuilder MIB1 = @@ -3548,12 +3548,12 @@ void AArch64InstrInfo::genAlternativeCodeSequence( RC = &AArch64::GPR64RegClass; } unsigned NewVR = MRI.createVirtualRegister(OrrRC); - int Imm = Root.getOperand(2).getImm(); + uint64_t Imm = Root.getOperand(2).getImm(); if (Root.getOperand(3).isImm()) { unsigned Val = Root.getOperand(3).getImm(); Imm = Imm << Val; } - uint64_t UImm = -Imm << (64 - BitSize) >> (64 - BitSize); + uint64_t UImm = SignExtend64(-Imm, BitSize); uint64_t Encoding; if (AArch64_AM::processLogicalImmediate(UImm, BitSize, Encoding)) { MachineInstrBuilder MIB1 = |