|
@@ -62,3 +62,38 @@
|
|
ldr w\tmpnr, [\state, #16 * 2 + 4]
|
|
ldr w\tmpnr, [\state, #16 * 2 + 4]
|
|
msr fpcr, x\tmpnr
|
|
msr fpcr, x\tmpnr
|
|
.endm
|
|
.endm
|
|
|
|
+
|
|
|
|
+.altmacro
|
|
|
|
+.macro fpsimd_save_partial state, numnr, tmpnr1, tmpnr2
|
|
|
|
+ mrs x\tmpnr1, fpsr
|
|
|
|
+ str w\numnr, [\state, #8]
|
|
|
|
+ mrs x\tmpnr2, fpcr
|
|
|
|
+ stp w\tmpnr1, w\tmpnr2, [\state]
|
|
|
|
+ adr x\tmpnr1, 0f
|
|
|
|
+ add \state, \state, x\numnr, lsl #4
|
|
|
|
+ sub x\tmpnr1, x\tmpnr1, x\numnr, lsl #1
|
|
|
|
+ br x\tmpnr1
|
|
|
|
+ .irp qa, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0
|
|
|
|
+ .irp qb, %(qa + 1)
|
|
|
|
+ stp q\qa, q\qb, [\state, # -16 * \qa - 16]
|
|
|
|
+ .endr
|
|
|
|
+ .endr
|
|
|
|
+0:
|
|
|
|
+.endm
|
|
|
|
+
|
|
|
|
+.macro fpsimd_restore_partial state, tmpnr1, tmpnr2
|
|
|
|
+ ldp w\tmpnr1, w\tmpnr2, [\state]
|
|
|
|
+ msr fpsr, x\tmpnr1
|
|
|
|
+ msr fpcr, x\tmpnr2
|
|
|
|
+ adr x\tmpnr1, 0f
|
|
|
|
+ ldr w\tmpnr2, [\state, #8]
|
|
|
|
+ add \state, \state, x\tmpnr2, lsl #4
|
|
|
|
+ sub x\tmpnr1, x\tmpnr1, x\tmpnr2, lsl #1
|
|
|
|
+ br x\tmpnr1
|
|
|
|
+ .irp qa, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0
|
|
|
|
+ .irp qb, %(qa + 1)
|
|
|
|
+ ldp q\qa, q\qb, [\state, # -16 * \qa - 16]
|
|
|
|
+ .endr
|
|
|
|
+ .endr
|
|
|
|
+0:
|
|
|
|
+.endm
|