brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.9 KiB · 00376fb Raw
293 lines · c
1// REQUIRES: powerpc-registered-target2// RUN: %clang_cc1 -triple powerpc64le-unknown-linux-gnu \3// RUN:   -emit-llvm %s -o - -target-cpu pwr8 | FileCheck %s4// RUN: %clang_cc1 -triple powerpc64-unknown-aix \5// RUN:   -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s6// RUN: %clang_cc1 -triple powerpc-unknown-aix \7// RUN:   -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s8 9extern double a;10extern double b;11extern double c;12extern float d;13extern float e;14extern float f;15 16// CHECK-LABEL: @test_fric(17// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 818// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.rint.f64(double [[TMP0]])19// CHECK-NEXT:    ret double [[TMP1]]20//21double test_fric() {22  return __fric(a);23}24 25// CHECK-LABEL: @test_frim(26// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 827// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.floor.f64(double [[TMP0]])28// CHECK-NEXT:    ret double [[TMP1]]29//30double test_frim() {31  return __frim(a);32}33 34// CHECK-LABEL: @test_frims(35// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 436// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.floor.f32(float [[TMP0]])37// CHECK-NEXT:    ret float [[TMP1]]38//39float test_frims() {40  return __frims(d);41}42 43// CHECK-LABEL: @test_frin(44// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 845// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.round.f64(double [[TMP0]])46// CHECK-NEXT:    ret double [[TMP1]]47//48double test_frin() {49  return __frin(a);50}51 52// CHECK-LABEL: @test_frins(53// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 454// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.round.f32(float [[TMP0]])55// CHECK-NEXT:    ret float [[TMP1]]56//57float test_frins() {58  return __frins(d);59}60 61// CHECK-LABEL: @test_frip(62// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 863// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.ceil.f64(double [[TMP0]])64// CHECK-NEXT:    ret double [[TMP1]]65//66double test_frip() {67  return __frip(a);68}69 70// CHECK-LABEL: @test_frips(71// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 472// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.ceil.f32(float [[TMP0]])73// CHECK-NEXT:    ret float [[TMP1]]74//75float test_frips() {76  return __frips(d);77}78 79// CHECK-LABEL: @test_friz(80// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 881// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.trunc.f64(double [[TMP0]])82// CHECK-NEXT:    ret double [[TMP1]]83//84double test_friz() {85  return __friz(a);86}87 88// CHECK-LABEL: @test_frizs(89// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 490// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.trunc.f32(float [[TMP0]])91// CHECK-NEXT:    ret float [[TMP1]]92//93float test_frizs() {94  return __frizs(d);95}96 97// CHECK-LABEL: @test_fsel(98// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 899// CHECK-NEXT:    [[TMP1:%.*]] = load double, ptr @b, align 8100// CHECK-NEXT:    [[TMP2:%.*]] = load double, ptr @c, align 8101// CHECK-NEXT:    [[TMP3:%.*]] = call double @llvm.ppc.fsel(double [[TMP0]], double [[TMP1]], double [[TMP2]])102// CHECK-NEXT:    ret double [[TMP3]]103//104double test_fsel() {105  return __fsel(a, b, c);106}107 108// CHECK-LABEL: @test_fsels(109// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4110// CHECK-NEXT:    [[TMP1:%.*]] = load float, ptr @e, align 4111// CHECK-NEXT:    [[TMP2:%.*]] = load float, ptr @f, align 4112// CHECK-NEXT:    [[TMP3:%.*]] = call float @llvm.ppc.fsels(float [[TMP0]], float [[TMP1]], float [[TMP2]])113// CHECK-NEXT:    ret float [[TMP3]]114//115float test_fsels() {116  return __fsels(d, e, f);117}118 119// CHECK-LABEL: @test_frsqrte(120// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8121// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.ppc.frsqrte(double [[TMP0]])122// CHECK-NEXT:    ret double [[TMP1]]123//124double test_frsqrte() {125  return __frsqrte(a);126}127 128// CHECK-LABEL: @test_frsqrtes(129// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4130// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.ppc.frsqrtes(float [[TMP0]])131// CHECK-NEXT:    ret float [[TMP1]]132//133float test_frsqrtes() {134  return __frsqrtes(d);135}136 137// CHECK-LABEL: @test_fsqrt(138// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8139// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.sqrt.f64(double [[TMP0]])140// CHECK-NEXT:    ret double [[TMP1]]141//142double test_fsqrt() {143  return __fsqrt(a);144}145 146// CHECK-LABEL: @test_fsqrts(147// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4148// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.sqrt.f32(float [[TMP0]])149// CHECK-NEXT:    ret float [[TMP1]]150//151float test_fsqrts() {152  return __fsqrts(d);153}154 155// CHECK-LABEL: @test_builtin_ppc_fric(156// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8157// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.rint.f64(double [[TMP0]])158// CHECK-NEXT:    ret double [[TMP1]]159//160double test_builtin_ppc_fric() {161  return __builtin_ppc_fric(a);162}163 164// CHECK-LABEL: @test_builtin_ppc_frim(165// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8166// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.floor.f64(double [[TMP0]])167// CHECK-NEXT:    ret double [[TMP1]]168//169double test_builtin_ppc_frim() {170  return __builtin_ppc_frim(a);171}172 173// CHECK-LABEL: @test_builtin_ppc_frims(174// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4175// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.floor.f32(float [[TMP0]])176// CHECK-NEXT:    ret float [[TMP1]]177//178float test_builtin_ppc_frims() {179  return __builtin_ppc_frims(d);180}181 182// CHECK-LABEL: @test_builtin_ppc_frin(183// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8184// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.round.f64(double [[TMP0]])185// CHECK-NEXT:    ret double [[TMP1]]186//187double test_builtin_ppc_frin() {188  return __builtin_ppc_frin(a);189}190 191// CHECK-LABEL: @test_builtin_ppc_frins(192// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4193// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.round.f32(float [[TMP0]])194// CHECK-NEXT:    ret float [[TMP1]]195//196float test_builtin_ppc_frins() {197  return __builtin_ppc_frins(d);198}199 200// CHECK-LABEL: @test_builtin_ppc_frip(201// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8202// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.ceil.f64(double [[TMP0]])203// CHECK-NEXT:    ret double [[TMP1]]204//205double test_builtin_ppc_frip() {206  return __builtin_ppc_frip(a);207}208 209// CHECK-LABEL: @test_builtin_ppc_frips(210// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4211// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.ceil.f32(float [[TMP0]])212// CHECK-NEXT:    ret float [[TMP1]]213//214float test_builtin_ppc_frips() {215  return __builtin_ppc_frips(d);216}217 218// CHECK-LABEL: @test_builtin_ppc_friz(219// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8220// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.trunc.f64(double [[TMP0]])221// CHECK-NEXT:    ret double [[TMP1]]222//223double test_builtin_ppc_friz() {224  return __builtin_ppc_friz(a);225}226 227// CHECK-LABEL: @test_builtin_ppc_frizs(228// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4229// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.trunc.f32(float [[TMP0]])230// CHECK-NEXT:    ret float [[TMP1]]231//232float test_builtin_ppc_frizs() {233  return __builtin_ppc_frizs(d);234}235 236// CHECK-LABEL: @test_builtin_ppc_fsel(237// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8238// CHECK-NEXT:    [[TMP1:%.*]] = load double, ptr @b, align 8239// CHECK-NEXT:    [[TMP2:%.*]] = load double, ptr @c, align 8240// CHECK-NEXT:    [[TMP3:%.*]] = call double @llvm.ppc.fsel(double [[TMP0]], double [[TMP1]], double [[TMP2]])241// CHECK-NEXT:    ret double [[TMP3]]242//243double test_builtin_ppc_fsel() {244  return __builtin_ppc_fsel(a, b, c);245}246 247// CHECK-LABEL: @test_builtin_ppc_fsels(248// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4249// CHECK-NEXT:    [[TMP1:%.*]] = load float, ptr @e, align 4250// CHECK-NEXT:    [[TMP2:%.*]] = load float, ptr @f, align 4251// CHECK-NEXT:    [[TMP3:%.*]] = call float @llvm.ppc.fsels(float [[TMP0]], float [[TMP1]], float [[TMP2]])252// CHECK-NEXT:    ret float [[TMP3]]253//254float test_builtin_ppc_fsels() {255  return __builtin_ppc_fsels(d, e, f);256}257 258// CHECK-LABEL: @test_builtin_ppc_frsqrte(259// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8260// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.ppc.frsqrte(double [[TMP0]])261// CHECK-NEXT:    ret double [[TMP1]]262//263double test_builtin_ppc_frsqrte() {264  return __builtin_ppc_frsqrte(a);265}266 267// CHECK-LABEL: @test_builtin_ppc_frsqrtes(268// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4269// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.ppc.frsqrtes(float [[TMP0]])270// CHECK-NEXT:    ret float [[TMP1]]271//272float test_builtin_ppc_frsqrtes() {273  return __builtin_ppc_frsqrtes(d);274}275 276// CHECK-LABEL: @test_builtin_ppc_fsqrt(277// CHECK:    [[TMP0:%.*]] = load double, ptr @a, align 8278// CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.sqrt.f64(double [[TMP0]])279// CHECK-NEXT:    ret double [[TMP1]]280//281double test_builtin_ppc_fsqrt() {282  return __builtin_ppc_fsqrt(a);283}284 285// CHECK-LABEL: @test_builtin_ppc_fsqrts(286// CHECK:    [[TMP0:%.*]] = load float, ptr @d, align 4287// CHECK-NEXT:    [[TMP1:%.*]] = call float @llvm.sqrt.f32(float [[TMP0]])288// CHECK-NEXT:    ret float [[TMP1]]289//290float test_builtin_ppc_fsqrts() {291  return __builtin_ppc_fsqrts(d);292}293