brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 1089115 Raw
65 lines · c
1// REQUIRES: powerpc-registered-target2// RUN: %clang_cc1 -triple powerpc64-unknown-unknown \3// RUN:   -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s4// RUN: %clang_cc1 -triple powerpc64le-unknown-unknown \5// RUN:   -emit-llvm %s -o - -target-cpu pwr8 | FileCheck %s6// RUN: %clang_cc1 -triple powerpc64-unknown-aix \7// RUN:   -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s8// RUN: %clang_cc1 -triple powerpc-unknown-aix \9// RUN:   -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s10 11extern vector float a;12extern vector float b;13extern vector float c;14extern vector double d;15extern vector double e;16extern vector double f;17 18// CHECK-LABEL: @test_flags_recipdivf(19// CHECK:    [[TMP0:%.*]] = load <4 x float>, ptr @a, align 1620// CHECK-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @b, align 1621// CHECK-NEXT:    [[RECIPDIV:%.*]] = fdiv fast <4 x float> [[TMP0]], [[TMP1]]22// CHECK-NEXT:    [[TMP2:%.*]] = load <4 x float>, ptr @c, align 1623// CHECK-NEXT:    [[ADD:%.*]] = fadd <4 x float> [[RECIPDIV]], [[TMP2]]24// CHECK-NEXT:    ret <4 x float> [[ADD]]25//26vector float test_flags_recipdivf() {27  return __builtin_ppc_recipdivf(a, b) + c;28}29 30// CHECK-LABEL: @test_flags_recipdivd(31// CHECK:    [[TMP0:%.*]] = load <2 x double>, ptr @d, align 1632// CHECK-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @e, align 1633// CHECK-NEXT:    [[RECIPDIV:%.*]] = fdiv fast <2 x double> [[TMP0]], [[TMP1]]34// CHECK-NEXT:    [[TMP2:%.*]] = load <2 x double>, ptr @f, align 1635// CHECK-NEXT:    [[ADD:%.*]] = fadd <2 x double> [[RECIPDIV]], [[TMP2]]36// CHECK-NEXT:    ret <2 x double> [[ADD]]37//38vector double test_flags_recipdivd() {39  return __builtin_ppc_recipdivd(d, e) + f;40}41 42// CHECK-LABEL: @test_flags_rsqrtf(43// CHECK:    [[TMP0:%.*]] = load <4 x float>, ptr @a, align 1644// CHECK-NEXT:    [[TMP1:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[TMP0]])45// CHECK-NEXT:    [[RSQRT:%.*]] = fdiv fast <4 x float> splat (float 1.000000e+00), [[TMP1]]46// CHECK-NEXT:    [[TMP2:%.*]] = load <4 x float>, ptr @b, align 1647// CHECK-NEXT:    [[ADD:%.*]] = fadd <4 x float> [[RSQRT]], [[TMP2]]48// CHECK-NEXT:    ret <4 x float> [[ADD]]49//50vector float test_flags_rsqrtf() {51  return __builtin_ppc_rsqrtf(a) + b;52}53 54// CHECK-LABEL: @test_flags_rsqrtd(55// CHECK:    [[TMP0:%.*]] = load <2 x double>, ptr @d, align 1656// CHECK-NEXT:    [[TMP1:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[TMP0]])57// CHECK-NEXT:    [[RSQRT:%.*]] = fdiv fast <2 x double> splat (double 1.000000e+00), [[TMP1]]58// CHECK-NEXT:    [[TMP2:%.*]] = load <2 x double>, ptr @e, align 1659// CHECK-NEXT:    [[ADD:%.*]] = fadd <2 x double> [[RSQRT]], [[TMP2]]60// CHECK-NEXT:    ret <2 x double> [[ADD]]61//62vector double test_flags_rsqrtd() {63  return __builtin_ppc_rsqrtd(d) + e;64}65