| .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 |