1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/Transforms/SpeculativeExecution/spec-casts.ll
Piotr Sobczak ae308bcfcd SpeculativeExecution: Allow speculating more instruction types
Support more instructions in SpeculativeExecution pass:
- ExtractValue
- InsertValue
- Trunc
- Freeze

Differential Revision: https://reviews.llvm.org/D91688
2020-11-18 17:00:19 +01:00

150 lines
2.3 KiB
LLVM

; RUN: opt < %s -S -speculative-execution \
; RUN: -spec-exec-max-speculation-cost 4 -spec-exec-max-not-hoisted 3 \
; RUN: | FileCheck %s
; CHECK-LABEL: @ifThen_bitcast(
; CHECK: bitcast
; CHECK: br i1 true
define void @ifThen_bitcast() {
br i1 true, label %a, label %b
a:
%x = bitcast i32 undef to float
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_ptrtoint(
; CHECK: ptrtoint
; CHECK: br i1 true
define void @ifThen_ptrtoint() {
br i1 true, label %a, label %b
a:
%x = ptrtoint i32* undef to i64
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_inttoptr(
; CHECK: inttoptr
; CHECK: br i1 true
define void @ifThen_inttoptr() {
br i1 true, label %a, label %b
a:
%x = inttoptr i64 undef to i32*
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_addrspacecast(
; CHECK: addrspacecast
; CHECK: br i1 true
define void @ifThen_addrspacecast() {
br i1 true, label %a, label %b
a:
%x = addrspacecast i32* undef to i32 addrspace(1)*
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_fptoui(
; CHECK: fptoui
; CHECK: br i1 true
define void @ifThen_fptoui() {
br i1 true, label %a, label %b
a:
%x = fptoui float undef to i32
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_fptosi(
; CHECK: fptosi
; CHECK: br i1 true
define void @ifThen_fptosi() {
br i1 true, label %a, label %b
a:
%x = fptosi float undef to i32
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_uitofp(
; CHECK: uitofp
; CHECK: br i1 true
define void @ifThen_uitofp() {
br i1 true, label %a, label %b
a:
%x = uitofp i32 undef to float
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_sitofp(
; CHECK: sitofp
; CHECK: br i1 true
define void @ifThen_sitofp() {
br i1 true, label %a, label %b
a:
%x = sitofp i32 undef to float
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_fpext(
; CHECK: fpext
; CHECK: br i1 true
define void @ifThen_fpext() {
br i1 true, label %a, label %b
a:
%x = fpext float undef to double
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_fptrunc(
; CHECK: fptrunc
; CHECK: br i1 true
define void @ifThen_fptrunc() {
br i1 true, label %a, label %b
a:
%x = fptrunc double undef to float
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_trunc(
; CHECK: trunc
; CHECK: br i1 true
define void @ifThen_trunc() {
br i1 true, label %a, label %b
a:
%x = trunc i32 undef to i16
br label %b
b:
ret void
}