brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 95242b1 Raw
33 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -S -passes=instcombine < %s | FileCheck %s3 4define float @pr80941(float %arg) {5; CHECK-LABEL: define float @pr80941(6; CHECK-SAME: float [[ARG:%.*]]) {7; CHECK-NEXT:  entry:8; CHECK-NEXT:    [[COND:%.*]] = tail call i1 @llvm.is.fpclass.f32(float [[ARG]], i32 144)9; CHECK-NEXT:    br i1 [[COND]], label [[IF_THEN:%.*]], label [[IF_EXIT:%.*]]10; CHECK:       if.then:11; CHECK-NEXT:    [[FPEXT:%.*]] = fpext float [[ARG]] to double12; CHECK-NEXT:    [[SIGN:%.*]] = call double @llvm.copysign.f64(double 0.000000e+00, double [[FPEXT]])13; CHECK-NEXT:    [[FPTRUNC:%.*]] = fptrunc double [[SIGN]] to float14; CHECK-NEXT:    br label [[IF_EXIT]]15; CHECK:       if.exit:16; CHECK-NEXT:    [[RET:%.*]] = phi float [ [[FPTRUNC]], [[IF_THEN]] ], [ [[ARG]], [[ENTRY:%.*]] ]17; CHECK-NEXT:    ret float [[RET]]18;19entry:20  %cond = tail call i1 @llvm.is.fpclass.f32(float %arg, i32 144)21  br i1 %cond, label %if.then, label %if.exit22 23if.then:24  %fpext = fpext float %arg to double25  %sign = call double @llvm.copysign.f64(double 0.000000e+00, double %fpext)26  %fptrunc = fptrunc double %sign to float27  br label %if.exit28 29if.exit:30  %ret = phi float [ %fptrunc, %if.then ], [ %arg, %entry ]31  ret float %ret32}33