Skip to content

Commit

Permalink
SpeculativeExecution: fixed ingoring free execution
Browse files Browse the repository at this point in the history
Summary:
After updating cost model in AMDGPU target (47a5c36) the pass started to
ignore some BBs since they got all instructions estimated as free.

Reviewers: arsenm, chandlerc, nhaehnle

Reviewed By: nhaehnle

Subscribers: jvesely, wdng, nhaehnle, tpr, hiraditya, kerbowa, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74825
  • Loading branch information
dfukalov committed Feb 20, 2020
1 parent c8f9e52 commit dbfc682
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
3 changes: 0 additions & 3 deletions llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
Expand Up @@ -279,9 +279,6 @@ bool SpeculativeExecutionPass::considerHoistingFromTo(
}
}

if (TotalSpeculationCost == 0)
return false; // nothing to hoist

for (auto I = FromBlock.begin(); I != FromBlock.end();) {
// We have to increment I before moving Current as moving Current
// changes the list that I is iterating through.
Expand Down
30 changes: 30 additions & 0 deletions llvm/test/CodeGen/AMDGPU/speculative-execution-freecasts.ll
@@ -0,0 +1,30 @@
; RUN: opt < %s -S -mtriple=amdgcn-unknown-amdhsa -speculative-execution \
; RUN: -spec-exec-max-speculation-cost 1 -spec-exec-max-not-hoisted 1 \
; RUN: | FileCheck %s

; CHECK-LABEL: @ifThen_bitcast(
; CHECK: bitcast
; CHECK: br i1 true
define void @ifThen_bitcast(i32 %y) {
br i1 true, label %a, label %b

a:
%x = bitcast i32 %y to float
br label %b

b:
ret void
}

; CHECK-LABEL: @ifThen_addrspacecast(
; CHECK: addrspacecast
; CHECK: br i1 true
define void @ifThen_addrspacecast(i32* %y) {
br i1 true, label %a, label %b
a:
%x = addrspacecast i32* %y to i32 addrspace(1)*
br label %b

b:
ret void
}

0 comments on commit dbfc682

Please sign in to comment.