237 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt < %s -S -passes=speculative-execution \3; RUN: -spec-exec-max-speculation-cost 4 -spec-exec-max-not-hoisted 3 \4; RUN: | FileCheck %s5 6define void @ifThen_bitcast(i32 %arg) {7; CHECK-LABEL: define void @ifThen_bitcast(8; CHECK-SAME: i32 [[ARG:%.*]]) {9; CHECK-NEXT: [[X:%.*]] = bitcast i32 [[ARG]] to float10; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]11; CHECK: [[A]]:12; CHECK-NEXT: br label %[[B]]13; CHECK: [[B]]:14; CHECK-NEXT: ret void15;16 br i1 true, label %a, label %b17 18a:19 %x = bitcast i32 %arg to float20 br label %b21 22b:23 ret void24}25 26define void @ifThen_ptrtoint(ptr %arg) {27; CHECK-LABEL: define void @ifThen_ptrtoint(28; CHECK-SAME: ptr [[ARG:%.*]]) {29; CHECK-NEXT: [[X:%.*]] = ptrtoint ptr [[ARG]] to i6430; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]31; CHECK: [[A]]:32; CHECK-NEXT: br label %[[B]]33; CHECK: [[B]]:34; CHECK-NEXT: ret void35;36 br i1 true, label %a, label %b37 38a:39 %x = ptrtoint ptr %arg to i6440 br label %b41 42b:43 ret void44}45 46define void @ifThen_ptrtoaddr(ptr %arg) {47; CHECK-LABEL: define void @ifThen_ptrtoaddr(48; CHECK-SAME: ptr [[ARG:%.*]]) {49; CHECK-NEXT: [[X:%.*]] = ptrtoaddr ptr [[ARG]] to i6450; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]51; CHECK: [[A]]:52; CHECK-NEXT: br label %[[B]]53; CHECK: [[B]]:54; CHECK-NEXT: ret void55;56 br i1 true, label %a, label %b57 58a:59 %x = ptrtoaddr ptr %arg to i6460 br label %b61 62b:63 ret void64}65 66define void @ifThen_inttoptr(i64 %arg) {67; CHECK-LABEL: define void @ifThen_inttoptr(68; CHECK-SAME: i64 [[ARG:%.*]]) {69; CHECK-NEXT: [[X:%.*]] = inttoptr i64 [[ARG]] to ptr70; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]71; CHECK: [[A]]:72; CHECK-NEXT: br label %[[B]]73; CHECK: [[B]]:74; CHECK-NEXT: ret void75;76 br i1 true, label %a, label %b77 78a:79 %x = inttoptr i64 %arg to ptr80 br label %b81 82b:83 ret void84}85 86define void @ifThen_addrspacecast(ptr %arg) {87; CHECK-LABEL: define void @ifThen_addrspacecast(88; CHECK-SAME: ptr [[ARG:%.*]]) {89; CHECK-NEXT: [[X:%.*]] = addrspacecast ptr [[ARG]] to ptr addrspace(1)90; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]91; CHECK: [[A]]:92; CHECK-NEXT: br label %[[B]]93; CHECK: [[B]]:94; CHECK-NEXT: ret void95;96 br i1 true, label %a, label %b97a:98 %x = addrspacecast ptr %arg to ptr addrspace(1)99 br label %b100 101b:102 ret void103}104 105define void @ifThen_fptoui(float %arg) {106; CHECK-LABEL: define void @ifThen_fptoui(107; CHECK-SAME: float [[ARG:%.*]]) {108; CHECK-NEXT: [[X:%.*]] = fptoui float [[ARG]] to i32109; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]110; CHECK: [[A]]:111; CHECK-NEXT: br label %[[B]]112; CHECK: [[B]]:113; CHECK-NEXT: ret void114;115 br i1 true, label %a, label %b116a:117 %x = fptoui float %arg to i32118 br label %b119 120b:121 ret void122}123 124define void @ifThen_fptosi(float %arg) {125; CHECK-LABEL: define void @ifThen_fptosi(126; CHECK-SAME: float [[ARG:%.*]]) {127; CHECK-NEXT: [[X:%.*]] = fptosi float [[ARG]] to i32128; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]129; CHECK: [[A]]:130; CHECK-NEXT: br label %[[B]]131; CHECK: [[B]]:132; CHECK-NEXT: ret void133;134 br i1 true, label %a, label %b135a:136 %x = fptosi float %arg to i32137 br label %b138 139b:140 ret void141}142 143define void @ifThen_uitofp(i32 %arg) {144; CHECK-LABEL: define void @ifThen_uitofp(145; CHECK-SAME: i32 [[ARG:%.*]]) {146; CHECK-NEXT: [[X:%.*]] = uitofp i32 [[ARG]] to float147; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]148; CHECK: [[A]]:149; CHECK-NEXT: br label %[[B]]150; CHECK: [[B]]:151; CHECK-NEXT: ret void152;153 br i1 true, label %a, label %b154a:155 %x = uitofp i32 %arg to float156 br label %b157 158b:159 ret void160}161 162define void @ifThen_sitofp(i32 %arg) {163; CHECK-LABEL: define void @ifThen_sitofp(164; CHECK-SAME: i32 [[ARG:%.*]]) {165; CHECK-NEXT: [[X:%.*]] = sitofp i32 [[ARG]] to float166; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]167; CHECK: [[A]]:168; CHECK-NEXT: br label %[[B]]169; CHECK: [[B]]:170; CHECK-NEXT: ret void171;172 br i1 true, label %a, label %b173a:174 %x = sitofp i32 %arg to float175 br label %b176 177b:178 ret void179}180 181define void @ifThen_fpext(float %arg) {182; CHECK-LABEL: define void @ifThen_fpext(183; CHECK-SAME: float [[ARG:%.*]]) {184; CHECK-NEXT: [[X:%.*]] = fpext float [[ARG]] to double185; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]186; CHECK: [[A]]:187; CHECK-NEXT: br label %[[B]]188; CHECK: [[B]]:189; CHECK-NEXT: ret void190;191 br i1 true, label %a, label %b192a:193 %x = fpext float %arg to double194 br label %b195 196b:197 ret void198}199 200define void @ifThen_fptrunc(double %arg) {201; CHECK-LABEL: define void @ifThen_fptrunc(202; CHECK-SAME: double [[ARG:%.*]]) {203; CHECK-NEXT: [[X:%.*]] = fptrunc double [[ARG]] to float204; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]205; CHECK: [[A]]:206; CHECK-NEXT: br label %[[B]]207; CHECK: [[B]]:208; CHECK-NEXT: ret void209;210 br i1 true, label %a, label %b211a:212 %x = fptrunc double %arg to float213 br label %b214 215b:216 ret void217}218 219define void @ifThen_trunc(i32 %arg) {220; CHECK-LABEL: define void @ifThen_trunc(221; CHECK-SAME: i32 [[ARG:%.*]]) {222; CHECK-NEXT: [[X:%.*]] = trunc i32 [[ARG]] to i16223; CHECK-NEXT: br i1 true, label %[[A:.*]], label %[[B:.*]]224; CHECK: [[A]]:225; CHECK-NEXT: br label %[[B]]226; CHECK: [[B]]:227; CHECK-NEXT: ret void228;229 br i1 true, label %a, label %b230a:231 %x = trunc i32 %arg to i16232 br label %b233 234b:235 ret void236}237