Skip to content

Commit e30aa16

Browse files
committed
test: enable more memcombine tests for ppc64le
This enables more of the testcases in memcombine for ppc64le, and adds more detail to some existing. Change-Id: Ic522a1175bed682b546909c96f9ea758f8db247c Reviewed-on: https://go-review.googlesource.com/c/go/+/174737 Reviewed-by: Brad Fitzpatrick <[email protected]> Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent b39daa7 commit e30aa16

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

test/codegen/memcombine.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func load_le32(b []byte) {
4040
// 386:`MOVL\s\(.*\),`,-`MOV[BW]`,-`OR`
4141
// s390x:`MOVWBR\s\(.*\),`
4242
// arm64:`MOVWU\s\(R[0-9]+\),`,-`MOV[BH]`
43-
// ppc64le:`MOVWZ\s`
43+
// ppc64le:`MOVWZ\s`,-`MOV[BH]Z\s`
4444
sink32 = binary.LittleEndian.Uint32(b)
4545
}
4646

@@ -49,20 +49,20 @@ func load_le32_idx(b []byte, idx int) {
4949
// 386:`MOVL\s\(.*\)\(.*\*1\),`,-`MOV[BW]`,-`OR`
5050
// s390x:`MOVWBR\s\(.*\)\(.*\*1\),`
5151
// arm64:`MOVWU\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOV[BH]`
52-
// ppc64le:`MOVWZ\s`
52+
// ppc64le:`MOVWZ\s`,-`MOV[BH]Z\s`
5353
sink32 = binary.LittleEndian.Uint32(b[idx:])
5454
}
5555

5656
func load_le16(b []byte) {
5757
// amd64:`MOVWLZX\s\(.*\),`,-`MOVB`,-`OR`
58-
// ppc64le:`MOVHZ\s`
58+
// ppc64le:`MOVHZ\s`,-`MOVBZ`
5959
// arm64:`MOVHU\s\(R[0-9]+\),`,-`MOVB`
6060
sink16 = binary.LittleEndian.Uint16(b)
6161
}
6262

6363
func load_le16_idx(b []byte, idx int) {
6464
// amd64:`MOVWLZX\s\(.*\),`,-`MOVB`,-`OR`
65-
// ppc64le:`MOVHZ\s`
65+
// ppc64le:`MOVHZ\s`,-`MOVBZ`
6666
// arm64:`MOVHU\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOVB`
6767
sink16 = binary.LittleEndian.Uint16(b[idx:])
6868
}
@@ -71,31 +71,31 @@ func load_be64(b []byte) {
7171
// amd64:`BSWAPQ`,-`MOV[BWL]\t[^$]`,-`OR`
7272
// s390x:`MOVD\s\(.*\),`
7373
// arm64:`REV`,`MOVD\s\(R[0-9]+\),`,-`MOV[BHW]`,-`REVW`,-`REV16W`
74-
// ppc64le:`MOVDBR`
74+
// ppc64le:`MOVDBR`,-`MOV[BHW]Z`
7575
sink64 = binary.BigEndian.Uint64(b)
7676
}
7777

7878
func load_be64_idx(b []byte, idx int) {
7979
// amd64:`BSWAPQ`,-`MOV[BWL]\t[^$]`,-`OR`
8080
// s390x:`MOVD\s\(.*\)\(.*\*1\),`
8181
// arm64:`REV`,`MOVD\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOV[WHB]`,-`REVW`,-`REV16W`
82-
// ppc64le:`MOVDBR`
82+
// ppc64le:`MOVDBR`,-`MOV[BHW]Z`
8383
sink64 = binary.BigEndian.Uint64(b[idx:])
8484
}
8585

8686
func load_be32(b []byte) {
8787
// amd64:`BSWAPL`,-`MOV[BW]`,-`OR`
8888
// s390x:`MOVWZ\s\(.*\),`
8989
// arm64:`REVW`,`MOVWU\s\(R[0-9]+\),`,-`MOV[BH]`,-`REV16W`
90-
// ppc64le:`MOVWBR`
90+
// ppc64le:`MOVWBR`,-`MOV[BH]Z`
9191
sink32 = binary.BigEndian.Uint32(b)
9292
}
9393

9494
func load_be32_idx(b []byte, idx int) {
9595
// amd64:`BSWAPL`,-`MOV[BW]`,-`OR`
9696
// s390x:`MOVWZ\s\(.*\)\(.*\*1\),`
9797
// arm64:`REVW`,`MOVWU\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOV[HB]`,-`REV16W`
98-
// ppc64le:`MOVWBR`
98+
// ppc64le:`MOVWBR`,-`MOV[BH]Z`
9999
sink32 = binary.BigEndian.Uint32(b[idx:])
100100
}
101101

@@ -117,20 +117,23 @@ func load_le_byte2_uint16(s []byte) uint16 {
117117
// arm64:`MOVHU\t\(R[0-9]+\)`,-`ORR`,-`MOVB`
118118
// 386:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
119119
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
120+
// ppc64le:`MOVHZ\t\(R[0-9]+\)`,-`MOVBZ`
120121
return uint16(s[0]) | uint16(s[1])<<8
121122
}
122123

123124
func load_le_byte2_uint16_inv(s []byte) uint16 {
124125
// arm64:`MOVHU\t\(R[0-9]+\)`,-`ORR`,-`MOVB`
125126
// 386:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
126127
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
128+
// ppc64le:`MOVHZ\t\(R[0-9]+\)`,-`MOVDZ`
127129
return uint16(s[1])<<8 | uint16(s[0])
128130
}
129131

130132
func load_le_byte4_uint32(s []byte) uint32 {
131133
// arm64:`MOVWU\t\(R[0-9]+\)`,-`ORR`,-`MOV[BH]`
132134
// 386:`MOVL\s\([A-Z]+\)`,-`MOV[BW]`,-`OR`
133135
// amd64:`MOVL\s\([A-Z]+\)`,-`MOV[BW]`,-`OR`
136+
// ppc64le:`MOVWZ\t\(R[0-9]+\)`,-`MOV[BH]Z`
134137
return uint32(s[0]) | uint32(s[1])<<8 | uint32(s[2])<<16 | uint32(s[3])<<24
135138
}
136139

@@ -142,6 +145,7 @@ func load_le_byte4_uint32_inv(s []byte) uint32 {
142145
func load_le_byte8_uint64(s []byte) uint64 {
143146
// arm64:`MOVD\t\(R[0-9]+\)`,-`ORR`,-`MOV[BHW]`
144147
// amd64:`MOVQ\s\([A-Z]+\),\s[A-Z]+`,-`MOV[BWL]\t[^$]`,-`OR`
148+
// ppc64le:`MOVD\t\(R[0-9]+\)`,-`MOV[BHW]Z`
145149
return uint64(s[0]) | uint64(s[1])<<8 | uint64(s[2])<<16 | uint64(s[3])<<24 | uint64(s[4])<<32 | uint64(s[5])<<40 | uint64(s[6])<<48 | uint64(s[7])<<56
146150
}
147151

@@ -153,12 +157,14 @@ func load_le_byte8_uint64_inv(s []byte) uint64 {
153157
func load_be_byte2_uint16(s []byte) uint16 {
154158
// arm64:`MOVHU\t\(R[0-9]+\)`,`REV16W`,-`ORR`,-`MOVB`
155159
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
160+
// ppc64le:`MOVHBR\t\(R[0-9]+\)`,-`MOVBZ`
156161
return uint16(s[0])<<8 | uint16(s[1])
157162
}
158163

159164
func load_be_byte2_uint16_inv(s []byte) uint16 {
160165
// arm64:`MOVHU\t\(R[0-9]+\)`,`REV16W`,-`ORR`,-`MOVB`
161166
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
167+
// ppc64le:`MOVHBR\t\(R[0-9]+\)`,-`MOVBZ`
162168
return uint16(s[1]) | uint16(s[0])<<8
163169
}
164170

@@ -175,12 +181,14 @@ func load_be_byte4_uint32_inv(s []byte) uint32 {
175181

176182
func load_be_byte8_uint64(s []byte) uint64 {
177183
// arm64:`MOVD\t\(R[0-9]+\)`,`REV`,-`ORR`,-`REVW`,-`REV16W`,-`MOV[BHW]`
184+
// ppc64le:`MOVDBR\t\(R[0-9]+\)`,-`MOV[BHW]Z`
178185
return uint64(s[0])<<56 | uint64(s[1])<<48 | uint64(s[2])<<40 | uint64(s[3])<<32 | uint64(s[4])<<24 | uint64(s[5])<<16 | uint64(s[6])<<8 | uint64(s[7])
179186
}
180187

181188
func load_be_byte8_uint64_inv(s []byte) uint64 {
182189
// arm64:`MOVD\t\(R[0-9]+\)`,`REV`,-`ORR`,-`REVW`,-`REV16W`,-`MOV[BHW]`
183190
// amd64:`MOVQ\s\([A-Z]+\),\s[A-Z]+`,-`MOV[BWL]\t[^$]`,-`OR`
191+
// ppc64le:`MOVDBR\t\(R[0-9]+\)`,-`MOV[BHW]Z`
184192
return uint64(s[7]) | uint64(s[6])<<8 | uint64(s[5])<<16 | uint64(s[4])<<24 | uint64(s[3])<<32 | uint64(s[2])<<40 | uint64(s[1])<<48 | uint64(s[0])<<56
185193
}
186194

0 commit comments

Comments
 (0)