summaryrefslogtreecommitdiffstats
path: root/test/440-stmp
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-01-16 11:14:27 +0000
committerNicolas Geoffray <ngeoffray@google.com>2015-01-19 09:10:12 +0000
commita8eef82f394f31272610d7ed80328ee465fa1a0f (patch)
tree363103fcf07b2b4e6c944b02984d3f345b2949f1 /test/440-stmp
parentc2c7a33a25169cdf19a0dcf45ddb3747055c7296 (diff)
downloadart-a8eef82f394f31272610d7ed80328ee465fa1a0f.zip
art-a8eef82f394f31272610d7ed80328ee465fa1a0f.tar.gz
art-a8eef82f394f31272610d7ed80328ee465fa1a0f.tar.bz2
Do not use STMP, it conflicts with the calling convention.
Hard-float calling convention uses S14 and D7 for argument passing, so we cannot use them. Change-Id: I77a2d8c875677640204baebc24355051aa4175fd
Diffstat (limited to 'test/440-stmp')
-rw-r--r--test/440-stmp/expected.txt1
-rw-r--r--test/440-stmp/info.txt3
-rw-r--r--test/440-stmp/src/Main.java47
3 files changed, 51 insertions, 0 deletions
diff --git a/test/440-stmp/expected.txt b/test/440-stmp/expected.txt
new file mode 100644
index 0000000..e995b05
--- /dev/null
+++ b/test/440-stmp/expected.txt
@@ -0,0 +1 @@
+-118.0
diff --git a/test/440-stmp/info.txt b/test/440-stmp/info.txt
new file mode 100644
index 0000000..c4a7bf1
--- /dev/null
+++ b/test/440-stmp/info.txt
@@ -0,0 +1,3 @@
+Regression test for optimizing, that used to consider
+a S/D register a temp, while it conflicted with the
+hard-float calling convention.
diff --git a/test/440-stmp/src/Main.java b/test/440-stmp/src/Main.java
new file mode 100644
index 0000000..2dd10f8
--- /dev/null
+++ b/test/440-stmp/src/Main.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * 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.
+ */
+
+class Main {
+ public static void main(String[] args) {
+ new Main().bar();
+ }
+
+ public void bar() {
+ // Use up all available D registers on ARM.
+ baz(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
+ }
+
+ public static void baz(float a, float b, float c, float d, float e, float f, float g,
+ float h, float i, float j, float k, float l, float m, float n, float o) {
+ System.out.println(a - b - c - d - e - f - g - h - i - j - k - l - m - n - o);
+ }
+
+ float a = 1.0f;
+ float b = 2.0f;
+ float c = 3.0f;
+ float d = 4.0f;
+ float e = 5.0f;
+ float f = 6.0f;
+ float g = 7.0f;
+ float h = 8.0f;
+ float i = 9.0f;
+ float j = 10.0f;
+ float k = 11.0f;
+ float l = 12.0f;
+ float m = 13.0f;
+ float n = 14.0f;
+ float o = 15.0f;
+}