[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / Transforms / SpeculativeExecution / spec-casts.ll
blobc75d7449d114ae3fbf111a0a4f41e94e9546dc2d
1 ; RUN: opt < %s -S -speculative-execution \
2 ; RUN:   -spec-exec-max-speculation-cost 4 -spec-exec-max-not-hoisted 3 \
3 ; RUN:   | FileCheck %s
5 ; CHECK-LABEL: @ifThen_bitcast(
6 ; CHECK: bitcast
7 ; CHECK: br i1 true
8 define void @ifThen_bitcast() {
9   br i1 true, label %a, label %b
12   %x = bitcast i32 undef to float
13   br label %b
16   ret void
19 ; CHECK-LABEL: @ifThen_ptrtoint(
20 ; CHECK: ptrtoint
21 ; CHECK: br i1 true
22 define void @ifThen_ptrtoint() {
23   br i1 true, label %a, label %b
26   %x = ptrtoint i32* undef to i64
27   br label %b
30   ret void
33 ; CHECK-LABEL: @ifThen_inttoptr(
34 ; CHECK: inttoptr
35 ; CHECK: br i1 true
36 define void @ifThen_inttoptr() {
37   br i1 true, label %a, label %b
40   %x = inttoptr i64 undef to i32*
41   br label %b
44   ret void
47 ; CHECK-LABEL: @ifThen_addrspacecast(
48 ; CHECK: addrspacecast
49 ; CHECK: br i1 true
50 define void @ifThen_addrspacecast() {
51   br i1 true, label %a, label %b
53   %x = addrspacecast i32* undef to i32 addrspace(1)*
54   br label %b
57   ret void
60 ; CHECK-LABEL: @ifThen_fptoui(
61 ; CHECK: fptoui
62 ; CHECK: br i1 true
63 define void @ifThen_fptoui() {
64   br i1 true, label %a, label %b
66   %x = fptoui float undef to i32
67   br label %b
70   ret void
73 ; CHECK-LABEL: @ifThen_fptosi(
74 ; CHECK: fptosi
75 ; CHECK: br i1 true
76 define void @ifThen_fptosi() {
77   br i1 true, label %a, label %b
79   %x = fptosi float undef to i32
80   br label %b
83   ret void
86 ; CHECK-LABEL: @ifThen_uitofp(
87 ; CHECK: uitofp
88 ; CHECK: br i1 true
89 define void @ifThen_uitofp() {
90   br i1 true, label %a, label %b
92   %x = uitofp i32 undef to float
93   br label %b
96   ret void
99 ; CHECK-LABEL: @ifThen_sitofp(
100 ; CHECK: sitofp
101 ; CHECK: br i1 true
102 define void @ifThen_sitofp() {
103   br i1 true, label %a, label %b
105   %x = sitofp i32 undef to float
106   br label %b
109   ret void
112 ; CHECK-LABEL: @ifThen_fpext(
113 ; CHECK: fpext
114 ; CHECK: br i1 true
115 define void @ifThen_fpext() {
116   br i1 true, label %a, label %b
118   %x = fpext float undef to double
119   br label %b
122   ret void
125 ; CHECK-LABEL: @ifThen_fptrunc(
126 ; CHECK: fptrunc
127 ; CHECK: br i1 true
128 define void @ifThen_fptrunc() {
129   br i1 true, label %a, label %b
131   %x = fptrunc double undef to float
132   br label %b
135   ret void