mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
[ARM64] Never hoist the shift value of a shift instruction.
There is no need to check if we want to hoist the immediate value of an shift instruction. Simply return TCC_Free right away. llvm-svn: 206101
This commit is contained in:
parent
2cdca434db
commit
23e31a5f36
@ -203,15 +203,19 @@ unsigned ARM64TTI::getIntImmCost(unsigned Opcode, unsigned Idx,
|
||||
case Instruction::SDiv:
|
||||
case Instruction::URem:
|
||||
case Instruction::SRem:
|
||||
case Instruction::Shl:
|
||||
case Instruction::LShr:
|
||||
case Instruction::AShr:
|
||||
case Instruction::And:
|
||||
case Instruction::Or:
|
||||
case Instruction::Xor:
|
||||
case Instruction::ICmp:
|
||||
ImmIdx = 1;
|
||||
break;
|
||||
// Always return TCC_Free for the shift value of a shift instruction.
|
||||
case Instruction::Shl:
|
||||
case Instruction::LShr:
|
||||
case Instruction::AShr:
|
||||
if (Idx == 1)
|
||||
return TCC_Free;
|
||||
break;
|
||||
case Instruction::Trunc:
|
||||
case Instruction::ZExt:
|
||||
case Instruction::SExt:
|
||||
|
@ -16,3 +16,12 @@ define i512 @test2(i512 %a) nounwind {
|
||||
%2 = or i512 %1, 7
|
||||
ret i512 %2
|
||||
}
|
||||
|
||||
; Check that we don't hoist the shift value of a shift instruction.
|
||||
define i512 @test3(i512 %a) nounwind {
|
||||
; CHECK-LABEL: test3
|
||||
; CHECK-NOT: %const = bitcast i512 504 to i512
|
||||
%1 = shl i512 %a, 504
|
||||
%2 = ashr i512 %1, 504
|
||||
ret i512 %2
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user