mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-26 14:58:59 -04:00

PowerPC uses the special PPC_FP128 type for long double on Linux, which is composed of two 64-bit doubles. The higher-order double (which contains the overall sign) comes first, and so the __builtin_signbitl implementation requires special handling to extract the sign bit. Fixes PR20691. llvm-svn: 216341
12 lines
427 B
C
12 lines
427 B
C
// RUN: %clang_cc1 %s -emit-llvm -o - -triple powerpc64-linux-gnu | FileCheck %s
|
|
// RUN: %clang_cc1 %s -emit-llvm -o - -triple powerpc64le-linux-gnu | FileCheck %s
|
|
|
|
int test(long double x) { return __builtin_signbitl(x); }
|
|
|
|
// CHECK-LABEL: define signext i32 @test(ppc_fp128 %x)
|
|
// CHECK: bitcast ppc_fp128 %{{.*}} to i128
|
|
// CHECK: trunc i128 %{{.*}} to i64
|
|
// CHECK: icmp slt i64 %{{.*}}, 0
|
|
// CHECK: zext i1 %{{.*}} to i32
|
|
|