From 52f114fa49daa29d9aa172c724eaed6de11a4554 Mon Sep 17 00:00:00 2001 From: Martyn Capewell Date: Thu, 28 Oct 2021 13:26:28 +0100 Subject: [PATCH] Fix disassembly of indexed FMUL Fix the decoding of the index used for the disassembly of FMUL on D-sized registers, and add regression tests. --- src/aarch64/disasm-aarch64.cc | 31 +++++++++++-------- test/aarch64/test-disasm-neon-aarch64.cc | 24 +++++++++----- test/test-trace-reference/log-all | 8 ++--- test/test-trace-reference/log-all-colour | 8 ++--- test/test-trace-reference/log-cpufeatures | 8 ++--- .../log-cpufeatures-colour | 8 ++--- .../log-cpufeatures-custom | 8 ++--- test/test-trace-reference/log-disasm | 8 ++--- test/test-trace-reference/log-disasm-colour | 8 ++--- 9 files changed, 62 insertions(+), 49 deletions(-) diff --git a/src/aarch64/disasm-aarch64.cc b/src/aarch64/disasm-aarch64.cc index f08fb922..ea3caed8 100644 --- a/src/aarch64/disasm-aarch64.cc +++ b/src/aarch64/disasm-aarch64.cc @@ -10679,24 +10679,29 @@ int Disassembler::SubstituteImmediateField(const Instruction *instr, } case 'B': { // IVByElemIndex. int ret = strlen("IVByElemIndex"); - int vm_index = (instr->GetNEONH() << 1) | instr->GetNEONL(); + uint32_t vm_index = instr->GetNEONH() << 2; + vm_index |= instr->GetNEONL() << 1; + vm_index |= instr->GetNEONM(); + static const char *format_rot = "IVByElemIndexRot"; static const char *format_fhm = "IVByElemIndexFHM"; - bool is_fhm = strncmp(format, format_fhm, strlen(format_fhm)) == 0; if (strncmp(format, format_rot, strlen(format_rot)) == 0) { // FCMLA uses 'H' bit index when SIZE is 2, else H:L - if (instr->GetNEONSize() == 2) { - vm_index = instr->GetNEONH(); - } + VIXL_ASSERT((instr->GetNEONSize() == 1) || + (instr->GetNEONSize() == 2)); + vm_index >>= instr->GetNEONSize(); ret = static_cast(strlen(format_rot)); - } else if (is_fhm || (instr->GetNEONSize() == 0)) { - // Half-precision FP ops use H:L:M bit index - // Widening operations with H-sized operands also use H:L:M. - vm_index = (instr->GetNEONH() << 2) | (instr->GetNEONL() << 1) | - instr->GetNEONM(); - if (is_fhm) ret = static_cast(strlen(format_fhm)); - } else if (instr->GetNEONSize() == 1) { - vm_index = (vm_index << 1) | instr->GetNEONM(); + } else if (strncmp(format, format_fhm, strlen(format_fhm)) == 0) { + // Nothing to do - FMLAL and FMLSL use H:L:M. + ret = static_cast(strlen(format_fhm)); + } else { + if (instr->GetNEONSize() == 2) { + // S-sized elements use H:L. + vm_index >>= 1; + } else if (instr->GetNEONSize() == 3) { + // D-sized elements use H. + vm_index >>= 2; + } } AppendToOutput("%d", vm_index); return ret; diff --git a/test/aarch64/test-disasm-neon-aarch64.cc b/test/aarch64/test-disasm-neon-aarch64.cc index cf3ba79e..4b824a4a 100644 --- a/test/aarch64/test-disasm-neon-aarch64.cc +++ b/test/aarch64/test-disasm-neon-aarch64.cc @@ -2448,56 +2448,64 @@ TEST(neon_fp_byelement) { COMPARE_MACRO(Fmul(v0.V4H(), v1.V4H(), v2.H(), 0), "fmul v0.4h, v1.4h, v2.h[0]"); - COMPARE_MACRO(Fmul(v2.V8H(), v3.V8H(), v15.H(), 3), - "fmul v2.8h, v3.8h, v15.h[3]"); + COMPARE_MACRO(Fmul(v2.V8H(), v3.V8H(), v15.H(), 7), + "fmul v2.8h, v3.8h, v15.h[7]"); COMPARE_MACRO(Fmul(v0.V2S(), v1.V2S(), v2.S(), 0), "fmul v0.2s, v1.2s, v2.s[0]"); COMPARE_MACRO(Fmul(v2.V4S(), v3.V4S(), v15.S(), 3), "fmul v2.4s, v3.4s, v15.s[3]"); COMPARE_MACRO(Fmul(v0.V2D(), v1.V2D(), v2.D(), 0), "fmul v0.2d, v1.2d, v2.d[0]"); + COMPARE_MACRO(Fmul(v0.V2D(), v1.V2D(), v2.D(), 1), + "fmul v0.2d, v1.2d, v2.d[1]"); COMPARE_MACRO(Fmul(d0, d1, v2.D(), 0), "fmul d0, d1, v2.d[0]"); COMPARE_MACRO(Fmul(s0, s1, v2.S(), 0), "fmul s0, s1, v2.s[0]"); COMPARE_MACRO(Fmul(h0, h1, v2.H(), 0), "fmul h0, h1, v2.h[0]"); COMPARE_MACRO(Fmla(v0.V4H(), v1.V4H(), v2.H(), 0), "fmla v0.4h, v1.4h, v2.h[0]"); - COMPARE_MACRO(Fmla(v2.V8H(), v3.V8H(), v15.H(), 3), - "fmla v2.8h, v3.8h, v15.h[3]"); + COMPARE_MACRO(Fmla(v2.V8H(), v3.V8H(), v15.H(), 7), + "fmla v2.8h, v3.8h, v15.h[7]"); COMPARE_MACRO(Fmla(v0.V2S(), v1.V2S(), v2.S(), 0), "fmla v0.2s, v1.2s, v2.s[0]"); COMPARE_MACRO(Fmla(v2.V4S(), v3.V4S(), v15.S(), 3), "fmla v2.4s, v3.4s, v15.s[3]"); COMPARE_MACRO(Fmla(v0.V2D(), v1.V2D(), v2.D(), 0), "fmla v0.2d, v1.2d, v2.d[0]"); + COMPARE_MACRO(Fmla(v0.V2D(), v1.V2D(), v2.D(), 1), + "fmla v0.2d, v1.2d, v2.d[1]"); COMPARE_MACRO(Fmla(d0, d1, v2.D(), 0), "fmla d0, d1, v2.d[0]"); COMPARE_MACRO(Fmla(s0, s1, v2.S(), 0), "fmla s0, s1, v2.s[0]"); COMPARE_MACRO(Fmla(h0, h1, v2.H(), 0), "fmla h0, h1, v2.h[0]"); COMPARE_MACRO(Fmls(v0.V4H(), v1.V4H(), v2.H(), 0), "fmls v0.4h, v1.4h, v2.h[0]"); - COMPARE_MACRO(Fmls(v2.V8H(), v3.V8H(), v15.H(), 3), - "fmls v2.8h, v3.8h, v15.h[3]"); + COMPARE_MACRO(Fmls(v2.V8H(), v3.V8H(), v15.H(), 7), + "fmls v2.8h, v3.8h, v15.h[7]"); COMPARE_MACRO(Fmls(v0.V2S(), v1.V2S(), v2.S(), 0), "fmls v0.2s, v1.2s, v2.s[0]"); COMPARE_MACRO(Fmls(v2.V4S(), v3.V4S(), v15.S(), 3), "fmls v2.4s, v3.4s, v15.s[3]"); COMPARE_MACRO(Fmls(v0.V2D(), v1.V2D(), v2.D(), 0), "fmls v0.2d, v1.2d, v2.d[0]"); + COMPARE_MACRO(Fmls(v0.V2D(), v1.V2D(), v2.D(), 1), + "fmls v0.2d, v1.2d, v2.d[1]"); COMPARE_MACRO(Fmls(d0, d1, v2.D(), 0), "fmls d0, d1, v2.d[0]"); COMPARE_MACRO(Fmls(s0, s1, v2.S(), 0), "fmls s0, s1, v2.s[0]"); COMPARE_MACRO(Fmls(h0, h1, v2.H(), 0), "fmls h0, h1, v2.h[0]"); COMPARE_MACRO(Fmulx(v0.V4H(), v1.V4H(), v2.H(), 0), "fmulx v0.4h, v1.4h, v2.h[0]"); - COMPARE_MACRO(Fmulx(v2.V8H(), v3.V8H(), v15.H(), 3), - "fmulx v2.8h, v3.8h, v15.h[3]"); + COMPARE_MACRO(Fmulx(v2.V8H(), v3.V8H(), v15.H(), 7), + "fmulx v2.8h, v3.8h, v15.h[7]"); COMPARE_MACRO(Fmulx(v0.V2S(), v1.V2S(), v2.S(), 0), "fmulx v0.2s, v1.2s, v2.s[0]"); COMPARE_MACRO(Fmulx(v2.V4S(), v3.V4S(), v8.S(), 3), "fmulx v2.4s, v3.4s, v8.s[3]"); COMPARE_MACRO(Fmulx(v0.V2D(), v1.V2D(), v2.D(), 0), "fmulx v0.2d, v1.2d, v2.d[0]"); + COMPARE_MACRO(Fmulx(v0.V2D(), v1.V2D(), v2.D(), 1), + "fmulx v0.2d, v1.2d, v2.d[1]"); COMPARE_MACRO(Fmulx(d0, d1, v2.D(), 0), "fmulx d0, d1, v2.d[0]"); COMPARE_MACRO(Fmulx(s0, s1, v2.S(), 0), "fmulx s0, s1, v2.s[0]"); COMPARE_MACRO(Fmulx(h0, h1, v2.H(), 0), "fmulx h0, h1, v2.h[0]"); diff --git a/test/test-trace-reference/log-all b/test/test-trace-reference/log-all index b61b90e3..4037ec39 100644 --- a/test/test-trace-reference/log-all +++ b/test/test-trace-reference/log-all @@ -9843,7 +9843,7 @@ # v0: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 6eb0f919 fminv s25, v8.4s # v25: 0x0000000000000000000000007fc00000 -0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[2] +0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[1] # v23: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 5f8711f7 fmla s23, s15, v7.s[0] # v23: 0x00000000000000000000000000000000 @@ -9885,13 +9885,13 @@ # v28: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 9eae0052 fmov x18, v2.D[1] # x18: 0x0000000000000000 -0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[2] +0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[1] # v12: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 5faf983e fmul s30, s1, v15.s[3] # v30: 0x000000000000000000000000ffffffff 0x~~~~~~~~~~~~~~~~ 6e75dc19 fmul v25.2d, v0.2d, v21.2d # v25: 0x00000000000000000000000000000000 -0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[2] +0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[1] # v10: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 2e30df07 fmul v7.2s, v24.2s, v16.2s # v7: 0x00000000000000000000000000000000 @@ -9901,7 +9901,7 @@ # v5: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 4f88906b fmul v11.4s, v3.4s, v8.s[0] # v11: 0x7fc000007fc000007fc000007fffffff -0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[2] +0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[1] # v28: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 7faf92b9 fmulx s25, s21, v15.s[1] # v25: 0x00000000000000000000000000000000 diff --git a/test/test-trace-reference/log-all-colour b/test/test-trace-reference/log-all-colour index 12e5bc26..2161e011 100644 --- a/test/test-trace-reference/log-all-colour +++ b/test/test-trace-reference/log-all-colour @@ -9843,7 +9843,7 @@ #  v0: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 6eb0f919 fminv s25, v8.4s #  v25: 0x0000000000000000000000007fc00000 -0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[2] +0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[1] #  v23: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 5f8711f7 fmla s23, s15, v7.s[0] #  v23: 0x00000000000000000000000000000000 @@ -9885,13 +9885,13 @@ #  v28: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 9eae0052 fmov x18, v2.D[1] #  x18: 0x0000000000000000 -0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[2] +0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[1] #  v12: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 5faf983e fmul s30, s1, v15.s[3] #  v30: 0x000000000000000000000000ffffffff 0x~~~~~~~~~~~~~~~~ 6e75dc19 fmul v25.2d, v0.2d, v21.2d #  v25: 0x00000000000000000000000000000000 -0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[2] +0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[1] #  v10: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 2e30df07 fmul v7.2s, v24.2s, v16.2s #  v7: 0x00000000000000000000000000000000 @@ -9901,7 +9901,7 @@ #  v5: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 4f88906b fmul v11.4s, v3.4s, v8.s[0] #  v11: 0x7fc000007fc000007fc000007fffffff -0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[2] +0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[1] #  v28: 0x00000000000000000000000000000000 0x~~~~~~~~~~~~~~~~ 7faf92b9 fmulx s25, s21, v15.s[1] #  v25: 0x00000000000000000000000000000000 diff --git a/test/test-trace-reference/log-cpufeatures b/test/test-trace-reference/log-cpufeatures index 804c06f5..ccc398f1 100644 --- a/test/test-trace-reference/log-cpufeatures +++ b/test/test-trace-reference/log-cpufeatures @@ -2292,7 +2292,7 @@ 0x~~~~~~~~~~~~~~~~ 2ea9f6bd fminp v29.2s, v21.2s, v9.2s // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 6eb5f700 fminp v0.4s, v24.4s, v21.4s // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 6eb0f919 fminv s25, v8.4s // Needs: FP, NEON -0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[2] // Needs: FP, NEON +0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[1] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 5f8711f7 fmla s23, s15, v7.s[0] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 4e66cd71 fmla v17.2d, v11.2d, v6.2d // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 4fcb13de fmla v30.2d, v30.2d, v11.d[0] // Needs: FP, NEON @@ -2313,15 +2313,15 @@ 0x~~~~~~~~~~~~~~~~ 4f04f69f fmov v31.4s, #0x94 (-5.0000) // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 9eaf033c fmov v28.D[1], x25 // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 9eae0052 fmov x18, v2.D[1] // Needs: FP, NEON -0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[2] // Needs: FP, NEON +0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[1] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 5faf983e fmul s30, s1, v15.s[3] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 6e75dc19 fmul v25.2d, v0.2d, v21.2d // Needs: FP, NEON -0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[2] // Needs: FP, NEON +0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[1] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 2e30df07 fmul v7.2s, v24.2s, v16.2s // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 0f849a01 fmul v1.2s, v16.2s, v4.s[2] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 6e39df85 fmul v5.4s, v28.4s, v25.4s // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 4f88906b fmul v11.4s, v3.4s, v8.s[0] // Needs: FP, NEON -0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[2] // Needs: FP, NEON +0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[1] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 7faf92b9 fmulx s25, s21, v15.s[1] // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 4e68df9f fmulx v31.2d, v28.2d, v8.2d // Needs: FP, NEON 0x~~~~~~~~~~~~~~~~ 6fc692a3 fmulx v3.2d, v21.2d, v6.d[0] // Needs: FP, NEON diff --git a/test/test-trace-reference/log-cpufeatures-colour b/test/test-trace-reference/log-cpufeatures-colour index 58f04790..afbb57b5 100644 --- a/test/test-trace-reference/log-cpufeatures-colour +++ b/test/test-trace-reference/log-cpufeatures-colour @@ -2292,7 +2292,7 @@ 0x~~~~~~~~~~~~~~~~ 2ea9f6bd fminp v29.2s, v21.2s, v9.2s FP, NEON 0x~~~~~~~~~~~~~~~~ 6eb5f700 fminp v0.4s, v24.4s, v21.4s FP, NEON 0x~~~~~~~~~~~~~~~~ 6eb0f919 fminv s25, v8.4s FP, NEON -0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[2] FP, NEON +0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[1] FP, NEON 0x~~~~~~~~~~~~~~~~ 5f8711f7 fmla s23, s15, v7.s[0] FP, NEON 0x~~~~~~~~~~~~~~~~ 4e66cd71 fmla v17.2d, v11.2d, v6.2d FP, NEON 0x~~~~~~~~~~~~~~~~ 4fcb13de fmla v30.2d, v30.2d, v11.d[0] FP, NEON @@ -2313,15 +2313,15 @@ 0x~~~~~~~~~~~~~~~~ 4f04f69f fmov v31.4s, #0x94 (-5.0000) FP, NEON 0x~~~~~~~~~~~~~~~~ 9eaf033c fmov v28.D[1], x25 FP, NEON 0x~~~~~~~~~~~~~~~~ 9eae0052 fmov x18, v2.D[1] FP, NEON -0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[2] FP, NEON +0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[1] FP, NEON 0x~~~~~~~~~~~~~~~~ 5faf983e fmul s30, s1, v15.s[3] FP, NEON 0x~~~~~~~~~~~~~~~~ 6e75dc19 fmul v25.2d, v0.2d, v21.2d FP, NEON -0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[2] FP, NEON +0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[1] FP, NEON 0x~~~~~~~~~~~~~~~~ 2e30df07 fmul v7.2s, v24.2s, v16.2s FP, NEON 0x~~~~~~~~~~~~~~~~ 0f849a01 fmul v1.2s, v16.2s, v4.s[2] FP, NEON 0x~~~~~~~~~~~~~~~~ 6e39df85 fmul v5.4s, v28.4s, v25.4s FP, NEON 0x~~~~~~~~~~~~~~~~ 4f88906b fmul v11.4s, v3.4s, v8.s[0] FP, NEON -0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[2] FP, NEON +0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[1] FP, NEON 0x~~~~~~~~~~~~~~~~ 7faf92b9 fmulx s25, s21, v15.s[1] FP, NEON 0x~~~~~~~~~~~~~~~~ 4e68df9f fmulx v31.2d, v28.2d, v8.2d FP, NEON 0x~~~~~~~~~~~~~~~~ 6fc692a3 fmulx v3.2d, v21.2d, v6.d[0] FP, NEON diff --git a/test/test-trace-reference/log-cpufeatures-custom b/test/test-trace-reference/log-cpufeatures-custom index 1e572f28..264d5316 100644 --- a/test/test-trace-reference/log-cpufeatures-custom +++ b/test/test-trace-reference/log-cpufeatures-custom @@ -2292,7 +2292,7 @@ 0x~~~~~~~~~~~~~~~~ 2ea9f6bd fminp v29.2s, v21.2s, v9.2s ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 6eb5f700 fminp v0.4s, v24.4s, v21.4s ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 6eb0f919 fminv s25, v8.4s ### {FP, NEON} ### -0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[2] ### {FP, NEON} ### +0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[1] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 5f8711f7 fmla s23, s15, v7.s[0] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 4e66cd71 fmla v17.2d, v11.2d, v6.2d ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 4fcb13de fmla v30.2d, v30.2d, v11.d[0] ### {FP, NEON} ### @@ -2313,15 +2313,15 @@ 0x~~~~~~~~~~~~~~~~ 4f04f69f fmov v31.4s, #0x94 (-5.0000) ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 9eaf033c fmov v28.D[1], x25 ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 9eae0052 fmov x18, v2.D[1] ### {FP, NEON} ### -0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[2] ### {FP, NEON} ### +0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[1] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 5faf983e fmul s30, s1, v15.s[3] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 6e75dc19 fmul v25.2d, v0.2d, v21.2d ### {FP, NEON} ### -0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[2] ### {FP, NEON} ### +0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[1] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 2e30df07 fmul v7.2s, v24.2s, v16.2s ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 0f849a01 fmul v1.2s, v16.2s, v4.s[2] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 6e39df85 fmul v5.4s, v28.4s, v25.4s ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 4f88906b fmul v11.4s, v3.4s, v8.s[0] ### {FP, NEON} ### -0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[2] ### {FP, NEON} ### +0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[1] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 7faf92b9 fmulx s25, s21, v15.s[1] ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 4e68df9f fmulx v31.2d, v28.2d, v8.2d ### {FP, NEON} ### 0x~~~~~~~~~~~~~~~~ 6fc692a3 fmulx v3.2d, v21.2d, v6.d[0] ### {FP, NEON} ### diff --git a/test/test-trace-reference/log-disasm b/test/test-trace-reference/log-disasm index 583328a3..535f699c 100644 --- a/test/test-trace-reference/log-disasm +++ b/test/test-trace-reference/log-disasm @@ -2293,7 +2293,7 @@ 0x~~~~~~~~~~~~~~~~ 2ea9f6bd fminp v29.2s, v21.2s, v9.2s 0x~~~~~~~~~~~~~~~~ 6eb5f700 fminp v0.4s, v24.4s, v21.4s 0x~~~~~~~~~~~~~~~~ 6eb0f919 fminv s25, v8.4s -0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[2] +0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[1] 0x~~~~~~~~~~~~~~~~ 5f8711f7 fmla s23, s15, v7.s[0] 0x~~~~~~~~~~~~~~~~ 4e66cd71 fmla v17.2d, v11.2d, v6.2d 0x~~~~~~~~~~~~~~~~ 4fcb13de fmla v30.2d, v30.2d, v11.d[0] @@ -2314,15 +2314,15 @@ 0x~~~~~~~~~~~~~~~~ 4f04f69f fmov v31.4s, #0x94 (-5.0000) 0x~~~~~~~~~~~~~~~~ 9eaf033c fmov v28.D[1], x25 0x~~~~~~~~~~~~~~~~ 9eae0052 fmov x18, v2.D[1] -0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[2] +0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[1] 0x~~~~~~~~~~~~~~~~ 5faf983e fmul s30, s1, v15.s[3] 0x~~~~~~~~~~~~~~~~ 6e75dc19 fmul v25.2d, v0.2d, v21.2d -0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[2] +0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[1] 0x~~~~~~~~~~~~~~~~ 2e30df07 fmul v7.2s, v24.2s, v16.2s 0x~~~~~~~~~~~~~~~~ 0f849a01 fmul v1.2s, v16.2s, v4.s[2] 0x~~~~~~~~~~~~~~~~ 6e39df85 fmul v5.4s, v28.4s, v25.4s 0x~~~~~~~~~~~~~~~~ 4f88906b fmul v11.4s, v3.4s, v8.s[0] -0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[2] +0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[1] 0x~~~~~~~~~~~~~~~~ 7faf92b9 fmulx s25, s21, v15.s[1] 0x~~~~~~~~~~~~~~~~ 4e68df9f fmulx v31.2d, v28.2d, v8.2d 0x~~~~~~~~~~~~~~~~ 6fc692a3 fmulx v3.2d, v21.2d, v6.d[0] diff --git a/test/test-trace-reference/log-disasm-colour b/test/test-trace-reference/log-disasm-colour index 583328a3..535f699c 100644 --- a/test/test-trace-reference/log-disasm-colour +++ b/test/test-trace-reference/log-disasm-colour @@ -2293,7 +2293,7 @@ 0x~~~~~~~~~~~~~~~~ 2ea9f6bd fminp v29.2s, v21.2s, v9.2s 0x~~~~~~~~~~~~~~~~ 6eb5f700 fminp v0.4s, v24.4s, v21.4s 0x~~~~~~~~~~~~~~~~ 6eb0f919 fminv s25, v8.4s -0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[2] +0x~~~~~~~~~~~~~~~~ 5fc91817 fmla d23, d0, v9.d[1] 0x~~~~~~~~~~~~~~~~ 5f8711f7 fmla s23, s15, v7.s[0] 0x~~~~~~~~~~~~~~~~ 4e66cd71 fmla v17.2d, v11.2d, v6.2d 0x~~~~~~~~~~~~~~~~ 4fcb13de fmla v30.2d, v30.2d, v11.d[0] @@ -2314,15 +2314,15 @@ 0x~~~~~~~~~~~~~~~~ 4f04f69f fmov v31.4s, #0x94 (-5.0000) 0x~~~~~~~~~~~~~~~~ 9eaf033c fmov v28.D[1], x25 0x~~~~~~~~~~~~~~~~ 9eae0052 fmov x18, v2.D[1] -0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[2] +0x~~~~~~~~~~~~~~~~ 5fc1988c fmul d12, d4, v1.d[1] 0x~~~~~~~~~~~~~~~~ 5faf983e fmul s30, s1, v15.s[3] 0x~~~~~~~~~~~~~~~~ 6e75dc19 fmul v25.2d, v0.2d, v21.2d -0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[2] +0x~~~~~~~~~~~~~~~~ 4fca9b0a fmul v10.2d, v24.2d, v10.d[1] 0x~~~~~~~~~~~~~~~~ 2e30df07 fmul v7.2s, v24.2s, v16.2s 0x~~~~~~~~~~~~~~~~ 0f849a01 fmul v1.2s, v16.2s, v4.s[2] 0x~~~~~~~~~~~~~~~~ 6e39df85 fmul v5.4s, v28.4s, v25.4s 0x~~~~~~~~~~~~~~~~ 4f88906b fmul v11.4s, v3.4s, v8.s[0] -0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[2] +0x~~~~~~~~~~~~~~~~ 7fc3993c fmulx d28, d9, v3.d[1] 0x~~~~~~~~~~~~~~~~ 7faf92b9 fmulx s25, s21, v15.s[1] 0x~~~~~~~~~~~~~~~~ 4e68df9f fmulx v31.2d, v28.2d, v8.2d 0x~~~~~~~~~~~~~~~~ 6fc692a3 fmulx v3.2d, v21.2d, v6.d[0]