forked from OSchip/llvm-project
[Power9] Add __float128 builtins for Round To Odd
Add a number of builtins for __float128 Round To Odd. This is the Clang portion of the builtins work. Differential Revision: https://reviews.llvm.org/D47548 llvm-svn: 336579
This commit is contained in:
parent
83a5fe146e
commit
3dbde8a778
|
@ -423,6 +423,14 @@ BUILTIN(__builtin_vsx_extractuword, "V2ULLiV16UcIi", "")
|
|||
BUILTIN(__builtin_vsx_xxpermdi, "v.", "t")
|
||||
BUILTIN(__builtin_vsx_xxsldwi, "v.", "t")
|
||||
|
||||
// Float 128 built-ins
|
||||
BUILTIN(__builtin_sqrtf128_round_to_odd, "LLdLLd", "")
|
||||
BUILTIN(__builtin_addf128_round_to_odd, "LLdLLdLLd", "")
|
||||
BUILTIN(__builtin_subf128_round_to_odd, "LLdLLdLLd", "")
|
||||
BUILTIN(__builtin_mulf128_round_to_odd, "LLdLLdLLd", "")
|
||||
BUILTIN(__builtin_divf128_round_to_odd, "LLdLLdLLd", "")
|
||||
BUILTIN(__builtin_fmaf128_round_to_odd, "LLdLLdLLdLLd", "")
|
||||
|
||||
// HTM builtins
|
||||
BUILTIN(__builtin_tbegin, "UiUIi", "")
|
||||
BUILTIN(__builtin_tend, "UiUIi", "")
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
// RUN: %clang_cc1 -triple powerpc64le-unknown-linux-gnu -emit-llvm \
|
||||
// RUN: -target-cpu pwr9 -target-feature +float128 -o - %s | FileCheck %s
|
||||
|
||||
__float128 A;
|
||||
__float128 B;
|
||||
__float128 C;
|
||||
|
||||
|
||||
__float128 testSqrtOdd() {
|
||||
return __builtin_sqrtf128_round_to_odd(A);
|
||||
// CHECK: @llvm.ppc.sqrtf128.round.to.odd(fp128
|
||||
// CHECK-NEXT: ret fp128
|
||||
}
|
||||
|
||||
__float128 testFMAOdd() {
|
||||
return __builtin_fmaf128_round_to_odd(A, B, C);
|
||||
// CHECK: @llvm.ppc.fmaf128.round.to.odd(fp128 %{{.+}}, fp128 %{{.+}}, fp128
|
||||
// CHECK-NEXT: ret fp128
|
||||
}
|
||||
|
||||
__float128 testAddOdd() {
|
||||
return __builtin_addf128_round_to_odd(A, B);
|
||||
// CHECK: @llvm.ppc.addf128.round.to.odd(fp128 %{{.+}}, fp128
|
||||
// CHECK-NEXT: ret fp128
|
||||
}
|
||||
|
||||
__float128 testSubOdd() {
|
||||
return __builtin_subf128_round_to_odd(A, B);
|
||||
// CHECK: @llvm.ppc.subf128.round.to.odd(fp128 %{{.+}}, fp128
|
||||
// CHECK-NEXT: ret fp128
|
||||
}
|
||||
|
||||
__float128 testMulOdd() {
|
||||
return __builtin_mulf128_round_to_odd(A, B);
|
||||
// CHECK: @llvm.ppc.mulf128.round.to.odd(fp128 %{{.+}}, fp128
|
||||
// CHECK-NEXT: ret fp128
|
||||
}
|
||||
|
||||
__float128 testDivOdd() {
|
||||
return __builtin_divf128_round_to_odd(A, B);
|
||||
// CHECK: @llvm.ppc.divf128.round.to.odd(fp128 %{{.+}}, fp128
|
||||
// CHECK-NEXT: ret fp128
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue