|  | ; 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 | 
|  | } |