blob: 2f63446cd31f97594e7b1ee6e028ebb05e072579 [file] [log] [blame]
Elliott Hughes7c02d942014-09-16 19:06:31 -07001# 32-bit x86.
Ying Wangf25d6772014-01-23 15:17:50 -08002
Elliott Hughes7c02d942014-09-16 19:06:31 -07003#
Dan Willemsen268a6732015-10-15 14:49:45 -07004# Generic x86 optimizations, may be overriden by CPU variants.
Elliott Hughes7c02d942014-09-16 19:06:31 -07005#
6
Dan Willemsen268a6732015-10-15 14:49:45 -07007libc_bionic_src_files_x86 += \
8 arch-x86/atom/string/sse2-memchr-atom.S \
9 arch-x86/atom/string/sse2-memrchr-atom.S \
10 arch-x86/atom/string/sse2-strchr-atom.S \
11 arch-x86/atom/string/sse2-strnlen-atom.S \
12 arch-x86/atom/string/sse2-strrchr-atom.S \
13 arch-x86/atom/string/sse2-wcschr-atom.S \
14 arch-x86/atom/string/sse2-wcsrchr-atom.S \
15 arch-x86/atom/string/sse2-wcslen-atom.S \
16 arch-x86/atom/string/sse2-wcscmp-atom.S \
Dan Willemsen268a6732015-10-15 14:49:45 -070017 arch-x86/silvermont/string/sse2-memcpy-slm.S \
18 arch-x86/silvermont/string/sse2-memmove-slm.S \
19 arch-x86/silvermont/string/sse2-memset-slm.S \
20 arch-x86/silvermont/string/sse2-stpcpy-slm.S \
21 arch-x86/silvermont/string/sse2-stpncpy-slm.S \
22 arch-x86/silvermont/string/sse2-strcpy-slm.S \
23 arch-x86/silvermont/string/sse2-strlen-slm.S \
24 arch-x86/silvermont/string/sse2-strncpy-slm.S
Elliott Hughes7c02d942014-09-16 19:06:31 -070025
Dan Willemsen268a6732015-10-15 14:49:45 -070026libc_bionic_src_files_x86 += \
27 arch-x86/generic/string/memcmp.S \
28 arch-x86/generic/string/strcmp.S \
29 arch-x86/generic/string/strncmp.S \
30 arch-x86/generic/string/strcat.S
31
32ifeq ($(ARCH_X86_HAVE_SSSE3),true)
33libc_bionic_src_files_x86 += \
34 arch-x86/atom/string/ssse3-strncat-atom.S \
35 arch-x86/atom/string/ssse3-strlcat-atom.S \
36 arch-x86/atom/string/ssse3-strlcpy-atom.S \
37 arch-x86/atom/string/ssse3-strcmp-atom.S \
38 arch-x86/atom/string/ssse3-strncmp-atom.S \
39 arch-x86/atom/string/ssse3-strcat-atom.S \
40 arch-x86/atom/string/ssse3-wcscat-atom.S \
41 arch-x86/atom/string/ssse3-wcscpy-atom.S
42libc_bionic_src_files_exclude_x86 += \
43 arch-x86/generic/string/strcmp.S \
44 arch-x86/generic/string/strncmp.S \
45 arch-x86/generic/string/strcat.S
46endif
47
48ifeq ($(ARCH_X86_HAVE_SSE4),true)
49libc_bionic_src_files_x86 += \
50 arch-x86/silvermont/string/sse4-memcmp-slm.S \
51 arch-x86/silvermont/string/sse4-wmemcmp-slm.S
52libc_bionic_src_files_exclude_x86 += \
53 arch-x86/generic/string/memcmp.S
54endif
55
56#
57# Remove default implementations that we have optimized versions of.
58#
59
60libc_freebsd_src_files_exclude_x86 += \
61 upstream-freebsd/lib/libc/string/wcschr.c \
62 upstream-freebsd/lib/libc/string/wcscmp.c \
63 upstream-freebsd/lib/libc/string/wcslen.c \
64 upstream-freebsd/lib/libc/string/wcsrchr.c \
65
66ifeq ($(ARCH_X86_HAVE_SSSE3),true)
67libc_freebsd_src_files_exclude_x86 += \
68 upstream-freebsd/lib/libc/string/wcscat.c \
69 upstream-freebsd/lib/libc/string/wcscpy.c
70endif
71
72ifeq ($(ARCH_X86_HAVE_SSE4),true)
73libc_freebsd_src_files_exclude_x86 += \
74 upstream-freebsd/lib/libc/string/wmemcmp.c
75endif
76
77libc_openbsd_src_files_exclude_x86 += \
78 upstream-openbsd/lib/libc/string/memchr.c \
79 upstream-openbsd/lib/libc/string/memmove.c \
80 upstream-openbsd/lib/libc/string/memrchr.c \
81 upstream-openbsd/lib/libc/string/stpcpy.c \
82 upstream-openbsd/lib/libc/string/stpncpy.c \
83 upstream-openbsd/lib/libc/string/strcat.c \
84 upstream-openbsd/lib/libc/string/strcpy.c \
85 upstream-openbsd/lib/libc/string/strncmp.c \
86 upstream-openbsd/lib/libc/string/strncpy.c \
87
88ifeq ($(ARCH_X86_HAVE_SSSE3),true)
89libc_openbsd_src_files_exclude_x86 += \
90 upstream-openbsd/lib/libc/string/strlcat.c \
91 upstream-openbsd/lib/libc/string/strlcpy.c \
92 upstream-openbsd/lib/libc/string/strncat.c
93endif
94
95libc_bionic_src_files_exclude_x86 += \
96 bionic/strchr.cpp \
97 bionic/strnlen.c \
98 bionic/strrchr.cpp \
Ying Wangf25d6772014-01-23 15:17:50 -080099
Elliott Hughes7c02d942014-09-16 19:06:31 -0700100#
101# Inherently architecture-specific functions.
102#
Ying Wangf25d6772014-01-23 15:17:50 -0800103
Ying Wangf25d6772014-01-23 15:17:50 -0800104libc_bionic_src_files_x86 += \
Elliott Hughes36d61882013-11-19 13:31:58 -0800105 arch-x86/bionic/__bionic_clone.S \
Christopher Ferris04954a42013-02-26 01:30:00 -0800106 arch-x86/bionic/_exit_with_stack_teardown.S \
Christopher Ferris6869d262014-10-06 15:11:28 -0700107 arch-x86/bionic/libgcc_compat.c \
Elliott Hughes36f451a2014-09-10 15:20:40 -0700108 arch-x86/bionic/__restore.S \
Christopher Ferris04954a42013-02-26 01:30:00 -0800109 arch-x86/bionic/setjmp.S \
Christopher Ferris04954a42013-02-26 01:30:00 -0800110 arch-x86/bionic/syscall.S \
Dan Albert6a918872014-08-05 20:53:31 +0000111 arch-x86/bionic/vfork.S \
Liubov Dmitrieva0a490662012-01-17 12:55:46 +0400112
Varvara Rainchik5a922842014-04-24 15:41:20 +0400113## ARCH variant specific source files
114arch_variant_mk := $(LOCAL_PATH)/arch-x86/$(TARGET_ARCH_VARIANT)/$(TARGET_ARCH_VARIANT).mk
115ifeq ($(wildcard $(arch_variant_mk)),)
Dan Willemsen268a6732015-10-15 14:49:45 -0700116 arch_variant_mk :=
Liubov Dmitrieva0a490662012-01-17 12:55:46 +0400117endif
Dan Willemsen268a6732015-10-15 14:49:45 -0700118ifneq ($(arch_variant_mk),)
Varvara Rainchik5a922842014-04-24 15:41:20 +0400119include $(arch_variant_mk)
120libc_common_additional_dependencies += $(arch_variant_mk)
Liubov Dmitrieva0a490662012-01-17 12:55:46 +0400121
Varvara Rainchik5a922842014-04-24 15:41:20 +0400122arch_variant_mk :=
Dan Willemsen268a6732015-10-15 14:49:45 -0700123endif
Ying Wangf25d6772014-01-23 15:17:50 -0800124
Ying Wangf25d6772014-01-23 15:17:50 -0800125libc_crt_target_cflags_x86 := \
126 -m32 \
127 -I$(LOCAL_PATH)/arch-x86/include
128
129libc_crt_target_ldflags_x86 := -melf_i386
130
131libc_crt_target_crtbegin_file_x86 := \
132 $(LOCAL_PATH)/arch-common/bionic/crtbegin.c
133
134libc_crt_target_crtbegin_so_file_x86 := \
135 $(LOCAL_PATH)/arch-common/bionic/crtbegin_so.c
136
137libc_crt_target_so_cflags_x86 := \
138 -fPIC