mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-26 20:26:19 +08:00
sm3: ppc64x copyResultsBy4
This commit is contained in:
parent
25c20a974a
commit
d2b1d1b0d6
@ -8,3 +8,6 @@ package sm3
|
|||||||
|
|
||||||
//go:noescape
|
//go:noescape
|
||||||
func transposeMatrix(dig **[8]uint32)
|
func transposeMatrix(dig **[8]uint32)
|
||||||
|
|
||||||
|
//go:noescape
|
||||||
|
func copyResultsBy4(dig *uint32, p *byte)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
// For P9 instruction emulation
|
// For P9 instruction emulation
|
||||||
#define ESPERMW V21 // Endian swapping permute into BE
|
#define ESPERMW V21 // Endian swapping permute into BE
|
||||||
#define TMP2 V22 // Temporary for P8_STXVB16X/P8_STXVB16X
|
#define TMP2 V22 // Temporary for STOREWORDS
|
||||||
|
|
||||||
DATA ·mask+0x00(SB)/8, $0x0c0d0e0f08090a0b // Permute for vector doubleword endian swap
|
DATA ·mask+0x00(SB)/8, $0x0c0d0e0f08090a0b // Permute for vector doubleword endian swap
|
||||||
DATA ·mask+0x08(SB)/8, $0x0405060700010203
|
DATA ·mask+0x08(SB)/8, $0x0405060700010203
|
||||||
@ -100,3 +100,41 @@ TEXT ·transposeMatrix(SB),NOSPLIT,$0
|
|||||||
STOREWORDS(V7, R4, R6)
|
STOREWORDS(V7, R4, R6)
|
||||||
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
// func copyResultsBy4(dig *uint32, dst *byte)
|
||||||
|
TEXT ·copyResultsBy4(SB),NOSPLIT,$0
|
||||||
|
MOVD dig+0(FP), R3
|
||||||
|
MOVD dst+8(FP), R4
|
||||||
|
|
||||||
|
LXVD2X (R0)(R3), V0
|
||||||
|
STXVD2X V0, (R0)(R4)
|
||||||
|
|
||||||
|
MOVD $16, R5
|
||||||
|
LXVD2X (R5)(R3), V0
|
||||||
|
STXVD2X V0, (R5)(R4)
|
||||||
|
|
||||||
|
ADD $16, R5
|
||||||
|
LXVD2X (R5)(R3), V0
|
||||||
|
STXVD2X V0, (R5)(R4)
|
||||||
|
|
||||||
|
ADD $16, R5
|
||||||
|
LXVD2X (R5)(R3), V0
|
||||||
|
STXVD2X V0, (R5)(R4)
|
||||||
|
|
||||||
|
ADD $16, R5
|
||||||
|
LXVD2X (R5)(R3), V0
|
||||||
|
STXVD2X V0, (R5)(R4)
|
||||||
|
|
||||||
|
ADD $16, R5
|
||||||
|
LXVD2X (R5)(R3), V0
|
||||||
|
STXVD2X V0, (R5)(R4)
|
||||||
|
|
||||||
|
ADD $16, R5
|
||||||
|
LXVD2X (R5)(R3), V0
|
||||||
|
STXVD2X V0, (R5)(R4)
|
||||||
|
|
||||||
|
ADD $16, R5
|
||||||
|
LXVD2X (R5)(R3), V0
|
||||||
|
STXVD2X V0, (R5)(R4)
|
||||||
|
|
||||||
|
RET
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
package sm3
|
package sm3
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
@ -33,3 +34,26 @@ func TestTransposeMatrix(t *testing.T) {
|
|||||||
fmt.Println()
|
fmt.Println()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCopyResultsBy4(t *testing.T) {
|
||||||
|
var m [4][8]uint32
|
||||||
|
var ret [128]byte
|
||||||
|
var k uint32 = 0
|
||||||
|
for i := 0; i < 4; i++ {
|
||||||
|
for j := 0; j < 8; j++ {
|
||||||
|
m[i][j] = k
|
||||||
|
k++
|
||||||
|
fmt.Printf("%08x ", m[i][j])
|
||||||
|
}
|
||||||
|
fmt.Println()
|
||||||
|
}
|
||||||
|
copyResultsBy4(&m[0][0], &ret[0])
|
||||||
|
fmt.Printf("got: %x\n", ret[:])
|
||||||
|
|
||||||
|
for i := 0; i < 4; i++ {
|
||||||
|
for j := 0; j < 8; j++ {
|
||||||
|
binary.BigEndian.PutUint32(ret[i*32+j*4:], m[i][j])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Printf("expected %x\n", ret[:])
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user