diff options
Diffstat (limited to 'test/aarch32/test-assembler-aarch32.cc')
-rw-r--r-- | test/aarch32/test-assembler-aarch32.cc | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/test/aarch32/test-assembler-aarch32.cc b/test/aarch32/test-assembler-aarch32.cc index 7ebd9022..23881f77 100644 --- a/test/aarch32/test-assembler-aarch32.cc +++ b/test/aarch32/test-assembler-aarch32.cc @@ -2835,6 +2835,126 @@ TEST(msr_i) { } +TEST(vcmp_s) { + SETUP(); + + START(); + + __ Vmov(s0, 1.0); + __ Vmov(s1, 2.0); + __ Vmov(s2, 0.0); + + __ Vcmp(F32, s1, s0); + __ Vmrs(RegisterOrAPSR_nzcv(r0.GetCode()), FPSCR); + + __ Vcmp(F32, s0, 0.0f); + __ Vmrs(RegisterOrAPSR_nzcv(r1.GetCode()), FPSCR); + + __ Vcmp(F32, s2, 0.0f); + __ Vmrs(RegisterOrAPSR_nzcv(r2.GetCode()), FPSCR); + + END(); + + RUN(); + + ASSERT_EQUAL_32(0x20000000, r0); + ASSERT_EQUAL_32(0x80000000, r1); + ASSERT_EQUAL_32(0x60000000, r2); + + TEARDOWN(); +} + + +TEST(vcmp_d) { + SETUP(); + + START(); + + __ Vmov(d0, 1.0); + __ Vmov(d1, 2.0); + __ Vmov(d2, 0.0); + + __ Vcmp(F64, d1, d0); + __ Vmrs(RegisterOrAPSR_nzcv(r0.GetCode()), FPSCR); + + __ Vcmp(F64, d0, 0.0); + __ Vmrs(RegisterOrAPSR_nzcv(r1.GetCode()), FPSCR); + + __ Vcmp(F64, d2, 0.0); + __ Vmrs(RegisterOrAPSR_nzcv(r2.GetCode()), FPSCR); + + END(); + + RUN(); + + ASSERT_EQUAL_32(0x20000000, r0); + ASSERT_EQUAL_32(0x80000000, r1); + ASSERT_EQUAL_32(0x60000000, r2); + + TEARDOWN(); +} + + +TEST(vcmpe_s) { + SETUP(); + + START(); + + __ Vmov(s0, 1.0); + __ Vmov(s1, 2.0); + __ Vmov(s2, 0.0); + + __ Vcmpe(F32, s1, s0); + __ Vmrs(RegisterOrAPSR_nzcv(r0.GetCode()), FPSCR); + + __ Vcmpe(F32, s0, 0.0f); + __ Vmrs(RegisterOrAPSR_nzcv(r1.GetCode()), FPSCR); + + __ Vcmpe(F32, s2, 0.0f); + __ Vmrs(RegisterOrAPSR_nzcv(r2.GetCode()), FPSCR); + + END(); + + RUN(); + + ASSERT_EQUAL_32(0x20000000, r0); + ASSERT_EQUAL_32(0x80000000, r1); + ASSERT_EQUAL_32(0x60000000, r2); + + TEARDOWN(); +} + + +TEST(vcmpe_d) { + SETUP(); + + START(); + + __ Vmov(d0, 1.0); + __ Vmov(d1, 2.0); + __ Vmov(d2, 0.0); + + __ Vcmpe(F64, d1, d0); + __ Vmrs(RegisterOrAPSR_nzcv(r0.GetCode()), FPSCR); + + __ Vcmpe(F64, d0, 0.0); + __ Vmrs(RegisterOrAPSR_nzcv(r1.GetCode()), FPSCR); + + __ Vcmpe(F64, d2, 0.0); + __ Vmrs(RegisterOrAPSR_nzcv(r2.GetCode()), FPSCR); + + END(); + + RUN(); + + ASSERT_EQUAL_32(0x20000000, r0); + ASSERT_EQUAL_32(0x80000000, r1); + ASSERT_EQUAL_32(0x60000000, r2); + + TEARDOWN(); +} + + TEST(vmrs_vmsr) { SETUP(); |