This commit is contained in:
Elliot Nunn 2018-05-22 17:44:38 +08:00
parent 0760db7b89
commit 45787c7d0a
11 changed files with 4177 additions and 39 deletions

View File

@ -1885,7 +1885,7 @@ finish_old_world
sync
setup_0x1160
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
lwz r27, 0x0630(r1)
lwz r27, 0x009c(r27)
bl PagingL2PWithoutBATs
@ -1897,7 +1897,7 @@ setup_0x1160
sync
setup_0x1188
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
lwz r27, 0x0630(r1)
lwz r27, 0x00a0(r27)
lis r19, 0x00
@ -1914,7 +1914,7 @@ setup_0x11a0
sync
setup_0x11bc
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
cmplw r27, r19
addi r27, r27, -0x1000
bgt setup_0x11a0
@ -1929,7 +1929,7 @@ setup_0x11bc
sync
setup_0x11f0
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
_log 'Nanokernel replaced. Returning to boot process^n'

View File

@ -19,7 +19,7 @@ ecDataPageFault equ 20 ; ExceptionMemRetried
ecDataWriteViolation equ 21 ; ExceptionMemRetried
ecDataSupAccessViolation equ 22 ; ExceptionMemRetried
ecDataSupWriteViolation equ 23 ; ?
ecUnknown24 equ 24 ; ExceptionMemRetried
ecAlignment equ 24 ; ExceptionMemRetried
@ -1070,7 +1070,7 @@ IntAlignment ; OUTSIDE REFERER
addi r23, r1, KDP.VecBaseMemRetry
bne major_0x03548_0x20
bne ThrowAlignmentException
; DSISR for misaligned X-form instruction:
@ -1087,7 +1087,7 @@ FDP_TableBase equ 0xa00
; Get the FDP and F.O. if we were in MSR_LE mode
lwz r25, KDP.PA_FDP(r1)
bne major_0x03548_0x20
bne ThrowAlignmentException
rlwinm. r21, r27, 17, 30, 31 ; evaluate hi two bits of XO (or 0 for d-form?)
@ -1139,7 +1139,8 @@ FDP_TableBase equ 0xa00
IcbiNextBlock ; msr r14 // ; OUTSIDE REFERER
IcbiNextBlock ; msr r14 //
sync
mtmsr r14
isync
@ -1149,14 +1150,18 @@ IcbiNextBlock ; msr r14 // ; OUTSIDE REFERER
isync
blr
major_0x03548_0x20 ; OUTSIDE REFERER
li r8, 0x00
lis r17, -0x100
ThrowAlignmentException
li r8, 0
lis r17, 0xFF00
mtcr r8
mr r19, r18
rlwimi r17, r27, 7, 31, 31
xori r17, r17, 0x01
li r8, ecUnknown24
rlwimi r17, r27, 7, 31, 31 ; why ~DSISR[6]... those DSISR bytes are reserved?
xori r17, r17, 1
li r8, ecAlignment
b ExceptionMemRetried
@ -1250,14 +1255,18 @@ MemRetryDSI_0x100
beql IntPanicIsland
mfsprg r28, 2
mtlr r28
bne cr7, MemRetryDSI_0x144
bc BO_IF_NOT, 30, MemRetryDSI_0x144
; "Ignore write to ROM", for example
mfspr r28, srr0
addi r28, r28, 0x04
lwz r26, 0x0e90(r1)
addi r28, r28, 4
lwz r26, KDP.NanoKernelInfo + NKNanoKernelInfo.QuietWriteCount(r1)
mtspr srr0, r28
addi r26, r26, 0x01
stw r26, 0x0e90(r1)
b MemRetryDSI_0x19c
addi r26, r26, 1
stw r26, KDP.NanoKernelInfo + NKNanoKernelInfo.QuietWriteCount(r1)
b MemRetryDSI_GracefulExit
MemRetryDSI_0x144
andi. r28, r31, 0x03
@ -1285,7 +1294,7 @@ MemRetryDSI_0x158
mtlr r28
mtspr srr1, r29
MemRetryDSI_0x19c
MemRetryDSI_GracefulExit
mfsprg r1, 1
rlwinm r26, r25, 30, 24, 31
rfi
@ -1296,15 +1305,18 @@ MemRetryDSI_0x1c8
andis. r28, r31, 0x8010
bne MemRetryMachineCheck_0x14c
_Lock PSA.HTABLock, scratch1=r28, scratch2=r31
bl PagingFunc1
_Lock PSA.HTABLock, scratch1=r28, scratch2=r31
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
_AssertAndRelease PSA.HTABLock, scratch=r28
mfsprg r28, 2
mtlr r28
beq MemRetryDSI_0x19c
beq MemRetryDSI_GracefulExit
li r8, ecDataInvalidAddress
bge ExceptionMemRetried
li r8, ecDataPageFault
b ExceptionMemRetried
@ -1337,10 +1349,13 @@ MemRetryMachineCheck ; OUTSIDE REFERER
_log '^n'
mr r8, r28
lwz r1, EWA.PA_KDP(r1)
lwz r27, 0x0694(r1)
subf r28, r19, r27
cmpwi r28, -0x10
blt MemRetryMachineCheck_0x14c
cmpwi r28, 0x10
bgt MemRetryMachineCheck_0x14c
@ -1350,7 +1365,9 @@ MemRetryMachineCheck ; OUTSIDE REFERER
lwz r28, 0x0e98(r1)
addi r28, r28, 0x01
stw r28, 0x0e98(r1)
lwz r29, 0x0698(r1)
li r28, 0x00
stw r28, 0x0000(r29)
mfspr r28, pvr
@ -1394,7 +1411,7 @@ IntISI ; OUTSIDE REFERER
_Lock PSA.HTABLock, scratch1=r28, scratch2=r31
mr r27, r10
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
_AssertAndRelease PSA.HTABLock, scratch=r28
mfsprg r8, 0
bne major_0x039dc
@ -1499,7 +1516,7 @@ PIHDSI ; OUTSIDE REFERER
_Lock PSA.HTABLock, scratch1=r28, scratch2=r31
mfspr r27, dar
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
_AssertAndRelease PSA.HTABLock, scratch=r28
mfsprg r8, 0
bne major_0x039dc

View File

@ -5,7 +5,7 @@ Local_Panic set *
align 5
PagingFunc1 ; OUTSIDE REFERER
GetMeAccessToThisPage ; Page *r27 // success cr0.eq ; OUTSIDE REFERER
mfsprg r29, 0
mflr r28
stw r8, -0x00dc(r29)

View File

@ -940,7 +940,7 @@ print_memory_logical_0x8
print_memory_logical_0x24
mr r27, r16
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
beq print_memory_logical_0x5c
blt print_memory_logical_0x48
_log '..'
@ -974,7 +974,7 @@ print_memory_logical_0x84
print_memory_logical_0xac
mr r27, r16
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
li r8, 0x20
bne print_memory_logical_0xdc
bl PagingL2PWithoutBATs

View File

@ -1868,7 +1868,7 @@ VMLastExportedFunc_0xd7
mr r14, r26
mflr r6
slwi r27, r4, 12
bl PagingFunc1
bl GetMeAccessToThisPage ; Page *r27 // success cr0.eq
bnel Local_Panic
mr r27, r7
mr r29, r8

137
al2.txt Normal file
View File

@ -0,0 +1,137 @@
MRLoad1241
lbz mrScratch, -8(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 8, 0xFF000000
MRLoad241
lhz mrScratch, -7(mrBase)
subi mrCtr, mrCtr, 4
rlwimi mrHigh, mrScratch, 24, 0x00FFFF00
b MRLoad41
MRLoad141
lbz mrScratch, -6(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 24, 0x0000FF00
MRLoad41
lwz mrScratch, -5(mrBase)
subi mrCtr, mrCtr, 8
rlwimi mrHigh, mrScratch, 24, 0x000000FF
rlwimi mrLow, mrScratch, 24, 0xFFFFFF00
b MRLoad1
MRLoad1421
lbz mrScratch, -8(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 8, 0xFF000000
MRLoad421
lwz mrScratch, -7(mrBase)
subi mrCtr, mrCtr, 8
rlwimi mrHigh, mrScratch, 8, 0x00FFFFFF
rlwimi mrLow, mrScratch, 8, 0xFF000000
b MRLoad21
MRLoad1221
lbz mrScratch, -6(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 24, 0x0000FF00
MRLoad221
lhz mrScratch, -5(mrBase)
subi mrCtr, mrCtr, 4
rlwimi mrHigh, mrScratch, 8, 0x000000FF
rlwimi mrLow, mrScratch, 8, 0xFF000000
b MRLoad21
MRLoad121
lbz mrScratch, -4(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrLow, mrScratch, 8, 0xFF000000
MRLoad21
lhz mrScratch, -3(mrBase)
subi mrCtr, mrCtr, 4
rlwimi mrLow, mrScratch, 24, 0x00FFFF00
b MRLoad1
MRLoad11
lbz mrScratch, -2(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrLow, mrScratch, 24, 0x0000FF00
MRLoad1
lbz mrScratch, -1(mrBase)
rlwimi mrLow, mrScratch, 0, 0x000000FF
b MRExecuted
MRLoad242
lhz mrScratch, -8(mrBase)
subi mrCtr, mrCtr, 4
rlwimi mrHigh, mrScratch, 16, 0xFFFF0000
b MRLoad42
MRLoad142
lbz mrScratch, -7(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 16, 0x00FF0000
MRLoad42
lwz mrScratch, -6(mrBase)
subi mrCtr, mrCtr, 8
rlwimi mrHigh, mrScratch, 16, 0x0000FFFF
rlwimi mrLow, mrScratch, 16, 0xFFFF0000
b MRLoad2
MRLoad122
lbz mrScratch, -5(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 0, 0x000000FF
b MRLoad22
MRLoad12
lbz mrScratch, -3(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrLow, mrScratch, 16, 0x00FF0000
b MRLoad2
MRLoad44
lwz mrHigh, -8(mrBase)
subi mrCtr, mrCtr, 8
lwz mrLow, -4(mrBase)
b MRExecuted
MRLoad124
lbz mrScratch, -7(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 16, 0x00FF0000
MRLoad24
lhz mrScratch, -6(mrBase)
subi mrCtr, mrCtr, 4
rlwimi mrHigh, mrScratch, 0, 0x0000FFFF
lwz mrLow, -4(mrBase)
b MRExecuted
MRLoad14
lbz mrScratch, -5(mrBase)
subi mrCtr, mrCtr, 2
rlwimi mrHigh, mrScratch, 0, 0x000000FF
lwz mrLow, -4(mrBase)
b MRExecuted
MRLoad4
bc BO_IF, 23, @atomic
lwz mrLow, -4(mrBase)
b MRExecuted
@atomic
li mrScratch, -4
lwarx mrScratch, mrBase
b MRExecuted
MRLoad8
lwz mrLow, -8(mrBase)
lwz mrHigh, -4(mrBase)
b MRExecuted

View File

@ -151,6 +151,12 @@ MRLoadVector
_bset r11, r11, 6
blr
MRStore1241
srwi mrScratch, mrHigh, 24
stb mrScratch, -8(mrBase)

314
halfwits.s Normal file
View File

@ -0,0 +1,314 @@
FDP_03ec
lbz r23, -0x0008(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 0
FDP_03f8
lhz r23, -0x0007(r19)
subi r17, r17, 4
insrwi r20, r23, 16, 8
b FDP_0414
FDP_0408
lbz r23, -0x0006(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 16
FDP_0414
lwz r23, -0x0005(r19)
subi r17, r17, 8
inslwi r20, r23, 8, 24
insrwi r21, r23, 24, 0
b FDP_0490
FDP_0428
lbz r23, -0x0008(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 0
FDP_0434
lwz r23, -0x0007(r19)
subi r17, r17, 8
inslwi r20, r23, 24, 8
insrwi r21, r23, 8, 0
b FDP_0474
FDP_0448
lbz r23, -0x0006(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 16
FDP_0454
lhz r23, -0x0005(r19)
subi r17, r17, 4
rlwimi r20, r23, 24, 24, 31
insrwi r21, r23, 8, 0
b FDP_0474
FDP_0468
lbz r23, -0x0004(r19)
subi r17, r17, 2
insrwi r21, r23, 8, 0
FDP_0474
lhz r23, -0x0003(r19)
subi r17, r17, 4
insrwi r21, r23, 16, 8
b FDP_0490
FDP_0484
lbz r23, -0x0002(r19)
subi r17, r17, 2
insrwi r21, r23, 8, 16
FDP_0490
lbz r23, -0x0001(r19)
insrwi r21, r23, 8, 24
b FDP_011C
FDP_049c
lhz r23, -0x0008(r19)
subi r17, r17, 4
insrwi r20, r23, 16, 0
b FDP_04B8
FDP_04ac
lbz r23, -0x0007(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 8
FDP_04b8
lwz r23, -0x0006(r19)
subi r17, r17, 8
inslwi r20, r23, 16, 16
insrwi r21, r23, 16, 0
b FDP_0114
FDP_04cc
lbz r23, -0x0005(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 24
b FDP_0108
FDP_04dc
lbz r23, -0x0003(r19)
subi r17, r17, 2
insrwi r21, r23, 8, 8
b FDP_0114
FDP_04ec
lwz r20, -0x0008(r19)
subi r17, r17, 8
lwz r21, -0x0004(r19)
b FDP_011C
FDP_04fc
lbz r23, -0x0007(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 8
FDP_0508
lhz r23, -0x0006(r19)
subi r17, r17, 4
insrwi r20, r23, 16, 16
lwz r21, -0x0004(r19)
b FDP_011C
FDP_051c
lbz r23, -0x0005(r19)
subi r17, r17, 2
insrwi r20, r23, 8, 24
lwz r21, -0x0004(r19)
b FDP_011C
FDP_0530
bso cr5, FDP_053C
lwz r21, -0x0004(r19)
b FDP_011C
FDP_053c
li r23, -4
lwarx r21, r23, r19
b FDP_011C
FDP_0548
lwz r20, -0x0008(r19)
lwz r21, -0x0004(r19)
b FDP_011C
FDP_0554
clrrwi r23, r25, 10
rlwimi r23, r17, 14, 24, 28
addi r23, r23, 9760
mtlr r23
mr r23, r18
oris r11, r11, 0x0200
blr
FDP_0570
srwi r23, r20, 24
stb r23, -0x0008(r19)
subi r17, r17, 2
FDP_057c
srwi r23, r20, 8
sth r23, -0x0007(r19)
subi r17, r17, 4
b FDP_0598
FDP_058c
srwi r23, r20, 8
stb r23, -0x0006(r19)
subi r17, r17, 2
FDP_0598
srwi r23, r21, 8
insrwi r23, r20, 8, 0
stw r23, -0x0005(r19)
subi r17, r17, 8
stb r21, -0x0001(r19)
b FDP_011C
FDP_05b0
srwi r23, r20, 24
stb r23, -0x0008(r19)
subi r17, r17, 2
FDP_05bc
srwi r23, r21, 24
insrwi r23, r20, 24, 0
stw r23, -0x0007(r19)
subi r17, r17, 8
b FDP_05FC
FDP_05d0
srwi r23, r20, 8
stb r23, -0x0006(r19)
subi r17, r17, 2
FDP_05dc
srwi r23, r21, 24
insrwi r23, r20, 8, 16
sth r23, -0x0005(r19)
subi r17, r17, 4
b FDP_05FC
FDP_05f0
srwi r23, r21, 24
stb r23, -0x0004(r19)
subi r17, r17, 2
FDP_05fc
srwi r23, r21, 8
sth r23, -0x0003(r19)
subi r17, r17, 4
stb r21, -0x0001(r19)
b FDP_011C
FDP_0610
srwi r23, r21, 8
stb r23, -0x0002(r19)
subi r17, r17, 2
FDP_061c
stb r21, -0x0001(r19)
b FDP_011C
FDP_0624
srwi r23, r20, 16
sth r23, -0x0008(r19)
subi r17, r17, 4
b FDP_0640
FDP_0634
srwi r23, r20, 16
stb r23, -0x0007(r19)
subi r17, r17, 2
FDP_0640
srwi r23, r21, 16
insrwi r23, r20, 16, 0
stw r23, -0x0006(r19)
subi r17, r17, 8
sth r21, -0x0002(r19)
b FDP_011C
FDP_0658
stb r20, -0x0005(r19)
subi r17, r17, 2
b FDP_00F4
FDP_0664
srwi r23, r21, 16
stb r23, -0x0003(r19)
subi r17, r17, 2
FDP_0670
sth r21, -0x0002(r19)
b FDP_011C
FDP_0678
stw r20, -0x0008(r19)
subi r17, r17, 8
stw r21, -0x0004(r19)
b FDP_011C
FDP_0688
srwi r23, r20, 16
stb r23, -0x0007(r19)
subi r17, r17, 2
FDP_0694
sth r20, -0x0006(r19)
subi r17, r17, 4
stw r21, -0x0004(r19)
b FDP_011C
FDP_06a4
stb r20, -0x0005(r19)
subi r17, r17, 2
stw r21, -0x0004(r19)
b FDP_011C
FDP_06b4
bso cr5, FDP_06C0
stw r21, -0x0004(r19)
b FDP_011C
FDP_06c0
li r23, -4
stwcx. r21, r23, r19
isync
mfcr r23
rlwimi r13, r23, 0, 0, 3
b FDP_011C
FDP_06d8
stw r20, -0x0008(r19)
stw r21, -0x0004(r19)
b FDP_011C
FDP_06e4
clrrwi r23, r25, 10
rlwimi r23, r17, 14, 24, 28
addi r23, r23, 10784
mtlr r23
mr r23, r18
oris r11, r11, 0x0200
blr

104
pdp.py
View File

@ -85,22 +85,35 @@ def list_perms_ending_with(x):
yield from list_perms_ending_with(nextlet + x)
SPECIAL_LOADSTORE_RETURN_PATHS = ['2', '22']
def final_loadstore_list():
def final_load_list():
"""
Big waterfall of loads/stores!
Big waterfall of loads!
"""
the_list = []
for ender in '8421':
for x in list_perms_ending_with(ender):
if x not in SPECIAL_LOADSTORE_RETURN_PATHS:
if x not in ('2','22'):
the_list.append(x)
return list(reversed(the_list))
FINAL_LOADSTORE_LIST = final_loadstore_list()
FINAL_LOAD_LIST = final_load_list()
def final_store_list():
"""
Big waterfall of stores!
"""
the_list = []
for ender in '8421':
for x in list_perms_ending_with(ender):
if x not in []:
the_list.append(x)
return list(reversed(the_list))
FINAL_STORE_LIST = final_store_list()
################################################################
@ -160,7 +173,7 @@ def MRVectorAlignDispatchTable():
def MRAlignLoads():
waterfall = FINAL_LOADSTORE_LIST
waterfall = FINAL_LOAD_LIST
for wi in range(len(waterfall)):
sizes = waterfall[wi]
@ -230,6 +243,81 @@ def MRAlignLoads():
print()
def MRAlignStores():
waterfall = FINAL_STORE_LIST
for wi in range(len(waterfall)):
sizes = waterfall[wi]
label('MRStore' + sizes)
sizes_as_list = [int(x) for x in sizes]
this_size = sizes_as_list[0]
total_size = sum(sizes_as_list)
remain_size = sum(sizes_as_list[1:])
MRAlignLoads()
# PART 1: load a number of bytes equal to the first element in "sizes"
inst = {1: 'stb', 2: 'sth', 4: 'stw', 8: 'no way'}[this_size]
if sizes == '8': # special case
directive('stw', 'mrLow', '-8(mrBase)')
directive('stw', 'mrHigh', '-4(mrBase)')
elif remain_size == 4: # straight store!
directive(inst, 'mrHigh', '-%d(mrBase)' % total_size)
if len(sizes) > 1: directive('subi', 'mrCtr', 'mrCtr', 2 * this_size)
elif sizes == '4': # special case: emulate lwarx if asked
directive('bc', 'BO_IF', 23, '@atomic')
directive('stw', 'mrLow', '-4(mrBase)')
directive('b', 'MRExecuted')
label('@atomic')
directive('li', 'mrScratch', -4)
directive('stwcx.', 'mrScratch', 'mrBase')
directive('isync')
directive('mfcr', 'mrScratch')
directive('rlwimi', 'r13', 'mrScratch', 0, '0xFF000000')
else: # arrange intermediate register then store it
fiddler = 'rlwinm'
for regexponent, regname in [(0,'mrLow'), (4,'mrHigh')]:
thisexponent = remain_size
if regexponent >= thisexponent + this_size: continue
if thisexponent >= regexponent + 4: continue
lshift = (regexponent - thisexponent) * 8
mask = (1 << (8 * this_size)) - 1
directive(fiddler, 'mrScratch', regname, normlshift(lshift), '0x%08X' % mask)
fiddler = 'rlwimi'
directive(inst, 'mrScratch', '-%d(mrBase)' % total_size)
if len(sizes) > 1: directive('subi', 'mrCtr', 'mrCtr', 2 * this_size)
# PART 2: jump somewhere that will do the rest of the loads in "sizes"
if wi + 1 < len(waterfall) and waterfall[wi+1] == sizes[1:] and sizes[1:] != '4': # fall through
# but beware the special case!
pass
elif len(sizes[1:]) == 1: # special case: inline a single store instead of jumping
inst = {1: 'stb', 2: 'sth', 4: 'stw', 8: 'no way'}[remain_size]
directive(inst, 'mrLow', '-%d(mrBase)' % remain_size)
directive('b', 'MRExecuted')
elif remain_size == 0: # finished executing
directive('b', 'MRExecuted')
else:
directive('b', 'MRStore' + sizes[1:])
print()
MRAlignStores()

3320
translation-remaining.s Normal file

File diff suppressed because it is too large Load Diff

256
vector stuff.s Normal file
View File

@ -0,0 +1,256 @@
lvx v0, 0, r23
lvx v1, 0, r23
lvx v2, 0, r23
lvx v3, 0, r23
lvx v4, 0, r23
lvx v5, 0, r23
lvx v6, 0, r23
lvx v7, 0, r23
lvx v8, 0, r23
lvx v9, 0, r23
lvx v10, 0, r23
lvx v11, 0, r23
lvx v12, 0, r23
lvx v13, 0, r23
lvx v14, 0, r23
lvx v15, 0, r23
lvx v16, 0, r23
lvx v17, 0, r23
lvx v18, 0, r23
lvx v19, 0, r23
lvx v20, 0, r23
lvx v21, 0, r23
lvx v22, 0, r23
lvx v23, 0, r23
lvx v24, 0, r23
lvx v25, 0, r23
lvx v26, 0, r23
lvx v27, 0, r23
lvx v28, 0, r23
lvx v29, 0, r23
lvx v30, 0, r23
lvx v31, 0, r23
lvebx v0, 0, r23
lvebx v1, 0, r23
lvebx v2, 0, r23
lvebx v3, 0, r23
lvebx v4, 0, r23
lvebx v5, 0, r23
lvebx v6, 0, r23
lvebx v7, 0, r23
lvebx v8, 0, r23
lvebx v9, 0, r23
lvebx v10, 0, r23
lvebx v11, 0, r23
lvebx v12, 0, r23
lvebx v13, 0, r23
lvebx v14, 0, r23
lvebx v15, 0, r23
lvebx v16, 0, r23
lvebx v17, 0, r23
lvebx v18, 0, r23
lvebx v19, 0, r23
lvebx v20, 0, r23
lvebx v21, 0, r23
lvebx v22, 0, r23
lvebx v23, 0, r23
lvebx v24, 0, r23
lvebx v25, 0, r23
lvebx v26, 0, r23
lvebx v27, 0, r23
lvebx v28, 0, r23
lvebx v29, 0, r23
lvebx v30, 0, r23
lvebx v31, 0, r23
lvehx v0, 0, r23
lvehx v1, 0, r23
lvehx v2, 0, r23
lvehx v3, 0, r23
lvehx v4, 0, r23
lvehx v5, 0, r23
lvehx v6, 0, r23
lvehx v7, 0, r23
lvehx v8, 0, r23
lvehx v9, 0, r23
lvehx v10, 0, r23
lvehx v11, 0, r23
lvehx v12, 0, r23
lvehx v13, 0, r23
lvehx v14, 0, r23
lvehx v15, 0, r23
lvehx v16, 0, r23
lvehx v17, 0, r23
lvehx v18, 0, r23
lvehx v19, 0, r23
lvehx v20, 0, r23
lvehx v21, 0, r23
lvehx v22, 0, r23
lvehx v23, 0, r23
lvehx v24, 0, r23
lvehx v25, 0, r23
lvehx v26, 0, r23
lvehx v27, 0, r23
lvehx v28, 0, r23
lvehx v29, 0, r23
lvehx v30, 0, r23
lvehx v31, 0, r23
lvewx v0, 0, r23
lvewx v1, 0, r23
lvewx v2, 0, r23
lvewx v3, 0, r23
lvewx v4, 0, r23
lvewx v5, 0, r23
lvewx v6, 0, r23
lvewx v7, 0, r23
lvewx v8, 0, r23
lvewx v9, 0, r23
lvewx v10, 0, r23
lvewx v11, 0, r23
lvewx v12, 0, r23
lvewx v13, 0, r23
lvewx v14, 0, r23
lvewx v15, 0, r23
lvewx v16, 0, r23
lvewx v17, 0, r23
lvewx v18, 0, r23
lvewx v19, 0, r23
lvewx v20, 0, r23
lvewx v21, 0, r23
lvewx v22, 0, r23
lvewx v23, 0, r23
lvewx v24, 0, r23
lvewx v25, 0, r23
lvewx v26, 0, r23
lvewx v27, 0, r23
lvewx v28, 0, r23
lvewx v29, 0, r23
lvewx v30, 0, r23
lvewx v31, 0, r23
stvx v0, 0, r23
stvx v1, 0, r23
stvx v2, 0, r23
stvx v3, 0, r23
stvx v4, 0, r23
stvx v5, 0, r23
stvx v6, 0, r23
stvx v7, 0, r23
stvx v8, 0, r23
stvx v9, 0, r23
stvx v10, 0, r23
stvx v11, 0, r23
stvx v12, 0, r23
stvx v13, 0, r23
stvx v14, 0, r23
stvx v15, 0, r23
stvx v16, 0, r23
stvx v17, 0, r23
stvx v18, 0, r23
stvx v19, 0, r23
stvx v20, 0, r23
stvx v21, 0, r23
stvx v22, 0, r23
stvx v23, 0, r23
stvx v24, 0, r23
stvx v25, 0, r23
stvx v26, 0, r23
stvx v27, 0, r23
stvx v28, 0, r23
stvx v29, 0, r23
stvx v30, 0, r23
stvx v31, 0, r23
stvebx v0, 0, r23
stvebx v1, 0, r23
stvebx v2, 0, r23
stvebx v3, 0, r23
stvebx v4, 0, r23
stvebx v5, 0, r23
stvebx v6, 0, r23
stvebx v7, 0, r23
stvebx v8, 0, r23
stvebx v9, 0, r23
stvebx v10, 0, r23
stvebx v11, 0, r23
stvebx v12, 0, r23
stvebx v13, 0, r23
stvebx v14, 0, r23
stvebx v15, 0, r23
stvebx v16, 0, r23
stvebx v17, 0, r23
stvebx v18, 0, r23
stvebx v19, 0, r23
stvebx v20, 0, r23
stvebx v21, 0, r23
stvebx v22, 0, r23
stvebx v23, 0, r23
stvebx v24, 0, r23
stvebx v25, 0, r23
stvebx v26, 0, r23
stvebx v27, 0, r23
stvebx v28, 0, r23
stvebx v29, 0, r23
stvebx v30, 0, r23
stvebx v31, 0, r23
stvehx v0, 0, r23
stvehx v1, 0, r23
stvehx v2, 0, r23
stvehx v3, 0, r23
stvehx v4, 0, r23
stvehx v5, 0, r23
stvehx v6, 0, r23
stvehx v7, 0, r23
stvehx v8, 0, r23
stvehx v9, 0, r23
stvehx v10, 0, r23
stvehx v11, 0, r23
stvehx v12, 0, r23
stvehx v13, 0, r23
stvehx v14, 0, r23
stvehx v15, 0, r23
stvehx v16, 0, r23
stvehx v17, 0, r23
stvehx v18, 0, r23
stvehx v19, 0, r23
stvehx v20, 0, r23
stvehx v21, 0, r23
stvehx v22, 0, r23
stvehx v23, 0, r23
stvehx v24, 0, r23
stvehx v25, 0, r23
stvehx v26, 0, r23
stvehx v27, 0, r23
stvehx v28, 0, r23
stvehx v29, 0, r23
stvehx v30, 0, r23
stvehx v31, 0, r23
stvewx v0, 0, r23
stvewx v1, 0, r23
stvewx v2, 0, r23
stvewx v3, 0, r23
stvewx v4, 0, r23
stvewx v5, 0, r23
stvewx v6, 0, r23
stvewx v7, 0, r23
stvewx v8, 0, r23
stvewx v9, 0, r23
stvewx v10, 0, r23
stvewx v11, 0, r23
stvewx v12, 0, r23
stvewx v13, 0, r23
stvewx v14, 0, r23
stvewx v15, 0, r23
stvewx v16, 0, r23
stvewx v17, 0, r23
stvewx v18, 0, r23
stvewx v19, 0, r23
stvewx v20, 0, r23
stvewx v21, 0, r23
stvewx v22, 0, r23
stvewx v23, 0, r23
stvewx v24, 0, r23
stvewx v25, 0, r23
stvewx v26, 0, r23
stvewx v27, 0, r23
stvewx v28, 0, r23
stvewx v29, 0, r23
stvewx v30, 0, r23
stvewx v31, 0, r23