Skip to content

Commit 0ba29fd

Browse files
authored
Update dgemm_kernel_4x8_haswell.S for zen2
replaced a bunch of vpermpd instructions with vpermilpd and vperm2f128
1 parent bafa021 commit 0ba29fd

File tree

1 file changed

+54
-66
lines changed

1 file changed

+54
-66
lines changed

kernel/x86_64/dgemm_kernel_4x8_haswell.S

Lines changed: 54 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
143143
vmulpd %ymm0 ,%ymm2 , %ymm8
144144
vmulpd %ymm0 ,%ymm3 , %ymm12
145145
prefetcht0 B_PR1+256(BO)
146-
vpermpd $ 0xb1, %ymm0 , %ymm0
146+
vpermilpd $ 0x05, %ymm0 , %ymm0
147147
vmulpd %ymm0 ,%ymm1 , %ymm5
148148
vmulpd %ymm0 ,%ymm2 , %ymm9
149149
vmulpd %ymm0 ,%ymm3 , %ymm13
@@ -153,7 +153,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
153153

154154
addq $ 12*SIZE, BO
155155
vmulpd %ymm0 ,%ymm3 , %ymm14
156-
vpermpd $ 0xb1, %ymm0 , %ymm0
156+
vpermilpd $ 0x05, %ymm0 , %ymm0
157157
vmulpd %ymm0 ,%ymm1 , %ymm7
158158
vmovups -12 * SIZE(BO), %ymm1
159159
vmulpd %ymm0 ,%ymm2 , %ymm11
@@ -172,7 +172,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
172172
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
173173
prefetcht0 B_PR1+128(BO)
174174
vfmadd231pd %ymm0 ,%ymm3 , %ymm12
175-
vpermpd $ 0xb1, %ymm0 , %ymm0
175+
vpermilpd $ 0x05, %ymm0 , %ymm0
176176
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
177177
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
178178
vfmadd231pd %ymm0 ,%ymm3 , %ymm13
@@ -181,7 +181,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
181181
vfmadd231pd %ymm0 ,%ymm2 , %ymm10
182182

183183
vfmadd231pd %ymm0 ,%ymm3 , %ymm14
184-
vpermpd $ 0xb1, %ymm0 , %ymm0
184+
vpermilpd $ 0x05, %ymm0 , %ymm0
185185
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
186186
vmovups -12 * SIZE(BO), %ymm1
187187
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
@@ -196,7 +196,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
196196
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
197197
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
198198
vfmadd231pd %ymm0 ,%ymm3 , %ymm12
199-
vpermpd $ 0xb1, %ymm0 , %ymm0
199+
vpermilpd $ 0x05, %ymm0 , %ymm0
200200
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
201201
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
202202
vfmadd231pd %ymm0 ,%ymm3 , %ymm13
@@ -206,7 +206,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
206206

207207
addq $ 8*SIZE, AO
208208
vfmadd231pd %ymm0 ,%ymm3 , %ymm14
209-
vpermpd $ 0xb1, %ymm0 , %ymm0
209+
vpermilpd $ 0x05, %ymm0 , %ymm0
210210
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
211211
vmovups 0 * SIZE(BO), %ymm1
212212
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
@@ -222,7 +222,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
222222
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
223223
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
224224
vfmadd231pd %ymm0 ,%ymm3 , %ymm12
225-
vpermpd $ 0xb1, %ymm0 , %ymm0
225+
vpermilpd $ 0x05, %ymm0 , %ymm0
226226
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
227227
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
228228
vfmadd231pd %ymm0 ,%ymm3 , %ymm13
@@ -232,7 +232,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
232232

233233
addq $ 8*SIZE, AO
234234
vfmadd231pd %ymm0 ,%ymm3 , %ymm14
235-
vpermpd $ 0xb1, %ymm0 , %ymm0
235+
vpermilpd $ 0x05, %ymm0 , %ymm0
236236
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
237237
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
238238
vfmadd231pd %ymm0 ,%ymm3 , %ymm15
@@ -247,7 +247,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
247247
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
248248
vmovups -4 * SIZE(BO), %ymm3
249249
vfmadd231pd %ymm0 ,%ymm3 , %ymm12
250-
vpermpd $ 0xb1, %ymm0 , %ymm0
250+
vpermilpd $ 0x05, %ymm0 , %ymm0
251251
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
252252
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
253253
addq $ 12*SIZE, BO
@@ -257,7 +257,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
257257
vfmadd231pd %ymm0 ,%ymm2 , %ymm10
258258
addq $ 4*SIZE, AO
259259
vfmadd231pd %ymm0 ,%ymm3 , %ymm14
260-
vpermpd $ 0xb1, %ymm0 , %ymm0
260+
vpermilpd $ 0x05, %ymm0 , %ymm0
261261
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
262262
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
263263
vfmadd231pd %ymm0 ,%ymm3 , %ymm15
@@ -284,18 +284,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
284284
vmulpd %ymm0 , %ymm14, %ymm14
285285
vmulpd %ymm0 , %ymm15, %ymm15
286286

287-
vpermpd $ 0xb1 , %ymm5, %ymm5
288-
vpermpd $ 0xb1 , %ymm7, %ymm7
287+
vpermilpd $ 0x05 , %ymm5, %ymm5
288+
vpermilpd $ 0x05 , %ymm7, %ymm7
289289

290290
vblendpd $ 0x0a, %ymm5, %ymm4, %ymm0
291291
vblendpd $ 0x05, %ymm5, %ymm4, %ymm1
292292
vblendpd $ 0x0a, %ymm7, %ymm6, %ymm2
293293
vblendpd $ 0x05, %ymm7, %ymm6, %ymm3
294294

295-
vpermpd $ 0x1b , %ymm2, %ymm2
296-
vpermpd $ 0x1b , %ymm3, %ymm3
297-
vpermpd $ 0xb1 , %ymm2, %ymm2
298-
vpermpd $ 0xb1 , %ymm3, %ymm3
295+
vperm2f128 $ 0x01 , %ymm2, %ymm2
296+
vperm2f128 $ 0x01 , %ymm3, %ymm3
299297

300298
vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4
301299
vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5
@@ -324,18 +322,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
324322
prefetcht0 32(%rax)
325323
prefetcht0 32(%rax,LDC)
326324

327-
vpermpd $ 0xb1 , %ymm9 , %ymm9
328-
vpermpd $ 0xb1 , %ymm11, %ymm11
325+
vpermilpd $ 0x05 , %ymm9 , %ymm9
326+
vpermilpd $ 0x05 , %ymm11, %ymm11
329327

330328
vblendpd $ 0x0a, %ymm9 , %ymm8 , %ymm0
331329
vblendpd $ 0x05, %ymm9 , %ymm8 , %ymm1
332330
vblendpd $ 0x0a, %ymm11, %ymm10, %ymm2
333331
vblendpd $ 0x05, %ymm11, %ymm10, %ymm3
334332

335-
vpermpd $ 0x1b , %ymm2, %ymm2
336-
vpermpd $ 0x1b , %ymm3, %ymm3
337-
vpermpd $ 0xb1 , %ymm2, %ymm2
338-
vpermpd $ 0xb1 , %ymm3, %ymm3
333+
vperm2f128 $ 0x01 , %ymm2, %ymm2
334+
vperm2f128 $ 0x01 , %ymm3, %ymm3
339335

340336
vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4
341337
vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5
@@ -365,18 +361,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
365361
prefetcht0 32(%rbp)
366362
prefetcht0 32(%rbp,LDC)
367363

368-
vpermpd $ 0xb1 , %ymm13, %ymm13
369-
vpermpd $ 0xb1 , %ymm15, %ymm15
364+
vpermilpd $ 0x05 , %ymm13, %ymm13
365+
vpermilpd $ 0x05 , %ymm15, %ymm15
370366

371367
vblendpd $ 0x0a, %ymm13, %ymm12, %ymm0
372368
vblendpd $ 0x05, %ymm13, %ymm12, %ymm1
373369
vblendpd $ 0x0a, %ymm15, %ymm14, %ymm2
374370
vblendpd $ 0x05, %ymm15, %ymm14, %ymm3
375371

376-
vpermpd $ 0x1b , %ymm2, %ymm2
377-
vpermpd $ 0x1b , %ymm3, %ymm3
378-
vpermpd $ 0xb1 , %ymm2, %ymm2
379-
vpermpd $ 0xb1 , %ymm3, %ymm3
372+
vperm2f128 $ 0x01 , %ymm2, %ymm2
373+
vperm2f128 $ 0x01 , %ymm3, %ymm3
380374

381375
vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4
382376
vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5
@@ -687,15 +681,15 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
687681
vmovups -8 * SIZE(BO), %ymm2
688682
vmulpd %ymm0 ,%ymm1 , %ymm4
689683
vmulpd %ymm0 ,%ymm2 , %ymm8
690-
vpermpd $ 0xb1, %ymm0 , %ymm0
684+
vpermilpd $ 0x05, %ymm0 , %ymm0
691685
vmulpd %ymm0 ,%ymm1 , %ymm5
692686
vmulpd %ymm0 ,%ymm2 , %ymm9
693687
vpermpd $ 0x1b, %ymm0 , %ymm0
694688
vmulpd %ymm0 ,%ymm1 , %ymm6
695689
vmulpd %ymm0 ,%ymm2 , %ymm10
696690

697691
addq $ 8*SIZE, BO
698-
vpermpd $ 0xb1, %ymm0 , %ymm0
692+
vpermilpd $ 0x05, %ymm0 , %ymm0
699693
vmulpd %ymm0 ,%ymm1 , %ymm7
700694
vmovups -12 * SIZE(BO), %ymm1
701695
vmulpd %ymm0 ,%ymm2 , %ymm11
@@ -710,14 +704,14 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
710704
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
711705
prefetcht0 B_PR1+64(BO)
712706
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
713-
vpermpd $ 0xb1, %ymm0 , %ymm0
707+
vpermilpd $ 0x05, %ymm0 , %ymm0
714708
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
715709
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
716710
vpermpd $ 0x1b, %ymm0 , %ymm0
717711
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
718712
vfmadd231pd %ymm0 ,%ymm2 , %ymm10
719713

720-
vpermpd $ 0xb1, %ymm0 , %ymm0
714+
vpermilpd $ 0x05, %ymm0 , %ymm0
721715
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
722716
vmovups -12 * SIZE(BO), %ymm1
723717
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
@@ -729,15 +723,15 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
729723
vmovups -12 * SIZE(AO), %ymm0
730724
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
731725
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
732-
vpermpd $ 0xb1, %ymm0 , %ymm0
726+
vpermilpd $ 0x05, %ymm0 , %ymm0
733727
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
734728
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
735729
vpermpd $ 0x1b, %ymm0 , %ymm0
736730
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
737731
vfmadd231pd %ymm0 ,%ymm2 , %ymm10
738732

739733
addq $ 8*SIZE, AO
740-
vpermpd $ 0xb1, %ymm0 , %ymm0
734+
vpermilpd $ 0x05, %ymm0 , %ymm0
741735
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
742736
vmovups -4 * SIZE(BO), %ymm1
743737
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
@@ -750,15 +744,15 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
750744
vmovups -12 * SIZE(AO), %ymm0
751745
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
752746
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
753-
vpermpd $ 0xb1, %ymm0 , %ymm0
747+
vpermilpd $ 0x05, %ymm0 , %ymm0
754748
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
755749
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
756750
vpermpd $ 0x1b, %ymm0 , %ymm0
757751
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
758752
vfmadd231pd %ymm0 ,%ymm2 , %ymm10
759753

760754
addq $ 8*SIZE, AO
761-
vpermpd $ 0xb1, %ymm0 , %ymm0
755+
vpermilpd $ 0x05, %ymm0 , %ymm0
762756
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
763757
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
764758
addq $ 8*SIZE, BO
@@ -770,15 +764,15 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
770764
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
771765
vmovups -8 * SIZE(BO), %ymm2
772766
vfmadd231pd %ymm0 ,%ymm2 , %ymm8
773-
vpermpd $ 0xb1, %ymm0 , %ymm0
767+
vpermilpd $ 0x05, %ymm0 , %ymm0
774768
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
775769
vfmadd231pd %ymm0 ,%ymm2 , %ymm9
776770
addq $ 8*SIZE, BO
777771
vpermpd $ 0x1b, %ymm0 , %ymm0
778772
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
779773
vfmadd231pd %ymm0 ,%ymm2 , %ymm10
780774
addq $ 4*SIZE, AO
781-
vpermpd $ 0xb1, %ymm0 , %ymm0
775+
vpermilpd $ 0x05, %ymm0 , %ymm0
782776
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
783777
vfmadd231pd %ymm0 ,%ymm2 , %ymm11
784778

@@ -799,18 +793,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
799793
vmulpd %ymm0 , %ymm10, %ymm10
800794
vmulpd %ymm0 , %ymm11, %ymm11
801795

802-
vpermpd $ 0xb1 , %ymm5, %ymm5
803-
vpermpd $ 0xb1 , %ymm7, %ymm7
796+
vpermilpd $ 0x05 , %ymm5, %ymm5
797+
vpermilpd $ 0x05 , %ymm7, %ymm7
804798

805799
vblendpd $ 0x0a, %ymm5, %ymm4, %ymm0
806800
vblendpd $ 0x05, %ymm5, %ymm4, %ymm1
807801
vblendpd $ 0x0a, %ymm7, %ymm6, %ymm2
808802
vblendpd $ 0x05, %ymm7, %ymm6, %ymm3
809803

810-
vpermpd $ 0x1b , %ymm2, %ymm2
811-
vpermpd $ 0x1b , %ymm3, %ymm3
812-
vpermpd $ 0xb1 , %ymm2, %ymm2
813-
vpermpd $ 0xb1 , %ymm3, %ymm3
804+
vperm2f128 $ 0x01 , %ymm2, %ymm2
805+
vperm2f128 $ 0x01 , %ymm3, %ymm3
814806

815807
vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4
816808
vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5
@@ -839,18 +831,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
839831
prefetcht0 32(%rax)
840832
prefetcht0 32(%rax,LDC)
841833

842-
vpermpd $ 0xb1 , %ymm9 , %ymm9
843-
vpermpd $ 0xb1 , %ymm11, %ymm11
834+
vpermilpd $ 0x05 , %ymm9 , %ymm9
835+
vpermilpd $ 0x05 , %ymm11, %ymm11
844836

845837
vblendpd $ 0x0a, %ymm9 , %ymm8 , %ymm0
846838
vblendpd $ 0x05, %ymm9 , %ymm8 , %ymm1
847839
vblendpd $ 0x0a, %ymm11, %ymm10, %ymm2
848840
vblendpd $ 0x05, %ymm11, %ymm10, %ymm3
849841

850-
vpermpd $ 0x1b , %ymm2, %ymm2
851-
vpermpd $ 0x1b , %ymm3, %ymm3
852-
vpermpd $ 0xb1 , %ymm2, %ymm2
853-
vpermpd $ 0xb1 , %ymm3, %ymm3
842+
vperm2f128 $ 0x01 , %ymm2, %ymm2
843+
vperm2f128 $ 0x01 , %ymm3, %ymm3
854844

855845
vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4
856846
vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5
@@ -1084,13 +1074,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10841074
vmovups -12 * SIZE(BO), %ymm1
10851075
vmovups -16 * SIZE(AO), %ymm0
10861076
vmulpd %ymm0 ,%ymm1 , %ymm4
1087-
vpermpd $ 0xb1, %ymm0 , %ymm0
1077+
vpermilpd $ 0x05, %ymm0 , %ymm0
10881078
vmulpd %ymm0 ,%ymm1 , %ymm5
10891079
vpermpd $ 0x1b, %ymm0 , %ymm0
10901080
vmulpd %ymm0 ,%ymm1 , %ymm6
10911081

10921082
addq $ 4*SIZE, BO
1093-
vpermpd $ 0xb1, %ymm0 , %ymm0
1083+
vpermilpd $ 0x05, %ymm0 , %ymm0
10941084
vmulpd %ymm0 ,%ymm1 , %ymm7
10951085
vmovups -12 * SIZE(BO), %ymm1
10961086

@@ -1100,12 +1090,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11001090
prefetcht0 A_PR1(AO)
11011091
vmovups -16 * SIZE(AO), %ymm0
11021092
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
1103-
vpermpd $ 0xb1, %ymm0 , %ymm0
1093+
vpermilpd $ 0x05, %ymm0 , %ymm0
11041094
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
11051095
vpermpd $ 0x1b, %ymm0 , %ymm0
11061096
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
11071097

1108-
vpermpd $ 0xb1, %ymm0 , %ymm0
1098+
vpermilpd $ 0x05, %ymm0 , %ymm0
11091099
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
11101100
vmovups -12 * SIZE(BO), %ymm1
11111101

@@ -1114,13 +1104,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11141104
.macro KERNEL4x4_M2
11151105
vmovups -12 * SIZE(AO), %ymm0
11161106
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
1117-
vpermpd $ 0xb1, %ymm0 , %ymm0
1107+
vpermilpd $ 0x05, %ymm0 , %ymm0
11181108
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
11191109
vpermpd $ 0x1b, %ymm0 , %ymm0
11201110
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
11211111

11221112
addq $ 8*SIZE, AO
1123-
vpermpd $ 0xb1, %ymm0 , %ymm0
1113+
vpermilpd $ 0x05, %ymm0 , %ymm0
11241114
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
11251115
vmovups -8 * SIZE(BO), %ymm1
11261116
addq $ 8*SIZE, BO
@@ -1130,13 +1120,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11301120
.macro KERNEL4x4_E
11311121
vmovups -12 * SIZE(AO), %ymm0
11321122
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
1133-
vpermpd $ 0xb1, %ymm0 , %ymm0
1123+
vpermilpd $ 0x05, %ymm0 , %ymm0
11341124
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
11351125
vpermpd $ 0x1b, %ymm0 , %ymm0
11361126
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
11371127

11381128
addq $ 8*SIZE, AO
1139-
vpermpd $ 0xb1, %ymm0 , %ymm0
1129+
vpermilpd $ 0x05, %ymm0 , %ymm0
11401130
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
11411131
addq $ 4*SIZE, BO
11421132
.endm
@@ -1145,13 +1135,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11451135
vmovups -12 * SIZE(BO), %ymm1
11461136
vmovups -16 * SIZE(AO), %ymm0
11471137
vfmadd231pd %ymm0 ,%ymm1 , %ymm4
1148-
vpermpd $ 0xb1, %ymm0 , %ymm0
1138+
vpermilpd $ 0x05, %ymm0 , %ymm0
11491139
vfmadd231pd %ymm0 ,%ymm1 , %ymm5
11501140
addq $ 4*SIZE, BO
11511141
vpermpd $ 0x1b, %ymm0 , %ymm0
11521142
vfmadd231pd %ymm0 ,%ymm1 , %ymm6
11531143
addq $ 4*SIZE, AO
1154-
vpermpd $ 0xb1, %ymm0 , %ymm0
1144+
vpermilpd $ 0x05, %ymm0 , %ymm0
11551145
vfmadd231pd %ymm0 ,%ymm1 , %ymm7
11561146

11571147
.endm
@@ -1165,18 +1155,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11651155
vmulpd %ymm0 , %ymm5 , %ymm5
11661156
vmulpd %ymm0 , %ymm6 , %ymm6
11671157

1168-
vpermpd $ 0xb1 , %ymm5, %ymm5
1169-
vpermpd $ 0xb1 , %ymm7, %ymm7
1158+
vpermilpd $ 0x05 , %ymm5, %ymm5
1159+
vpermilpd $ 0x05 , %ymm7, %ymm7
11701160

11711161
vblendpd $ 0x0a, %ymm5, %ymm4, %ymm0
11721162
vblendpd $ 0x05, %ymm5, %ymm4, %ymm1
11731163
vblendpd $ 0x0a, %ymm7, %ymm6, %ymm2
11741164
vblendpd $ 0x05, %ymm7, %ymm6, %ymm3
11751165

1176-
vpermpd $ 0x1b , %ymm2, %ymm2
1177-
vpermpd $ 0x1b , %ymm3, %ymm3
1178-
vpermpd $ 0xb1 , %ymm2, %ymm2
1179-
vpermpd $ 0xb1 , %ymm3, %ymm3
1166+
vperm2f128 $ 0x01 , %ymm2, %ymm2
1167+
vperm2f128 $ 0x01 , %ymm3, %ymm3
11801168

11811169
vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4
11821170
vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5

0 commit comments

Comments
 (0)