@@ -40,7 +40,7 @@ func load_le32(b []byte) {
40
40
// 386:`MOVL\s\(.*\),`,-`MOV[BW]`,-`OR`
41
41
// s390x:`MOVWBR\s\(.*\),`
42
42
// arm64:`MOVWU\s\(R[0-9]+\),`,-`MOV[BH]`
43
- // ppc64le:`MOVWZ\s`
43
+ // ppc64le:`MOVWZ\s`,-`MOV[BH]Z\s`
44
44
sink32 = binary .LittleEndian .Uint32 (b )
45
45
}
46
46
@@ -49,20 +49,20 @@ func load_le32_idx(b []byte, idx int) {
49
49
// 386:`MOVL\s\(.*\)\(.*\*1\),`,-`MOV[BW]`,-`OR`
50
50
// s390x:`MOVWBR\s\(.*\)\(.*\*1\),`
51
51
// arm64:`MOVWU\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOV[BH]`
52
- // ppc64le:`MOVWZ\s`
52
+ // ppc64le:`MOVWZ\s`,-`MOV[BH]Z\s`
53
53
sink32 = binary .LittleEndian .Uint32 (b [idx :])
54
54
}
55
55
56
56
func load_le16 (b []byte ) {
57
57
// amd64:`MOVWLZX\s\(.*\),`,-`MOVB`,-`OR`
58
- // ppc64le:`MOVHZ\s`
58
+ // ppc64le:`MOVHZ\s`,-`MOVBZ`
59
59
// arm64:`MOVHU\s\(R[0-9]+\),`,-`MOVB`
60
60
sink16 = binary .LittleEndian .Uint16 (b )
61
61
}
62
62
63
63
func load_le16_idx (b []byte , idx int ) {
64
64
// amd64:`MOVWLZX\s\(.*\),`,-`MOVB`,-`OR`
65
- // ppc64le:`MOVHZ\s`
65
+ // ppc64le:`MOVHZ\s`,-`MOVBZ`
66
66
// arm64:`MOVHU\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOVB`
67
67
sink16 = binary .LittleEndian .Uint16 (b [idx :])
68
68
}
@@ -71,31 +71,31 @@ func load_be64(b []byte) {
71
71
// amd64:`BSWAPQ`,-`MOV[BWL]\t[^$]`,-`OR`
72
72
// s390x:`MOVD\s\(.*\),`
73
73
// arm64:`REV`,`MOVD\s\(R[0-9]+\),`,-`MOV[BHW]`,-`REVW`,-`REV16W`
74
- // ppc64le:`MOVDBR`
74
+ // ppc64le:`MOVDBR`,-`MOV[BHW]Z`
75
75
sink64 = binary .BigEndian .Uint64 (b )
76
76
}
77
77
78
78
func load_be64_idx (b []byte , idx int ) {
79
79
// amd64:`BSWAPQ`,-`MOV[BWL]\t[^$]`,-`OR`
80
80
// s390x:`MOVD\s\(.*\)\(.*\*1\),`
81
81
// arm64:`REV`,`MOVD\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOV[WHB]`,-`REVW`,-`REV16W`
82
- // ppc64le:`MOVDBR`
82
+ // ppc64le:`MOVDBR`,-`MOV[BHW]Z`
83
83
sink64 = binary .BigEndian .Uint64 (b [idx :])
84
84
}
85
85
86
86
func load_be32 (b []byte ) {
87
87
// amd64:`BSWAPL`,-`MOV[BW]`,-`OR`
88
88
// s390x:`MOVWZ\s\(.*\),`
89
89
// arm64:`REVW`,`MOVWU\s\(R[0-9]+\),`,-`MOV[BH]`,-`REV16W`
90
- // ppc64le:`MOVWBR`
90
+ // ppc64le:`MOVWBR`,-`MOV[BH]Z`
91
91
sink32 = binary .BigEndian .Uint32 (b )
92
92
}
93
93
94
94
func load_be32_idx (b []byte , idx int ) {
95
95
// amd64:`BSWAPL`,-`MOV[BW]`,-`OR`
96
96
// s390x:`MOVWZ\s\(.*\)\(.*\*1\),`
97
97
// arm64:`REVW`,`MOVWU\s\(R[0-9]+\)\(R[0-9]+\),`,-`MOV[HB]`,-`REV16W`
98
- // ppc64le:`MOVWBR`
98
+ // ppc64le:`MOVWBR`,-`MOV[BH]Z`
99
99
sink32 = binary .BigEndian .Uint32 (b [idx :])
100
100
}
101
101
@@ -117,20 +117,23 @@ func load_le_byte2_uint16(s []byte) uint16 {
117
117
// arm64:`MOVHU\t\(R[0-9]+\)`,-`ORR`,-`MOVB`
118
118
// 386:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
119
119
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
120
+ // ppc64le:`MOVHZ\t\(R[0-9]+\)`,-`MOVBZ`
120
121
return uint16 (s [0 ]) | uint16 (s [1 ])<< 8
121
122
}
122
123
123
124
func load_le_byte2_uint16_inv (s []byte ) uint16 {
124
125
// arm64:`MOVHU\t\(R[0-9]+\)`,-`ORR`,-`MOVB`
125
126
// 386:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
126
127
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
128
+ // ppc64le:`MOVHZ\t\(R[0-9]+\)`,-`MOVDZ`
127
129
return uint16 (s [1 ])<< 8 | uint16 (s [0 ])
128
130
}
129
131
130
132
func load_le_byte4_uint32 (s []byte ) uint32 {
131
133
// arm64:`MOVWU\t\(R[0-9]+\)`,-`ORR`,-`MOV[BH]`
132
134
// 386:`MOVL\s\([A-Z]+\)`,-`MOV[BW]`,-`OR`
133
135
// amd64:`MOVL\s\([A-Z]+\)`,-`MOV[BW]`,-`OR`
136
+ // ppc64le:`MOVWZ\t\(R[0-9]+\)`,-`MOV[BH]Z`
134
137
return uint32 (s [0 ]) | uint32 (s [1 ])<< 8 | uint32 (s [2 ])<< 16 | uint32 (s [3 ])<< 24
135
138
}
136
139
@@ -142,6 +145,7 @@ func load_le_byte4_uint32_inv(s []byte) uint32 {
142
145
func load_le_byte8_uint64 (s []byte ) uint64 {
143
146
// arm64:`MOVD\t\(R[0-9]+\)`,-`ORR`,-`MOV[BHW]`
144
147
// amd64:`MOVQ\s\([A-Z]+\),\s[A-Z]+`,-`MOV[BWL]\t[^$]`,-`OR`
148
+ // ppc64le:`MOVD\t\(R[0-9]+\)`,-`MOV[BHW]Z`
145
149
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
146
150
}
147
151
@@ -153,12 +157,14 @@ func load_le_byte8_uint64_inv(s []byte) uint64 {
153
157
func load_be_byte2_uint16 (s []byte ) uint16 {
154
158
// arm64:`MOVHU\t\(R[0-9]+\)`,`REV16W`,-`ORR`,-`MOVB`
155
159
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
160
+ // ppc64le:`MOVHBR\t\(R[0-9]+\)`,-`MOVBZ`
156
161
return uint16 (s [0 ])<< 8 | uint16 (s [1 ])
157
162
}
158
163
159
164
func load_be_byte2_uint16_inv (s []byte ) uint16 {
160
165
// arm64:`MOVHU\t\(R[0-9]+\)`,`REV16W`,-`ORR`,-`MOVB`
161
166
// amd64:`MOVWLZX\s\([A-Z]+\)`,-`MOVB`,-`OR`
167
+ // ppc64le:`MOVHBR\t\(R[0-9]+\)`,-`MOVBZ`
162
168
return uint16 (s [1 ]) | uint16 (s [0 ])<< 8
163
169
}
164
170
@@ -175,12 +181,14 @@ func load_be_byte4_uint32_inv(s []byte) uint32 {
175
181
176
182
func load_be_byte8_uint64 (s []byte ) uint64 {
177
183
// arm64:`MOVD\t\(R[0-9]+\)`,`REV`,-`ORR`,-`REVW`,-`REV16W`,-`MOV[BHW]`
184
+ // ppc64le:`MOVDBR\t\(R[0-9]+\)`,-`MOV[BHW]Z`
178
185
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 ])
179
186
}
180
187
181
188
func load_be_byte8_uint64_inv (s []byte ) uint64 {
182
189
// arm64:`MOVD\t\(R[0-9]+\)`,`REV`,-`ORR`,-`REVW`,-`REV16W`,-`MOV[BHW]`
183
190
// amd64:`MOVQ\s\([A-Z]+\),\s[A-Z]+`,-`MOV[BWL]\t[^$]`,-`OR`
191
+ // ppc64le:`MOVDBR\t\(R[0-9]+\)`,-`MOV[BHW]Z`
184
192
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
185
193
}
186
194
0 commit comments