Index: test/cctest/test-disasm-arm.cc |
diff --git a/test/cctest/test-disasm-arm.cc b/test/cctest/test-disasm-arm.cc |
index 0ac3c5a946e0833aaacf8733551c51f3096bcf18..5ba9a3fce85f17ce97206448fd68226753d72641 100644 |
--- a/test/cctest/test-disasm-arm.cc |
+++ b/test/cctest/test-disasm-arm.cc |
@@ -425,8 +425,22 @@ TEST(Vfp) { |
if (CpuFeatures::IsSupported(VFP3)) { |
CpuFeatures::Scope scope(VFP3); |
+ COMPARE(vmov(d0, r2, r3), |
+ "ec432b10 vmov d0, r2, r3"); |
+ COMPARE(vmov(r2, r3, d0), |
+ "ec532b10 vmov r2, r3, d0"); |
COMPARE(vmov(d0, d1), |
"eeb00b41 vmov.f64 d0, d1"); |
+ COMPARE(vmov(d3, d27), |
+ "eeb03b6b vmov.f64 d3, d27"); |
+ COMPARE(vmov(d18, d7), |
+ "eef02b47 vmov.f64 d18, d7"); |
+ COMPARE(vmov(d18, r2, r3), |
+ "ec432b32 vmov d18, r2, r3"); |
+ COMPARE(vmov(r2, r3, d18), |
+ "ec532b32 vmov r2, r3, d18"); |
+ COMPARE(vmov(d20, d31), |
+ "eef04b6f vmov.f64 d20, d31"); |
COMPARE(vmov(d3, d3, eq), |
"0eb03b43 vmov.f64eq d3, d3"); |
@@ -445,36 +459,59 @@ TEST(Vfp) { |
COMPARE(vabs(d0, d1), |
"eeb00bc1 vabs.f64 d0, d1"); |
+ COMPARE(vabs(d16, d31), |
+ "eef00bef vabs.f64 d16, d31"); |
COMPARE(vabs(d3, d4, mi), |
"4eb03bc4 vabs.f64mi d3, d4"); |
COMPARE(vneg(d0, d1), |
"eeb10b41 vneg.f64 d0, d1"); |
+ COMPARE(vneg(d16, d31), |
+ "eef10b6f vneg.f64 d16, d31"); |
COMPARE(vneg(d3, d4, mi), |
"4eb13b44 vneg.f64mi d3, d4"); |
COMPARE(vadd(d0, d1, d2), |
"ee310b02 vadd.f64 d0, d1, d2"); |
+ COMPARE(vadd(d16, d17, d18), |
+ "ee710ba2 vadd.f64 d16, d17, d18"); |
COMPARE(vadd(d3, d4, d5, mi), |
"4e343b05 vadd.f64mi d3, d4, d5"); |
COMPARE(vsub(d0, d1, d2), |
"ee310b42 vsub.f64 d0, d1, d2"); |
+ COMPARE(vsub(d16, d17, d18), |
+ "ee710be2 vsub.f64 d16, d17, d18"); |
COMPARE(vsub(d3, d4, d5, ne), |
"1e343b45 vsub.f64ne d3, d4, d5"); |
COMPARE(vmul(d2, d1, d0), |
"ee212b00 vmul.f64 d2, d1, d0"); |
+ COMPARE(vmul(d16, d17, d18), |
+ "ee610ba2 vmul.f64 d16, d17, d18"); |
COMPARE(vmul(d6, d4, d5, cc), |
"3e246b05 vmul.f64cc d6, d4, d5"); |
COMPARE(vdiv(d2, d2, d2), |
"ee822b02 vdiv.f64 d2, d2, d2"); |
+ COMPARE(vdiv(d16, d17, d18), |
+ "eec10ba2 vdiv.f64 d16, d17, d18"); |
COMPARE(vdiv(d6, d7, d7, hi), |
"8e876b07 vdiv.f64hi d6, d7, d7"); |
+ COMPARE(vcmp(d0, d1), |
+ "eeb40b41 vcmp.f64 d0, d1"); |
+ COMPARE(vcmp(d16, d17), |
+ "eef40b61 vcmp.f64 d16, d17"); |
+ COMPARE(vcmp(d0, 0.0), |
+ "eeb50b40 vcmp.f64 d0, #0.0"); |
+ COMPARE(vcmp(d16, 0.0), |
+ "eef50b40 vcmp.f64 d16, #0.0"); |
+ |
COMPARE(vsqrt(d0, d0), |
"eeb10bc0 vsqrt.f64 d0, d0"); |
+ COMPARE(vsqrt(d16, d17), |
+ "eef10be1 vsqrt.f64 d16, d17"); |
COMPARE(vsqrt(d2, d3, ne), |
"1eb12bc3 vsqrt.f64ne d2, d3"); |
@@ -483,6 +520,15 @@ TEST(Vfp) { |
COMPARE(vmov(d2, -13.0), |
"eeba2b0a vmov.f64 d2, #-13"); |
+ COMPARE(vmov(d0, 0, r0), |
+ "ee000b10 vmov.32 d0[0], r0"); |
+ COMPARE(vmov(d0, 1, r0), |
+ "ee200b10 vmov.32 d0[1], r0"); |
+ COMPARE(vmov(d31, 0, r7), |
+ "ee0f7b90 vmov.32 d31[0], r7"); |
+ COMPARE(vmov(d31, 1, r7), |
+ "ee2f7b90 vmov.32 d31[1], r7"); |
+ |
COMPARE(vldr(s0, r0, 0), |
"ed900a00 vldr s0, [r0 + 4*0]"); |
COMPARE(vldr(s1, r1, 4), |
@@ -511,12 +557,24 @@ TEST(Vfp) { |
"ed911b01 vldr d1, [r1 + 4*1]"); |
COMPARE(vldr(d15, r10, 1020), |
"ed9afbff vldr d15, [r10 + 4*255]"); |
+ COMPARE(vldr(d25, r0, 0), |
+ "edd09b00 vldr d25, [r0 + 4*0]"); |
+ COMPARE(vldr(d26, r1, 4), |
+ "edd1ab01 vldr d26, [r1 + 4*1]"); |
+ COMPARE(vldr(d31, r10, 1020), |
+ "eddafbff vldr d31, [r10 + 4*255]"); |
COMPARE(vstr(d0, r0, 0), |
"ed800b00 vstr d0, [r0 + 4*0]"); |
COMPARE(vstr(d1, r1, 4), |
"ed811b01 vstr d1, [r1 + 4*1]"); |
COMPARE(vstr(d15, r10, 1020), |
"ed8afbff vstr d15, [r10 + 4*255]"); |
+ COMPARE(vstr(d16, r0, 0), |
+ "edc00b00 vstr d16, [r0 + 4*0]"); |
+ COMPARE(vstr(d17, r1, 4), |
+ "edc11b01 vstr d17, [r1 + 4*1]"); |
+ COMPARE(vstr(d31, r10, 1020), |
+ "edcafbff vstr d31, [r10 + 4*255]"); |
COMPARE(vmsr(r5), |
"eee15a10 vmsr FPSCR, r5"); |
@@ -539,6 +597,14 @@ TEST(Vfp) { |
"ec820b20 vstmia r2, {d0-d15}"); |
COMPARE(vldm(ia, r3, d0, d15), |
"ec930b20 vldmia r3, {d0-d15}"); |
+ COMPARE(vstm(ia, r0, d16, d31), |
+ "ecc00b20 vstmia r0, {d16-d31}"); |
+ COMPARE(vldm(ia, r3, d16, d31), |
+ "ecd30b20 vldmia r3, {d16-d31}"); |
+ COMPARE(vstm(ia, r0, d23, d27), |
+ "ecc07b0a vstmia r0, {d23-d27}"); |
+ COMPARE(vldm(ia, r3, d23, d27), |
+ "ecd37b0a vldmia r3, {d23-d27}"); |
COMPARE(vstm(ia, r4, s1, s3), |
"ecc40a03 vstmia r4, {s1-s3}"); |
COMPARE(vldm(ia, r5, s2, s5), |
@@ -550,8 +616,27 @@ TEST(Vfp) { |
COMPARE(vmla(d2, d1, d0), |
"ee012b00 vmla.f64 d2, d1, d0"); |
+ COMPARE(vmla(d16, d17, d18), |
+ "ee410ba2 vmla.f64 d16, d17, d18"); |
COMPARE(vmla(d6, d4, d5, cc), |
"3e046b05 vmla.f64cc d6, d4, d5"); |
+ |
+ COMPARE(vcvt_u32_f64(s0, d0), |
+ "eebc0bc0 vcvt.u32.f64 s0, d0"); |
+ COMPARE(vcvt_u32_f64(s0, d16), |
+ "eebc0be0 vcvt.u32.f64 s0, d16"); |
+ COMPARE(vcvt_s32_f64(s0, d0), |
+ "eebd0bc0 vcvt.s32.f64 s0, d0"); |
+ COMPARE(vcvt_s32_f64(s0, d16), |
+ "eebd0be0 vcvt.s32.f64 s0, d16"); |
+ COMPARE(vcvt_f64_u32(d0, s1), |
+ "eeb80b60 vcvt.f64.u32 d0, s1"); |
+ COMPARE(vcvt_f64_u32(d16, s1), |
+ "eef80b60 vcvt.f64.u32 d16, s1"); |
+ COMPARE(vcvt_f64_s32(d0, s1), |
+ "eeb80be0 vcvt.f64.s32 d0, s1"); |
+ COMPARE(vcvt_f32_s32(s0, s2), |
+ "eeb80ac1 vcvt.f32.s32 s0, s2"); |
} |
VERIFY_RUN(); |