| ; RUN: opt < %s -S -passes=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 ptr 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 ptr |
| 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 ptr undef to ptr 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 |
| } |