diff options
| author | 2018-06-14 08:12:59 +0000 | |
|---|---|---|
| committer | 2018-06-14 08:12:59 +0000 | |
| commit | 50b179ccf01be26f5d56402355b7b4d0f791d8e2 (patch) | |
| tree | d88d2cf06fbba30646dc14d8ab0e4ca87c638d8a | |
| parent | 111b895dfaa271d8e9c32d1186615a0b73c106b5 (diff) | |
| parent | bb878915bbf94c633596eb8d12d194a0bbd0070b (diff) | |
Merge "ART-tests: Remove DX dependency from 626-checker-arm64-scratch-register."
| -rw-r--r-- | test/626-checker-arm64-scratch-register/build | 20 | ||||
| -rw-r--r-- | test/626-checker-arm64-scratch-register/smali/Main2.smali | 1768 | ||||
| -rw-r--r-- | test/626-checker-arm64-scratch-register/src-art/Main.java | 23 | ||||
| -rw-r--r-- | test/626-checker-arm64-scratch-register/src/Main.java | 279 |
4 files changed, 1793 insertions, 297 deletions
diff --git a/test/626-checker-arm64-scratch-register/build b/test/626-checker-arm64-scratch-register/build deleted file mode 100644 index d85147f17b..0000000000 --- a/test/626-checker-arm64-scratch-register/build +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# -# Copyright 2018 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. - -# See b/65168732 -export USE_D8=false - -./default-build "$@" diff --git a/test/626-checker-arm64-scratch-register/smali/Main2.smali b/test/626-checker-arm64-scratch-register/smali/Main2.smali new file mode 100644 index 0000000000..914ae6eeaf --- /dev/null +++ b/test/626-checker-arm64-scratch-register/smali/Main2.smali @@ -0,0 +1,1768 @@ +# Copyright (C) 2018 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 public LMain2; +.super Ljava/lang/Object; + + +# instance fields +.field b00:Z + +.field b01:Z + +.field b02:Z + +.field b03:Z + +.field b04:Z + +.field b05:Z + +.field b06:Z + +.field b07:Z + +.field b08:Z + +.field b09:Z + +.field b10:Z + +.field b11:Z + +.field b12:Z + +.field b13:Z + +.field b14:Z + +.field b15:Z + +.field b16:Z + +.field b17:Z + +.field b18:Z + +.field b19:Z + +.field b20:Z + +.field b21:Z + +.field b22:Z + +.field b23:Z + +.field b24:Z + +.field b25:Z + +.field b26:Z + +.field b27:Z + +.field b28:Z + +.field b29:Z + +.field b30:Z + +.field b31:Z + +.field b32:Z + +.field b33:Z + +.field b34:Z + +.field b35:Z + +.field b36:Z + +.field conditionA:Z + +.field conditionB:Z + +.field conditionC:Z + + +# direct methods +.method public constructor <init>()V + .registers 1 + + .prologue + .line 17 + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + + return-void +.end method + +## CHECK-START-ARM64: void Main2.test() register (after) +## CHECK: begin_block +## CHECK: name "B0" +## CHECK: <<This:l\d+>> ParameterValue +## CHECK: end_block +## CHECK: begin_block +## CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>" +## CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Main2.conditionB +## CHECK: If [<<CondB>>] +## CHECK: end_block +## CHECK: begin_block +## CHECK: name "<<ElseBlock>>" +## CHECK: ParallelMove moves:[40(sp)->d0,24(sp)->32(sp),28(sp)->36(sp),d0->d3,d3->d4,d2->d5,d4->d6,d5->d7,d6->d18,d7->d19,d18->d20,d19->d21,d20->d22,d21->d23,d22->d10,d23->d11,16(sp)->24(sp),20(sp)->28(sp),d10->d14,d11->d12,d12->d13,d13->d1,d14->d2,32(sp)->16(sp),36(sp)->20(sp)] +## CHECK: end_block + +## CHECK-START-ARM64: void Main2.test() disassembly (after) +## CHECK: begin_block +## CHECK: name "B0" +## CHECK: <<This:l\d+>> ParameterValue +## CHECK: end_block +## CHECK: begin_block +## CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>" +## CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Main2.conditionB +## CHECK: If [<<CondB>>] +## CHECK: end_block +## CHECK: begin_block +## CHECK: name "<<ElseBlock>>" +## CHECK: ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid] +## CHECK: fmov d31, d2 +## CHECK: ldr s2, [sp, #36] +## CHECK: ldr w16, [sp, #16] +## CHECK: str w16, [sp, #36] +## CHECK: str s14, [sp, #16] +## CHECK: ldr s14, [sp, #28] +## CHECK: str s1, [sp, #28] +## CHECK: ldr s1, [sp, #32] +## CHECK: str s31, [sp, #32] +## CHECK: ldr s31, [sp, #20] +## CHECK: str s31, [sp, #40] +## CHECK: str s12, [sp, #20] +## CHECK: fmov d12, d11 +## CHECK: fmov d11, d10 +## CHECK: fmov d10, d23 +## CHECK: fmov d23, d22 +## CHECK: fmov d22, d21 +## CHECK: fmov d21, d20 +## CHECK: fmov d20, d19 +## CHECK: fmov d19, d18 +## CHECK: fmov d18, d7 +## CHECK: fmov d7, d6 +## CHECK: fmov d6, d5 +## CHECK: fmov d5, d4 +## CHECK: fmov d4, d3 +## CHECK: fmov d3, d13 +## CHECK: ldr s13, [sp, #24] +## CHECK: str s3, [sp, #24] +## CHECK: ldr s3, pc+{{\d+}} (addr {{0x[0-9a-f]+}}) (100) +## CHECK: end_block + +# Original java source: +# +# public void test() { +# String r = ""; +# +# // For the purpose of this regression test, the order of +# // definition of these float variable matters. Likewise with the +# // order of the instructions where these variables are used below. +# // Reordering these lines make make the original (b/32545705) +# // issue vanish. +# float f17 = b17 ? 0.0f : 1.0f; +# float f16 = b16 ? 0.0f : 1.0f; +# float f18 = b18 ? 0.0f : 1.0f; +# float f19 = b19 ? 0.0f : 1.0f; +# float f20 = b20 ? 0.0f : 1.0f; +# float f21 = b21 ? 0.0f : 1.0f; +# float f15 = b15 ? 0.0f : 1.0f; +# float f00 = b00 ? 0.0f : 1.0f; +# float f22 = b22 ? 0.0f : 1.0f; +# float f23 = b23 ? 0.0f : 1.0f; +# float f24 = b24 ? 0.0f : 1.0f; +# float f25 = b25 ? 0.0f : 1.0f; +# float f26 = b26 ? 0.0f : 1.0f; +# float f27 = b27 ? 0.0f : 1.0f; +# float f29 = b29 ? 0.0f : 1.0f; +# float f28 = b28 ? 0.0f : 1.0f; +# float f01 = b01 ? 0.0f : 1.0f; +# float f02 = b02 ? 0.0f : 1.0f; +# float f03 = b03 ? 0.0f : 1.0f; +# float f04 = b04 ? 0.0f : 1.0f; +# float f05 = b05 ? 0.0f : 1.0f; +# float f07 = b07 ? 0.0f : 1.0f; +# float f06 = b06 ? 0.0f : 1.0f; +# float f30 = b30 ? 0.0f : 1.0f; +# float f31 = b31 ? 0.0f : 1.0f; +# float f32 = b32 ? 0.0f : 1.0f; +# float f33 = b33 ? 0.0f : 1.0f; +# float f34 = b34 ? 0.0f : 1.0f; +# float f36 = b36 ? 0.0f : 1.0f; +# float f35 = b35 ? 0.0f : 1.0f; +# float f08 = b08 ? 0.0f : 1.0f; +# float f09 = b09 ? 0.0f : 1.0f; +# float f10 = b10 ? 0.0f : 1.0f; +# float f11 = b11 ? 0.0f : 1.0f; +# float f12 = b12 ? 0.0f : 1.0f; +# float f14 = b14 ? 0.0f : 1.0f; +# float f13 = b13 ? 0.0f : 1.0f; +# +# if (conditionA) { +# f16 /= 1000.0f; +# f17 /= 1000.0f; +# f18 /= 1000.0f; +# f19 /= 1000.0f; +# f20 /= 1000.0f; +# f21 /= 1000.0f; +# f15 /= 1000.0f; +# f08 /= 1000.0f; +# f09 /= 1000.0f; +# f10 /= 1000.0f; +# f11 /= 1000.0f; +# f12 /= 1000.0f; +# f30 /= 1000.0f; +# f31 /= 1000.0f; +# f32 /= 1000.0f; +# f33 /= 1000.0f; +# f34 /= 1000.0f; +# f01 /= 1000.0f; +# f02 /= 1000.0f; +# f03 /= 1000.0f; +# f04 /= 1000.0f; +# f05 /= 1000.0f; +# f23 /= 1000.0f; +# f24 /= 1000.0f; +# f25 /= 1000.0f; +# f26 /= 1000.0f; +# f27 /= 1000.0f; +# f22 /= 1000.0f; +# f00 /= 1000.0f; +# f14 /= 1000.0f; +# f13 /= 1000.0f; +# f36 /= 1000.0f; +# f35 /= 1000.0f; +# f07 /= 1000.0f; +# f06 /= 1000.0f; +# f29 /= 1000.0f; +# f28 /= 1000.0f; +# } +# // The parallel move that used to exhaust the ARM64 parallel move +# // resolver's scratch register pool (provided by VIXL) was in the +# // "else" branch of the following condition generated by ART's +# // compiler. +# if (conditionB) { +# f16 /= 100.0f; +# f17 /= 100.0f; +# f18 /= 100.0f; +# f19 /= 100.0f; +# f20 /= 100.0f; +# f21 /= 100.0f; +# f15 /= 100.0f; +# f08 /= 100.0f; +# f09 /= 100.0f; +# f10 /= 100.0f; +# f11 /= 100.0f; +# f12 /= 100.0f; +# f30 /= 100.0f; +# f31 /= 100.0f; +# f32 /= 100.0f; +# f33 /= 100.0f; +# f34 /= 100.0f; +# f01 /= 100.0f; +# f02 /= 100.0f; +# f03 /= 100.0f; +# f04 /= 100.0f; +# f05 /= 100.0f; +# f23 /= 100.0f; +# f24 /= 100.0f; +# f25 /= 100.0f; +# f26 /= 100.0f; +# f27 /= 100.0f; +# f22 /= 100.0f; +# f00 /= 100.0f; +# f14 /= 100.0f; +# f13 /= 100.0f; +# f36 /= 100.0f; +# f35 /= 100.0f; +# f07 /= 100.0f; +# f06 /= 100.0f; +# f29 /= 100.0f; +# f28 /= 100.0f; +# } +# if (conditionC) { +# f16 /= 12.0f; +# f17 /= 12.0f; +# f18 /= 12.0f; +# f19 /= 12.0f; +# f20 /= 12.0f; +# f21 /= 12.0f; +# f15 /= 12.0f; +# f08 /= 12.0f; +# f09 /= 12.0f; +# f10 /= 12.0f; +# f11 /= 12.0f; +# f12 /= 12.0f; +# f30 /= 12.0f; +# f31 /= 12.0f; +# f32 /= 12.0f; +# f33 /= 12.0f; +# f34 /= 12.0f; +# f01 /= 12.0f; +# f02 /= 12.0f; +# f03 /= 12.0f; +# f04 /= 12.0f; +# f05 /= 12.0f; +# f23 /= 12.0f; +# f24 /= 12.0f; +# f25 /= 12.0f; +# f26 /= 12.0f; +# f27 /= 12.0f; +# f22 /= 12.0f; +# f00 /= 12.0f; +# f14 /= 12.0f; +# f13 /= 12.0f; +# f36 /= 12.0f; +# f35 /= 12.0f; +# f07 /= 12.0f; +# f06 /= 12.0f; +# f29 /= 12.0f; +# f28 /= 12.0f; +# } +# float s = 0.0f; +# s = ((float) Math.round(100.0f * s)) / 100.0f; +# String res = s + r; +# } + +# virtual methods +.method public test()V + .registers 45 + + .prologue + .line 121 + const-string v39, "" + + .line 128 + .local v39, "r":Ljava/lang/String; + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b17:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_367 + + const/16 v19, 0x0 + + .line 129 + .local v19, "f17":F + :goto_c + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b16:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_36b + + const/16 v18, 0x0 + + .line 130 + .local v18, "f16":F + :goto_16 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b18:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_36f + + const/16 v20, 0x0 + + .line 131 + .local v20, "f18":F + :goto_20 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b19:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_373 + + const/16 v21, 0x0 + + .line 132 + .local v21, "f19":F + :goto_2a + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b20:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_377 + + const/16 v22, 0x0 + + .line 133 + .local v22, "f20":F + :goto_34 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b21:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_37b + + const/16 v23, 0x0 + + .line 134 + .local v23, "f21":F + :goto_3e + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b15:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_37f + + const/16 v17, 0x0 + + .line 135 + .local v17, "f15":F + :goto_48 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b00:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_383 + + const/4 v2, 0x0 + + .line 136 + .local v2, "f00":F + :goto_51 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b22:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_387 + + const/16 v24, 0x0 + + .line 137 + .local v24, "f22":F + :goto_5b + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b23:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_38b + + const/16 v25, 0x0 + + .line 138 + .local v25, "f23":F + :goto_65 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b24:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_38f + + const/16 v26, 0x0 + + .line 139 + .local v26, "f24":F + :goto_6f + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b25:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_393 + + const/16 v27, 0x0 + + .line 140 + .local v27, "f25":F + :goto_79 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b26:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_397 + + const/16 v28, 0x0 + + .line 141 + .local v28, "f26":F + :goto_83 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b27:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_39b + + const/16 v29, 0x0 + + .line 142 + .local v29, "f27":F + :goto_8d + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b29:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_39f + + const/16 v31, 0x0 + + .line 143 + .local v31, "f29":F + :goto_97 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b28:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3a3 + + const/16 v30, 0x0 + + .line 144 + .local v30, "f28":F + :goto_a1 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b01:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3a7 + + const/4 v3, 0x0 + + .line 145 + .local v3, "f01":F + :goto_aa + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b02:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3ab + + const/4 v4, 0x0 + + .line 146 + .local v4, "f02":F + :goto_b3 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b03:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3af + + const/4 v5, 0x0 + + .line 147 + .local v5, "f03":F + :goto_bc + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b04:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3b3 + + const/4 v6, 0x0 + + .line 148 + .local v6, "f04":F + :goto_c5 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b05:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3b7 + + const/4 v7, 0x0 + + .line 149 + .local v7, "f05":F + :goto_ce + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b07:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3bb + + const/4 v9, 0x0 + + .line 150 + .local v9, "f07":F + :goto_d7 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b06:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3bf + + const/4 v8, 0x0 + + .line 151 + .local v8, "f06":F + :goto_e0 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b30:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3c3 + + const/16 v32, 0x0 + + .line 152 + .local v32, "f30":F + :goto_ea + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b31:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3c7 + + const/16 v33, 0x0 + + .line 153 + .local v33, "f31":F + :goto_f4 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b32:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3cb + + const/16 v34, 0x0 + + .line 154 + .local v34, "f32":F + :goto_fe + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b33:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3cf + + const/16 v35, 0x0 + + .line 155 + .local v35, "f33":F + :goto_108 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b34:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3d3 + + const/16 v36, 0x0 + + .line 156 + .local v36, "f34":F + :goto_112 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b36:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3d7 + + const/16 v38, 0x0 + + .line 157 + .local v38, "f36":F + :goto_11c + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b35:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3db + + const/16 v37, 0x0 + + .line 158 + .local v37, "f35":F + :goto_126 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b08:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3df + + const/4 v10, 0x0 + + .line 159 + .local v10, "f08":F + :goto_12f + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b09:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3e3 + + const/4 v11, 0x0 + + .line 160 + .local v11, "f09":F + :goto_138 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b10:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3e7 + + const/4 v12, 0x0 + + .line 161 + .local v12, "f10":F + :goto_141 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b11:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3eb + + const/4 v13, 0x0 + + .line 162 + .local v13, "f11":F + :goto_14a + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b12:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3ef + + const/4 v14, 0x0 + + .line 163 + .local v14, "f12":F + :goto_153 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b14:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3f3 + + const/16 v16, 0x0 + + .line 164 + .local v16, "f14":F + :goto_15d + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->b13:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_3f7 + + const/4 v15, 0x0 + + .line 166 + .local v15, "f13":F + :goto_166 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->conditionA:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_202 + + .line 167 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v18, v18, v42 + + .line 168 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v19, v19, v42 + + .line 169 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v20, v20, v42 + + .line 170 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v21, v21, v42 + + .line 171 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v22, v22, v42 + + .line 172 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v23, v23, v42 + + .line 173 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v17, v17, v42 + + .line 174 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v10, v10, v42 + + .line 175 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v11, v11, v42 + + .line 176 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v12, v12, v42 + + .line 177 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v13, v13, v42 + + .line 178 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v14, v14, v42 + + .line 179 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v32, v32, v42 + + .line 180 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v33, v33, v42 + + .line 181 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v34, v34, v42 + + .line 182 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v35, v35, v42 + + .line 183 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v36, v36, v42 + + .line 184 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v3, v3, v42 + + .line 185 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v4, v4, v42 + + .line 186 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v5, v5, v42 + + .line 187 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v6, v6, v42 + + .line 188 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v7, v7, v42 + + .line 189 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v25, v25, v42 + + .line 190 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v26, v26, v42 + + .line 191 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v27, v27, v42 + + .line 192 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v28, v28, v42 + + .line 193 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v29, v29, v42 + + .line 194 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v24, v24, v42 + + .line 195 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v2, v2, v42 + + .line 196 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v16, v16, v42 + + .line 197 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v15, v15, v42 + + .line 198 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v38, v38, v42 + + .line 199 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v37, v37, v42 + + .line 200 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v9, v9, v42 + + .line 201 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v8, v8, v42 + + .line 202 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v31, v31, v42 + + .line 203 + const/high16 v42, 0x447a0000 # 1000.0f + + div-float v30, v30, v42 + + .line 209 + :cond_202 + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->conditionB:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_29e + + .line 210 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v18, v18, v42 + + .line 211 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v19, v19, v42 + + .line 212 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v20, v20, v42 + + .line 213 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v21, v21, v42 + + .line 214 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v22, v22, v42 + + .line 215 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v23, v23, v42 + + .line 216 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v17, v17, v42 + + .line 217 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v10, v10, v42 + + .line 218 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v11, v11, v42 + + .line 219 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v12, v12, v42 + + .line 220 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v13, v13, v42 + + .line 221 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v14, v14, v42 + + .line 222 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v32, v32, v42 + + .line 223 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v33, v33, v42 + + .line 224 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v34, v34, v42 + + .line 225 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v35, v35, v42 + + .line 226 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v36, v36, v42 + + .line 227 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v3, v3, v42 + + .line 228 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v4, v4, v42 + + .line 229 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v5, v5, v42 + + .line 230 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v6, v6, v42 + + .line 231 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v7, v7, v42 + + .line 232 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v25, v25, v42 + + .line 233 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v26, v26, v42 + + .line 234 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v27, v27, v42 + + .line 235 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v28, v28, v42 + + .line 236 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v29, v29, v42 + + .line 237 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v24, v24, v42 + + .line 238 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v2, v2, v42 + + .line 239 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v16, v16, v42 + + .line 240 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v15, v15, v42 + + .line 241 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v38, v38, v42 + + .line 242 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v37, v37, v42 + + .line 243 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v9, v9, v42 + + .line 244 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v8, v8, v42 + + .line 245 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v31, v31, v42 + + .line 246 + const/high16 v42, 0x42c80000 # 100.0f + + div-float v30, v30, v42 + + .line 248 + :cond_29e + move-object/from16 v0, p0 + + iget-boolean v0, v0, LMain2;->conditionC:Z + + move/from16 v42, v0 + + if-eqz v42, :cond_33a + + .line 249 + const/high16 v42, 0x41400000 # 12.0f + + div-float v18, v18, v42 + + .line 250 + const/high16 v42, 0x41400000 # 12.0f + + div-float v19, v19, v42 + + .line 251 + const/high16 v42, 0x41400000 # 12.0f + + div-float v20, v20, v42 + + .line 252 + const/high16 v42, 0x41400000 # 12.0f + + div-float v21, v21, v42 + + .line 253 + const/high16 v42, 0x41400000 # 12.0f + + div-float v22, v22, v42 + + .line 254 + const/high16 v42, 0x41400000 # 12.0f + + div-float v23, v23, v42 + + .line 255 + const/high16 v42, 0x41400000 # 12.0f + + div-float v17, v17, v42 + + .line 256 + const/high16 v42, 0x41400000 # 12.0f + + div-float v10, v10, v42 + + .line 257 + const/high16 v42, 0x41400000 # 12.0f + + div-float v11, v11, v42 + + .line 258 + const/high16 v42, 0x41400000 # 12.0f + + div-float v12, v12, v42 + + .line 259 + const/high16 v42, 0x41400000 # 12.0f + + div-float v13, v13, v42 + + .line 260 + const/high16 v42, 0x41400000 # 12.0f + + div-float v14, v14, v42 + + .line 261 + const/high16 v42, 0x41400000 # 12.0f + + div-float v32, v32, v42 + + .line 262 + const/high16 v42, 0x41400000 # 12.0f + + div-float v33, v33, v42 + + .line 263 + const/high16 v42, 0x41400000 # 12.0f + + div-float v34, v34, v42 + + .line 264 + const/high16 v42, 0x41400000 # 12.0f + + div-float v35, v35, v42 + + .line 265 + const/high16 v42, 0x41400000 # 12.0f + + div-float v36, v36, v42 + + .line 266 + const/high16 v42, 0x41400000 # 12.0f + + div-float v3, v3, v42 + + .line 267 + const/high16 v42, 0x41400000 # 12.0f + + div-float v4, v4, v42 + + .line 268 + const/high16 v42, 0x41400000 # 12.0f + + div-float v5, v5, v42 + + .line 269 + const/high16 v42, 0x41400000 # 12.0f + + div-float v6, v6, v42 + + .line 270 + const/high16 v42, 0x41400000 # 12.0f + + div-float v7, v7, v42 + + .line 271 + const/high16 v42, 0x41400000 # 12.0f + + div-float v25, v25, v42 + + .line 272 + const/high16 v42, 0x41400000 # 12.0f + + div-float v26, v26, v42 + + .line 273 + const/high16 v42, 0x41400000 # 12.0f + + div-float v27, v27, v42 + + .line 274 + const/high16 v42, 0x41400000 # 12.0f + + div-float v28, v28, v42 + + .line 275 + const/high16 v42, 0x41400000 # 12.0f + + div-float v29, v29, v42 + + .line 276 + const/high16 v42, 0x41400000 # 12.0f + + div-float v24, v24, v42 + + .line 277 + const/high16 v42, 0x41400000 # 12.0f + + div-float v2, v2, v42 + + .line 278 + const/high16 v42, 0x41400000 # 12.0f + + div-float v16, v16, v42 + + .line 279 + const/high16 v42, 0x41400000 # 12.0f + + div-float v15, v15, v42 + + .line 280 + const/high16 v42, 0x41400000 # 12.0f + + div-float v38, v38, v42 + + .line 281 + const/high16 v42, 0x41400000 # 12.0f + + div-float v37, v37, v42 + + .line 282 + const/high16 v42, 0x41400000 # 12.0f + + div-float v9, v9, v42 + + .line 283 + const/high16 v42, 0x41400000 # 12.0f + + div-float v8, v8, v42 + + .line 284 + const/high16 v42, 0x41400000 # 12.0f + + div-float v31, v31, v42 + + .line 285 + const/high16 v42, 0x41400000 # 12.0f + + div-float v30, v30, v42 + + .line 287 + :cond_33a + const/16 v41, 0x0 + + .line 288 + .local v41, "s":F + const/high16 v42, 0x42c80000 # 100.0f + + mul-float v42, v42, v41 + + invoke-static/range {v42 .. v42}, Ljava/lang/Math;->round(F)I + + move-result v42 + + move/from16 v0, v42 + + int-to-float v0, v0 + + move/from16 v42, v0 + + const/high16 v43, 0x42c80000 # 100.0f + + div-float v41, v42, v43 + + .line 289 + new-instance v42, Ljava/lang/StringBuilder; + + invoke-direct/range {v42 .. v42}, Ljava/lang/StringBuilder;-><init>()V + + move-object/from16 v0, v42 + + move/from16 v1, v41 + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; + + move-result-object v42 + + move-object/from16 v0, v42 + + move-object/from16 v1, v39 + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v42 + + invoke-virtual/range {v42 .. v42}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + + move-result-object v40 + + .line 290 + .local v40, "res":Ljava/lang/String; + return-void + + .line 128 + .end local v2 # "f00":F + .end local v3 # "f01":F + .end local v4 # "f02":F + .end local v5 # "f03":F + .end local v6 # "f04":F + .end local v7 # "f05":F + .end local v8 # "f06":F + .end local v9 # "f07":F + .end local v10 # "f08":F + .end local v11 # "f09":F + .end local v12 # "f10":F + .end local v13 # "f11":F + .end local v14 # "f12":F + .end local v15 # "f13":F + .end local v16 # "f14":F + .end local v17 # "f15":F + .end local v18 # "f16":F + .end local v19 # "f17":F + .end local v20 # "f18":F + .end local v21 # "f19":F + .end local v22 # "f20":F + .end local v23 # "f21":F + .end local v24 # "f22":F + .end local v25 # "f23":F + .end local v26 # "f24":F + .end local v27 # "f25":F + .end local v28 # "f26":F + .end local v29 # "f27":F + .end local v30 # "f28":F + .end local v31 # "f29":F + .end local v32 # "f30":F + .end local v33 # "f31":F + .end local v34 # "f32":F + .end local v35 # "f33":F + .end local v36 # "f34":F + .end local v37 # "f35":F + .end local v38 # "f36":F + .end local v40 # "res":Ljava/lang/String; + .end local v41 # "s":F + :cond_367 + const/high16 v19, 0x3f800000 # 1.0f + + goto/16 :goto_c + + .line 129 + .restart local v19 # "f17":F + :cond_36b + const/high16 v18, 0x3f800000 # 1.0f + + goto/16 :goto_16 + + .line 130 + .restart local v18 # "f16":F + :cond_36f + const/high16 v20, 0x3f800000 # 1.0f + + goto/16 :goto_20 + + .line 131 + .restart local v20 # "f18":F + :cond_373 + const/high16 v21, 0x3f800000 # 1.0f + + goto/16 :goto_2a + + .line 132 + .restart local v21 # "f19":F + :cond_377 + const/high16 v22, 0x3f800000 # 1.0f + + goto/16 :goto_34 + + .line 133 + .restart local v22 # "f20":F + :cond_37b + const/high16 v23, 0x3f800000 # 1.0f + + goto/16 :goto_3e + + .line 134 + .restart local v23 # "f21":F + :cond_37f + const/high16 v17, 0x3f800000 # 1.0f + + goto/16 :goto_48 + + .line 135 + .restart local v17 # "f15":F + :cond_383 + const/high16 v2, 0x3f800000 # 1.0f + + goto/16 :goto_51 + + .line 136 + .restart local v2 # "f00":F + :cond_387 + const/high16 v24, 0x3f800000 # 1.0f + + goto/16 :goto_5b + + .line 137 + .restart local v24 # "f22":F + :cond_38b + const/high16 v25, 0x3f800000 # 1.0f + + goto/16 :goto_65 + + .line 138 + .restart local v25 # "f23":F + :cond_38f + const/high16 v26, 0x3f800000 # 1.0f + + goto/16 :goto_6f + + .line 139 + .restart local v26 # "f24":F + :cond_393 + const/high16 v27, 0x3f800000 # 1.0f + + goto/16 :goto_79 + + .line 140 + .restart local v27 # "f25":F + :cond_397 + const/high16 v28, 0x3f800000 # 1.0f + + goto/16 :goto_83 + + .line 141 + .restart local v28 # "f26":F + :cond_39b + const/high16 v29, 0x3f800000 # 1.0f + + goto/16 :goto_8d + + .line 142 + .restart local v29 # "f27":F + :cond_39f + const/high16 v31, 0x3f800000 # 1.0f + + goto/16 :goto_97 + + .line 143 + .restart local v31 # "f29":F + :cond_3a3 + const/high16 v30, 0x3f800000 # 1.0f + + goto/16 :goto_a1 + + .line 144 + .restart local v30 # "f28":F + :cond_3a7 + const/high16 v3, 0x3f800000 # 1.0f + + goto/16 :goto_aa + + .line 145 + .restart local v3 # "f01":F + :cond_3ab + const/high16 v4, 0x3f800000 # 1.0f + + goto/16 :goto_b3 + + .line 146 + .restart local v4 # "f02":F + :cond_3af + const/high16 v5, 0x3f800000 # 1.0f + + goto/16 :goto_bc + + .line 147 + .restart local v5 # "f03":F + :cond_3b3 + const/high16 v6, 0x3f800000 # 1.0f + + goto/16 :goto_c5 + + .line 148 + .restart local v6 # "f04":F + :cond_3b7 + const/high16 v7, 0x3f800000 # 1.0f + + goto/16 :goto_ce + + .line 149 + .restart local v7 # "f05":F + :cond_3bb + const/high16 v9, 0x3f800000 # 1.0f + + goto/16 :goto_d7 + + .line 150 + .restart local v9 # "f07":F + :cond_3bf + const/high16 v8, 0x3f800000 # 1.0f + + goto/16 :goto_e0 + + .line 151 + .restart local v8 # "f06":F + :cond_3c3 + const/high16 v32, 0x3f800000 # 1.0f + + goto/16 :goto_ea + + .line 152 + .restart local v32 # "f30":F + :cond_3c7 + const/high16 v33, 0x3f800000 # 1.0f + + goto/16 :goto_f4 + + .line 153 + .restart local v33 # "f31":F + :cond_3cb + const/high16 v34, 0x3f800000 # 1.0f + + goto/16 :goto_fe + + .line 154 + .restart local v34 # "f32":F + :cond_3cf + const/high16 v35, 0x3f800000 # 1.0f + + goto/16 :goto_108 + + .line 155 + .restart local v35 # "f33":F + :cond_3d3 + const/high16 v36, 0x3f800000 # 1.0f + + goto/16 :goto_112 + + .line 156 + .restart local v36 # "f34":F + :cond_3d7 + const/high16 v38, 0x3f800000 # 1.0f + + goto/16 :goto_11c + + .line 157 + .restart local v38 # "f36":F + :cond_3db + const/high16 v37, 0x3f800000 # 1.0f + + goto/16 :goto_126 + + .line 158 + .restart local v37 # "f35":F + :cond_3df + const/high16 v10, 0x3f800000 # 1.0f + + goto/16 :goto_12f + + .line 159 + .restart local v10 # "f08":F + :cond_3e3 + const/high16 v11, 0x3f800000 # 1.0f + + goto/16 :goto_138 + + .line 160 + .restart local v11 # "f09":F + :cond_3e7 + const/high16 v12, 0x3f800000 # 1.0f + + goto/16 :goto_141 + + .line 161 + .restart local v12 # "f10":F + :cond_3eb + const/high16 v13, 0x3f800000 # 1.0f + + goto/16 :goto_14a + + .line 162 + .restart local v13 # "f11":F + :cond_3ef + const/high16 v14, 0x3f800000 # 1.0f + + goto/16 :goto_153 + + .line 163 + .restart local v14 # "f12":F + :cond_3f3 + const/high16 v16, 0x3f800000 # 1.0f + + goto/16 :goto_15d + + .line 164 + .restart local v16 # "f14":F + :cond_3f7 + const/high16 v15, 0x3f800000 # 1.0f + + goto/16 :goto_166 +.end method diff --git a/test/626-checker-arm64-scratch-register/src-art/Main.java b/test/626-checker-arm64-scratch-register/src-art/Main.java new file mode 100644 index 0000000000..b816586c84 --- /dev/null +++ b/test/626-checker-arm64-scratch-register/src-art/Main.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2018 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. + */ + +public class Main { + public static void main(String[] args) throws Exception { + Class main2 = Class.forName("Main2"); + main2.getMethod("test").invoke(main2.newInstance()); + System.out.println("passed"); + } +} diff --git a/test/626-checker-arm64-scratch-register/src/Main.java b/test/626-checker-arm64-scratch-register/src/Main.java index 139491769e..fa8e5cd1fe 100644 --- a/test/626-checker-arm64-scratch-register/src/Main.java +++ b/test/626-checker-arm64-scratch-register/src/Main.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016 The Android Open Source Project + * Copyright (C) 2018 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. @@ -14,284 +14,9 @@ * limitations under the License. */ +// This file is just for running on the RI as the test is ART specific. public class Main { - - boolean b00; - boolean b01; - boolean b02; - boolean b03; - boolean b04; - boolean b05; - boolean b06; - boolean b07; - boolean b08; - boolean b09; - boolean b10; - boolean b11; - boolean b12; - boolean b13; - boolean b14; - boolean b15; - boolean b16; - boolean b17; - boolean b18; - boolean b19; - boolean b20; - boolean b21; - boolean b22; - boolean b23; - boolean b24; - boolean b25; - boolean b26; - boolean b27; - boolean b28; - boolean b29; - boolean b30; - boolean b31; - boolean b32; - boolean b33; - boolean b34; - boolean b35; - boolean b36; - - boolean conditionA; - boolean conditionB; - boolean conditionC; - - /// CHECK-START-ARM64: void Main.test() register (after) - /// CHECK: begin_block - /// CHECK: name "B0" - /// CHECK: <<This:l\d+>> ParameterValue - /// CHECK: end_block - /// CHECK: begin_block - /// CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>" - /// CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Main.conditionB - /// CHECK: If [<<CondB>>] - /// CHECK: end_block - /// CHECK: begin_block - /// CHECK: name "<<ElseBlock>>" - /// CHECK: ParallelMove moves:[40(sp)->d0,24(sp)->32(sp),28(sp)->36(sp),d0->d3,d3->d4,d2->d5,d4->d6,d5->d7,d6->d18,d7->d19,d18->d20,d19->d21,d20->d22,d21->d23,d22->d10,d23->d11,16(sp)->24(sp),20(sp)->28(sp),d10->d14,d11->d12,d12->d13,d13->d1,d14->d2,32(sp)->16(sp),36(sp)->20(sp)] - /// CHECK: end_block - - /// CHECK-START-ARM64: void Main.test() disassembly (after) - /// CHECK: begin_block - /// CHECK: name "B0" - /// CHECK: <<This:l\d+>> ParameterValue - /// CHECK: end_block - /// CHECK: begin_block - /// CHECK: successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>" - /// CHECK: <<CondB:z\d+>> InstanceFieldGet [<<This>>] field_name:Main.conditionB - /// CHECK: If [<<CondB>>] - /// CHECK: end_block - /// CHECK: begin_block - /// CHECK: name "<<ElseBlock>>" - /// CHECK: ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid] - /// CHECK: fmov d31, d2 - /// CHECK: ldr s2, [sp, #36] - /// CHECK: ldr w16, [sp, #16] - /// CHECK: str w16, [sp, #36] - /// CHECK: str s14, [sp, #16] - /// CHECK: ldr s14, [sp, #28] - /// CHECK: str s1, [sp, #28] - /// CHECK: ldr s1, [sp, #32] - /// CHECK: str s31, [sp, #32] - /// CHECK: ldr s31, [sp, #20] - /// CHECK: str s31, [sp, #40] - /// CHECK: str s12, [sp, #20] - /// CHECK: fmov d12, d11 - /// CHECK: fmov d11, d10 - /// CHECK: fmov d10, d23 - /// CHECK: fmov d23, d22 - /// CHECK: fmov d22, d21 - /// CHECK: fmov d21, d20 - /// CHECK: fmov d20, d19 - /// CHECK: fmov d19, d18 - /// CHECK: fmov d18, d7 - /// CHECK: fmov d7, d6 - /// CHECK: fmov d6, d5 - /// CHECK: fmov d5, d4 - /// CHECK: fmov d4, d3 - /// CHECK: fmov d3, d13 - /// CHECK: ldr s13, [sp, #24] - /// CHECK: str s3, [sp, #24] - /// CHECK: ldr s3, pc+{{\d+}} (addr {{0x[0-9a-f]+}}) (100) - /// CHECK: end_block - - public void test() { - String r = ""; - - // For the purpose of this regression test, the order of - // definition of these float variable matters. Likewise with the - // order of the instructions where these variables are used below. - // Reordering these lines make make the original (b/32545705) - // issue vanish. - float f17 = b17 ? 0.0f : 1.0f; - float f16 = b16 ? 0.0f : 1.0f; - float f18 = b18 ? 0.0f : 1.0f; - float f19 = b19 ? 0.0f : 1.0f; - float f20 = b20 ? 0.0f : 1.0f; - float f21 = b21 ? 0.0f : 1.0f; - float f15 = b15 ? 0.0f : 1.0f; - float f00 = b00 ? 0.0f : 1.0f; - float f22 = b22 ? 0.0f : 1.0f; - float f23 = b23 ? 0.0f : 1.0f; - float f24 = b24 ? 0.0f : 1.0f; - float f25 = b25 ? 0.0f : 1.0f; - float f26 = b26 ? 0.0f : 1.0f; - float f27 = b27 ? 0.0f : 1.0f; - float f29 = b29 ? 0.0f : 1.0f; - float f28 = b28 ? 0.0f : 1.0f; - float f01 = b01 ? 0.0f : 1.0f; - float f02 = b02 ? 0.0f : 1.0f; - float f03 = b03 ? 0.0f : 1.0f; - float f04 = b04 ? 0.0f : 1.0f; - float f05 = b05 ? 0.0f : 1.0f; - float f07 = b07 ? 0.0f : 1.0f; - float f06 = b06 ? 0.0f : 1.0f; - float f30 = b30 ? 0.0f : 1.0f; - float f31 = b31 ? 0.0f : 1.0f; - float f32 = b32 ? 0.0f : 1.0f; - float f33 = b33 ? 0.0f : 1.0f; - float f34 = b34 ? 0.0f : 1.0f; - float f36 = b36 ? 0.0f : 1.0f; - float f35 = b35 ? 0.0f : 1.0f; - float f08 = b08 ? 0.0f : 1.0f; - float f09 = b09 ? 0.0f : 1.0f; - float f10 = b10 ? 0.0f : 1.0f; - float f11 = b11 ? 0.0f : 1.0f; - float f12 = b12 ? 0.0f : 1.0f; - float f14 = b14 ? 0.0f : 1.0f; - float f13 = b13 ? 0.0f : 1.0f; - - if (conditionA) { - f16 /= 1000.0f; - f17 /= 1000.0f; - f18 /= 1000.0f; - f19 /= 1000.0f; - f20 /= 1000.0f; - f21 /= 1000.0f; - f15 /= 1000.0f; - f08 /= 1000.0f; - f09 /= 1000.0f; - f10 /= 1000.0f; - f11 /= 1000.0f; - f12 /= 1000.0f; - f30 /= 1000.0f; - f31 /= 1000.0f; - f32 /= 1000.0f; - f33 /= 1000.0f; - f34 /= 1000.0f; - f01 /= 1000.0f; - f02 /= 1000.0f; - f03 /= 1000.0f; - f04 /= 1000.0f; - f05 /= 1000.0f; - f23 /= 1000.0f; - f24 /= 1000.0f; - f25 /= 1000.0f; - f26 /= 1000.0f; - f27 /= 1000.0f; - f22 /= 1000.0f; - f00 /= 1000.0f; - f14 /= 1000.0f; - f13 /= 1000.0f; - f36 /= 1000.0f; - f35 /= 1000.0f; - f07 /= 1000.0f; - f06 /= 1000.0f; - f29 /= 1000.0f; - f28 /= 1000.0f; - } - // The parallel move that used to exhaust the ARM64 parallel move - // resolver's scratch register pool (provided by VIXL) was in the - // "else" branch of the following condition generated by ART's - // compiler. - if (conditionB) { - f16 /= 100.0f; - f17 /= 100.0f; - f18 /= 100.0f; - f19 /= 100.0f; - f20 /= 100.0f; - f21 /= 100.0f; - f15 /= 100.0f; - f08 /= 100.0f; - f09 /= 100.0f; - f10 /= 100.0f; - f11 /= 100.0f; - f12 /= 100.0f; - f30 /= 100.0f; - f31 /= 100.0f; - f32 /= 100.0f; - f33 /= 100.0f; - f34 /= 100.0f; - f01 /= 100.0f; - f02 /= 100.0f; - f03 /= 100.0f; - f04 /= 100.0f; - f05 /= 100.0f; - f23 /= 100.0f; - f24 /= 100.0f; - f25 /= 100.0f; - f26 /= 100.0f; - f27 /= 100.0f; - f22 /= 100.0f; - f00 /= 100.0f; - f14 /= 100.0f; - f13 /= 100.0f; - f36 /= 100.0f; - f35 /= 100.0f; - f07 /= 100.0f; - f06 /= 100.0f; - f29 /= 100.0f; - f28 /= 100.0f; - } - if (conditionC) { - f16 /= 12.0f; - f17 /= 12.0f; - f18 /= 12.0f; - f19 /= 12.0f; - f20 /= 12.0f; - f21 /= 12.0f; - f15 /= 12.0f; - f08 /= 12.0f; - f09 /= 12.0f; - f10 /= 12.0f; - f11 /= 12.0f; - f12 /= 12.0f; - f30 /= 12.0f; - f31 /= 12.0f; - f32 /= 12.0f; - f33 /= 12.0f; - f34 /= 12.0f; - f01 /= 12.0f; - f02 /= 12.0f; - f03 /= 12.0f; - f04 /= 12.0f; - f05 /= 12.0f; - f23 /= 12.0f; - f24 /= 12.0f; - f25 /= 12.0f; - f26 /= 12.0f; - f27 /= 12.0f; - f22 /= 12.0f; - f00 /= 12.0f; - f14 /= 12.0f; - f13 /= 12.0f; - f36 /= 12.0f; - f35 /= 12.0f; - f07 /= 12.0f; - f06 /= 12.0f; - f29 /= 12.0f; - f28 /= 12.0f; - } - float s = 0.0f; - s = ((float) Math.round(100.0f * s)) / 100.0f; - String res = s + r; - } - public static void main(String[] args) { - Main main = new Main(); - main.test(); System.out.println("passed"); } } |