From 4a6b62c4e28f60f2c551ca1b780f9c7773ac5069 Mon Sep 17 00:00:00 2001 From: TatWai Chong Date: Mon, 14 Jan 2019 15:50:40 -0800 Subject: Make Fmov(Register, VRegister, index) accept index = 0. fmov only support index = 1 in "fmov , .D[index]" and "fmov .D[index], " encoding. In case of index = 0, MacroAssembler should transfer fmov 64-bit value between vector element and general-purpose register to "mov .D[0]" and "mov D[0], " respectively. Change-Id: I5309f0376584e2806f2ee6e8871743d1b31e226f --- test/aarch64/test-assembler-aarch64.cc | 5 +++++ test/aarch64/test-disasm-aarch64.cc | 5 +++++ 2 files changed, 10 insertions(+) (limited to 'test/aarch64') diff --git a/test/aarch64/test-assembler-aarch64.cc b/test/aarch64/test-assembler-aarch64.cc index 20f4057f..5354d17b 100644 --- a/test/aarch64/test-assembler-aarch64.cc +++ b/test/aarch64/test-assembler-aarch64.cc @@ -10782,6 +10782,9 @@ TEST(fmov_reg) { __ Fmov(d0, 0.0); __ Fmov(v0.D(), 1, x1); __ Fmov(x2, v0.D(), 1); + __ Fmov(v3.D(), 1, x4); + __ Fmov(v3.D(), 0, x1); + __ Fmov(x5, v1.D(), 0); END(); #ifdef VIXL_INCLUDE_SIMULATOR_AARCH64 @@ -10801,6 +10804,8 @@ TEST(fmov_reg) { ASSERT_EQUAL_FP32(RawbitsToFloat(0x89abcdef), s6); ASSERT_EQUAL_128(DoubleToRawbits(-13.0), 0x0000000000000000, q0); ASSERT_EQUAL_64(DoubleToRawbits(-13.0), x2); + ASSERT_EQUAL_128(0x0000000000006400, DoubleToRawbits(-13.0), q3); + ASSERT_EQUAL_64(DoubleToRawbits(-13.0), x5); #endif TEARDOWN(); diff --git a/test/aarch64/test-disasm-aarch64.cc b/test/aarch64/test-disasm-aarch64.cc index 2dfedfc6..61031829 100644 --- a/test/aarch64/test-disasm-aarch64.cc +++ b/test/aarch64/test-disasm-aarch64.cc @@ -6377,6 +6377,11 @@ TEST(neon_modimm) { COMPARE_MACRO(Fmov(v0.V4H(), Float16(-5.0)), "fmov v0.4h, #0x94 (-5.0000)"); COMPARE_MACRO(Fmov(v31.V8H(), Float16(29.0)), "fmov v31.8h, #0x3d (29.0000)"); + COMPARE_MACRO(Fmov(v5.D(), 1, x14), "fmov v5.D[1], x14"); + COMPARE_MACRO(Fmov(x14, v5.D(), 1), "fmov x14, v5.D[1]"); + COMPARE_MACRO(Fmov(v3.D(), 0, x21), "mov v3.d[0], x21"); + COMPARE_MACRO(Fmov(x21, v3.D(), 0), "mov x21, v3.d[0]"); + // An unallocated form of fmov. COMPARE(dci(0x2f07ffff), "unallocated (Unallocated)"); -- cgit v1.2.3