diff options
author | Song Gao <gaosong@loongson.cn> | 2022-07-16 16:54:25 +0800 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2022-07-19 22:54:56 +0530 |
commit | 500cd33abb5f0eb6303e35ccd808143298c3aba0 (patch) | |
tree | dbbe0f5c508c999ec2f39e67e06ff926f38e4fe5 /tests | |
parent | 65cb15f4d64678900e48375ee360cc6cf577b99f (diff) | |
download | qemu-500cd33abb5f0eb6303e35ccd808143298c3aba0.zip qemu-500cd33abb5f0eb6303e35ccd808143298c3aba0.tar.gz qemu-500cd33abb5f0eb6303e35ccd808143298c3aba0.tar.bz2 |
tests/tcg/loongarch64: Add fp comparison instructions test
Choose some instructions to test:
- FCMP.cond.S
- cond: ceq clt cle cne seq slt sle sne
Signed-off-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20220716085426.3098060-8-gaosong@loongson.cn>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/tcg/loongarch64/Makefile.target | 1 | ||||
-rw-r--r-- | tests/tcg/loongarch64/test_fpcom.c | 37 |
2 files changed, 38 insertions, 0 deletions
diff --git a/tests/tcg/loongarch64/Makefile.target b/tests/tcg/loongarch64/Makefile.target index 59d5647..b320d9f 100644 --- a/tests/tcg/loongarch64/Makefile.target +++ b/tests/tcg/loongarch64/Makefile.target @@ -13,5 +13,6 @@ LDFLAGS+=-lm LOONGARCH64_TESTS = test_bit LOONGARCH64_TESTS += test_div LOONGARCH64_TESTS += test_fclass +LOONGARCH64_TESTS += test_fpcom TESTS += $(LOONGARCH64_TESTS) diff --git a/tests/tcg/loongarch64/test_fpcom.c b/tests/tcg/loongarch64/test_fpcom.c new file mode 100644 index 0000000..9e81f76 --- /dev/null +++ b/tests/tcg/loongarch64/test_fpcom.c @@ -0,0 +1,37 @@ +#include <assert.h> + +#define TEST_COMP(N) \ +void test_##N(float fj, float fk) \ +{ \ + int rd = 0; \ + \ + asm volatile("fcmp."#N".s $fcc6,%1,%2\n" \ + "movcf2gr %0, $fcc6\n" \ + : "=r"(rd) \ + : "f"(fj), "f"(fk) \ + : ); \ + assert(rd == 1); \ +} + +TEST_COMP(ceq) +TEST_COMP(clt) +TEST_COMP(cle) +TEST_COMP(cne) +TEST_COMP(seq) +TEST_COMP(slt) +TEST_COMP(sle) +TEST_COMP(sne) + +int main() +{ + test_ceq(0xff700102, 0xff700102); + test_clt(0x00730007, 0xff730007); + test_cle(0xff70130a, 0xff70130b); + test_cne(0x1238acde, 0xff71111f); + test_seq(0xff766618, 0xff766619); + test_slt(0xff78881c, 0xff78901d); + test_sle(0xff780b22, 0xff790b22); + test_sne(0xff7bcd25, 0xff7a26cf); + + return 0; +} |