Files
Xenia-Canary/src/xenia/cpu/ppc/testing/instr_stvx.s
2026-02-13 14:49:49 +09:00

41 lines
1.5 KiB
ArmAsm

test_stvx_1:
# Basic 16-byte aligned store
#_ MEMORY_IN 0x0000000010001000 [CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC]
#_ REGISTER_IN r4 0x0000000010001000
#_ REGISTER_IN v3 [01020304, 05060708, 090A0B0C, 0D0E0F10]
li r5, 0
stvx v3, r4, r5
blr
#_ REGISTER_OUT r4 0x0000000010001000
#_ REGISTER_OUT r5 0
#_ REGISTER_OUT v3 [01020304, 05060708, 090A0B0C, 0D0E0F10]
#_ MEMORY_OUT 10001000 0102030405060708090A0B0C0D0E0F10
test_stvx_2:
# Test with offset
#_ MEMORY_IN 0x0000000010001000 [CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC]
#_ MEMORY_IN 0x0000000010001010 [CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC]
#_ REGISTER_IN r4 0x0000000010001000
#_ REGISTER_IN v3 [AABBCCDD, EEFF0011, 22334455, 66778899]
li r5, 16
stvx v3, r4, r5
blr
#_ REGISTER_OUT r4 0x0000000010001000
#_ REGISTER_OUT r5 16
#_ REGISTER_OUT v3 [AABBCCDD, EEFF0011, 22334455, 66778899]
#_ MEMORY_OUT 10001010 AABBCCDDEEFF00112233445566778899
test_stvx_3:
# Test unaligned address (should mask to 16-byte boundary)
#_ MEMORY_IN 0x0000000010001000 [CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CC]
#_ REGISTER_IN r4 0x0000000010001000
#_ REGISTER_IN v3 [11223344, 55667788, 99AABBCC, DDEEFF00]
li r5, 13 # unaligned
stvx v3, r4, r5
blr
#_ REGISTER_OUT r4 0x0000000010001000
#_ REGISTER_OUT r5 13
#_ REGISTER_OUT v3 [11223344, 55667788, 99AABBCC, DDEEFF00]
# Should store to aligned address 0x10001000
#_ MEMORY_OUT 10001000 112233445566778899AABBCCDDEEFF00