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