mirror of https://gitee.com/openkylin/qemu.git
112 lines
1.6 KiB
ArmAsm
112 lines
1.6 KiB
ArmAsm
#include "macros.inc"
|
|
|
|
test_suite sar
|
|
|
|
.macro test_sar prefix, imm
|
|
\prefix\()_set \imm
|
|
\prefix\()_ver \imm
|
|
.endm
|
|
|
|
.macro tests_sar prefix
|
|
test_sar \prefix, 0
|
|
test_sar \prefix, 1
|
|
test_sar \prefix, 2
|
|
test_sar \prefix, 3
|
|
test_sar \prefix, 0x1f
|
|
test_sar \prefix, 0x20
|
|
test_sar \prefix, 0x3f
|
|
test_sar \prefix, 0x40
|
|
test_sar \prefix, 0xfffffffe
|
|
.endm
|
|
|
|
.macro sar_set imm
|
|
movi a2, \imm
|
|
wsr a2, sar
|
|
.endm
|
|
|
|
.macro sar_ver imm
|
|
rsr a3, sar
|
|
movi a2, \imm & 0x3f
|
|
assert eq, a2, a3
|
|
.endm
|
|
|
|
test sar
|
|
tests_sar sar
|
|
test_end
|
|
|
|
.macro ssr_set imm
|
|
movi a2, \imm
|
|
ssr a2
|
|
.endm
|
|
|
|
.macro ssr_ver imm
|
|
rsr a3, sar
|
|
movi a2, \imm & 0x1f
|
|
assert eq, a2, a3
|
|
.endm
|
|
|
|
test ssr
|
|
tests_sar ssr
|
|
test_end
|
|
|
|
.macro ssl_set imm
|
|
movi a2, \imm
|
|
ssl a2
|
|
.endm
|
|
|
|
.macro ssl_ver imm
|
|
rsr a3, sar
|
|
movi a2, 32 - (\imm & 0x1f)
|
|
assert eq, a2, a3
|
|
.endm
|
|
|
|
test ssl
|
|
tests_sar ssl
|
|
test_end
|
|
|
|
.macro ssa8l_set imm
|
|
movi a2, \imm
|
|
ssa8l a2
|
|
.endm
|
|
|
|
.macro ssa8l_ver imm
|
|
rsr a3, sar
|
|
movi a2, (\imm & 0x3) << 3
|
|
assert eq, a2, a3
|
|
.endm
|
|
|
|
test ssa8l
|
|
tests_sar ssa8l
|
|
test_end
|
|
|
|
.macro ssa8b_set imm
|
|
movi a2, \imm
|
|
ssa8b a2
|
|
.endm
|
|
|
|
.macro ssa8b_ver imm
|
|
rsr a3, sar
|
|
movi a2, 32 - ((\imm & 0x3) << 3)
|
|
assert eq, a2, a3
|
|
.endm
|
|
|
|
test ssa8b
|
|
tests_sar ssa8b
|
|
test_end
|
|
|
|
.macro ssai_set imm
|
|
ssai \imm & 0x1f
|
|
.endm
|
|
|
|
.macro ssai_ver imm
|
|
rsr a3, sar
|
|
movi a2, \imm & 0x1f
|
|
assert eq, a2, a3
|
|
.endm
|
|
|
|
test ssai
|
|
tests_sar ssai
|
|
test_end
|
|
|
|
test_suite_end
|