brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · b7e6cc9 Raw
121 lines · c
1// RUN: %clang_cc1 -triple powerpc64le-linux-gnu -emit-llvm -o - %s \2// RUN:   -mabi=ieeelongdouble | FileCheck --check-prefix=IEEE128 %s3// RUN: %clang_cc1 -triple powerpc64le-linux-gnu -emit-llvm -o - %s \4// RUN:   | FileCheck --check-prefix=PPC128 %s5 6long double x;7char buf[20];8 9// IEEE128-LABEL: define dso_local void @test_printf10// IEEE128: call signext i32 (ptr, ...) @__printfieee12811// PPC128-LABEL: define dso_local void @test_printf12// PPC128: call signext i32 (ptr, ...) @printf13void test_printf(void) {14  __builtin_printf("%.Lf", x);15}16 17// IEEE128-LABEL: define dso_local void @test_vsnprintf18// IEEE128: call signext i32 @__vsnprintfieee12819// PPC128-LABEL: define dso_local void @test_vsnprintf20// PPC128: call signext i32 @vsnprintf21void test_vsnprintf(int n, ...) {22  __builtin_va_list va;23  __builtin_va_start(va, n);24  __builtin_vsnprintf(buf, 20, "%.Lf", va);25  __builtin_va_end(va);26}27 28// IEEE128-LABEL: define dso_local void @test_vsprintf29// IEEE128: call signext i32 @__vsprintfieee12830// PPC128-LABEL: define dso_local void @test_vsprintf31// PPC128: call signext i32 @vsprintf32void test_vsprintf(int n, ...) {33  __builtin_va_list va;34  __builtin_va_start(va, n);35  __builtin_vsprintf(buf, "%.Lf", va);36  __builtin_va_end(va);37}38 39// IEEE128-LABEL: define dso_local void @test_sprintf40// IEEE128: call signext i32 (ptr, ptr, ...) @__sprintfieee12841// PPC128-LABEL: define dso_local void @test_sprintf42// PPC128: call signext i32 (ptr, ptr, ...) @sprintf43void test_sprintf(void) {44  __builtin_sprintf(buf, "%.Lf", x);45}46 47// IEEE128-LABEL: define dso_local void @test_snprintf48// IEEE128: call signext i32 (ptr, i64, ptr, ...) @__snprintfieee12849// PPC128-LABEL: define dso_local void @test_snprintf50// PPC128: call signext i32 (ptr, i64, ptr, ...) @snprintf51void test_snprintf(void) {52  __builtin_snprintf(buf, 20, "%.Lf", x);53}54 55// IEEE128-LABEL: define dso_local void @test_scanf56// IEEE128: call signext i32 (ptr, ...) @__scanfieee12857// PPC128-LABEL: define dso_local void @test_scanf58// PPC128: call signext i32 (ptr, ...) @scanf59void test_scanf(int *x) {60  __builtin_scanf("%d", x);61}62 63// IEEE128-LABEL: define dso_local void @test_sscanf64// IEEE128: call signext i32 (ptr, ptr, ...) @__sscanfieee12865// PPC128-LABEL: define dso_local void @test_sscanf66// PPC128: call signext i32 (ptr, ptr, ...) @sscanf67void test_sscanf(int *x) {68  __builtin_sscanf(buf, "%d", x);69}70 71// IEEE128-LABEL: define dso_local void @test_vprintf72// IEEE128: call signext i32 @__vprintfieee12873// PPC128-LABEL: define dso_local void @test_vprintf74// PPC128: call signext i32 @vprintf75void test_vprintf(const char *fmt, ...) {76  __builtin_va_list args;77  __builtin_va_start(args, fmt);78  __builtin_vprintf(fmt, args);79  __builtin_va_end(args);80}81 82// IEEE128-LABEL: define dso_local void @test_vscanf83// IEEE128: call signext i32 @__vscanfieee12884// PPC128-LABEL: define dso_local void @test_vscanf85// PPC128: call signext i32 @vscanf86void test_vscanf(const char *fmt, ...) {87  __builtin_va_list args;88  __builtin_va_start(args, fmt);89  __builtin_vscanf(fmt, args);90  __builtin_va_end(args);91}92 93// IEEE128-LABEL: define dso_local void @test_vsscanf94// IEEE128: call signext i32 @__vsscanfieee12895// PPC128-LABEL: define dso_local void @test_vsscanf96// PPC128: call signext i32 @vsscanf97void test_vsscanf(const char *fmt, ...) {98  __builtin_va_list args;99  __builtin_va_start(args, fmt);100  __builtin_vsscanf(buf, fmt, args);101  __builtin_va_end(args);102}103 104// IEEE128-LABEL: define dso_local void @test_snprintf_chk105// IEEE128: call signext i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chkieee128106// PPC128-LABEL: define dso_local void @test_snprintf_chk107// PPC128: call signext i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk108void test_snprintf_chk(long double x) {109  __builtin___snprintf_chk(buf, 20, 1, 20, "%.Lf", x);110}111 112// GLIBC has special handling of 'nexttoward'113 114// IEEE128-LABEL: define dso_local fp128 @test_nexttoward115// IEEE128: call fp128 @__nexttowardieee128116// PPC128-LABEL: define dso_local ppc_fp128 @test_nexttoward117// PPC128: call ppc_fp128 @nexttowardl118long double test_nexttoward(long double a, long double b) {119  return __builtin_nexttowardl(a, b);120}121