99#ifndef  LLVM_LIBC_SRC_MATH_GPU_AMDGPU_PLATFORM_H
1010#define  LLVM_LIBC_SRC_MATH_GPU_AMDGPU_PLATFORM_H 
1111
12+ #include  " src/__support/macros/attributes.h" 
13+ 
1214#include  < stdint.h> 
1315
1416namespace  LIBC_NAMESPACE  {
@@ -19,96 +21,106 @@ namespace LIBC_NAMESPACE {
1921extern  " C"   {
2022
2123//  Disable unsafe math optimizations in the implementation.
22- extern  const  uint8_t  __oclc_unsafe_math_opt = 0 ;
24+ extern  const  LIBC_INLINE_VAR  uint8_t  __oclc_unsafe_math_opt = 0 ;
2325
2426//  Disable denormalization at zero optimizations in the implementation.
25- extern  const  uint8_t  __oclc_daz_opt = 0 ;
27+ extern  const  LIBC_INLINE_VAR  uint8_t  __oclc_daz_opt = 0 ;
2628
2729//  Disable rounding optimizations for 32-bit square roots.
28- extern  const  uint8_t  __oclc_correctly_rounded_sqrt32 = 1 ;
30+ extern  const  LIBC_INLINE_VAR  uint8_t  __oclc_correctly_rounded_sqrt32 = 1 ;
2931
3032//  Disable finite math optimizations.
31- extern  const  uint8_t  __oclc_finite_only_opt = 0 ;
33+ extern  const  LIBC_INLINE_VAR  uint8_t  __oclc_finite_only_opt = 0 ;
3234
3335#if  defined(__gfx700__)
34- extern  const  uint32_t  __oclc_ISA_version = 7000 ;
36+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 7000 ;
3537#elif  defined(__gfx701__)
36- extern  const  uint32_t  __oclc_ISA_version = 7001 ;
38+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 7001 ;
3739#elif  defined(__gfx702__)
38- extern  const  uint32_t  __oclc_ISA_version = 7002 ;
40+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 7002 ;
3941#elif  defined(__gfx703__)
40- extern  const  uint32_t  __oclc_ISA_version = 7003 ;
42+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 7003 ;
4143#elif  defined(__gfx704__)
42- extern  const  uint32_t  __oclc_ISA_version = 7004 ;
44+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 7004 ;
4345#elif  defined(__gfx705__)
44- extern  const  uint32_t  __oclc_ISA_version = 7005 ;
46+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 7005 ;
4547#elif  defined(__gfx801__)
46- extern  const  uint32_t  __oclc_ISA_version = 8001 ;
48+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 8001 ;
4749#elif  defined(__gfx802__)
48- extern  const  uint32_t  __oclc_ISA_version = 8002 ;
50+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 8002 ;
4951#elif  defined(__gfx803__)
50- extern  const  uint32_t  __oclc_ISA_version = 8003 ;
52+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 8003 ;
5153#elif  defined(__gfx805__)
52- extern  const  uint32_t  __oclc_ISA_version = 8005 ;
54+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 8005 ;
5355#elif  defined(__gfx810__)
54- extern  const  uint32_t  __oclc_ISA_version = 8100 ;
56+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 8100 ;
5557#elif  defined(__gfx900__)
56- extern  const  uint32_t  __oclc_ISA_version = 9000 ;
58+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9000 ;
5759#elif  defined(__gfx902__)
58- extern  const  uint32_t  __oclc_ISA_version = 9002 ;
60+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9002 ;
5961#elif  defined(__gfx904__)
60- extern  const  uint32_t  __oclc_ISA_version = 9004 ;
62+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9004 ;
6163#elif  defined(__gfx906__)
62- extern  const  uint32_t  __oclc_ISA_version = 9006 ;
64+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9006 ;
6365#elif  defined(__gfx908__)
64- extern  const  uint32_t  __oclc_ISA_version = 9008 ;
66+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9008 ;
6567#elif  defined(__gfx909__)
66- extern  const  uint32_t  __oclc_ISA_version = 9009 ;
68+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9009 ;
6769#elif  defined(__gfx90a__)
68- extern  const  uint32_t  __oclc_ISA_version = 9010 ;
70+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9010 ;
6971#elif  defined(__gfx90c__)
70- extern  const  uint32_t  __oclc_ISA_version = 9012 ;
72+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9012 ;
7173#elif  defined(__gfx940__)
72- extern  const  uint32_t  __oclc_ISA_version = 9400 ;
74+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 9400 ;
7375#elif  defined(__gfx1010__)
74- extern  const  uint32_t  __oclc_ISA_version = 10100 ;
76+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10100 ;
7577#elif  defined(__gfx1011__)
76- extern  const  uint32_t  __oclc_ISA_version = 10101 ;
78+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10101 ;
7779#elif  defined(__gfx1012__)
78- extern  const  uint32_t  __oclc_ISA_version = 10102 ;
80+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10102 ;
7981#elif  defined(__gfx1013__)
80- extern  const  uint32_t  __oclc_ISA_version = 10103 ;
82+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10103 ;
8183#elif  defined(__gfx1030__)
82- extern  const  uint32_t  __oclc_ISA_version = 10300 ;
84+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10300 ;
8385#elif  defined(__gfx1031__)
84- extern  const  uint32_t  __oclc_ISA_version = 10301 ;
86+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10301 ;
8587#elif  defined(__gfx1032__)
86- extern  const  uint32_t  __oclc_ISA_version = 10302 ;
88+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10302 ;
8789#elif  defined(__gfx1033__)
88- extern  const  uint32_t  __oclc_ISA_version = 10303 ;
90+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10303 ;
8991#elif  defined(__gfx1034__)
90- extern  const  uint32_t  __oclc_ISA_version = 10304 ;
92+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10304 ;
9193#elif  defined(__gfx1035__)
92- extern  const  uint32_t  __oclc_ISA_version = 10305 ;
94+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10305 ;
9395#elif  defined(__gfx1036__)
94- extern  const  uint32_t  __oclc_ISA_version = 10306 ;
96+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 10306 ;
9597#elif  defined(__gfx1100__)
96- extern  const  uint32_t  __oclc_ISA_version = 11000 ;
98+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 11000 ;
9799#elif  defined(__gfx1101__)
98- extern  const  uint32_t  __oclc_ISA_version = 11001 ;
100+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 11001 ;
99101#elif  defined(__gfx1102__)
100- extern  const  uint32_t  __oclc_ISA_version = 11002 ;
102+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 11002 ;
101103#elif  defined(__gfx1103__)
102- extern  const  uint32_t  __oclc_ISA_version = 11003 ;
104+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 11003 ;
103105#elif  defined(__gfx1150__)
104- extern  const  uint32_t  __oclc_ISA_version = 11500 ;
106+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 11500 ;
105107#elif  defined(__gfx1151__)
106- extern  const  uint32_t  __oclc_ISA_version = 11501 ;
108+ extern  const  LIBC_INLINE_VAR  uint32_t  __oclc_ISA_version = 11501 ;
107109#else 
108110#error  "Unknown AMDGPU architecture"
109111#endif 
110112}
111113
114+ //  These aliases cause clang to emit the control constants with ODR linkage.
115+ //  This allows us to link against the symbols without preventing them from being
116+ //  optimized out or causing symbol collisions.
117+ [[gnu::alias(" __oclc_unsafe_math_opt"  )]] const  uint8_t  __oclc_unsafe_math_opt__;
118+ [[gnu::alias(" __oclc_daz_opt"  )]] const  uint8_t  __oclc_daz_opt__;
119+ [[gnu::alias(" __oclc_correctly_rounded_sqrt32"  )]] const  uint8_t 
120+     __oclc_correctly_rounded_sqrt32__;
121+ [[gnu::alias(" __oclc_finite_only_opt"  )]] const  uint8_t  __oclc_finite_only_opt__;
122+ [[gnu::alias(" __oclc_ISA_version"  )]] const  uint32_t  __oclc_ISA_version__;
123+ 
112124} //  namespace LIBC_NAMESPACE
113125
114126#endif //  LLVM_LIBC_SRC_MATH_GPU_AMDGPU_PLATFORM_H
0 commit comments