summaryrefslogtreecommitdiff
path: root/arch/s390/include/asm/fpu-insn-asm.h
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2024-02-03 13:45:23 +0300
committerHeiko Carstens <hca@linux.ibm.com>2024-02-16 16:30:17 +0300
commitdcd3e1de9d17dc43dfed87a9fc814b9dec508043 (patch)
treef4dc28be4bafb8cde3a619428250517fac82244d /arch/s390/include/asm/fpu-insn-asm.h
parentcb2a1dd589a0ce97429bf2beeb560e5b030c2ccc (diff)
downloadlinux-dcd3e1de9d17dc43dfed87a9fc814b9dec508043.tar.xz
s390/checksum: provide csum_partial_copy_nocheck()
With csum_partial(), which reads all bytes into registers it is easy to also implement csum_partial_copy_nocheck() which copies the buffer while calculating its checksum. For a 512 byte buffer this reduces the runtime by 19%. Compared to the old generic variant (memcpy() + cksm instruction) runtime is reduced by 42%). Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/fpu-insn-asm.h')
-rw-r--r--arch/s390/include/asm/fpu-insn-asm.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/s390/include/asm/fpu-insn-asm.h b/arch/s390/include/asm/fpu-insn-asm.h
index aaf42c513a21..02ccfe46050a 100644
--- a/arch/s390/include/asm/fpu-insn-asm.h
+++ b/arch/s390/include/asm/fpu-insn-asm.h
@@ -531,6 +531,16 @@
MRXBOPC 0, 0x37, v1
.endm
+/* VECTOR STORE WITH LENGTH */
+.macro VSTL v, gr, disp, base
+ VX_NUM v1, \v
+ GR_NUM b2, \base
+ GR_NUM r3, \gr
+ .word 0xE700 | ((v1&15) << 4) | r3
+ .word (b2 << 12) | (\disp)
+ MRXBOPC 0, 0x3f, v1
+.endm
+
/* Vector integer instructions */
/* VECTOR AND */