am 275bc5e5: Merge "ART: Extend ISA features option for (host) run tests"
* commit '275bc5e5f318ba6ea1bad6c89c2924d1248b7523':
ART: Extend ISA features option for (host) run tests
diff --git a/build/Android.oat.mk b/build/Android.oat.mk
index 0c0c3df..3a3cb99 100644
--- a/build/Android.oat.mk
+++ b/build/Android.oat.mk
@@ -23,11 +23,17 @@
include art/build/Android.common_build.mk
+LOCAL_DEX2OAT_HOST_INSTRUCTION_SET_FEATURES_OPTION :=
ifeq ($(DEX2OAT_HOST_INSTRUCTION_SET_FEATURES),)
- DEX2OAT_HOST_INSTRUCTION_SET_FEATURES := default
+ LOCAL_DEX2OAT_HOST_INSTRUCTION_SET_FEATURES_OPTION := --instruction-set-features=default
+else
+ LOCAL_DEX2OAT_HOST_INSTRUCTION_SET_FEATURES_OPTION := --instruction-set-features=$(DEX2OAT_HOST_INSTRUCTION_SET_FEATURES)
endif
+LOCAL_$(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES_OPTION :=
ifeq ($($(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES),)
- $(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES := default
+ LOCAL_$(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES_OPTION := --instruction-set-features=default
+else
+ LOCAL_$(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES_OPTION := --instruction-set-features=$($(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES)
endif
# Use dex2oat debug version for better error reporting
@@ -116,7 +122,7 @@
$$(addprefix --dex-location=,$$(HOST_CORE_DEX_LOCATIONS)) --oat-file=$$(PRIVATE_CORE_OAT_NAME) \
--oat-location=$$(PRIVATE_CORE_OAT_NAME) --image=$$(PRIVATE_CORE_IMG_NAME) \
--base=$$(LIBART_IMG_HOST_BASE_ADDRESS) --instruction-set=$$($(3)ART_HOST_ARCH) \
- --instruction-set-features=$$($(3)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES) \
+ $$(LOCAL_$(3)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES_OPTION) \
--host --android-root=$$(HOST_OUT) --include-patch-information --generate-debug-info \
$$(PRIVATE_CORE_COMPILE_OPTIONS)
diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk
index 3698bc8..4e6df6c 100644
--- a/test/Android.run-test.mk
+++ b/test/Android.run-test.mk
@@ -853,6 +853,19 @@
$$(error found $(13) expected $(ALL_ADDRESS_SIZES))
endif
endif
+ # Override of host instruction-set-features. Required to test advanced x86 intrinsics. The
+ # conditionals aren't really correct, they will fail to do the right thing on a 32-bit only
+ # host. However, this isn't common enough to worry here and make the conditions complicated.
+ ifneq ($(DEX2OAT_HOST_INSTRUCTION_SET_FEATURES),)
+ ifeq ($(13),64)
+ run_test_options += --instruction-set-features $(DEX2OAT_HOST_INSTRUCTION_SET_FEATURES)
+ endif
+ endif
+ ifneq ($($(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES),)
+ ifeq ($(13),32)
+ run_test_options += --instruction-set-features $($(HOST_2ND_ARCH_VAR_PREFIX)DEX2OAT_HOST_INSTRUCTION_SET_FEATURES)
+ endif
+ endif
run_test_rule_name := test-art-$(1)-run-test-$(2)-$(3)-$(4)-$(5)-$(6)-$(7)-$(8)-$(9)-$(10)-$(11)-$(12)$(13)
run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
$$(run_test_options)
diff --git a/test/etc/run-test-jar b/test/etc/run-test-jar
index db64b77..750a29f 100755
--- a/test/etc/run-test-jar
+++ b/test/etc/run-test-jar
@@ -46,6 +46,7 @@
ZYGOTE=""
DEX_VERIFY=""
USE_DEX2OAT_AND_PATCHOAT="y"
+INSTRUCTION_SET_FEATURES=""
while true; do
if [ "x$1" = "x--quiet" ]; then
@@ -159,6 +160,10 @@
shift
ANDROID_ROOT="$1"
shift
+ elif [ "x$1" = "x--instruction-set-features" ]; then
+ shift
+ INSTRUCTION_SET_FEATURES="$1"
+ shift
elif [ "x$1" = "x--" ]; then
shift
break
@@ -330,6 +335,14 @@
--dex-file=$DEX_LOCATION/$TEST_NAME.jar \
--oat-file=$DEX_LOCATION/dalvik-cache/$ISA/$(echo $DEX_LOCATION/$TEST_NAME.jar/classes.dex | cut -d/ -f 2- | sed "s:/:@:g") \
--instruction-set=$ISA"
+ if [ "x$INSTRUCTION_SET_FEATURES" != "x" ] ; then
+ dex2oat_cmdline="${dex2oat_cmdline} --instruction-set-features=${INSTRUCTION_SET_FEATURES}"
+ fi
+fi
+
+DALVIKVM_ISA_FEATURES_ARGS=""
+if [ "x$INSTRUCTION_SET_FEATURES" != "x" ] ; then
+ DALVIKVM_ISA_FEATURES_ARGS="-Xcompiler-option --instruction-set-features=${INSTRUCTION_SET_FEATURES}"
fi
dalvikvm_cmdline="$INVOKE_WITH $GDB $ANDROID_ROOT/bin/$DALVIKVM \
@@ -339,6 +352,7 @@
-XXlib:$LIB \
$PATCHOAT \
$DEX2OAT \
+ $DALVIKVM_ISA_FEATURES_ARGS \
$ZYGOTE \
$JNI_OPTS \
$INT_OPTS \
diff --git a/test/run-test b/test/run-test
index 934329f..3d6f073 100755
--- a/test/run-test
+++ b/test/run-test
@@ -339,6 +339,10 @@
elif [ "x$1" = "x--dex2oat-swap" ]; then
run_args="${run_args} --dex2oat-swap"
shift
+ elif [ "x$1" = "x--instruction-set-features" ]; then
+ shift
+ run_args="${run_args} --instruction-set-features $1"
+ shift
elif expr "x$1" : "x--" >/dev/null 2>&1; then
echo "unknown $0 option: $1" 1>&2
usage="yes"
@@ -556,6 +560,8 @@
echo " --never-clean Keep the test files even if the test succeeds."
echo " --android-root [path] The path on target for the android root. (/system by default)."
echo " --dex2oat-swap Use a dex2oat swap file."
+ echo " --instruction-set-features [string]"
+ echo " Set instruction-set-features for compilation."
) 1>&2
exit 1
fi