]> Cypherpunks repositories - gostls13.git/commitdiff
hash/crc32: simplify hasVX checking on s390x
authorRuixin(Peter) Bao <ruixin.bao@ibm.com>
Mon, 27 Apr 2020 19:23:37 +0000 (15:23 -0400)
committerMichael Munday <mike.munday@ibm.com>
Mon, 27 Apr 2020 21:18:58 +0000 (21:18 +0000)
Originally, we use an assembly function that returns a boolean result to
tell whether the machine has vector facility or not. It is now no longer
needed when we can directly use cpu.S390X.HasVX variable. This CL
also removes the last occurence of hasVectorFacility function on s390x.

Change-Id: Id20cb746c21eacac5e13344b362e2d87adfe4317
Reviewed-on: https://go-review.googlesource.com/c/go/+/230337
Reviewed-by: Michael Munday <mike.munday@ibm.com>
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/hash/crc32/crc32_s390x.go
src/hash/crc32/crc32_s390x.s

index d13000d0584967326d761e5bccdf26bf28742866..3a98bd8799ed8ae4afe00ad200dbd9932c611e37 100644 (file)
@@ -4,16 +4,16 @@
 
 package crc32
 
+import "internal/cpu"
+
 const (
        vxMinLen    = 64
        vxAlignMask = 15 // align to 16 bytes
 )
 
-// hasVectorFacility reports whether the machine has the z/Architecture
+// hasVX reports whether the machine has the z/Architecture
 // vector facility installed and enabled.
-func hasVectorFacility() bool
-
-var hasVX = hasVectorFacility()
+var hasVX = cpu.S390X.HasVX
 
 // vectorizedCastagnoli implements CRC32 using vector instructions.
 // It is defined in crc32_s390x.s.
index 63aa609db27fb900767ccb73263c444e04a70509..a168fad27744652b669146bf18ac7f9a156a2c48 100644 (file)
@@ -61,28 +61,6 @@ DATA    ·crcclecons+88(SB)/8, $0x0000000105ec76f0      // P'(x) << 1
 
 GLOBL   ·crcclecons(SB),RODATA, $144
 
-// func hasVectorFacility() bool
-TEXT ·hasVectorFacility(SB),NOSPLIT,$24-1
-       MOVD    $x-24(SP), R1
-       XC      $24, 0(R1), 0(R1) // clear the storage
-       MOVD    $2, R0            // R0 is the number of double words stored -1
-       WORD    $0xB2B01000       // STFLE 0(R1)
-       XOR     R0, R0            // reset the value of R0
-       MOVBZ   z-8(SP), R1
-       AND     $0x40, R1
-       BEQ     novector
-vectorinstalled:
-       // check if the vector instruction has been enabled
-       VLEIB   $0, $0xF, V16
-       VLGVB   $0, V16, R1
-       CMPBNE  R1, $0xF, novector
-       MOVB    $1, ret+0(FP) // have vx
-       RET
-novector:
-       MOVB    $0, ret+0(FP) // no vx
-       RET
-
-
 // The CRC-32 function(s) use these calling conventions:
 //
 // Parameters: