tests/tcg/loongarch64: Add pcadd related instructions test
This includes: - PCADDI - PCADDU12I - PCADDU18I - PCALAU12I Signed-off-by: Song Gao <gaosong@loongson.cn> Message-Id: <20220716085426.3098060-9-gaosong@loongson.cn> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
500cd33abb
commit
0c7213dd66
@ -14,5 +14,6 @@ LOONGARCH64_TESTS = test_bit
|
||||
LOONGARCH64_TESTS += test_div
|
||||
LOONGARCH64_TESTS += test_fclass
|
||||
LOONGARCH64_TESTS += test_fpcom
|
||||
LOONGARCH64_TESTS += test_pcadd
|
||||
|
||||
TESTS += $(LOONGARCH64_TESTS)
|
||||
|
38
tests/tcg/loongarch64/test_pcadd.c
Normal file
38
tests/tcg/loongarch64/test_pcadd.c
Normal file
@ -0,0 +1,38 @@
|
||||
#include <assert.h>
|
||||
#include <inttypes.h>
|
||||
#include <string.h>
|
||||
|
||||
#define TEST_PCADDU(N) \
|
||||
void test_##N(int a) \
|
||||
{ \
|
||||
uint64_t rd1 = 0; \
|
||||
uint64_t rd2 = 0; \
|
||||
uint64_t rm, rn; \
|
||||
\
|
||||
asm volatile(""#N" %0, 0x104\n\t" \
|
||||
""#N" %1, 0x12345\n\t" \
|
||||
: "=r"(rd1), "=r"(rd2) \
|
||||
: ); \
|
||||
rm = rd2 - rd1; \
|
||||
if (!strcmp(#N, "pcalau12i")) { \
|
||||
rn = ((0x12345UL - 0x104) << a) & ~0xfff; \
|
||||
} else { \
|
||||
rn = ((0x12345UL - 0x104) << a) + 4; \
|
||||
} \
|
||||
assert(rm == rn); \
|
||||
}
|
||||
|
||||
TEST_PCADDU(pcaddi)
|
||||
TEST_PCADDU(pcaddu12i)
|
||||
TEST_PCADDU(pcaddu18i)
|
||||
TEST_PCADDU(pcalau12i)
|
||||
|
||||
int main()
|
||||
{
|
||||
test_pcaddi(2);
|
||||
test_pcaddu12i(12);
|
||||
test_pcaddu18i(18);
|
||||
test_pcalau12i(12);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user