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