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