Moved DoubleLoadStorageHandler to end of functions, improve fast path l8ui performance

This allows a conditional branch that previously required a full jump instruction not to require it.
This commit is contained in:
Angus Gratton 2015-09-15 15:09:42 +10:00
parent 9cd23e08a4
commit f47aa77982

View file

@ -94,15 +94,6 @@ InnerLoadStoreExceptionHandler:
rfe rfe
.literal_position
/* "Fix" LoadStoreException exceptions that are l8/l16 from an Instruction region,
DoubleException exception variant (ie load happened in a level1 exception handler). */
DoubleExceptionLoadStoreHandler:
addi sp, sp, -0x18
s32i a2, sp, 0x08
rsr.epc2 a2
j InnerLoadStoreExceptionHandler
/* Check the load instruction a2 for an l16si/16ui instruction /* Check the load instruction a2 for an l16si/16ui instruction
First test for a signed vs unsigned load. First test for a signed vs unsigned load.
@ -187,4 +178,13 @@ DoubleExceptionLoadStoreHandler:
wsr.excsave1 a4 wsr.excsave1 a4
j .Lafter_write_value j .Lafter_write_value
.literal_position
/* "Fix" LoadStoreException exceptions that are l8/l16 from an Instruction region,
DoubleException exception variant (ie load happened in a level1 exception handler). */
DoubleExceptionLoadStoreHandler:
addi sp, sp, -0x18
s32i a2, sp, 0x08
rsr.epc2 a2
j InnerLoadStoreExceptionHandler
/* End of InnerUserLoadStoreExceptionHandler */ /* End of InnerUserLoadStoreExceptionHandler */