brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 71051d9 Raw
76 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([2 x double] %z) {5; CHECK-LABEL: @std_cabs(6; CHECK-NEXT:    [[CALL:%.*]] = tail call double @cabs([2 x double] [[Z:%.*]])7; CHECK-NEXT:    ret double [[CALL]]8;9  %call = tail call double @cabs([2 x double] %z)10  ret double %call11}12 13define float @std_cabsf([2 x float] %z) {14; CHECK-LABEL: @std_cabsf(15; CHECK-NEXT:    [[CALL:%.*]] = tail call float @cabsf([2 x float] [[Z:%.*]])16; CHECK-NEXT:    ret float [[CALL]]17;18  %call = tail call float @cabsf([2 x float] %z)19  ret float %call20}21 22define fp128 @std_cabsl([2 x fp128] %z) {23; CHECK-LABEL: @std_cabsl(24; CHECK-NEXT:    [[CALL:%.*]] = tail call fp128 @cabsl([2 x fp128] [[Z:%.*]])25; CHECK-NEXT:    ret fp128 [[CALL]]26;27  %call = tail call fp128 @cabsl([2 x fp128] %z)28  ret fp128 %call29}30 31define double @fast_cabs([2 x double] %z) {32; CHECK-LABEL: @fast_cabs(33; CHECK-NEXT:    [[REAL:%.*]] = extractvalue [2 x double] [[Z:%.*]], 034; CHECK-NEXT:    [[IMAG:%.*]] = extractvalue [2 x double] [[Z]], 135; CHECK-NEXT:    [[TMP1:%.*]] = fmul fast double [[REAL]], [[REAL]]36; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast double [[IMAG]], [[IMAG]]37; CHECK-NEXT:    [[TMP3:%.*]] = fadd fast double [[TMP1]], [[TMP2]]38; CHECK-NEXT:    [[CABS:%.*]] = tail call fast double @llvm.sqrt.f64(double [[TMP3]])39; CHECK-NEXT:    ret double [[CABS]]40;41  %call = tail call fast double @cabs([2 x double] %z)42  ret double %call43}44 45define float @fast_cabsf([2 x float] %z) {46; CHECK-LABEL: @fast_cabsf(47; CHECK-NEXT:    [[REAL:%.*]] = extractvalue [2 x float] [[Z:%.*]], 048; CHECK-NEXT:    [[IMAG:%.*]] = extractvalue [2 x float] [[Z]], 149; CHECK-NEXT:    [[TMP1:%.*]] = fmul fast float [[REAL]], [[REAL]]50; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast float [[IMAG]], [[IMAG]]51; CHECK-NEXT:    [[TMP3:%.*]] = fadd fast float [[TMP1]], [[TMP2]]52; CHECK-NEXT:    [[CABS:%.*]] = tail call fast float @llvm.sqrt.f32(float [[TMP3]])53; CHECK-NEXT:    ret float [[CABS]]54;55  %call = tail call fast float @cabsf([2 x float] %z)56  ret float %call57}58 59define fp128 @fast_cabsl([2 x fp128] %z) {60; CHECK-LABEL: @fast_cabsl(61; CHECK-NEXT:    [[REAL:%.*]] = extractvalue [2 x fp128] [[Z:%.*]], 062; CHECK-NEXT:    [[IMAG:%.*]] = extractvalue [2 x fp128] [[Z]], 163; CHECK-NEXT:    [[TMP1:%.*]] = fmul fast fp128 [[REAL]], [[REAL]]64; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast fp128 [[IMAG]], [[IMAG]]65; CHECK-NEXT:    [[TMP3:%.*]] = fadd fast fp128 [[TMP1]], [[TMP2]]66; CHECK-NEXT:    [[CABS:%.*]] = tail call fast fp128 @llvm.sqrt.f128(fp128 [[TMP3]])67; CHECK-NEXT:    ret fp128 [[CABS]]68;69  %call = tail call fast fp128 @cabsl([2 x fp128] %z)70  ret fp128 %call71}72 73declare double @cabs([2 x double])74declare float @cabsf([2 x float])75declare fp128 @cabsl([2 x fp128])76