feat(loong64): encode the full LSX and LASX table

Assisted-by: GLM 5.3 Flash
This commit is contained in:
2026-09-20 19:14:43 +02:00
parent d6cf7cfa44
commit 289cabe993
22 changed files with 3528 additions and 12 deletions
+44
View File
@@ -0,0 +1,44 @@
// Differential kernel: the _dbar (acquire/release) atomic exchange
// variants against the Go toolchain's loong64enc1.s rows.
#include "textflag.h"
TEXT ·AMXORDBW(SB), NOSPLIT, $0
AMXORDBW R14, (R13), R12
RET
TEXT ·AMXORDBV(SB), NOSPLIT, $0
AMXORDBV R14, (R13), R12
RET
TEXT ·AMMAXDBW(SB), NOSPLIT, $0
AMMAXDBW R14, (R13), R12
RET
TEXT ·AMMAXDBV(SB), NOSPLIT, $0
AMMAXDBV R14, (R13), R12
RET
TEXT ·AMMINDBW(SB), NOSPLIT, $0
AMMINDBW R14, (R13), R12
RET
TEXT ·AMMINDBV(SB), NOSPLIT, $0
AMMINDBV R14, (R13), R12
RET
TEXT ·AMMAXDBWU(SB), NOSPLIT, $0
AMMAXDBWU R14, (R13), R12
RET
TEXT ·AMMAXDBVU(SB), NOSPLIT, $0
AMMAXDBVU R14, (R13), R12
RET
TEXT ·AMMINDBWU(SB), NOSPLIT, $0
AMMINDBWU R14, (R13), R12
RET
TEXT ·AMMINDBVU(SB), NOSPLIT, $0
AMMINDBVU R14, (R13), R12
RET
+31
View File
@@ -0,0 +1,31 @@
// Differential kernel: the bookkeeping statements the assembler accepts and
// encodes to nothing (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·end(SB), NOSPLIT, $0
END
RET
TEXT ·funcdata(SB), NOSPLIT, $0
FUNCDATA $0, ref(SB)
RET
TEXT ·pcdata(SB), NOSPLIT, $0
PCDATA $0, $1
PCDATA $1, $-2
RET
TEXT ·getcallerpc(SB), NOSPLIT, $0
GETCALLERPC R4
RET
TEXT ·mixed(SB), NOSPLIT, $0
PCDATA $0, $1
ADDV R4, R5, R6
FUNCDATA $1, ref(SB)
GETCALLERPC R7
RET
ref:
RET
+209
View File
@@ -0,0 +1,209 @@
// Differential kernel: the arith_add vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VADDB(SB), NOSPLIT, $0
VADDB V1, V2, V3
RET
TEXT ·VADDH(SB), NOSPLIT, $0
VADDH V1, V2, V3
RET
TEXT ·VADDQ(SB), NOSPLIT, $0
VADDQ V1, V2, V3
RET
TEXT ·XVADDB(SB), NOSPLIT, $0
XVADDB X3, X2, X1
RET
TEXT ·XVADDH(SB), NOSPLIT, $0
XVADDH X3, X2, X1
RET
TEXT ·XVADDW(SB), NOSPLIT, $0
XVADDW X3, X2, X1
RET
TEXT ·XVADDQ(SB), NOSPLIT, $0
XVADDQ X3, X2, X1
RET
TEXT ·VADDBU(SB), NOSPLIT, $0
VADDBU $1, V2
VADDBU $1, V2, V1
RET
TEXT ·VADDHU(SB), NOSPLIT, $0
VADDHU $2, V2, V1
RET
TEXT ·VADDWU(SB), NOSPLIT, $0
VADDWU $3, V2, V1
RET
TEXT ·VADDVU(SB), NOSPLIT, $0
VADDVU $4, V2, V1
RET
TEXT ·XVADDBU(SB), NOSPLIT, $0
XVADDBU $9, X1, X2
RET
TEXT ·XVADDHU(SB), NOSPLIT, $0
XVADDHU $10, X1, X2
RET
TEXT ·XVADDWU(SB), NOSPLIT, $0
XVADDWU $11, X1, X2
RET
TEXT ·XVADDVU(SB), NOSPLIT, $0
XVADDVU $12, X1, X2
RET
TEXT ·VADDWEVHB(SB), NOSPLIT, $0
VADDWEVHB V1, V2, V3
RET
TEXT ·VADDWEVWH(SB), NOSPLIT, $0
VADDWEVWH V1, V2, V3
RET
TEXT ·VADDWEVVW(SB), NOSPLIT, $0
VADDWEVVW V1, V2, V3
RET
TEXT ·VADDWEVQV(SB), NOSPLIT, $0
VADDWEVQV V1, V2, V3
RET
TEXT ·VADDWODHB(SB), NOSPLIT, $0
VADDWODHB V1, V2, V3
RET
TEXT ·VADDWODWH(SB), NOSPLIT, $0
VADDWODWH V1, V2, V3
RET
TEXT ·VADDWODVW(SB), NOSPLIT, $0
VADDWODVW V1, V2, V3
RET
TEXT ·VADDWODQV(SB), NOSPLIT, $0
VADDWODQV V1, V2, V3
RET
TEXT ·XVADDWEVHB(SB), NOSPLIT, $0
XVADDWEVHB X1, X2, X3
RET
TEXT ·XVADDWEVWH(SB), NOSPLIT, $0
XVADDWEVWH X1, X2, X3
RET
TEXT ·XVADDWEVVW(SB), NOSPLIT, $0
XVADDWEVVW X1, X2, X3
RET
TEXT ·XVADDWEVQV(SB), NOSPLIT, $0
XVADDWEVQV X1, X2, X3
RET
TEXT ·XVADDWODHB(SB), NOSPLIT, $0
XVADDWODHB X1, X2, X3
RET
TEXT ·XVADDWODWH(SB), NOSPLIT, $0
XVADDWODWH X1, X2, X3
RET
TEXT ·XVADDWODVW(SB), NOSPLIT, $0
XVADDWODVW X1, X2, X3
RET
TEXT ·XVADDWODQV(SB), NOSPLIT, $0
XVADDWODQV X1, X2, X3
RET
TEXT ·VADDWEVHBU(SB), NOSPLIT, $0
VADDWEVHBU V1, V2, V3
RET
TEXT ·VADDWEVWHU(SB), NOSPLIT, $0
VADDWEVWHU V1, V2, V3
RET
TEXT ·VADDWEVVWU(SB), NOSPLIT, $0
VADDWEVVWU V1, V2, V3
RET
TEXT ·VADDWEVQVU(SB), NOSPLIT, $0
VADDWEVQVU V1, V2, V3
RET
TEXT ·VADDWODHBU(SB), NOSPLIT, $0
VADDWODHBU V1, V2, V3
RET
TEXT ·VADDWODWHU(SB), NOSPLIT, $0
VADDWODWHU V1, V2, V3
RET
TEXT ·VADDWODVWU(SB), NOSPLIT, $0
VADDWODVWU V1, V2, V3
RET
TEXT ·VADDWODQVU(SB), NOSPLIT, $0
VADDWODQVU V1, V2, V3
RET
TEXT ·XVADDWEVHBU(SB), NOSPLIT, $0
XVADDWEVHBU X1, X2, X3
RET
TEXT ·XVADDWEVWHU(SB), NOSPLIT, $0
XVADDWEVWHU X1, X2, X3
RET
TEXT ·XVADDWEVVWU(SB), NOSPLIT, $0
XVADDWEVVWU X1, X2, X3
RET
TEXT ·XVADDWEVQVU(SB), NOSPLIT, $0
XVADDWEVQVU X1, X2, X3
RET
TEXT ·XVADDWODHBU(SB), NOSPLIT, $0
XVADDWODHBU X1, X2, X3
RET
TEXT ·XVADDWODWHU(SB), NOSPLIT, $0
XVADDWODWHU X1, X2, X3
RET
TEXT ·XVADDWODVWU(SB), NOSPLIT, $0
XVADDWODVWU X1, X2, X3
RET
TEXT ·XVADDWODQVU(SB), NOSPLIT, $0
XVADDWODQVU X1, X2, X3
RET
TEXT ·VADDF(SB), NOSPLIT, $0
VADDF V1, V2, V3
RET
TEXT ·VADDD(SB), NOSPLIT, $0
VADDD V1, V2, V3
RET
TEXT ·XVADDF(SB), NOSPLIT, $0
XVADDF X1, X2, X3
RET
TEXT ·XVADDD(SB), NOSPLIT, $0
XVADDD X1, X2, X3
RET
+132
View File
@@ -0,0 +1,132 @@
// Differential kernel: the arith_sat vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VSADDB(SB), NOSPLIT, $0
VSADDB V1, V2, V3
RET
TEXT ·VSADDH(SB), NOSPLIT, $0
VSADDH V1, V2, V3
RET
TEXT ·VSADDW(SB), NOSPLIT, $0
VSADDW V1, V2, V3
RET
TEXT ·VSADDV(SB), NOSPLIT, $0
VSADDV V1, V2, V3
RET
TEXT ·VSSUBB(SB), NOSPLIT, $0
VSSUBB V1, V2, V3
RET
TEXT ·VSSUBH(SB), NOSPLIT, $0
VSSUBH V1, V2, V3
RET
TEXT ·VSSUBW(SB), NOSPLIT, $0
VSSUBW V1, V2, V3
RET
TEXT ·VSSUBV(SB), NOSPLIT, $0
VSSUBV V1, V2, V3
RET
TEXT ·XVSADDB(SB), NOSPLIT, $0
XVSADDB X3, X2, X1
RET
TEXT ·XVSADDH(SB), NOSPLIT, $0
XVSADDH X3, X2, X1
RET
TEXT ·XVSADDW(SB), NOSPLIT, $0
XVSADDW X3, X2, X1
RET
TEXT ·XVSADDV(SB), NOSPLIT, $0
XVSADDV X3, X2, X1
RET
TEXT ·XVSSUBB(SB), NOSPLIT, $0
XVSSUBB X3, X2, X1
RET
TEXT ·XVSSUBH(SB), NOSPLIT, $0
XVSSUBH X3, X2, X1
RET
TEXT ·XVSSUBW(SB), NOSPLIT, $0
XVSSUBW X3, X2, X1
RET
TEXT ·XVSSUBV(SB), NOSPLIT, $0
XVSSUBV X3, X2, X1
RET
TEXT ·VSADDBU(SB), NOSPLIT, $0
VSADDBU V1, V2, V3
RET
TEXT ·VSADDHU(SB), NOSPLIT, $0
VSADDHU V1, V2, V3
RET
TEXT ·VSADDWU(SB), NOSPLIT, $0
VSADDWU V1, V2, V3
RET
TEXT ·VSADDVU(SB), NOSPLIT, $0
VSADDVU V1, V2, V3
RET
TEXT ·VSSUBBU(SB), NOSPLIT, $0
VSSUBBU V1, V2, V3
RET
TEXT ·VSSUBHU(SB), NOSPLIT, $0
VSSUBHU V1, V2, V3
RET
TEXT ·VSSUBWU(SB), NOSPLIT, $0
VSSUBWU V1, V2, V3
RET
TEXT ·VSSUBVU(SB), NOSPLIT, $0
VSSUBVU V1, V2, V3
RET
TEXT ·XVSADDBU(SB), NOSPLIT, $0
XVSADDBU X1, X2, X3
RET
TEXT ·XVSADDHU(SB), NOSPLIT, $0
XVSADDHU X1, X2, X3
RET
TEXT ·XVSADDWU(SB), NOSPLIT, $0
XVSADDWU X1, X2, X3
RET
TEXT ·XVSADDVU(SB), NOSPLIT, $0
XVSADDVU X1, X2, X3
RET
TEXT ·XVSSUBBU(SB), NOSPLIT, $0
XVSSUBBU X1, X2, X3
RET
TEXT ·XVSSUBHU(SB), NOSPLIT, $0
XVSSUBHU X1, X2, X3
RET
TEXT ·XVSSUBWU(SB), NOSPLIT, $0
XVSSUBWU X1, X2, X3
RET
TEXT ·XVSSUBVU(SB), NOSPLIT, $0
XVSSUBVU X1, X2, X3
RET
+220
View File
@@ -0,0 +1,220 @@
// Differential kernel: the arith_sub vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VSUBB(SB), NOSPLIT, $0
VSUBB V1, V2, V3
RET
TEXT ·VSUBH(SB), NOSPLIT, $0
VSUBH V1, V2, V3
RET
TEXT ·VSUBW(SB), NOSPLIT, $0
VSUBW V1, V2, V3
RET
TEXT ·VSUBV(SB), NOSPLIT, $0
VSUBV V1, V2, V3
RET
TEXT ·VSUBQ(SB), NOSPLIT, $0
VSUBQ V1, V2, V3
RET
TEXT ·XVSUBB(SB), NOSPLIT, $0
XVSUBB X3, X2, X1
RET
TEXT ·XVSUBH(SB), NOSPLIT, $0
XVSUBH X3, X2, X1
RET
TEXT ·XVSUBW(SB), NOSPLIT, $0
XVSUBW X3, X2, X1
RET
TEXT ·XVSUBV(SB), NOSPLIT, $0
XVSUBV X3, X2, X1
RET
TEXT ·XVSUBQ(SB), NOSPLIT, $0
XVSUBQ X3, X2, X1
RET
TEXT ·VSUBBU(SB), NOSPLIT, $0
VSUBBU $5, V2, V1
RET
TEXT ·VSUBHU(SB), NOSPLIT, $0
VSUBHU $6, V2, V1
RET
TEXT ·VSUBWU(SB), NOSPLIT, $0
VSUBWU $7, V2, V1
RET
TEXT ·VSUBVU(SB), NOSPLIT, $0
VSUBVU $8, V2, V1
RET
TEXT ·XVSUBBU(SB), NOSPLIT, $0
XVSUBBU $13, X1, X2
RET
TEXT ·XVSUBHU(SB), NOSPLIT, $0
XVSUBHU $14, X1, X2
RET
TEXT ·XVSUBWU(SB), NOSPLIT, $0
XVSUBWU $15, X1, X2
RET
TEXT ·XVSUBVU(SB), NOSPLIT, $0
XVSUBVU $16, X1, X2
RET
TEXT ·VSUBWEVHB(SB), NOSPLIT, $0
VSUBWEVHB V1, V2, V3
RET
TEXT ·VSUBWEVWH(SB), NOSPLIT, $0
VSUBWEVWH V1, V2, V3
RET
TEXT ·VSUBWEVVW(SB), NOSPLIT, $0
VSUBWEVVW V1, V2, V3
RET
TEXT ·VSUBWEVQV(SB), NOSPLIT, $0
VSUBWEVQV V1, V2, V3
RET
TEXT ·VSUBWODHB(SB), NOSPLIT, $0
VSUBWODHB V1, V2, V3
RET
TEXT ·VSUBWODWH(SB), NOSPLIT, $0
VSUBWODWH V1, V2, V3
RET
TEXT ·VSUBWODVW(SB), NOSPLIT, $0
VSUBWODVW V1, V2, V3
RET
TEXT ·VSUBWODQV(SB), NOSPLIT, $0
VSUBWODQV V1, V2, V3
RET
TEXT ·XVSUBWEVHB(SB), NOSPLIT, $0
XVSUBWEVHB X1, X2, X3
RET
TEXT ·XVSUBWEVWH(SB), NOSPLIT, $0
XVSUBWEVWH X1, X2, X3
RET
TEXT ·XVSUBWEVVW(SB), NOSPLIT, $0
XVSUBWEVVW X1, X2, X3
RET
TEXT ·XVSUBWEVQV(SB), NOSPLIT, $0
XVSUBWEVQV X1, X2, X3
RET
TEXT ·XVSUBWODHB(SB), NOSPLIT, $0
XVSUBWODHB X1, X2, X3
RET
TEXT ·XVSUBWODWH(SB), NOSPLIT, $0
XVSUBWODWH X1, X2, X3
RET
TEXT ·XVSUBWODVW(SB), NOSPLIT, $0
XVSUBWODVW X1, X2, X3
RET
TEXT ·XVSUBWODQV(SB), NOSPLIT, $0
XVSUBWODQV X1, X2, X3
RET
TEXT ·VSUBWEVHBU(SB), NOSPLIT, $0
VSUBWEVHBU V1, V2, V3
RET
TEXT ·VSUBWEVWHU(SB), NOSPLIT, $0
VSUBWEVWHU V1, V2, V3
RET
TEXT ·VSUBWEVVWU(SB), NOSPLIT, $0
VSUBWEVVWU V1, V2, V3
RET
TEXT ·VSUBWEVQVU(SB), NOSPLIT, $0
VSUBWEVQVU V1, V2, V3
RET
TEXT ·VSUBWODHBU(SB), NOSPLIT, $0
VSUBWODHBU V1, V2, V3
RET
TEXT ·VSUBWODWHU(SB), NOSPLIT, $0
VSUBWODWHU V1, V2, V3
RET
TEXT ·VSUBWODVWU(SB), NOSPLIT, $0
VSUBWODVWU V1, V2, V3
RET
TEXT ·VSUBWODQVU(SB), NOSPLIT, $0
VSUBWODQVU V1, V2, V3
RET
TEXT ·XVSUBWEVHBU(SB), NOSPLIT, $0
XVSUBWEVHBU X1, X2, X3
RET
TEXT ·XVSUBWEVWHU(SB), NOSPLIT, $0
XVSUBWEVWHU X1, X2, X3
RET
TEXT ·XVSUBWEVVWU(SB), NOSPLIT, $0
XVSUBWEVVWU X1, X2, X3
RET
TEXT ·XVSUBWEVQVU(SB), NOSPLIT, $0
XVSUBWEVQVU X1, X2, X3
RET
TEXT ·XVSUBWODHBU(SB), NOSPLIT, $0
XVSUBWODHBU X1, X2, X3
RET
TEXT ·XVSUBWODWHU(SB), NOSPLIT, $0
XVSUBWODWHU X1, X2, X3
RET
TEXT ·XVSUBWODVWU(SB), NOSPLIT, $0
XVSUBWODVWU X1, X2, X3
RET
TEXT ·XVSUBWODQVU(SB), NOSPLIT, $0
XVSUBWODQVU X1, X2, X3
RET
TEXT ·VSUBF(SB), NOSPLIT, $0
VSUBF V1, V2, V3
RET
TEXT ·VSUBD(SB), NOSPLIT, $0
VSUBD V1, V2, V3
RET
TEXT ·XVSUBF(SB), NOSPLIT, $0
XVSUBF X1, X2, X3
RET
TEXT ·XVSUBD(SB), NOSPLIT, $0
XVSUBD X1, X2, X3
RET
+124
View File
@@ -0,0 +1,124 @@
// Differential kernel: the bitops vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VBITCLRB(SB), NOSPLIT, $0
VBITCLRB V1, V2, V3
VBITCLRB $7, V2, V3
RET
TEXT ·VBITCLRH(SB), NOSPLIT, $0
VBITCLRH V1, V2, V3
VBITCLRH $15, V2, V3
RET
TEXT ·VBITCLRW(SB), NOSPLIT, $0
VBITCLRW V1, V2, V3
VBITCLRW $31, V2, V3
RET
TEXT ·VBITCLRV(SB), NOSPLIT, $0
VBITCLRV V1, V2, V3
VBITCLRV $63, V2, V3
RET
TEXT ·VBITSETB(SB), NOSPLIT, $0
VBITSETB V1, V2, V3
VBITSETB $7, V2, V3
RET
TEXT ·VBITSETH(SB), NOSPLIT, $0
VBITSETH V1, V2, V3
VBITSETH $15, V2, V3
RET
TEXT ·VBITSETW(SB), NOSPLIT, $0
VBITSETW V1, V2, V3
VBITSETW $31, V2, V3
RET
TEXT ·VBITSETV(SB), NOSPLIT, $0
VBITSETV V1, V2, V3
VBITSETV $63, V2, V3
RET
TEXT ·VBITREVB(SB), NOSPLIT, $0
VBITREVB V1, V2, V3
VBITREVB $7, V2, V3
RET
TEXT ·VBITREVH(SB), NOSPLIT, $0
VBITREVH V1, V2, V3
VBITREVH $15, V2, V3
RET
TEXT ·VBITREVW(SB), NOSPLIT, $0
VBITREVW V1, V2, V3
VBITREVW $31, V2, V3
RET
TEXT ·VBITREVV(SB), NOSPLIT, $0
VBITREVV V1, V2, V3
VBITREVV $63, V2, V3
RET
TEXT ·XVBITCLRB(SB), NOSPLIT, $0
XVBITCLRB X3, X2, X1
XVBITCLRB $7, X2, X1
RET
TEXT ·XVBITCLRH(SB), NOSPLIT, $0
XVBITCLRH X3, X2, X1
XVBITCLRH $15, X2, X1
RET
TEXT ·XVBITCLRW(SB), NOSPLIT, $0
XVBITCLRW X3, X2, X1
XVBITCLRW $31, X2, X1
RET
TEXT ·XVBITCLRV(SB), NOSPLIT, $0
XVBITCLRV X3, X2, X1
XVBITCLRV $63, X2, X1
RET
TEXT ·XVBITSETB(SB), NOSPLIT, $0
XVBITSETB X3, X2, X1
XVBITSETB $7, X2, X1
RET
TEXT ·XVBITSETH(SB), NOSPLIT, $0
XVBITSETH X3, X2, X1
XVBITSETH $15, X2, X1
RET
TEXT ·XVBITSETW(SB), NOSPLIT, $0
XVBITSETW X3, X2, X1
XVBITSETW $31, X2, X1
RET
TEXT ·XVBITSETV(SB), NOSPLIT, $0
XVBITSETV X3, X2, X1
XVBITSETV $63, X2, X1
RET
TEXT ·XVBITREVB(SB), NOSPLIT, $0
XVBITREVB X3, X2, X1
XVBITREVB $7, X2, X1
RET
TEXT ·XVBITREVH(SB), NOSPLIT, $0
XVBITREVH X3, X2, X1
XVBITREVH $15, X2, X1
RET
TEXT ·XVBITREVW(SB), NOSPLIT, $0
XVBITREVW X3, X2, X1
XVBITREVW $31, X2, X1
RET
TEXT ·XVBITREVV(SB), NOSPLIT, $0
XVBITREVV X3, X2, X1
XVBITREVV $63, X2, X1
RET
+419
View File
@@ -0,0 +1,419 @@
// Differential kernel: immediate range boundaries for the vector
// immediate forms (min, mid and max of each accepted window).
#include "textflag.h"
TEXT ·VSEQBbounds(SB), NOSPLIT, $0
VSEQB $-16, V2, V3
VSEQB $15, V2, V3
VSEQB $0, V2, V3
RET
TEXT ·VSEQHbounds(SB), NOSPLIT, $0
VSEQH $-16, V2, V3
VSEQH $15, V2, V3
VSEQH $0, V2, V3
RET
TEXT ·VSEQWbounds(SB), NOSPLIT, $0
VSEQW $-16, V2, V3
VSEQW $15, V2, V3
VSEQW $0, V2, V3
RET
TEXT ·VSEQVbounds(SB), NOSPLIT, $0
VSEQV $-16, V2, V3
VSEQV $15, V2, V3
VSEQV $0, V2, V3
RET
TEXT ·VSLTBbounds(SB), NOSPLIT, $0
VSLTB $-16, V2, V3
VSLTB $15, V2, V3
VSLTB $0, V2, V3
RET
TEXT ·VSLTHbounds(SB), NOSPLIT, $0
VSLTH $-16, V2, V3
VSLTH $15, V2, V3
VSLTH $0, V2, V3
RET
TEXT ·VSLTWbounds(SB), NOSPLIT, $0
VSLTW $-16, V2, V3
VSLTW $15, V2, V3
VSLTW $0, V2, V3
RET
TEXT ·VSLTVbounds(SB), NOSPLIT, $0
VSLTV $-16, V2, V3
VSLTV $15, V2, V3
VSLTV $0, V2, V3
RET
TEXT ·VSLTBUbounds(SB), NOSPLIT, $0
VSLTBU $0, V2, V3
VSLTBU $31, V2, V3
VSLTBU $15, V2, V3
RET
TEXT ·VSLTHUbounds(SB), NOSPLIT, $0
VSLTHU $0, V2, V3
VSLTHU $31, V2, V3
VSLTHU $15, V2, V3
RET
TEXT ·VSLTWUbounds(SB), NOSPLIT, $0
VSLTWU $0, V2, V3
VSLTWU $31, V2, V3
VSLTWU $15, V2, V3
RET
TEXT ·VSLTVUbounds(SB), NOSPLIT, $0
VSLTVU $0, V2, V3
VSLTVU $31, V2, V3
VSLTVU $15, V2, V3
RET
TEXT ·VADDBUbounds(SB), NOSPLIT, $0
VADDBU $0, V2, V3
VADDBU $31, V2, V3
VADDBU $15, V2, V3
VADDBU $15, V2
RET
TEXT ·VADDHUbounds(SB), NOSPLIT, $0
VADDHU $0, V2, V3
VADDHU $31, V2, V3
VADDHU $15, V2, V3
VADDHU $15, V2
RET
TEXT ·VADDWUbounds(SB), NOSPLIT, $0
VADDWU $0, V2, V3
VADDWU $31, V2, V3
VADDWU $15, V2, V3
VADDWU $15, V2
RET
TEXT ·VADDVUbounds(SB), NOSPLIT, $0
VADDVU $0, V2, V3
VADDVU $31, V2, V3
VADDVU $15, V2, V3
VADDVU $15, V2
RET
TEXT ·VSUBBUbounds(SB), NOSPLIT, $0
VSUBBU $0, V2, V3
VSUBBU $31, V2, V3
VSUBBU $15, V2, V3
VSUBBU $15, V2
RET
TEXT ·VSUBHUbounds(SB), NOSPLIT, $0
VSUBHU $0, V2, V3
VSUBHU $31, V2, V3
VSUBHU $15, V2, V3
VSUBHU $15, V2
RET
TEXT ·VSUBWUbounds(SB), NOSPLIT, $0
VSUBWU $0, V2, V3
VSUBWU $31, V2, V3
VSUBWU $15, V2, V3
VSUBWU $15, V2
RET
TEXT ·VSUBVUbounds(SB), NOSPLIT, $0
VSUBVU $0, V2, V3
VSUBVU $31, V2, V3
VSUBVU $15, V2, V3
VSUBVU $15, V2
RET
TEXT ·VANDBbounds(SB), NOSPLIT, $0
VANDB $0, V2, V3
VANDB $255, V2, V3
VANDB $127, V2, V3
VANDB $127, V2
RET
TEXT ·VBITCLRBbounds(SB), NOSPLIT, $0
VBITCLRB $0, V2, V3
VBITCLRB $7, V2, V3
VBITCLRB $3, V2, V3
VBITCLRB $3, V2
RET
TEXT ·VBITCLRHbounds(SB), NOSPLIT, $0
VBITCLRH $0, V2, V3
VBITCLRH $15, V2, V3
VBITCLRH $7, V2, V3
VBITCLRH $7, V2
RET
TEXT ·VBITCLRVbounds(SB), NOSPLIT, $0
VBITCLRV $0, V2, V3
VBITCLRV $63, V2, V3
VBITCLRV $31, V2, V3
VBITCLRV $31, V2
RET
TEXT ·VBITCLRWbounds(SB), NOSPLIT, $0
VBITCLRW $0, V2, V3
VBITCLRW $31, V2, V3
VBITCLRW $15, V2, V3
VBITCLRW $15, V2
RET
TEXT ·VBITREVBbounds(SB), NOSPLIT, $0
VBITREVB $0, V2, V3
VBITREVB $7, V2, V3
VBITREVB $3, V2, V3
VBITREVB $3, V2
RET
TEXT ·VBITREVHbounds(SB), NOSPLIT, $0
VBITREVH $0, V2, V3
VBITREVH $15, V2, V3
VBITREVH $7, V2, V3
VBITREVH $7, V2
RET
TEXT ·VBITREVVbounds(SB), NOSPLIT, $0
VBITREVV $0, V2, V3
VBITREVV $63, V2, V3
VBITREVV $31, V2, V3
VBITREVV $31, V2
RET
TEXT ·VBITREVWbounds(SB), NOSPLIT, $0
VBITREVW $0, V2, V3
VBITREVW $31, V2, V3
VBITREVW $15, V2, V3
VBITREVW $15, V2
RET
TEXT ·VBITSETBbounds(SB), NOSPLIT, $0
VBITSETB $0, V2, V3
VBITSETB $7, V2, V3
VBITSETB $3, V2, V3
VBITSETB $3, V2
RET
TEXT ·VBITSETHbounds(SB), NOSPLIT, $0
VBITSETH $0, V2, V3
VBITSETH $15, V2, V3
VBITSETH $7, V2, V3
VBITSETH $7, V2
RET
TEXT ·VBITSETVbounds(SB), NOSPLIT, $0
VBITSETV $0, V2, V3
VBITSETV $63, V2, V3
VBITSETV $31, V2, V3
VBITSETV $31, V2
RET
TEXT ·VBITSETWbounds(SB), NOSPLIT, $0
VBITSETW $0, V2, V3
VBITSETW $31, V2, V3
VBITSETW $15, V2, V3
VBITSETW $15, V2
RET
TEXT ·VEXTRINSBbounds(SB), NOSPLIT, $0
VEXTRINSB $0, V2, V3
VEXTRINSB $255, V2, V3
VEXTRINSB $127, V2, V3
VEXTRINSB $127, V2
RET
TEXT ·VEXTRINSHbounds(SB), NOSPLIT, $0
VEXTRINSH $0, V2, V3
VEXTRINSH $255, V2, V3
VEXTRINSH $127, V2, V3
VEXTRINSH $127, V2
RET
TEXT ·VEXTRINSVbounds(SB), NOSPLIT, $0
VEXTRINSV $0, V2, V3
VEXTRINSV $255, V2, V3
VEXTRINSV $127, V2, V3
VEXTRINSV $127, V2
RET
TEXT ·VEXTRINSWbounds(SB), NOSPLIT, $0
VEXTRINSW $0, V2, V3
VEXTRINSW $255, V2, V3
VEXTRINSW $127, V2, V3
VEXTRINSW $127, V2
RET
TEXT ·VNORBbounds(SB), NOSPLIT, $0
VNORB $0, V2, V3
VNORB $255, V2, V3
VNORB $127, V2, V3
VNORB $127, V2
RET
TEXT ·VORBbounds(SB), NOSPLIT, $0
VORB $0, V2, V3
VORB $255, V2, V3
VORB $127, V2, V3
VORB $127, V2
RET
TEXT ·VPERMIWbounds(SB), NOSPLIT, $0
VPERMIW $0, V2, V3
VPERMIW $255, V2, V3
VPERMIW $127, V2, V3
VPERMIW $127, V2
RET
TEXT ·VROTRBbounds(SB), NOSPLIT, $0
VROTRB $0, V2, V3
VROTRB $7, V2, V3
VROTRB $3, V2, V3
VROTRB $3, V2
RET
TEXT ·VROTRHbounds(SB), NOSPLIT, $0
VROTRH $0, V2, V3
VROTRH $15, V2, V3
VROTRH $7, V2, V3
VROTRH $7, V2
RET
TEXT ·VROTRVbounds(SB), NOSPLIT, $0
VROTRV $0, V2, V3
VROTRV $63, V2, V3
VROTRV $31, V2, V3
VROTRV $31, V2
RET
TEXT ·VROTRWbounds(SB), NOSPLIT, $0
VROTRW $0, V2, V3
VROTRW $31, V2, V3
VROTRW $15, V2, V3
VROTRW $15, V2
RET
TEXT ·VSHUF4IBbounds(SB), NOSPLIT, $0
VSHUF4IB $0, V2, V3
VSHUF4IB $255, V2, V3
VSHUF4IB $127, V2, V3
VSHUF4IB $127, V2
RET
TEXT ·VSHUF4IHbounds(SB), NOSPLIT, $0
VSHUF4IH $0, V2, V3
VSHUF4IH $255, V2, V3
VSHUF4IH $127, V2, V3
VSHUF4IH $127, V2
RET
TEXT ·VSHUF4IVbounds(SB), NOSPLIT, $0
VSHUF4IV $0, V2, V3
VSHUF4IV $15, V2, V3
VSHUF4IV $7, V2, V3
VSHUF4IV $7, V2
RET
TEXT ·VSHUF4IWbounds(SB), NOSPLIT, $0
VSHUF4IW $0, V2, V3
VSHUF4IW $255, V2, V3
VSHUF4IW $127, V2, V3
VSHUF4IW $127, V2
RET
TEXT ·VSLLBbounds(SB), NOSPLIT, $0
VSLLB $0, V2, V3
VSLLB $7, V2, V3
VSLLB $3, V2, V3
VSLLB $3, V2
RET
TEXT ·VSLLHbounds(SB), NOSPLIT, $0
VSLLH $0, V2, V3
VSLLH $15, V2, V3
VSLLH $7, V2, V3
VSLLH $7, V2
RET
TEXT ·VSLLVbounds(SB), NOSPLIT, $0
VSLLV $0, V2, V3
VSLLV $63, V2, V3
VSLLV $31, V2, V3
VSLLV $31, V2
RET
TEXT ·VSLLWbounds(SB), NOSPLIT, $0
VSLLW $0, V2, V3
VSLLW $31, V2, V3
VSLLW $15, V2, V3
VSLLW $15, V2
RET
TEXT ·VSRABbounds(SB), NOSPLIT, $0
VSRAB $0, V2, V3
VSRAB $7, V2, V3
VSRAB $3, V2, V3
VSRAB $3, V2
RET
TEXT ·VSRAHbounds(SB), NOSPLIT, $0
VSRAH $0, V2, V3
VSRAH $15, V2, V3
VSRAH $7, V2, V3
VSRAH $7, V2
RET
TEXT ·VSRAVbounds(SB), NOSPLIT, $0
VSRAV $0, V2, V3
VSRAV $63, V2, V3
VSRAV $31, V2, V3
VSRAV $31, V2
RET
TEXT ·VSRAWbounds(SB), NOSPLIT, $0
VSRAW $0, V2, V3
VSRAW $31, V2, V3
VSRAW $15, V2, V3
VSRAW $15, V2
RET
TEXT ·VSRLBbounds(SB), NOSPLIT, $0
VSRLB $0, V2, V3
VSRLB $7, V2, V3
VSRLB $3, V2, V3
VSRLB $3, V2
RET
TEXT ·VSRLHbounds(SB), NOSPLIT, $0
VSRLH $0, V2, V3
VSRLH $15, V2, V3
VSRLH $7, V2, V3
VSRLH $7, V2
RET
TEXT ·VSRLVbounds(SB), NOSPLIT, $0
VSRLV $0, V2, V3
VSRLV $63, V2, V3
VSRLV $31, V2, V3
VSRLV $31, V2
RET
TEXT ·VSRLWbounds(SB), NOSPLIT, $0
VSRLW $0, V2, V3
VSRLW $31, V2, V3
VSRLW $15, V2, V3
VSRLW $15, V2
RET
TEXT ·VXORBbounds(SB), NOSPLIT, $0
VXORB $0, V2, V3
VXORB $255, V2, V3
VXORB $127, V2, V3
VXORB $127, V2
RET
+148
View File
@@ -0,0 +1,148 @@
// Differential kernel: the divmod vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VDIVB(SB), NOSPLIT, $0
VDIVB V1, V2, V3
RET
TEXT ·VDIVH(SB), NOSPLIT, $0
VDIVH V1, V2, V3
RET
TEXT ·VDIVW(SB), NOSPLIT, $0
VDIVW V1, V2, V3
RET
TEXT ·VDIVV(SB), NOSPLIT, $0
VDIVV V1, V2, V3
RET
TEXT ·VDIVBU(SB), NOSPLIT, $0
VDIVBU V1, V2, V3
RET
TEXT ·VDIVHU(SB), NOSPLIT, $0
VDIVHU V1, V2, V3
RET
TEXT ·VDIVWU(SB), NOSPLIT, $0
VDIVWU V1, V2, V3
RET
TEXT ·VDIVVU(SB), NOSPLIT, $0
VDIVVU V1, V2, V3
RET
TEXT ·VMODB(SB), NOSPLIT, $0
VMODB V1, V2, V3
RET
TEXT ·VMODH(SB), NOSPLIT, $0
VMODH V1, V2, V3
RET
TEXT ·VMODW(SB), NOSPLIT, $0
VMODW V1, V2, V3
RET
TEXT ·VMODV(SB), NOSPLIT, $0
VMODV V1, V2, V3
RET
TEXT ·VMODBU(SB), NOSPLIT, $0
VMODBU V1, V2, V3
RET
TEXT ·VMODHU(SB), NOSPLIT, $0
VMODHU V1, V2, V3
RET
TEXT ·VMODWU(SB), NOSPLIT, $0
VMODWU V1, V2, V3
RET
TEXT ·VMODVU(SB), NOSPLIT, $0
VMODVU V1, V2, V3
RET
TEXT ·XVDIVB(SB), NOSPLIT, $0
XVDIVB X3, X2, X1
RET
TEXT ·XVDIVH(SB), NOSPLIT, $0
XVDIVH X3, X2, X1
RET
TEXT ·XVDIVW(SB), NOSPLIT, $0
XVDIVW X3, X2, X1
RET
TEXT ·XVDIVV(SB), NOSPLIT, $0
XVDIVV X3, X2, X1
RET
TEXT ·XVDIVBU(SB), NOSPLIT, $0
XVDIVBU X3, X2, X1
RET
TEXT ·XVDIVHU(SB), NOSPLIT, $0
XVDIVHU X3, X2, X1
RET
TEXT ·XVDIVWU(SB), NOSPLIT, $0
XVDIVWU X3, X2, X1
RET
TEXT ·XVDIVVU(SB), NOSPLIT, $0
XVDIVVU X3, X2, X1
RET
TEXT ·XVMODB(SB), NOSPLIT, $0
XVMODB X3, X2, X1
RET
TEXT ·XVMODH(SB), NOSPLIT, $0
XVMODH X3, X2, X1
RET
TEXT ·XVMODW(SB), NOSPLIT, $0
XVMODW X3, X2, X1
RET
TEXT ·XVMODV(SB), NOSPLIT, $0
XVMODV X3, X2, X1
RET
TEXT ·XVMODBU(SB), NOSPLIT, $0
XVMODBU X3, X2, X1
RET
TEXT ·XVMODHU(SB), NOSPLIT, $0
XVMODHU X3, X2, X1
RET
TEXT ·XVMODWU(SB), NOSPLIT, $0
XVMODWU X3, X2, X1
RET
TEXT ·XVMODVU(SB), NOSPLIT, $0
XVMODVU X3, X2, X1
RET
TEXT ·VDIVF(SB), NOSPLIT, $0
VDIVF V1, V2, V3
RET
TEXT ·VDIVD(SB), NOSPLIT, $0
VDIVD V1, V2, V3
RET
TEXT ·XVDIVF(SB), NOSPLIT, $0
XVDIVF X1, X2, X3
RET
TEXT ·XVDIVD(SB), NOSPLIT, $0
XVDIVD X1, X2, X3
RET
+176
View File
@@ -0,0 +1,176 @@
// Differential kernel: the fp vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·FFINTFW(SB), NOSPLIT, $0
FFINTFW F0, F1
RET
TEXT ·FFINTFV(SB), NOSPLIT, $0
FFINTFV F0, F1
RET
TEXT ·FFINTDW(SB), NOSPLIT, $0
FFINTDW F0, F1
RET
TEXT ·FTINTWF(SB), NOSPLIT, $0
FTINTWF F0, F1
RET
TEXT ·FTINTWD(SB), NOSPLIT, $0
FTINTWD F0, F1
RET
TEXT ·FTINTVF(SB), NOSPLIT, $0
FTINTVF F0, F1
RET
TEXT ·FTINTVD(SB), NOSPLIT, $0
FTINTVD F0, F1
RET
TEXT ·VFSQRTF(SB), NOSPLIT, $0
VFSQRTF V1, V2
RET
TEXT ·VFSQRTD(SB), NOSPLIT, $0
VFSQRTD V1, V2
RET
TEXT ·VFRECIPF(SB), NOSPLIT, $0
VFRECIPF V1, V2
RET
TEXT ·VFRECIPD(SB), NOSPLIT, $0
VFRECIPD V1, V2
RET
TEXT ·VFRSQRTF(SB), NOSPLIT, $0
VFRSQRTF V1, V2
RET
TEXT ·VFRSQRTD(SB), NOSPLIT, $0
VFRSQRTD V1, V2
RET
TEXT ·XVFSQRTF(SB), NOSPLIT, $0
XVFSQRTF X2, X1
RET
TEXT ·XVFSQRTD(SB), NOSPLIT, $0
XVFSQRTD X2, X1
RET
TEXT ·XVFRECIPF(SB), NOSPLIT, $0
XVFRECIPF X2, X1
RET
TEXT ·XVFRECIPD(SB), NOSPLIT, $0
XVFRECIPD X2, X1
RET
TEXT ·XVFRSQRTF(SB), NOSPLIT, $0
XVFRSQRTF X2, X1
RET
TEXT ·XVFRSQRTD(SB), NOSPLIT, $0
XVFRSQRTD X2, X1
RET
TEXT ·VFRINTRNEF(SB), NOSPLIT, $0
VFRINTRNEF V1, V2
RET
TEXT ·VFRINTRNED(SB), NOSPLIT, $0
VFRINTRNED V1, V2
RET
TEXT ·VFRINTRZF(SB), NOSPLIT, $0
VFRINTRZF V1, V2
RET
TEXT ·VFRINTRZD(SB), NOSPLIT, $0
VFRINTRZD V1, V2
RET
TEXT ·VFRINTRPF(SB), NOSPLIT, $0
VFRINTRPF V1, V2
RET
TEXT ·VFRINTRPD(SB), NOSPLIT, $0
VFRINTRPD V1, V2
RET
TEXT ·VFRINTRMF(SB), NOSPLIT, $0
VFRINTRMF V1, V2
RET
TEXT ·VFRINTRMD(SB), NOSPLIT, $0
VFRINTRMD V1, V2
RET
TEXT ·VFRINTF(SB), NOSPLIT, $0
VFRINTF V1, V2
RET
TEXT ·VFRINTD(SB), NOSPLIT, $0
VFRINTD V1, V2
RET
TEXT ·XVFRINTRNEF(SB), NOSPLIT, $0
XVFRINTRNEF X1, X2
RET
TEXT ·XVFRINTRNED(SB), NOSPLIT, $0
XVFRINTRNED X1, X2
RET
TEXT ·XVFRINTRZF(SB), NOSPLIT, $0
XVFRINTRZF X1, X2
RET
TEXT ·XVFRINTRZD(SB), NOSPLIT, $0
XVFRINTRZD X1, X2
RET
TEXT ·XVFRINTRPF(SB), NOSPLIT, $0
XVFRINTRPF X1, X2
RET
TEXT ·XVFRINTRPD(SB), NOSPLIT, $0
XVFRINTRPD X1, X2
RET
TEXT ·XVFRINTRMF(SB), NOSPLIT, $0
XVFRINTRMF X1, X2
RET
TEXT ·XVFRINTRMD(SB), NOSPLIT, $0
XVFRINTRMD X1, X2
RET
TEXT ·XVFRINTF(SB), NOSPLIT, $0
XVFRINTF X1, X2
RET
TEXT ·XVFRINTD(SB), NOSPLIT, $0
XVFRINTD X1, X2
RET
TEXT ·VFCLASSF(SB), NOSPLIT, $0
VFCLASSF V1, V2
RET
TEXT ·VFCLASSD(SB), NOSPLIT, $0
VFCLASSD V1, V2
RET
TEXT ·XVFCLASSF(SB), NOSPLIT, $0
XVFCLASSF X1, X2
RET
TEXT ·XVFCLASSD(SB), NOSPLIT, $0
XVFCLASSD X1, X2
RET
+68
View File
@@ -0,0 +1,68 @@
// Differential kernel: the interleave vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VILVLB(SB), NOSPLIT, $0
VILVLB V1, V2, V3
RET
TEXT ·VILVLH(SB), NOSPLIT, $0
VILVLH V1, V2, V3
RET
TEXT ·VILVLW(SB), NOSPLIT, $0
VILVLW V1, V2, V3
RET
TEXT ·VILVLV(SB), NOSPLIT, $0
VILVLV V1, V2, V3
RET
TEXT ·VILVHB(SB), NOSPLIT, $0
VILVHB V1, V2, V3
RET
TEXT ·VILVHH(SB), NOSPLIT, $0
VILVHH V1, V2, V3
RET
TEXT ·VILVHW(SB), NOSPLIT, $0
VILVHW V1, V2, V3
RET
TEXT ·VILVHV(SB), NOSPLIT, $0
VILVHV V1, V2, V3
RET
TEXT ·XVILVLB(SB), NOSPLIT, $0
XVILVLB X3, X2, X1
RET
TEXT ·XVILVLH(SB), NOSPLIT, $0
XVILVLH X3, X2, X1
RET
TEXT ·XVILVLW(SB), NOSPLIT, $0
XVILVLW X3, X2, X1
RET
TEXT ·XVILVLV(SB), NOSPLIT, $0
XVILVLV X3, X2, X1
RET
TEXT ·XVILVHB(SB), NOSPLIT, $0
XVILVHB X3, X2, X1
RET
TEXT ·XVILVHH(SB), NOSPLIT, $0
XVILVHH X3, X2, X1
RET
TEXT ·XVILVHW(SB), NOSPLIT, $0
XVILVHW X3, X2, X1
RET
TEXT ·XVILVHV(SB), NOSPLIT, $0
XVILVHV X3, X2, X1
RET
+174
View File
@@ -0,0 +1,174 @@
// Differential kernel: the logic vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VSEQH(SB), NOSPLIT, $0
VSEQH V1, V2, V3
VSEQH $1, V2, V3
RET
TEXT ·VSEQW(SB), NOSPLIT, $0
VSEQW V1, V2, V3
VSEQW $8, V2, V3
RET
TEXT ·XVSEQH(SB), NOSPLIT, $0
XVSEQH X3, X2, X4
XVSEQH $3, X2, X4
RET
TEXT ·XVSEQW(SB), NOSPLIT, $0
XVSEQW X3, X2, X4
XVSEQW $12, X2, X4
RET
TEXT ·VSLTB(SB), NOSPLIT, $0
VSLTB V1, V2, V3
VSLTB $1, V2, V3
RET
TEXT ·VSLTH(SB), NOSPLIT, $0
VSLTH V1, V2, V3
VSLTH $-16, V2, V3
RET
TEXT ·VSLTW(SB), NOSPLIT, $0
VSLTW V1, V2, V3
VSLTW $-16, V2, V3
RET
TEXT ·VSLTV(SB), NOSPLIT, $0
VSLTV V1, V2, V3
VSLTV $-15, V2, V3
RET
TEXT ·XVSLTB(SB), NOSPLIT, $0
XVSLTB X1, X2, X3
XVSLTB $1, X2, X3
RET
TEXT ·XVSLTH(SB), NOSPLIT, $0
XVSLTH X1, X2, X3
XVSLTH $-16, X2, X3
RET
TEXT ·XVSLTW(SB), NOSPLIT, $0
XVSLTW X1, X2, X3
XVSLTW $-16, X2, X3
RET
TEXT ·XVSLTV(SB), NOSPLIT, $0
XVSLTV X1, X2, X3
XVSLTV $-16, X2, X3
RET
TEXT ·VSLTBU(SB), NOSPLIT, $0
VSLTBU V1, V2, V3
VSLTBU $0, V2, V3
RET
TEXT ·VSLTHU(SB), NOSPLIT, $0
VSLTHU V1, V2, V3
VSLTHU $31, V2, V3
RET
TEXT ·VSLTWU(SB), NOSPLIT, $0
VSLTWU V1, V2, V3
VSLTWU $16, V2, V3
RET
TEXT ·VSLTVU(SB), NOSPLIT, $0
VSLTVU V1, V2, V3
VSLTVU $1, V2, V3
RET
TEXT ·XVSLTBU(SB), NOSPLIT, $0
XVSLTBU X1, X2, X3
XVSLTBU $0, X2, X3
RET
TEXT ·XVSLTHU(SB), NOSPLIT, $0
XVSLTHU X1, X2, X3
XVSLTHU $31, X2, X3
RET
TEXT ·XVSLTWU(SB), NOSPLIT, $0
XVSLTWU X1, X2, X3
XVSLTWU $8, X2, X3
RET
TEXT ·XVSLTVU(SB), NOSPLIT, $0
XVSLTVU X1, X2, X3
XVSLTVU $0, X2, X3
RET
TEXT ·VORV(SB), NOSPLIT, $0
VORV V1, V2, V3
VORV V1, V2
RET
TEXT ·VNORV(SB), NOSPLIT, $0
VNORV V1, V2, V3
VNORV V1, V2
RET
TEXT ·VANDNV(SB), NOSPLIT, $0
VANDNV V1, V2, V3
VANDNV V1, V2
RET
TEXT ·VORNV(SB), NOSPLIT, $0
VORNV V1, V2, V3
VORNV V1, V2
RET
TEXT ·VORB(SB), NOSPLIT, $0
VORB $64, V2, V3
VORB $64, V2
RET
TEXT ·VXORB(SB), NOSPLIT, $0
VXORB $128, V2, V3
VXORB $128, V2
RET
TEXT ·VNORB(SB), NOSPLIT, $0
VNORB $255, V2, V3
VNORB $255, V2
RET
TEXT ·XVORV(SB), NOSPLIT, $0
XVORV X1, X2, X3
XVORV X1, X2
RET
TEXT ·XVNORV(SB), NOSPLIT, $0
XVNORV X1, X2, X3
XVNORV X1, X2
RET
TEXT ·XVANDNV(SB), NOSPLIT, $0
XVANDNV X1, X2, X3
XVANDNV X1, X2
RET
TEXT ·XVORNV(SB), NOSPLIT, $0
XVORNV X1, X2, X3
XVORNV X1, X2
RET
TEXT ·XVORB(SB), NOSPLIT, $0
XVORB $1, X2, X3
XVORB $1, X2
RET
TEXT ·XVXORB(SB), NOSPLIT, $0
XVXORB $127, X2, X3
XVXORB $127, X2
RET
TEXT ·XVNORB(SB), NOSPLIT, $0
XVNORB $255, X2, X3
XVNORB $255, X2
RET
+28
View File
@@ -0,0 +1,28 @@
// Differential kernel: the madd vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VMADDB(SB), NOSPLIT, $0
VMADDB V1, V2, V3
RET
TEXT ·VMADDH(SB), NOSPLIT, $0
VMADDH V1, V2, V3
RET
TEXT ·VMADDV(SB), NOSPLIT, $0
VMADDV V1, V2, V3
RET
TEXT ·XVMADDB(SB), NOSPLIT, $0
XVMADDB X1, X2, X3
RET
TEXT ·XVMADDH(SB), NOSPLIT, $0
XVMADDH X1, X2, X3
RET
TEXT ·XVMADDV(SB), NOSPLIT, $0
XVMADDV X1, X2, X3
RET
+204
View File
@@ -0,0 +1,204 @@
// Differential kernel: the maddwiden vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VMADDW(SB), NOSPLIT, $0
VMADDW V1, V2, V3
RET
TEXT ·XVMADDW(SB), NOSPLIT, $0
XVMADDW X1, X2, X3
RET
TEXT ·VMADDWEVHB(SB), NOSPLIT, $0
VMADDWEVHB V1, V2, V3
RET
TEXT ·VMADDWEVWH(SB), NOSPLIT, $0
VMADDWEVWH V1, V2, V3
RET
TEXT ·VMADDWEVVW(SB), NOSPLIT, $0
VMADDWEVVW V1, V2, V3
RET
TEXT ·VMADDWEVQV(SB), NOSPLIT, $0
VMADDWEVQV V1, V2, V3
RET
TEXT ·VMADDWODHB(SB), NOSPLIT, $0
VMADDWODHB V1, V2, V3
RET
TEXT ·VMADDWODWH(SB), NOSPLIT, $0
VMADDWODWH V1, V2, V3
RET
TEXT ·VMADDWODVW(SB), NOSPLIT, $0
VMADDWODVW V1, V2, V3
RET
TEXT ·VMADDWODQV(SB), NOSPLIT, $0
VMADDWODQV V1, V2, V3
RET
TEXT ·XVMADDWEVHB(SB), NOSPLIT, $0
XVMADDWEVHB X1, X2, X3
RET
TEXT ·XVMADDWEVWH(SB), NOSPLIT, $0
XVMADDWEVWH X1, X2, X3
RET
TEXT ·XVMADDWEVVW(SB), NOSPLIT, $0
XVMADDWEVVW X1, X2, X3
RET
TEXT ·XVMADDWEVQV(SB), NOSPLIT, $0
XVMADDWEVQV X1, X2, X3
RET
TEXT ·XVMADDWODHB(SB), NOSPLIT, $0
XVMADDWODHB X1, X2, X3
RET
TEXT ·XVMADDWODWH(SB), NOSPLIT, $0
XVMADDWODWH X1, X2, X3
RET
TEXT ·XVMADDWODVW(SB), NOSPLIT, $0
XVMADDWODVW X1, X2, X3
RET
TEXT ·XVMADDWODQV(SB), NOSPLIT, $0
XVMADDWODQV X1, X2, X3
RET
TEXT ·VMADDWEVHBU(SB), NOSPLIT, $0
VMADDWEVHBU V1, V2, V3
RET
TEXT ·VMADDWEVWHU(SB), NOSPLIT, $0
VMADDWEVWHU V1, V2, V3
RET
TEXT ·VMADDWEVVWU(SB), NOSPLIT, $0
VMADDWEVVWU V1, V2, V3
RET
TEXT ·VMADDWEVQVU(SB), NOSPLIT, $0
VMADDWEVQVU V1, V2, V3
RET
TEXT ·VMADDWODHBU(SB), NOSPLIT, $0
VMADDWODHBU V1, V2, V3
RET
TEXT ·VMADDWODWHU(SB), NOSPLIT, $0
VMADDWODWHU V1, V2, V3
RET
TEXT ·VMADDWODVWU(SB), NOSPLIT, $0
VMADDWODVWU V1, V2, V3
RET
TEXT ·VMADDWODQVU(SB), NOSPLIT, $0
VMADDWODQVU V1, V2, V3
RET
TEXT ·XVMADDWEVHBU(SB), NOSPLIT, $0
XVMADDWEVHBU X1, X2, X3
RET
TEXT ·XVMADDWEVWHU(SB), NOSPLIT, $0
XVMADDWEVWHU X1, X2, X3
RET
TEXT ·XVMADDWEVVWU(SB), NOSPLIT, $0
XVMADDWEVVWU X1, X2, X3
RET
TEXT ·XVMADDWEVQVU(SB), NOSPLIT, $0
XVMADDWEVQVU X1, X2, X3
RET
TEXT ·XVMADDWODHBU(SB), NOSPLIT, $0
XVMADDWODHBU X1, X2, X3
RET
TEXT ·XVMADDWODWHU(SB), NOSPLIT, $0
XVMADDWODWHU X1, X2, X3
RET
TEXT ·XVMADDWODVWU(SB), NOSPLIT, $0
XVMADDWODVWU X1, X2, X3
RET
TEXT ·XVMADDWODQVU(SB), NOSPLIT, $0
XVMADDWODQVU X1, X2, X3
RET
TEXT ·VMADDWEVHBUB(SB), NOSPLIT, $0
VMADDWEVHBUB V1, V2, V3
RET
TEXT ·VMADDWEVWHUH(SB), NOSPLIT, $0
VMADDWEVWHUH V1, V2, V3
RET
TEXT ·VMADDWEVVWUW(SB), NOSPLIT, $0
VMADDWEVVWUW V1, V2, V3
RET
TEXT ·VMADDWEVQVUV(SB), NOSPLIT, $0
VMADDWEVQVUV V1, V2, V3
RET
TEXT ·VMADDWODHBUB(SB), NOSPLIT, $0
VMADDWODHBUB V1, V2, V3
RET
TEXT ·VMADDWODWHUH(SB), NOSPLIT, $0
VMADDWODWHUH V1, V2, V3
RET
TEXT ·VMADDWODVWUW(SB), NOSPLIT, $0
VMADDWODVWUW V1, V2, V3
RET
TEXT ·VMADDWODQVUV(SB), NOSPLIT, $0
VMADDWODQVUV V1, V2, V3
RET
TEXT ·XVMADDWEVHBUB(SB), NOSPLIT, $0
XVMADDWEVHBUB X1, X2, X3
RET
TEXT ·XVMADDWEVWHUH(SB), NOSPLIT, $0
XVMADDWEVWHUH X1, X2, X3
RET
TEXT ·XVMADDWEVVWUW(SB), NOSPLIT, $0
XVMADDWEVVWUW X1, X2, X3
RET
TEXT ·XVMADDWEVQVUV(SB), NOSPLIT, $0
XVMADDWEVQVUV X1, X2, X3
RET
TEXT ·XVMADDWODHBUB(SB), NOSPLIT, $0
XVMADDWODHBUB X1, X2, X3
RET
TEXT ·XVMADDWODWHUH(SB), NOSPLIT, $0
XVMADDWODWHUH X1, X2, X3
RET
TEXT ·XVMADDWODVWUW(SB), NOSPLIT, $0
XVMADDWODVWUW X1, X2, X3
RET
TEXT ·XVMADDWODQVUV(SB), NOSPLIT, $0
XVMADDWODQVUV X1, X2, X3
RET
+36
View File
@@ -0,0 +1,36 @@
// Differential kernel: the msub vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VMSUBB(SB), NOSPLIT, $0
VMSUBB V1, V2, V3
RET
TEXT ·VMSUBH(SB), NOSPLIT, $0
VMSUBH V1, V2, V3
RET
TEXT ·VMSUBW(SB), NOSPLIT, $0
VMSUBW V1, V2, V3
RET
TEXT ·VMSUBV(SB), NOSPLIT, $0
VMSUBV V1, V2, V3
RET
TEXT ·XVMSUBB(SB), NOSPLIT, $0
XVMSUBB X1, X2, X3
RET
TEXT ·XVMSUBH(SB), NOSPLIT, $0
XVMSUBH X1, X2, X3
RET
TEXT ·XVMSUBW(SB), NOSPLIT, $0
XVMSUBW X1, X2, X3
RET
TEXT ·XVMSUBV(SB), NOSPLIT, $0
XVMSUBV X1, X2, X3
RET
+108
View File
@@ -0,0 +1,108 @@
// Differential kernel: the mul vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VMULB(SB), NOSPLIT, $0
VMULB V1, V2, V3
RET
TEXT ·VMULH(SB), NOSPLIT, $0
VMULH V1, V2, V3
RET
TEXT ·VMULV(SB), NOSPLIT, $0
VMULV V1, V2, V3
RET
TEXT ·VMUHB(SB), NOSPLIT, $0
VMUHB V1, V2, V3
RET
TEXT ·VMUHH(SB), NOSPLIT, $0
VMUHH V1, V2, V3
RET
TEXT ·VMUHW(SB), NOSPLIT, $0
VMUHW V1, V2, V3
RET
TEXT ·VMUHV(SB), NOSPLIT, $0
VMUHV V1, V2, V3
RET
TEXT ·VMUHBU(SB), NOSPLIT, $0
VMUHBU V1, V2, V3
RET
TEXT ·VMUHHU(SB), NOSPLIT, $0
VMUHHU V1, V2, V3
RET
TEXT ·VMUHWU(SB), NOSPLIT, $0
VMUHWU V1, V2, V3
RET
TEXT ·VMUHVU(SB), NOSPLIT, $0
VMUHVU V1, V2, V3
RET
TEXT ·XVMULB(SB), NOSPLIT, $0
XVMULB X3, X2, X1
RET
TEXT ·XVMULH(SB), NOSPLIT, $0
XVMULH X3, X2, X1
RET
TEXT ·XVMULV(SB), NOSPLIT, $0
XVMULV X3, X2, X1
RET
TEXT ·XVMUHB(SB), NOSPLIT, $0
XVMUHB X3, X2, X1
RET
TEXT ·XVMUHH(SB), NOSPLIT, $0
XVMUHH X3, X2, X1
RET
TEXT ·XVMUHW(SB), NOSPLIT, $0
XVMUHW X3, X2, X1
RET
TEXT ·XVMUHV(SB), NOSPLIT, $0
XVMUHV X3, X2, X1
RET
TEXT ·XVMUHBU(SB), NOSPLIT, $0
XVMUHBU X3, X2, X1
RET
TEXT ·XVMUHHU(SB), NOSPLIT, $0
XVMUHHU X3, X2, X1
RET
TEXT ·XVMUHWU(SB), NOSPLIT, $0
XVMUHWU X3, X2, X1
RET
TEXT ·XVMUHVU(SB), NOSPLIT, $0
XVMUHVU X3, X2, X1
RET
TEXT ·VMULF(SB), NOSPLIT, $0
VMULF V1, V2, V3
RET
TEXT ·VMULD(SB), NOSPLIT, $0
VMULD V1, V2, V3
RET
TEXT ·XVMULF(SB), NOSPLIT, $0
XVMULF X1, X2, X3
RET
TEXT ·XVMULD(SB), NOSPLIT, $0
XVMULD X1, X2, X3
RET
+204
View File
@@ -0,0 +1,204 @@
// Differential kernel: the mulwiden vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VMULW(SB), NOSPLIT, $0
VMULW V1, V2, V3
RET
TEXT ·XVMULW(SB), NOSPLIT, $0
XVMULW X3, X2, X1
RET
TEXT ·VMULWEVHB(SB), NOSPLIT, $0
VMULWEVHB V1, V2, V3
RET
TEXT ·VMULWEVWH(SB), NOSPLIT, $0
VMULWEVWH V1, V2, V3
RET
TEXT ·VMULWEVVW(SB), NOSPLIT, $0
VMULWEVVW V1, V2, V3
RET
TEXT ·VMULWEVQV(SB), NOSPLIT, $0
VMULWEVQV V1, V2, V3
RET
TEXT ·VMULWODHB(SB), NOSPLIT, $0
VMULWODHB V1, V2, V3
RET
TEXT ·VMULWODWH(SB), NOSPLIT, $0
VMULWODWH V1, V2, V3
RET
TEXT ·VMULWODVW(SB), NOSPLIT, $0
VMULWODVW V1, V2, V3
RET
TEXT ·VMULWODQV(SB), NOSPLIT, $0
VMULWODQV V1, V2, V3
RET
TEXT ·VMULWEVHBU(SB), NOSPLIT, $0
VMULWEVHBU V1, V2, V3
RET
TEXT ·VMULWEVWHU(SB), NOSPLIT, $0
VMULWEVWHU V1, V2, V3
RET
TEXT ·VMULWEVVWU(SB), NOSPLIT, $0
VMULWEVVWU V1, V2, V3
RET
TEXT ·VMULWEVQVU(SB), NOSPLIT, $0
VMULWEVQVU V1, V2, V3
RET
TEXT ·VMULWODHBU(SB), NOSPLIT, $0
VMULWODHBU V1, V2, V3
RET
TEXT ·VMULWODWHU(SB), NOSPLIT, $0
VMULWODWHU V1, V2, V3
RET
TEXT ·VMULWODVWU(SB), NOSPLIT, $0
VMULWODVWU V1, V2, V3
RET
TEXT ·VMULWODQVU(SB), NOSPLIT, $0
VMULWODQVU V1, V2, V3
RET
TEXT ·XVMULWEVHB(SB), NOSPLIT, $0
XVMULWEVHB X1, X2, X3
RET
TEXT ·XVMULWEVWH(SB), NOSPLIT, $0
XVMULWEVWH X1, X2, X3
RET
TEXT ·XVMULWEVVW(SB), NOSPLIT, $0
XVMULWEVVW X1, X2, X3
RET
TEXT ·XVMULWEVQV(SB), NOSPLIT, $0
XVMULWEVQV X1, X2, X3
RET
TEXT ·XVMULWODHB(SB), NOSPLIT, $0
XVMULWODHB X1, X2, X3
RET
TEXT ·XVMULWODWH(SB), NOSPLIT, $0
XVMULWODWH X1, X2, X3
RET
TEXT ·XVMULWODVW(SB), NOSPLIT, $0
XVMULWODVW X1, X2, X3
RET
TEXT ·XVMULWODQV(SB), NOSPLIT, $0
XVMULWODQV X1, X2, X3
RET
TEXT ·XVMULWEVHBU(SB), NOSPLIT, $0
XVMULWEVHBU X1, X2, X3
RET
TEXT ·XVMULWEVWHU(SB), NOSPLIT, $0
XVMULWEVWHU X1, X2, X3
RET
TEXT ·XVMULWEVVWU(SB), NOSPLIT, $0
XVMULWEVVWU X1, X2, X3
RET
TEXT ·XVMULWEVQVU(SB), NOSPLIT, $0
XVMULWEVQVU X1, X2, X3
RET
TEXT ·XVMULWODHBU(SB), NOSPLIT, $0
XVMULWODHBU X1, X2, X3
RET
TEXT ·XVMULWODWHU(SB), NOSPLIT, $0
XVMULWODWHU X1, X2, X3
RET
TEXT ·XVMULWODVWU(SB), NOSPLIT, $0
XVMULWODVWU X1, X2, X3
RET
TEXT ·XVMULWODQVU(SB), NOSPLIT, $0
XVMULWODQVU X1, X2, X3
RET
TEXT ·VMULWEVHBUB(SB), NOSPLIT, $0
VMULWEVHBUB V1, V2, V3
RET
TEXT ·VMULWEVWHUH(SB), NOSPLIT, $0
VMULWEVWHUH V1, V2, V3
RET
TEXT ·VMULWEVVWUW(SB), NOSPLIT, $0
VMULWEVVWUW V1, V2, V3
RET
TEXT ·VMULWEVQVUV(SB), NOSPLIT, $0
VMULWEVQVUV V1, V2, V3
RET
TEXT ·VMULWODHBUB(SB), NOSPLIT, $0
VMULWODHBUB V1, V2, V3
RET
TEXT ·VMULWODWHUH(SB), NOSPLIT, $0
VMULWODWHUH V1, V2, V3
RET
TEXT ·VMULWODVWUW(SB), NOSPLIT, $0
VMULWODVWUW V1, V2, V3
RET
TEXT ·VMULWODQVUV(SB), NOSPLIT, $0
VMULWODQVUV V1, V2, V3
RET
TEXT ·XVMULWEVHBUB(SB), NOSPLIT, $0
XVMULWEVHBUB X1, X2, X3
RET
TEXT ·XVMULWEVWHUH(SB), NOSPLIT, $0
XVMULWEVWHUH X1, X2, X3
RET
TEXT ·XVMULWEVVWUW(SB), NOSPLIT, $0
XVMULWEVVWUW X1, X2, X3
RET
TEXT ·XVMULWEVQVUV(SB), NOSPLIT, $0
XVMULWEVQVUV X1, X2, X3
RET
TEXT ·XVMULWODHBUB(SB), NOSPLIT, $0
XVMULWODHBUB X1, X2, X3
RET
TEXT ·XVMULWODWHUH(SB), NOSPLIT, $0
XVMULWODWHUH X1, X2, X3
RET
TEXT ·XVMULWODVWUW(SB), NOSPLIT, $0
XVMULWODVWUW X1, X2, X3
RET
TEXT ·XVMULWODQVUV(SB), NOSPLIT, $0
XVMULWODQVUV X1, X2, X3
RET
+214
View File
@@ -0,0 +1,214 @@
// Differential kernel: the shift vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VSLLB(SB), NOSPLIT, $0
VSLLB V1, V2, V3
VSLLB $0, V1, V2
VSLLB $7, V1, V2
VSLLB $5, V1
RET
TEXT ·VSLLH(SB), NOSPLIT, $0
VSLLH V1, V2, V3
VSLLH $0, V1, V2
VSLLH $15, V1, V2
VSLLH $10, V1
RET
TEXT ·VSLLW(SB), NOSPLIT, $0
VSLLW V1, V2, V3
VSLLW $0, V1, V2
VSLLW $31, V1, V2
VSLLW $11, V1
RET
TEXT ·VSLLV(SB), NOSPLIT, $0
VSLLV V1, V2, V3
VSLLV $0, V1, V2
VSLLV $63, V1, V2
VSLLV $30, V1
RET
TEXT ·VSRLB(SB), NOSPLIT, $0
VSRLB V1, V2, V3
VSRLB $0, V1, V2
VSRLB $7, V1, V2
VSRLB $4, V1
RET
TEXT ·VSRLH(SB), NOSPLIT, $0
VSRLH V1, V2, V3
VSRLH $0, V1, V2
VSRLH $15, V1, V2
VSRLH $9, V1
RET
TEXT ·VSRLW(SB), NOSPLIT, $0
VSRLW V1, V2, V3
VSRLW $0, V1, V2
VSRLW $31, V1, V2
VSRLW $16, V1
RET
TEXT ·VSRLV(SB), NOSPLIT, $0
VSRLV V1, V2, V3
VSRLV $0, V1, V2
VSRLV $63, V1, V2
VSRLV $40, V1
RET
TEXT ·VSRAH(SB), NOSPLIT, $0
VSRAH V1, V2, V3
VSRAH $0, V1, V2
VSRAH $15, V1, V2
VSRAH $8, V1
RET
TEXT ·VSRAW(SB), NOSPLIT, $0
VSRAW V1, V2, V3
VSRAW $0, V1, V2
VSRAW $31, V1, V2
VSRAW $12, V1
RET
TEXT ·VSRAV(SB), NOSPLIT, $0
VSRAV V1, V2, V3
VSRAV $0, V1, V2
VSRAV $63, V1, V2
VSRAV $50, V1
RET
TEXT ·VROTRB(SB), NOSPLIT, $0
VROTRB V1, V2, V3
VROTRB $0, V1, V2
VROTRB $7, V1, V2
VROTRB $3, V1
RET
TEXT ·VROTRH(SB), NOSPLIT, $0
VROTRH V1, V2, V3
VROTRH $0, V1, V2
VROTRH $15, V1, V2
VROTRH $5, V1
RET
TEXT ·VROTRV(SB), NOSPLIT, $0
VROTRV V1, V2, V3
VROTRV $0, V1, V2
VROTRV $63, V1, V2
VROTRV $52, V1
RET
TEXT ·XVSLLB(SB), NOSPLIT, $0
XVSLLB X3, X2, X1
XVSLLB $0, X2, X1
XVSLLB $7, X2, X1
XVSLLB $4, X2
RET
TEXT ·XVSLLH(SB), NOSPLIT, $0
XVSLLH X3, X2, X1
XVSLLH $0, X2, X1
XVSLLH $15, X2, X1
XVSLLH $8, X2
RET
TEXT ·XVSLLW(SB), NOSPLIT, $0
XVSLLW X3, X2, X1
XVSLLW $0, X2, X1
XVSLLW $31, X2, X1
XVSLLW $13, X2
RET
TEXT ·XVSLLV(SB), NOSPLIT, $0
XVSLLV X3, X2, X1
XVSLLV $0, X2, X1
XVSLLV $63, X2, X1
XVSLLV $36, X2
RET
TEXT ·XVSRLB(SB), NOSPLIT, $0
XVSRLB X3, X2, X1
XVSRLB $0, X2, X1
XVSRLB $7, X2, X1
XVSRLB $5, X2
RET
TEXT ·XVSRLH(SB), NOSPLIT, $0
XVSRLH X3, X2, X1
XVSRLH $0, X2, X1
XVSRLH $15, X2, X1
XVSRLH $9, X2
RET
TEXT ·XVSRLW(SB), NOSPLIT, $0
XVSRLW X3, X2, X1
XVSRLW $0, X2, X1
XVSRLW $31, X2, X1
XVSRLW $14, X2
RET
TEXT ·XVSRLV(SB), NOSPLIT, $0
XVSRLV X3, X2, X1
XVSRLV $0, X2, X1
XVSRLV $63, X2, X1
XVSRLV $45, X2
RET
TEXT ·XVSRAB(SB), NOSPLIT, $0
XVSRAB X3, X2, X1
XVSRAB $0, X2, X1
XVSRAB $7, X2, X1
XVSRAB $6, X2
RET
TEXT ·XVSRAH(SB), NOSPLIT, $0
XVSRAH X3, X2, X1
XVSRAH $0, X2, X1
XVSRAH $15, X2, X1
XVSRAH $10, X2
RET
TEXT ·XVSRAW(SB), NOSPLIT, $0
XVSRAW X3, X2, X1
XVSRAW $0, X2, X1
XVSRAW $31, X2, X1
XVSRAW $16, X2
RET
TEXT ·XVSRAV(SB), NOSPLIT, $0
XVSRAV X3, X2, X1
XVSRAV $0, X2, X1
XVSRAV $63, X2, X1
XVSRAV $48, X2
RET
TEXT ·XVROTRB(SB), NOSPLIT, $0
XVROTRB X3, X2, X1
XVROTRB $0, X2, X1
XVROTRB $7, X2, X1
XVROTRB $3, X2
RET
TEXT ·XVROTRH(SB), NOSPLIT, $0
XVROTRH X3, X2, X1
XVROTRH $0, X2, X1
XVROTRH $15, X2, X1
XVROTRH $13, X2
RET
TEXT ·XVROTRW(SB), NOSPLIT, $0
XVROTRW X3, X2, X1
XVROTRW $0, X2, X1
XVROTRW $31, X2, X1
XVROTRW $24, X2
RET
TEXT ·XVROTRV(SB), NOSPLIT, $0
XVROTRV X3, X2, X1
XVROTRV $0, X2, X1
XVROTRV $63, X2, X1
XVROTRV $52, X2
RET
+132
View File
@@ -0,0 +1,132 @@
// Differential kernel: the shuffle vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VSHUF4IB(SB), NOSPLIT, $0
VSHUF4IB $0, V2, V1
VSHUF4IB $16, V2, V1
VSHUF4IB $255, V2, V1
RET
TEXT ·VSHUF4IH(SB), NOSPLIT, $0
VSHUF4IH $0, V2, V1
VSHUF4IH $128, V2, V1
VSHUF4IH $255, V2, V1
RET
TEXT ·VSHUF4IW(SB), NOSPLIT, $0
VSHUF4IW $0, V2, V1
VSHUF4IW $96, V2, V1
VSHUF4IW $255, V2, V1
RET
TEXT ·VSHUF4IV(SB), NOSPLIT, $0
VSHUF4IV $0, V2, V1
VSHUF4IV $8, V2, V1
VSHUF4IV $15, V2, V1
RET
TEXT ·XVSHUF4IB(SB), NOSPLIT, $0
XVSHUF4IB $0, X1, X2
XVSHUF4IB $16, X1, X2
XVSHUF4IB $255, X1, X2
RET
TEXT ·XVSHUF4IH(SB), NOSPLIT, $0
XVSHUF4IH $0, X1, X2
XVSHUF4IH $128, X1, X2
XVSHUF4IH $255, X1, X2
RET
TEXT ·XVSHUF4IW(SB), NOSPLIT, $0
XVSHUF4IW $0, X1, X2
XVSHUF4IW $96, X1, X2
XVSHUF4IW $255, X1, X2
RET
TEXT ·XVSHUF4IV(SB), NOSPLIT, $0
XVSHUF4IV $0, X1, X2
XVSHUF4IV $8, X1, X2
XVSHUF4IV $15, X1, X2
RET
TEXT ·VSHUFH(SB), NOSPLIT, $0
VSHUFH V1, V2, V3
RET
TEXT ·VSHUFW(SB), NOSPLIT, $0
VSHUFW V1, V2, V3
RET
TEXT ·VSHUFV(SB), NOSPLIT, $0
VSHUFV V1, V2, V3
RET
TEXT ·XVSHUFH(SB), NOSPLIT, $0
XVSHUFH X1, X2, X3
RET
TEXT ·XVSHUFW(SB), NOSPLIT, $0
XVSHUFW X1, X2, X3
RET
TEXT ·XVSHUFV(SB), NOSPLIT, $0
XVSHUFV X1, X2, X3
RET
TEXT ·VSHUFB(SB), NOSPLIT, $0
VSHUFB V1, V2, V3, V4
RET
TEXT ·XVSHUFB(SB), NOSPLIT, $0
XVSHUFB X1, X2, X3, X4
RET
TEXT ·VPERMIW(SB), NOSPLIT, $0
VPERMIW $0x1B, V1, V2
RET
TEXT ·XVPERMIW(SB), NOSPLIT, $0
XVPERMIW $0x2B, X1, X2
RET
TEXT ·XVPERMIV(SB), NOSPLIT, $0
XVPERMIV $0x3B, X1, X2
RET
TEXT ·XVPERMIQ(SB), NOSPLIT, $0
XVPERMIQ $0x4B, X1, X2
RET
TEXT ·VEXTRINSB(SB), NOSPLIT, $0
VEXTRINSB $0x18, V1, V2
RET
TEXT ·VEXTRINSH(SB), NOSPLIT, $0
VEXTRINSH $0x27, V1, V2
RET
TEXT ·VEXTRINSW(SB), NOSPLIT, $0
VEXTRINSW $0x36, V1, V2
RET
TEXT ·VEXTRINSV(SB), NOSPLIT, $0
VEXTRINSV $0x45, V1, V2
RET
TEXT ·XVEXTRINSB(SB), NOSPLIT, $0
XVEXTRINSB $0x54, X1, X2
RET
TEXT ·XVEXTRINSH(SB), NOSPLIT, $0
XVEXTRINSH $0x63, X1, X2
RET
TEXT ·XVEXTRINSW(SB), NOSPLIT, $0
XVEXTRINSW $0x72, X1, X2
RET
TEXT ·XVEXTRINSV(SB), NOSPLIT, $0
XVEXTRINSV $0x81, X1, X2
RET
+108
View File
@@ -0,0 +1,108 @@
// Differential kernel: the unary vector slice against the Go
// toolchain's loong64enc1.s rows (gasm v. go tool asm, byte for byte).
#include "textflag.h"
TEXT ·VPCNTB(SB), NOSPLIT, $0
VPCNTB V1, V2
RET
TEXT ·VPCNTH(SB), NOSPLIT, $0
VPCNTH V1, V2
RET
TEXT ·VPCNTW(SB), NOSPLIT, $0
VPCNTW V1, V2
RET
TEXT ·XVPCNTB(SB), NOSPLIT, $0
XVPCNTB X3, X2
RET
TEXT ·XVPCNTH(SB), NOSPLIT, $0
XVPCNTH X3, X2
RET
TEXT ·XVPCNTW(SB), NOSPLIT, $0
XVPCNTW X3, X2
RET
TEXT ·VNEGB(SB), NOSPLIT, $0
VNEGB V1, V2
RET
TEXT ·VNEGH(SB), NOSPLIT, $0
VNEGH V1, V2
RET
TEXT ·VNEGW(SB), NOSPLIT, $0
VNEGW V1, V2
RET
TEXT ·VNEGV(SB), NOSPLIT, $0
VNEGV V1, V2
RET
TEXT ·XVNEGB(SB), NOSPLIT, $0
XVNEGB X2, X1
RET
TEXT ·XVNEGH(SB), NOSPLIT, $0
XVNEGH X2, X1
RET
TEXT ·XVNEGW(SB), NOSPLIT, $0
XVNEGW X2, X1
RET
TEXT ·XVNEGV(SB), NOSPLIT, $0
XVNEGV X2, X1
RET
TEXT ·VSETEQV(SB), NOSPLIT, $0
VSETEQV V1, FCC0
RET
TEXT ·XVSETEQV(SB), NOSPLIT, $0
XVSETEQV X1, FCC0
RET
TEXT ·VSETANYEQH(SB), NOSPLIT, $0
VSETANYEQH V1, FCC0
RET
TEXT ·VSETANYEQW(SB), NOSPLIT, $0
VSETANYEQW V1, FCC0
RET
TEXT ·VSETALLNEB(SB), NOSPLIT, $0
VSETALLNEB V1, FCC0
RET
TEXT ·VSETALLNEH(SB), NOSPLIT, $0
VSETALLNEH V1, FCC0
RET
TEXT ·VSETALLNEW(SB), NOSPLIT, $0
VSETALLNEW V1, FCC0
RET
TEXT ·XVSETANYEQH(SB), NOSPLIT, $0
XVSETANYEQH X1, FCC0
RET
TEXT ·XVSETANYEQW(SB), NOSPLIT, $0
XVSETANYEQW X1, FCC0
RET
TEXT ·XVSETALLNEB(SB), NOSPLIT, $0
XVSETALLNEB X1, FCC0
RET
TEXT ·XVSETALLNEH(SB), NOSPLIT, $0
XVSETALLNEH X1, FCC0
RET
TEXT ·XVSETALLNEW(SB), NOSPLIT, $0
XVSETALLNEW X1, FCC0
RET