101 lines · c
1// REQUIRES: powerpc-registered-target2// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu \3// RUN: -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s4// RUN: %clang_cc1 -triple powerpc64-unknown-aix \5// RUN: -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s6 7extern double a;8extern double b;9extern double c;10extern float d;11extern float e;12extern float f;13 14// CHECK-LABEL: @test_swdiv_nochk(15// CHECK: [[TMP0:%.*]] = load double, ptr @a, align 816// CHECK-NEXT: [[TMP1:%.*]] = load double, ptr @b, align 817// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast double [[TMP0]], [[TMP1]]18// CHECK-NEXT: ret double [[SWDIV_NOCHK]]19//20double test_swdiv_nochk() {21 return __swdiv_nochk(a, b);22}23 24// CHECK-LABEL: @test_swdivs_nochk(25// CHECK: [[TMP0:%.*]] = load float, ptr @d, align 426// CHECK-NEXT: [[TMP1:%.*]] = load float, ptr @e, align 427// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast float [[TMP0]], [[TMP1]]28// CHECK-NEXT: ret float [[SWDIV_NOCHK]]29//30float test_swdivs_nochk() {31 return __swdivs_nochk(d, e);32}33 34// CHECK-LABEL: @test_flags_swdiv_nochk(35// CHECK: [[TMP0:%.*]] = load double, ptr @a, align 836// CHECK-NEXT: [[TMP1:%.*]] = load double, ptr @b, align 837// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast double [[TMP0]], [[TMP1]]38// CHECK-NEXT: [[TMP2:%.*]] = load double, ptr @c, align 839// CHECK-NEXT: [[ADD:%.*]] = fadd double [[SWDIV_NOCHK]], [[TMP2]]40// CHECK-NEXT: ret double [[ADD]]41//42double test_flags_swdiv_nochk() {43 return __swdiv_nochk(a, b) + c;44}45 46// CHECK-LABEL: @test_flags_swdivs_nochk(47// CHECK: [[TMP0:%.*]] = load float, ptr @d, align 448// CHECK-NEXT: [[TMP1:%.*]] = load float, ptr @e, align 449// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast float [[TMP0]], [[TMP1]]50// CHECK-NEXT: [[TMP2:%.*]] = load float, ptr @f, align 451// CHECK-NEXT: [[ADD:%.*]] = fadd float [[SWDIV_NOCHK]], [[TMP2]]52// CHECK-NEXT: ret float [[ADD]]53//54float test_flags_swdivs_nochk() {55 return __swdivs_nochk(d, e) + f;56}57 58// CHECK-LABEL: @test_builtin_ppc_swdiv_nochk(59// CHECK: [[TMP0:%.*]] = load double, ptr @a, align 860// CHECK-NEXT: [[TMP1:%.*]] = load double, ptr @b, align 861// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast double [[TMP0]], [[TMP1]]62// CHECK-NEXT: ret double [[SWDIV_NOCHK]]63//64double test_builtin_ppc_swdiv_nochk() {65 return __builtin_ppc_swdiv_nochk(a, b);66}67 68// CHECK-LABEL: @test_builtin_ppc_swdivs_nochk(69// CHECK: [[TMP0:%.*]] = load float, ptr @d, align 470// CHECK-NEXT: [[TMP1:%.*]] = load float, ptr @e, align 471// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast float [[TMP0]], [[TMP1]]72// CHECK-NEXT: ret float [[SWDIV_NOCHK]]73//74float test_builtin_ppc_swdivs_nochk() {75 return __builtin_ppc_swdivs_nochk(d, e);76}77 78// CHECK-LABEL: @test_flags_builtin_ppc_swdiv_nochk(79// CHECK: [[TMP0:%.*]] = load double, ptr @a, align 880// CHECK-NEXT: [[TMP1:%.*]] = load double, ptr @b, align 881// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast double [[TMP0]], [[TMP1]]82// CHECK-NEXT: [[TMP2:%.*]] = load double, ptr @c, align 883// CHECK-NEXT: [[ADD:%.*]] = fadd double [[SWDIV_NOCHK]], [[TMP2]]84// CHECK-NEXT: ret double [[ADD]]85//86double test_flags_builtin_ppc_swdiv_nochk() {87 return __builtin_ppc_swdiv_nochk(a, b) + c;88}89 90// CHECK-LABEL: @test_flags_builtin_ppc_swdivs_nochk(91// CHECK: [[TMP0:%.*]] = load float, ptr @d, align 492// CHECK-NEXT: [[TMP1:%.*]] = load float, ptr @e, align 493// CHECK-NEXT: [[SWDIV_NOCHK:%.*]] = fdiv fast float [[TMP0]], [[TMP1]]94// CHECK-NEXT: [[TMP2:%.*]] = load float, ptr @f, align 495// CHECK-NEXT: [[ADD:%.*]] = fadd float [[SWDIV_NOCHK]], [[TMP2]]96// CHECK-NEXT: ret float [[ADD]]97//98float test_flags_builtin_ppc_swdivs_nochk() {99 return __builtin_ppc_swdivs_nochk(d, e) + f;100}101