]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/ssa: add tests for BSWAP on stores on AMD64
authorKirill Smelkov <kirr@nexedi.com>
Thu, 1 Dec 2016 18:40:57 +0000 (21:40 +0300)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 21 Dec 2016 16:36:45 +0000 (16:36 +0000)
Commit 10f75748 (CL 32222) taught AMD64 backend to rewrite series of
byte loads or stores with corresponding shifts into a single long or
quad load or store + appropriate BSWAP. However it did not added test
for stores - only loads were tested.

Fix it.

NOTE Tests for indexed stores are not added because 10f75748 did not add
support for indexed stores - only indexed loads were handled then.

Change-Id: I48c867ebe7622ac8e691d43741feed1d40cca0d7
Reviewed-on: https://go-review.googlesource.com/34634
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/asm_test.go

index 945b74ca8c5509a516bf20aeece036fc6d2fc962..db800aba20c6a1832a30cb6900522236071e82b3 100644 (file)
@@ -175,6 +175,14 @@ func f(b []byte, i int) uint64 {
        },
        {"amd64", "linux", `
 import "encoding/binary"
+func f(b []byte, v uint64) {
+       binary.BigEndian.PutUint64(b, v)
+}
+`,
+               []string{"\tBSWAPQ\t"},
+       },
+       {"amd64", "linux", `
+import "encoding/binary"
 func f(b []byte) uint32 {
        return binary.BigEndian.Uint32(b)
 }
@@ -186,6 +194,14 @@ import "encoding/binary"
 func f(b []byte, i int) uint32 {
        return binary.BigEndian.Uint32(b[i:])
 }
+`,
+               []string{"\tBSWAPL\t"},
+       },
+       {"amd64", "linux", `
+import "encoding/binary"
+func f(b []byte, v uint32) {
+       binary.BigEndian.PutUint32(b, v)
+}
 `,
                []string{"\tBSWAPL\t"},
        },