160fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko#
260fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# Copyright (C) 2016 The Android Open Source Project
360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko#
460fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# Licensed under the Apache License, Version 2.0 (the "License");
560fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# you may not use this file except in compliance with the License.
660fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# You may obtain a copy of the License at
760fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko#
860fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko#      http://www.apache.org/licenses/LICENSE-2.0
960fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko#
1060fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# Unless required by applicable law or agreed to in writing, software
1160fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# distributed under the License is distributed on an "AS IS" BASIS,
1260fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# See the License for the specific language governing permissions and
1460fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# limitations under the License.
1560fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko#
1660fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
1760fd40592419d4254bc40c11c4806619134dc56aVictor Khimenkoifeq ($(ARCH_ARM_HAVE_NEON),true)
1860fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
1960fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_PATH := $(call my-dir)
2060fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
2160fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko# List of validated intrinsics (copy-pasted from Makefile)
2260fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoARM_NEON_TESTS_REFNAMES =                                                \
2360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vld1 vadd vld1_lane vld1_dup vdup vget_high vget_low          \
2460fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vqdmlal_lane vqdmlsl_lane vext vshrn_n vset_lane vget_lane    \
2560fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vqsub vqdmulh_lane vqdmull vqdmlal vqdmlsl vceq vcge vcle     \
2660fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vcgt vclt vbsl vshl vldX vdup_lane vrshrn_n vqdmull_lane      \
2760fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vst1_lane vqshl vqshl_n vqrshrn_n vsub vqadd vabs vqabs       \
2860fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vcombine vmax vmin vneg vqneg vmlal vmlal_lane vmlsl          \
2960fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vmlsl_lane vmovl vmovn vmull vmull_lane vrev vrshl vshl_n     \
3060fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vshr_n vsra_n vtrn vuzp vzip vreinterpret vqdmulh vqrdmulh    \
3160fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vqrdmulh_lane vqrshl vaba vabal vabd vabdl vand vorr vorn     \
3260fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           veor vbic vcreate vldX_lane vldX_dup vmla vmls vmul           \
3360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vmul_lane vmul_n vmull_n vqdmulh_n vqdmull_n vqrdmulh_n       \
3460fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vmla_lane vmls_lane vmla_n vmls_n vmlal_n vmlsl_n vqdmlal_n   \
3560fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vqdmlsl_n vsri_n vsli_n vtst vaddhn vraddhn vaddl vaddw       \
3660fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vhadd vrhadd vhsub vsubl vsubw vsubhn vrsubhn vmvn vqmovn     \
3760fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vqmovun vrshr_n vrsra_n vshll_n vpaddl vpadd vpadal           \
3860fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vqshlu_n vclz vcls vcnt vqshrn_n vpmax vpmin vqshrun_n        \
3960fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vqrshrun_n vstX_lane vtbX vrecpe vrsqrte vcage vcagt vcale    \
4060fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko           vcalt vrecps vrsqrts vcvt
4160fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
4260fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoARM_NEON_TESTS_REFLIST = $(addprefix ref_, $(ARM_NEON_TESTS_REFNAMES))
4360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
4460fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoARM_NEON_TESTS_SOURCES = compute_ref.c \
4560fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko                         $(addsuffix .c, $(ARM_NEON_TESTS_REFLIST))
4660fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
4760fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoARM_NEON_TESTS_REFGCCARM = stm-arm-neon.gccarm
4860fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoARM_NEON_TESTS_EXPECTED_INPUT = expected_input4gcc.txt
4960fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
5060fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoARM_NEON_TESTS_CFLAGS = -DREFFILE=\"$(ARM_NEON_TESTS_REFGCCARM)\" \
513de3e4a967a5ec95482a7ce89c9a4d35aa714fd1Victor Khimenko                        -DGCCTESTS_FILE=\"$(ARM_NEON_TESTS_EXPECTED_INPUT)\"
5260fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
5360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenkoinclude $(CLEAR_VARS)
5460fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_MODULE := arm_neon_tests_arm
5560fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_ARM_MODE := arm
5660fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_MODULE_TAGS := optional
5760fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_MODULE_TARGET_ARCH := arm
5860fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_CFLAGS := $(ARM_NEON_TESTS_CFLAGS)
5960fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_SRC_FILES := $(ARM_NEON_TESTS_SOURCES)
6060fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_CXX_STL := none
6160fd40592419d4254bc40c11c4806619134dc56aVictor Khimenkoinclude $(BUILD_NATIVE_TEST)
6260fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
6360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenkoinclude $(CLEAR_VARS)
6460fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_MODULE := arm_neon_tests_thumb
6560fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_ARM_MODE := thumb
6660fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_MODULE_TAGS := optional
6760fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_MODULE_TARGET_ARCH := arm
6860fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_CFLAGS := $(ARM_NEON_TESTS_CFLAGS)
6960fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_SRC_FILES := $(ARM_NEON_TESTS_SOURCES)
7060fd40592419d4254bc40c11c4806619134dc56aVictor KhimenkoLOCAL_CXX_STL := none
7160fd40592419d4254bc40c11c4806619134dc56aVictor Khimenkoinclude $(BUILD_NATIVE_TEST)
7260fd40592419d4254bc40c11c4806619134dc56aVictor Khimenko
7360fd40592419d4254bc40c11c4806619134dc56aVictor Khimenkoendif
74