diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-03-31 21:29:57 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-03-31 21:29:57 +0000 |
commit | ae272d718e882b18258a587ce111a4150d761b5e (patch) | |
tree | 79ee814eebc9b9e6cc4f4b9040b02bd838774757 /llvm/include | |
parent | 13f6da1d2c20ebb0c4f6600b4ea23d428ef20cc5 (diff) | |
download | bcm5719-llvm-ae272d718e882b18258a587ce111a4150d761b5e.tar.gz bcm5719-llvm-ae272d718e882b18258a587ce111a4150d761b5e.zip |
[NVPTX] Infer __nvvm_reflect as nounwind, readnone
This patch simply mirrors the attributes we give to @llvm.nvvm.reflect
to the __nvvm_reflect libdevice call. This shaves about 30% of the code
in libdevice away because of CSE opportunities. It's also helps us
figure out that libdevice implementations of transcendental functions
don't have side-effects.
llvm-svn: 265060
Diffstat (limited to 'llvm/include')
-rw-r--r-- | llvm/include/llvm/Analysis/TargetLibraryInfo.def | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/include/llvm/Analysis/TargetLibraryInfo.def b/llvm/include/llvm/Analysis/TargetLibraryInfo.def index 7798e3c8824..b2a593d67dc 100644 --- a/llvm/include/llvm/Analysis/TargetLibraryInfo.def +++ b/llvm/include/llvm/Analysis/TargetLibraryInfo.def @@ -195,6 +195,11 @@ TLI_DEFINE_STRING_INTERNAL("__memmove_chk") /// void *__memset_chk(void *s, char v, size_t n, size_t s1size); TLI_DEFINE_ENUM_INTERNAL(memset_chk) TLI_DEFINE_STRING_INTERNAL("__memset_chk") + +// int __nvvm_reflect(const char *) +TLI_DEFINE_ENUM_INTERNAL(nvvm_reflect) +TLI_DEFINE_STRING_INTERNAL("__nvvm_reflect") + /// double __sincospi_stret(double x); TLI_DEFINE_ENUM_INTERNAL(sincospi_stret) TLI_DEFINE_STRING_INTERNAL("__sincospi_stret") |