x86_64: Exclude SSE, AVX and FMA4 variants in libm multiarch
[glibc.git] / sysdeps / x86_64 / fpu / multiarch / Makefile
blob6ddd50240ce33d224c1c465058b287ddc93fb2b1
1 ifeq ($(subdir),math)
2 CFLAGS-e_asin-fma.c = -mfma -mavx2
3 CFLAGS-e_atan2-fma.c = -mfma -mavx2
4 CFLAGS-e_exp-fma.c = -mfma -mavx2
5 CFLAGS-e_log-fma.c = -mfma -mavx2
6 CFLAGS-e_log2-fma.c = -mfma -mavx2
7 CFLAGS-e_pow-fma.c = -mfma -mavx2
8 CFLAGS-s_atan-fma.c = -mfma -mavx2
9 CFLAGS-s_expm1-fma.c = -mfma -mavx2
10 CFLAGS-s_log1p-fma.c = -mfma -mavx2
11 CFLAGS-s_sin-fma.c = -mfma -mavx2
12 CFLAGS-s_tan-fma.c = -mfma -mavx2
13 CFLAGS-s_sincos-fma.c = -mfma -mavx2
15 CFLAGS-e_exp2f-fma.c = -mfma -mavx2
16 CFLAGS-e_expf-fma.c = -mfma -mavx2
17 CFLAGS-e_log2f-fma.c = -mfma -mavx2
18 CFLAGS-e_logf-fma.c = -mfma -mavx2
19 CFLAGS-e_powf-fma.c = -mfma -mavx2
20 CFLAGS-s_sinf-fma.c = -mfma -mavx2
21 CFLAGS-s_cosf-fma.c = -mfma -mavx2
22 CFLAGS-s_sincosf-fma.c = -mfma -mavx2
24 # Check if ISA level is 3 or above.
25 ifneq (,$(filter $(have-x86-isa-level),$(x86-isa-level-3-or-above)))
26 libm-sysdep_routines += \
27 s_ceil-avx \
28 s_ceilf-avx \
29 s_floor-avx \
30 s_floorf-avx \
31 s_nearbyint-avx \
32 s_nearbyintf-avx \
33 s_rint-avx \
34 s_rintf-avx \
35 s_roundeven-avx \
36 s_roundevenf-avx \
37 s_trunc-avx \
38 s_truncf-avx \
39 # libm-sysdep_routines
40 else
41 libm-sysdep_routines += \
42 e_asin-fma \
43 e_asin-fma4 \
44 e_atan2-avx \
45 e_atan2-fma \
46 e_atan2-fma4 \
47 e_exp-avx \
48 e_exp-fma \
49 e_exp-fma4 \
50 e_exp2f-fma \
51 e_expf-fma \
52 e_log-avx \
53 e_log-fma \
54 e_log-fma4 \
55 e_log2-fma \
56 e_log2f-fma \
57 e_logf-fma \
58 e_pow-fma \
59 e_pow-fma4 \
60 e_powf-fma \
61 s_atan-avx \
62 s_atan-fma \
63 s_atan-fma4 \
64 s_ceil-sse4_1 \
65 s_ceilf-sse4_1 \
66 s_cosf-fma \
67 s_cosf-sse2 \
68 s_expm1-fma \
69 s_floor-sse4_1 \
70 s_floorf-sse4_1 \
71 s_log1p-fma \
72 s_nearbyint-sse4_1 \
73 s_nearbyintf-sse4_1 \
74 s_rint-sse4_1 \
75 s_rintf-sse4_1 \
76 s_roundeven-sse4_1 \
77 s_roundevenf-sse4_1 \
78 s_sin-avx \
79 s_sin-fma \
80 s_sin-fma4 \
81 s_sincos-avx \
82 s_sincos-fma \
83 s_sincos-fma4 \
84 s_sincosf-fma \
85 s_sincosf-sse2 \
86 s_sinf-fma \
87 s_sinf-sse2 \
88 s_tan-avx \
89 s_tan-fma \
90 s_tan-fma4 \
91 s_trunc-sse4_1 \
92 s_truncf-sse4_1 \
93 # libm-sysdep_routines
94 ifeq ($(have-x86-isa-level),baseline)
95 libm-sysdep_routines += \
96 s_ceil-c \
97 s_ceilf-c \
98 s_floor-c \
99 s_floorf-c \
100 s_nearbyint-c \
101 s_nearbyintf-c \
102 s_rint-c \
103 s_rintf-c \
104 s_roundeven-c \
105 s_roundevenf-c \
106 s_trunc-c \
107 s_truncf-c \
108 # libm-sysdep_routines
109 endif
110 endif
112 CFLAGS-e_asin-fma4.c = -mfma4
113 CFLAGS-e_atan2-fma4.c = -mfma4
114 CFLAGS-e_exp-fma4.c = -mfma4
115 CFLAGS-e_log-fma4.c = -mfma4
116 CFLAGS-e_pow-fma4.c = -mfma4
117 CFLAGS-s_atan-fma4.c = -mfma4
118 CFLAGS-s_sin-fma4.c = -mfma4
119 CFLAGS-s_tan-fma4.c = -mfma4
120 CFLAGS-s_sincos-fma4.c = -mfma4
122 CFLAGS-e_atan2-avx.c = -msse2avx -DSSE2AVX
123 CFLAGS-e_exp-avx.c = -msse2avx -DSSE2AVX
124 CFLAGS-e_log-avx.c = -msse2avx -DSSE2AVX
125 CFLAGS-s_atan-avx.c = -msse2avx -DSSE2AVX
126 CFLAGS-s_sin-avx.c = -msse2avx -DSSE2AVX
127 CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX
128 CFLAGS-s_sincos-avx.c = -msse2avx -DSSE2AVX
129 endif
131 ifeq ($(subdir),mathvec)
132 libmvec-multiarch-double-func-list = \
133 2_core-sse2 \
134 2_core_sse4 \
135 4_core-sse \
136 4_core_avx2 \
137 8_core-avx2 \
138 8_core_avx512
139 libmvec-multiarch-float-func-list = \
140 f4_core-sse2 \
141 f4_core_sse4 \
142 f8_core-sse \
143 f8_core_avx2 \
144 f16_core-avx2 \
145 f16_core_avx512
147 libmvec-sysdep_routines += \
148 $(foreach l,$(libmvec-multiarch-double-func-list), \
149 $(addprefix svml_d_,$(addsuffix $(l),$(libmvec-funcs)))) \
150 $(foreach l,$(libmvec-multiarch-float-func-list), \
151 $(addprefix svml_s_,$(addsuffix $(l),$(libmvec-funcs))))
152 endif