Implement instructions for unaligned memory access.
unld* O1 O2 O3 loads O3 bytes from O2 in O1
unst* O1 O2 O3 stores O3 bytes from O2 in O1
Valid O3 values are 1 to wordsize. This means unld* and unst* are ways to
implement 3, 5, 6 and 7 byte integers.
unld*_x 01 02 03 loads an O3 sized float from O2 in O1
unst*_x 01 02 03 stores an O3 sized float from O2 in O1
Valid O3 values are 4 and 8. This means there is place for floating point
values with 1, 2, 3, 5, 6, and 7 bytes. These are possible for special
cases, but not implemented.
* include/lightning.h.in: Define new unldr, unldi, unldr_x,
unldi_x, unstr, unsti, unldr_x and unstr_x instructions.
Remove comment about internal backend specific codes, as they
are required by unldr_x and unstr_x in some code paths.
* lib/lightning.c: Implement generic movi_f_w, movi_d_w and
movi_d_ww that are actually the same for all ports.
Define generic load/store implementations when unaligned memory
access does not trap.
Diffstat (limited to 'lib/jit_arm-cpu.c')
0 files changed, 0 insertions, 0 deletions