blob: 1d717aa7997286af8067538e69bd2cec0303c799 [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 \
17 arch-x86/silvermont/string/sse2-bcopy-slm.S \
18 arch-x86/silvermont/string/sse2-bzero-slm.S \
19 arch-x86/silvermont/string/sse2-memcpy-slm.S \
20 arch-x86/silvermont/string/sse2-memmove-slm.S \
21 arch-x86/silvermont/string/sse2-memset-slm.S \
22 arch-x86/silvermont/string/sse2-stpcpy-slm.S \
23 arch-x86/silvermont/string/sse2-stpncpy-slm.S \
24 arch-x86/silvermont/string/sse2-strcpy-slm.S \
25 arch-x86/silvermont/string/sse2-strlen-slm.S \
26 arch-x86/silvermont/string/sse2-strncpy-slm.S
Elliott Hughes7c02d942014-09-16 19:06:31 -070027
Dan Willemsen268a6732015-10-15 14:49:45 -070028libc_bionic_src_files_x86 += \
29 arch-x86/generic/string/memcmp.S \
30 arch-x86/generic/string/strcmp.S \
31 arch-x86/generic/string/strncmp.S \
32 arch-x86/generic/string/strcat.S
33
34ifeq ($(ARCH_X86_HAVE_SSSE3),true)
35libc_bionic_src_files_x86 += \
36 arch-x86/atom/string/ssse3-strncat-atom.S \
37 arch-x86/atom/string/ssse3-strlcat-atom.S \
38 arch-x86/atom/string/ssse3-strlcpy-atom.S \
39 arch-x86/atom/string/ssse3-strcmp-atom.S \
40 arch-x86/atom/string/ssse3-strncmp-atom.S \
41 arch-x86/atom/string/ssse3-strcat-atom.S \
42 arch-x86/atom/string/ssse3-wcscat-atom.S \
43 arch-x86/atom/string/ssse3-wcscpy-atom.S
44libc_bionic_src_files_exclude_x86 += \
45 arch-x86/generic/string/strcmp.S \
46 arch-x86/generic/string/strncmp.S \
47 arch-x86/generic/string/strcat.S
48endif
49
50ifeq ($(ARCH_X86_HAVE_SSE4),true)
51libc_bionic_src_files_x86 += \
52 arch-x86/silvermont/string/sse4-memcmp-slm.S \
53 arch-x86/silvermont/string/sse4-wmemcmp-slm.S
54libc_bionic_src_files_exclude_x86 += \
55 arch-x86/generic/string/memcmp.S
56endif
57
58#
59# Remove default implementations that we have optimized versions of.
60#
61
62libc_freebsd_src_files_exclude_x86 += \
63 upstream-freebsd/lib/libc/string/wcschr.c \
64 upstream-freebsd/lib/libc/string/wcscmp.c \
65 upstream-freebsd/lib/libc/string/wcslen.c \
66 upstream-freebsd/lib/libc/string/wcsrchr.c \
67
68ifeq ($(ARCH_X86_HAVE_SSSE3),true)
69libc_freebsd_src_files_exclude_x86 += \
70 upstream-freebsd/lib/libc/string/wcscat.c \
71 upstream-freebsd/lib/libc/string/wcscpy.c
72endif
73
74ifeq ($(ARCH_X86_HAVE_SSE4),true)
75libc_freebsd_src_files_exclude_x86 += \
76 upstream-freebsd/lib/libc/string/wmemcmp.c
77endif
78
79libc_openbsd_src_files_exclude_x86 += \
80 upstream-openbsd/lib/libc/string/memchr.c \
81 upstream-openbsd/lib/libc/string/memmove.c \
82 upstream-openbsd/lib/libc/string/memrchr.c \
83 upstream-openbsd/lib/libc/string/stpcpy.c \
84 upstream-openbsd/lib/libc/string/stpncpy.c \
85 upstream-openbsd/lib/libc/string/strcat.c \
86 upstream-openbsd/lib/libc/string/strcpy.c \
87 upstream-openbsd/lib/libc/string/strncmp.c \
88 upstream-openbsd/lib/libc/string/strncpy.c \
89
90ifeq ($(ARCH_X86_HAVE_SSSE3),true)
91libc_openbsd_src_files_exclude_x86 += \
92 upstream-openbsd/lib/libc/string/strlcat.c \
93 upstream-openbsd/lib/libc/string/strlcpy.c \
94 upstream-openbsd/lib/libc/string/strncat.c
95endif
96
97libc_bionic_src_files_exclude_x86 += \
98 bionic/strchr.cpp \
99 bionic/strnlen.c \
100 bionic/strrchr.cpp \
Ying Wangf25d6772014-01-23 15:17:50 -0800101
Elliott Hughes7c02d942014-09-16 19:06:31 -0700102#
103# Inherently architecture-specific functions.
104#
Ying Wangf25d6772014-01-23 15:17:50 -0800105
Ying Wangf25d6772014-01-23 15:17:50 -0800106libc_bionic_src_files_x86 += \
Elliott Hughes36d61882013-11-19 13:31:58 -0800107 arch-x86/bionic/__bionic_clone.S \
Christopher Ferris04954a42013-02-26 01:30:00 -0800108 arch-x86/bionic/_exit_with_stack_teardown.S \
Christopher Ferris6869d262014-10-06 15:11:28 -0700109 arch-x86/bionic/libgcc_compat.c \
Elliott Hughes36f451a2014-09-10 15:20:40 -0700110 arch-x86/bionic/__restore.S \
Christopher Ferris04954a42013-02-26 01:30:00 -0800111 arch-x86/bionic/setjmp.S \
Christopher Ferris04954a42013-02-26 01:30:00 -0800112 arch-x86/bionic/syscall.S \
Dan Albert6a918872014-08-05 20:53:31 +0000113 arch-x86/bionic/vfork.S \
Liubov Dmitrieva0a490662012-01-17 12:55:46 +0400114
Varvara Rainchik5a922842014-04-24 15:41:20 +0400115## ARCH variant specific source files
116arch_variant_mk := $(LOCAL_PATH)/arch-x86/$(TARGET_ARCH_VARIANT)/$(TARGET_ARCH_VARIANT).mk
117ifeq ($(wildcard $(arch_variant_mk)),)
Dan Willemsen268a6732015-10-15 14:49:45 -0700118 arch_variant_mk :=
Liubov Dmitrieva0a490662012-01-17 12:55:46 +0400119endif
Dan Willemsen268a6732015-10-15 14:49:45 -0700120ifneq ($(arch_variant_mk),)
Varvara Rainchik5a922842014-04-24 15:41:20 +0400121include $(arch_variant_mk)
122libc_common_additional_dependencies += $(arch_variant_mk)
Liubov Dmitrieva0a490662012-01-17 12:55:46 +0400123
Varvara Rainchik5a922842014-04-24 15:41:20 +0400124arch_variant_mk :=
Dan Willemsen268a6732015-10-15 14:49:45 -0700125endif
Ying Wangf25d6772014-01-23 15:17:50 -0800126
Ying Wangf25d6772014-01-23 15:17:50 -0800127libc_crt_target_cflags_x86 := \
128 -m32 \
129 -I$(LOCAL_PATH)/arch-x86/include
130
131libc_crt_target_ldflags_x86 := -melf_i386
132
133libc_crt_target_crtbegin_file_x86 := \
134 $(LOCAL_PATH)/arch-common/bionic/crtbegin.c
135
136libc_crt_target_crtbegin_so_file_x86 := \
137 $(LOCAL_PATH)/arch-common/bionic/crtbegin_so.c
138
139libc_crt_target_so_cflags_x86 := \
140 -fPIC