brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 2e28ec9 Raw
151 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define double @std_cabs(double %real, double %imag) {5; CHECK-LABEL: @std_cabs(6; CHECK-NEXT:    [[CALL:%.*]] = tail call double @cabs(double [[REAL:%.*]], double [[IMAG:%.*]])7; CHECK-NEXT:    ret double [[CALL]]8;9  %call = tail call double @cabs(double %real, double %imag)10  ret double %call11}12 13define float @std_cabsf(float %real, float %imag) {14; CHECK-LABEL: @std_cabsf(15; CHECK-NEXT:    [[CALL:%.*]] = tail call float @cabsf(float [[REAL:%.*]], float [[IMAG:%.*]])16; CHECK-NEXT:    ret float [[CALL]]17;18  %call = tail call float @cabsf(float %real, float %imag)19  ret float %call20}21 22define fp128 @std_cabsl(fp128 %real, fp128 %imag) {23; CHECK-LABEL: @std_cabsl(24; CHECK-NEXT:    [[CALL:%.*]] = tail call fp128 @cabsl(fp128 [[REAL:%.*]], fp128 [[IMAG:%.*]])25; CHECK-NEXT:    ret fp128 [[CALL]]26;27  %call = tail call fp128 @cabsl(fp128 %real, fp128 %imag)28  ret fp128 %call29}30 31define double @fast_cabs(double %real, double %imag) {32; CHECK-LABEL: @fast_cabs(33; CHECK-NEXT:    [[TMP1:%.*]] = fmul fast double [[REAL:%.*]], [[REAL]]34; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast double [[IMAG:%.*]], [[IMAG]]35; CHECK-NEXT:    [[TMP3:%.*]] = fadd fast double [[TMP1]], [[TMP2]]36; CHECK-NEXT:    [[CABS:%.*]] = tail call fast double @llvm.sqrt.f64(double [[TMP3]])37; CHECK-NEXT:    ret double [[CABS]]38;39  %call = tail call fast double @cabs(double %real, double %imag)40  ret double %call41}42 43define double @cabs_zero_real(double %imag) {44; CHECK-LABEL: @cabs_zero_real(45; CHECK-NEXT:    [[CABS:%.*]] = tail call double @llvm.fabs.f64(double [[IMAG:%.*]])46; CHECK-NEXT:    ret double [[CABS]]47;48  %call = tail call double @cabs(double 0.0, double %imag)49  ret double %call50}51 52define double @fast_cabs_neg_zero_real(double %imag) {53; CHECK-LABEL: @fast_cabs_neg_zero_real(54; CHECK-NEXT:    [[CABS:%.*]] = tail call fast double @llvm.fabs.f64(double [[IMAG:%.*]])55; CHECK-NEXT:    ret double [[CABS]]56;57  %call = tail call fast double @cabs(double -0.0, double %imag)58  ret double %call59}60 61define double @cabs_zero_imag(double %real) {62; CHECK-LABEL: @cabs_zero_imag(63; CHECK-NEXT:    [[CABS:%.*]] = tail call double @llvm.fabs.f64(double [[REAL:%.*]])64; CHECK-NEXT:    ret double [[CABS]]65;66  %call = tail call double @cabs(double %real, double 0.0)67  ret double %call68}69 70define float @fast_cabsf(float %real, float %imag) {71; CHECK-LABEL: @fast_cabsf(72; CHECK-NEXT:    [[TMP1:%.*]] = fmul fast float [[REAL:%.*]], [[REAL]]73; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast float [[IMAG:%.*]], [[IMAG]]74; CHECK-NEXT:    [[TMP3:%.*]] = fadd fast float [[TMP1]], [[TMP2]]75; CHECK-NEXT:    [[CABS:%.*]] = tail call fast float @llvm.sqrt.f32(float [[TMP3]])76; CHECK-NEXT:    ret float [[CABS]]77;78  %call = tail call fast float @cabsf(float %real, float %imag)79  ret float %call80}81 82define float @cabsf_zero_real(float %imag) {83; CHECK-LABEL: @cabsf_zero_real(84; CHECK-NEXT:    [[CABS:%.*]] = tail call float @llvm.fabs.f32(float [[IMAG:%.*]])85; CHECK-NEXT:    ret float [[CABS]]86;87  %call = tail call float @cabsf(float 0.0, float %imag)88  ret float %call89}90 91define float @fast_cabsf_neg_zero_real(float %imag) {92; CHECK-LABEL: @fast_cabsf_neg_zero_real(93; CHECK-NEXT:    [[CABS:%.*]] = tail call fast float @llvm.fabs.f32(float [[IMAG:%.*]])94; CHECK-NEXT:    ret float [[CABS]]95;96  %call = tail call fast float @cabsf(float -0.0, float %imag)97  ret float %call98}99 100define float @cabsf_zero_imag(float %real) {101; CHECK-LABEL: @cabsf_zero_imag(102; CHECK-NEXT:    [[CABS:%.*]] = tail call float @llvm.fabs.f32(float [[REAL:%.*]])103; CHECK-NEXT:    ret float [[CABS]]104;105  %call = tail call float @cabsf(float %real, float 0.0)106  ret float %call107}108 109define fp128 @fast_cabsl(fp128 %real, fp128 %imag) {110; CHECK-LABEL: @fast_cabsl(111; CHECK-NEXT:    [[TMP1:%.*]] = fmul fast fp128 [[REAL:%.*]], [[REAL]]112; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast fp128 [[IMAG:%.*]], [[IMAG]]113; CHECK-NEXT:    [[TMP3:%.*]] = fadd fast fp128 [[TMP1]], [[TMP2]]114; CHECK-NEXT:    [[CABS:%.*]] = tail call fast fp128 @llvm.sqrt.f128(fp128 [[TMP3]])115; CHECK-NEXT:    ret fp128 [[CABS]]116;117  %call = tail call fast fp128 @cabsl(fp128 %real, fp128 %imag)118  ret fp128 %call119}120 121define fp128 @cabsl_zero_real(fp128 %imag) {122; CHECK-LABEL: @cabsl_zero_real(123; CHECK-NEXT:    [[CABS:%.*]] = tail call fp128 @llvm.fabs.f128(fp128 [[IMAG:%.*]])124; CHECK-NEXT:    ret fp128 [[CABS]]125;126  %call = tail call fp128 @cabsl(fp128 0xL00000000000000000000000000000000, fp128 %imag)127  ret fp128 %call128}129 130define fp128 @cabsl_zero_imag(fp128 %real) {131; CHECK-LABEL: @cabsl_zero_imag(132; CHECK-NEXT:    [[CABS:%.*]] = tail call fp128 @llvm.fabs.f128(fp128 [[REAL:%.*]])133; CHECK-NEXT:    ret fp128 [[CABS]]134;135  %call = tail call fp128 @cabsl(fp128 %real, fp128 0xL00000000000000000000000000000000)136  ret fp128 %call137}138 139define fp128 @fast_cabsl_neg_zero_imag(fp128 %real) {140; CHECK-LABEL: @fast_cabsl_neg_zero_imag(141; CHECK-NEXT:    [[CABS:%.*]] = tail call fast fp128 @llvm.fabs.f128(fp128 [[REAL:%.*]])142; CHECK-NEXT:    ret fp128 [[CABS]]143;144  %call = tail call fast fp128 @cabsl(fp128 %real, fp128 0xL00000000000000008000000000000000)145  ret fp128 %call146}147 148declare double @cabs(double %real, double %imag)149declare float @cabsf(float %real, float %imag)150declare fp128 @cabsl(fp128 %real, fp128 %imag)151