summaryrefslogtreecommitdiffstats
path: root/qemu/tests/tcg/xtensa/test_windowed.S
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/tests/tcg/xtensa/test_windowed.S')
-rw-r--r--qemu/tests/tcg/xtensa/test_windowed.S353
1 files changed, 0 insertions, 353 deletions
diff --git a/qemu/tests/tcg/xtensa/test_windowed.S b/qemu/tests/tcg/xtensa/test_windowed.S
deleted file mode 100644
index d851e8f43..000000000
--- a/qemu/tests/tcg/xtensa/test_windowed.S
+++ /dev/null
@@ -1,353 +0,0 @@
-#include "macros.inc"
-
-test_suite windowed
-
-.altmacro
-
-.macro reset_window start
- movi a2, 0xff
- wsr a2, windowstart
- rsync
- movi a2, 0
- wsr a2, windowbase
- rsync
- movi a2, \start
- wsr a2, windowstart
- rsync
-.endm
-
-.macro overflow_test shift, window, probe_ok, probe_ex
- set_vector window_overflow_4, 0
- set_vector window_overflow_8, 0
- set_vector window_overflow_12, 0
-
- movi a2, 1 | (((1 << ((\window) / 4)) | 1) << ((\shift) / 4))
- wsr a2, windowstart
- reset_ps
-
- mov a2, a\probe_ok
- set_vector window_overflow_\window, 10f
-1:
- mov a2, a\probe_ex
- test_fail
-10:
- rsr a2, epc1
- movi a3, 1b
- assert eq, a2, a3
- movi a2, 2f
- wsr a2, epc1
-
- rsr a2, windowbase
- movi a3, (\shift) / 4
- assert eq, a2, a3
- rsr a2, ps
- movi a3, 0x4001f
- assert eq, a2, a3
- rfwo
- test_fail
-2:
- rsr a2, windowbase
- assert eqi, a2, 0
- rsr a2, windowstart
- movi a3, 1 | ((1 << ((\window) / 4)) << ((\shift) / 4))
- assert eq, a2, a3
- rsr a2, ps
- movi a3, 0x4000f
- assert eq, a2, a3
-.endm
-
-.macro overflow_tests shift, window, probe
- .if \probe < 15
- overflow_test \shift, \window, %((\shift) - 1), \probe
- overflow_tests \shift, \window, %((\probe) + 1)
- .endif
-.endm
-
-.macro all_overflow_tests
- .irp shift, 4, 8, 12
- .irp window, 4, 8, 12
- overflow_tests \shift, \window, \shift
- .endr
- .endr
-.endm
-
-test overflow
- all_overflow_tests
-test_end
-
-
-.macro underflow_test window
- set_vector window_underflow_4, 0
- set_vector window_underflow_8, 0
- set_vector window_underflow_12, 0
-
- set_vector window_underflow_\window, 10f
-
- reset_window 1
- reset_ps
-
- ssai 2
- movi a2, 2f
- slli a2, a2, 2
- movi a3, (\window) / 4
- src a0, a3, a2
-1:
- retw
- test_fail
-10:
- rsr a2, epc1
- movi a3, 1b
- assert eq, a2, a3
- movi a2, 2f
- wsr a2, epc1
-
- rsr a2, ps
- movi a3, 0x4001f
- assert eq, a2, a3
- rsr a2, windowbase
- assert eqi, a2, 8 - ((\window) / 4)
- rsr a2, windowstart
- assert eqi, a2, 1
- rfwu
-2:
- rsr a2, ps
- movi a3, 0x4000f
- assert eq, a2, a3
- rsr a2, windowbase
- assert eqi, a2, 0
- rsr a2, windowstart
- assert bsi, a2, 0
- assert bsi, a2, 8 - ((\window) / 4)
-.endm
-
-test underflow
- set_vector window_overflow_4, 0
- set_vector window_overflow_8, 0
- set_vector window_overflow_12, 0
-
- underflow_test 4
- underflow_test 8
- underflow_test 12
-test_end
-
-
-.macro retw_test window
- reset_window %(1 | (1 << (8 - (\window) / 4)))
- reset_ps
-
- ssai 2
- movi a2, 1f
- slli a2, a2, 2
- movi a3, (\window) / 4
- src a0, a3, a2
- retw
- test_fail
-1:
- rsr a2, ps
- movi a3, 0x4000f
- assert eq, a2, a3
- rsr a2, windowbase
- assert eqi, a2, 8 - ((\window) / 4)
- rsr a2, windowstart
- assert bci, a2, 0
- assert bsi, a2, 8 - ((\window) / 4)
-.endm
-
-test retw
- set_vector window_underflow_4, 0
- set_vector window_underflow_8, 0
- set_vector window_underflow_12, 0
-
- retw_test 4
- retw_test 8
- retw_test 12
-test_end
-
-test movsp
- set_vector kernel, 2f
-
- reset_window 1
- reset_ps
-1:
- movsp a2, a3
- test_fail
-2:
- rsr a2, exccause
- assert eqi, a2, 5
- rsr a2, epc1
- movi a3, 1b
- assert eq, a2, a3
-
- set_vector kernel, 0
-
- reset_window 0x81
- reset_ps
-
- movsp a2, a3
-test_end
-
-test rotw
- reset_window 0x4b
- reset_ps
-
- movi a3, 0x10
-
- rotw 1
- rsr a2, windowbase
- assert eqi, a2, 1
- movi a3, 0x11
- movi a7, 0x12
-
- rotw 2
- rsr a2, windowbase
- assert eqi, a2, 3
- movi a3, 0x13
- movi a7, 0x14
- movi a11, 0x15
-
- rotw 3
- rsr a2, windowbase
- assert eqi, a2, 6
- movi a3, 0x16
- movi a7, 0x17
-
- movi a2, 0x44
- wsr a2, windowstart
- rsync
-
- movi a2, 0x10
- assert eq, a2, a11
- movi a11, 0x18
- movi a2, 0x11
- assert eq, a2, a15
- movi a15, 0x19
-
- rotw 4
- movi a2, 0x12
- assert eq, a2, a3
- movi a2, 0x13
- assert eq, a2, a7
- movi a2, 0x14
- assert eq, a2, a11
- movi a2, 0x15
- assert eq, a2, a15
-
- movi a2, 0x5
- wsr a2, windowstart
- rsync
-
- rotw -2
- movi a2, 0x18
- assert eq, a2, a3
- movi a2, 0x19
- assert eq, a2, a7
-test_end
-
-.macro callw_test window
- call\window 2f
-1:
- test_fail
- .align 4
-2:
- rsr a2, windowbase
- assert eqi, a2, 0
- rsr a2, ps
- movi a3, 0x4000f | ((\window) << 14)
- assert eq, a2, a3
- movi a2, 1b
- slli a2, a2, 2
- ssai 2
- movi a3, (\window) / 4
- src a2, a3, a2
- assert eq, a2, a\window
-.endm
-
-test callw
- reset_window 0x1
- reset_ps
-
- callw_test 4
- callw_test 8
- callw_test 12
-test_end
-
-
-.macro entry_test window
- reset_window 0x1
- reset_ps
- movi a2, 0x4000f | ((\window) << 14)
- wsr a2, ps
- isync
- movi a3, 0x12345678
- j 1f
- .align 4
-1:
- entry a3, 0x5678
- movi a2, 0x12340000
- assert eq, a2, a3
- rsr a2, windowbase
- assert eqi, a2, (\window) / 4
- rsr a2, windowstart
- movi a3, 1 | (1 << ((\window) / 4))
- assert eq, a2, a3
- rotw -(\window) / 4
-.endm
-
-test entry
- entry_test 4
- entry_test 8
- entry_test 12
-test_end
-
-.macro entry_overflow_test window, free, next_window
- set_vector window_overflow_4, 0
- set_vector window_overflow_8, 0
- set_vector window_overflow_12, 0
- set_vector window_overflow_\next_window, 10f
-
- movi a2, \window
- movi a2, \free
- movi a2, \next_window
- reset_window %(1 | ((1 | (1 << ((\next_window) / 4))) << ((\free) / 4)))
- reset_ps
- movi a2, 0x4000f | ((\window) << 14)
- wsr a2, ps
- isync
- movi a3, 0x12345678
- j 1f
- .align 4
-1:
- entry a3, 0x5678
- test_fail
- .align 4
-10:
- rsr a2, epc1
- movi a3, 1b
- assert eq, a2, a3
- movi a2, 2f
- wsr a2, epc1
-
- rsr a2, windowbase
- movi a3, (\free) / 4
- assert eq, a2, a3
- rfwo
-2:
-.endm
-
-.macro all_entry_overflow_tests
- .irp window, 4, 8, 12
- .irp next_window, 4, 8, 12
- .irp free, 4, 8, 12
- .if \free <= \window
- entry_overflow_test \window, \free, \next_window
- .endif
- .endr
- .endr
- .endr
-.endm
-
-test entry_overflow
- all_entry_overflow_tests
-test_end
-
-test_suite_end