1c80e831b7
* compiler -march= parameter is changed from native to corei7 so code is always genereted with instructions which are available on the Nehalem microarchitecture (up to SSE4.2) * compiler -mtune= parameter is added so code is optimized for corei7-avx which equals to Sandy Bridge microarchitecture * set of macros is added which allows run-time detection of available cpu instructions (e.g. clib_cpu_supports_avx()) * set of macros is added which allows us to clone graph node funcitons where cloned function is optmized for different microarchitecture Those macros are using following attributes: __attribute__((flatten)) __attribute__((target("arch=core-avx2))) I.e. If applied to foo_node_fn() macro will generate cloned functions foo_node_fn_avx2() and foo_node_fn_avx512() (future) It will also generate function void * foo_node_fn_multiarch_select() which detects available instruction set and returns pointer to the best matching function clone. Change-Id: I2dce0ac92a5ede95fcb56f47f3d1f3c4c040bac0 Signed-off-by: Damjan Marion <damarion@cisco.com>
39 lines
1.5 KiB
Makefile
39 lines
1.5 KiB
Makefile
# Copyright (c) 2016 Cisco and/or its affiliates.
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at:
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# vector packet processor
|
|
vpp_lite_arch = native
|
|
vpp_lite_march = corei7 # Nehalem Instruction set
|
|
vpp_lite_mtune = corei7-avx # Optimize for Sandy Bridge
|
|
vpp_lite_native_tools = vppapigen
|
|
|
|
vpp_lite_uses_dpdk = no
|
|
|
|
vpp_lite_root_packages = vpp vlib vlib-api vnet svm vpp-api-test \
|
|
vpp-api gmod
|
|
|
|
vlib_configure_args_vpp_lite = --with-pre-data=128
|
|
|
|
vnet_configure_args_vpp_lite = --without-vcgn
|
|
vpp_configure_args_vpp_lite = --without-vcgn
|
|
|
|
vpp_lite_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \
|
|
-fstack-protector-all -fPIC -Werror
|
|
vpp_lite_debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \
|
|
-fstack-protector-all -fPIC -Werror
|
|
|
|
vpp_lite_TAG_CFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
|
|
-fstack-protector -fPIC -Werror
|
|
vpp_lite_TAG_LDFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
|
|
-fstack-protector -fPIC -Werror
|