forked from OSchip/llvm-project
SpeculativeExecution: Allow speculating more instruction types
Support more instructions in SpeculativeExecution pass: - ExtractElement - InsertElement - ShuffleVector Differential Revision: https://reviews.llvm.org/D91633
This commit is contained in:
parent
9d77584fe0
commit
c173f1b8eb
|
@ -245,6 +245,9 @@ static unsigned ComputeSpeculationCost(const Instruction *I,
|
|||
case Instruction::FNeg:
|
||||
case Instruction::ICmp:
|
||||
case Instruction::FCmp:
|
||||
case Instruction::ExtractElement:
|
||||
case Instruction::InsertElement:
|
||||
case Instruction::ShuffleVector:
|
||||
return TTI.getUserCost(I, TargetTransformInfo::TCK_SizeAndLatency);
|
||||
|
||||
default:
|
||||
|
|
|
@ -99,3 +99,46 @@ a:
|
|||
b:
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK-LABEL: @ifThen_shuffle(
|
||||
; CHECK: shufflevector
|
||||
; CHECK: br i1 true
|
||||
define void @ifThen_shuffle() {
|
||||
br i1 true, label %a, label %b
|
||||
|
||||
a:
|
||||
%x = shufflevector <2 x float> undef, <2 x float> undef, <2 x i32> zeroinitializer
|
||||
br label %b
|
||||
|
||||
b:
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK-LABEL: @ifThen_extract(
|
||||
; CHECK: extractelement
|
||||
; CHECK: br i1 true
|
||||
define void @ifThen_extract() {
|
||||
br i1 true, label %a, label %b
|
||||
|
||||
a:
|
||||
%x = extractelement <2 x float> undef, i32 1
|
||||
br label %b
|
||||
|
||||
b:
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
; CHECK-LABEL: @ifThen_insert(
|
||||
; CHECK: insertelement
|
||||
; CHECK: br i1 true
|
||||
define void @ifThen_insert() {
|
||||
br i1 true, label %a, label %b
|
||||
|
||||
a:
|
||||
%x = insertelement <2 x float> undef, float undef, i32 1
|
||||
br label %b
|
||||
|
||||
b:
|
||||
ret void
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue