Update dgemm_kernel_4x8_haswell.S for zen2
authorwjc404 <52632443+wjc404@users.noreply.github.com>
Tue, 16 Jul 2019 16:46:51 +0000 (00:46 +0800)
committerGitHub <noreply@github.com>
Tue, 16 Jul 2019 16:46:51 +0000 (00:46 +0800)
replaced a bunch of vpermpd instructions with vpermilpd and vperm2f128

kernel/x86_64/dgemm_kernel_4x8_haswell.S

index c84b599..5416018 100644 (file)
@@ -143,7 +143,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmulpd          %ymm0 ,%ymm2  , %ymm8\r
        vmulpd          %ymm0 ,%ymm3  , %ymm12\r
        prefetcht0      B_PR1+256(BO)\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm5\r
        vmulpd          %ymm0 ,%ymm2  , %ymm9\r
        vmulpd          %ymm0 ,%ymm3  , %ymm13\r
@@ -153,7 +153,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 \r
        addq            $ 12*SIZE, BO\r
        vmulpd          %ymm0 ,%ymm3  , %ymm14\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm7\r
        vmovups         -12 * SIZE(BO), %ymm1\r
        vmulpd          %ymm0 ,%ymm2  , %ymm11\r
@@ -172,7 +172,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
        prefetcht0      B_PR1+128(BO)\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm12\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm13\r
@@ -181,7 +181,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm10\r
 \r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm14\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vmovups         -12 * SIZE(BO), %ymm1\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
@@ -196,7 +196,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm12\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm13\r
@@ -206,7 +206,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 \r
        addq            $ 8*SIZE, AO\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm14\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vmovups           0 * SIZE(BO), %ymm1\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
@@ -222,7 +222,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm12\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm13\r
@@ -232,7 +232,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 \r
        addq            $ 8*SIZE, AO\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm14\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm15\r
@@ -247,7 +247,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
        vmovups          -4 * SIZE(BO), %ymm3\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm12\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        addq            $ 12*SIZE, BO\r
@@ -257,7 +257,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm10\r
        addq            $ 4*SIZE, AO\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm14\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
        vfmadd231pd     %ymm0 ,%ymm3  , %ymm15\r
@@ -284,18 +284,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmulpd  %ymm0 , %ymm14, %ymm14\r
        vmulpd  %ymm0 , %ymm15, %ymm15\r
 \r
-       vpermpd $ 0xb1 , %ymm5, %ymm5\r
-       vpermpd $ 0xb1 , %ymm7, %ymm7\r
+       vpermilpd $ 0x05 , %ymm5, %ymm5\r
+       vpermilpd $ 0x05 , %ymm7, %ymm7\r
 \r
        vblendpd $ 0x0a, %ymm5, %ymm4, %ymm0\r
        vblendpd $ 0x05, %ymm5, %ymm4, %ymm1\r
        vblendpd $ 0x0a, %ymm7, %ymm6, %ymm2\r
        vblendpd $ 0x05, %ymm7, %ymm6, %ymm3\r
 \r
-       vpermpd $ 0x1b , %ymm2, %ymm2\r
-       vpermpd $ 0x1b , %ymm3, %ymm3\r
-       vpermpd $ 0xb1 , %ymm2, %ymm2\r
-       vpermpd $ 0xb1 , %ymm3, %ymm3\r
+       vperm2f128 $ 0x01 , %ymm2, %ymm2\r
+       vperm2f128 $ 0x01 , %ymm3, %ymm3\r
 \r
        vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4\r
        vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5\r
@@ -324,18 +322,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        prefetcht0      32(%rax)\r
        prefetcht0      32(%rax,LDC)\r
 \r
-       vpermpd $ 0xb1 , %ymm9 , %ymm9\r
-       vpermpd $ 0xb1 , %ymm11, %ymm11\r
+       vpermilpd $ 0x05 , %ymm9 , %ymm9\r
+       vpermilpd $ 0x05 , %ymm11, %ymm11\r
 \r
        vblendpd $ 0x0a, %ymm9 , %ymm8 , %ymm0\r
        vblendpd $ 0x05, %ymm9 , %ymm8 , %ymm1\r
        vblendpd $ 0x0a, %ymm11, %ymm10, %ymm2\r
        vblendpd $ 0x05, %ymm11, %ymm10, %ymm3\r
 \r
-       vpermpd $ 0x1b , %ymm2, %ymm2\r
-       vpermpd $ 0x1b , %ymm3, %ymm3\r
-       vpermpd $ 0xb1 , %ymm2, %ymm2\r
-       vpermpd $ 0xb1 , %ymm3, %ymm3\r
+       vperm2f128 $ 0x01 , %ymm2, %ymm2\r
+       vperm2f128 $ 0x01 , %ymm3, %ymm3\r
 \r
        vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4\r
        vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5\r
@@ -365,18 +361,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        prefetcht0      32(%rbp)\r
        prefetcht0      32(%rbp,LDC)\r
 \r
-       vpermpd $ 0xb1 , %ymm13, %ymm13\r
-       vpermpd $ 0xb1 , %ymm15, %ymm15\r
+       vpermilpd $ 0x05 , %ymm13, %ymm13\r
+       vpermilpd $ 0x05 , %ymm15, %ymm15\r
 \r
        vblendpd $ 0x0a, %ymm13, %ymm12, %ymm0\r
        vblendpd $ 0x05, %ymm13, %ymm12, %ymm1\r
        vblendpd $ 0x0a, %ymm15, %ymm14, %ymm2\r
        vblendpd $ 0x05, %ymm15, %ymm14, %ymm3\r
 \r
-       vpermpd $ 0x1b , %ymm2, %ymm2\r
-       vpermpd $ 0x1b , %ymm3, %ymm3\r
-       vpermpd $ 0xb1 , %ymm2, %ymm2\r
-       vpermpd $ 0xb1 , %ymm3, %ymm3\r
+       vperm2f128 $ 0x01 , %ymm2, %ymm2\r
+       vperm2f128 $ 0x01 , %ymm3, %ymm3\r
 \r
        vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4\r
        vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5\r
@@ -687,7 +681,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmovups          -8 * SIZE(BO), %ymm2\r
        vmulpd          %ymm0 ,%ymm1  , %ymm4\r
        vmulpd          %ymm0 ,%ymm2  , %ymm8\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm5\r
        vmulpd          %ymm0 ,%ymm2  , %ymm9\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
@@ -695,7 +689,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmulpd          %ymm0 ,%ymm2  , %ymm10\r
 \r
        addq            $  8*SIZE, BO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm7\r
        vmovups         -12 * SIZE(BO), %ymm1\r
        vmulpd          %ymm0 ,%ymm2  , %ymm11\r
@@ -710,14 +704,14 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
        prefetcht0      B_PR1+64(BO)\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm6\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm10\r
 \r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vmovups         -12 * SIZE(BO), %ymm1\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
@@ -729,7 +723,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmovups         -12 * SIZE(AO), %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
@@ -737,7 +731,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm10\r
 \r
        addq            $ 8*SIZE, AO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vmovups          -4 * SIZE(BO), %ymm1\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
@@ -750,7 +744,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmovups         -12 * SIZE(AO), %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
@@ -758,7 +752,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm10\r
 \r
        addq            $ 8*SIZE, AO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
        addq            $  8*SIZE, BO\r
@@ -770,7 +764,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
        vmovups          -8 * SIZE(BO), %ymm2\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm8\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm9\r
        addq            $  8*SIZE, BO\r
@@ -778,7 +772,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm6\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm10\r
        addq            $ 4*SIZE, AO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vfmadd231pd     %ymm0 ,%ymm2  , %ymm11\r
 \r
@@ -799,18 +793,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmulpd  %ymm0 , %ymm10, %ymm10\r
        vmulpd  %ymm0 , %ymm11, %ymm11\r
 \r
-       vpermpd $ 0xb1 , %ymm5, %ymm5\r
-       vpermpd $ 0xb1 , %ymm7, %ymm7\r
+       vpermilpd $ 0x05 , %ymm5, %ymm5\r
+       vpermilpd $ 0x05 , %ymm7, %ymm7\r
 \r
        vblendpd $ 0x0a, %ymm5, %ymm4, %ymm0\r
        vblendpd $ 0x05, %ymm5, %ymm4, %ymm1\r
        vblendpd $ 0x0a, %ymm7, %ymm6, %ymm2\r
        vblendpd $ 0x05, %ymm7, %ymm6, %ymm3\r
 \r
-       vpermpd $ 0x1b , %ymm2, %ymm2\r
-       vpermpd $ 0x1b , %ymm3, %ymm3\r
-       vpermpd $ 0xb1 , %ymm2, %ymm2\r
-       vpermpd $ 0xb1 , %ymm3, %ymm3\r
+       vperm2f128 $ 0x01 , %ymm2, %ymm2\r
+       vperm2f128 $ 0x01 , %ymm3, %ymm3\r
 \r
        vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4\r
        vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5\r
@@ -839,18 +831,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        prefetcht0      32(%rax)\r
        prefetcht0      32(%rax,LDC)\r
 \r
-       vpermpd $ 0xb1 , %ymm9 , %ymm9\r
-       vpermpd $ 0xb1 , %ymm11, %ymm11\r
+       vpermilpd $ 0x05 , %ymm9 , %ymm9\r
+       vpermilpd $ 0x05 , %ymm11, %ymm11\r
 \r
        vblendpd $ 0x0a, %ymm9 , %ymm8 , %ymm0\r
        vblendpd $ 0x05, %ymm9 , %ymm8 , %ymm1\r
        vblendpd $ 0x0a, %ymm11, %ymm10, %ymm2\r
        vblendpd $ 0x05, %ymm11, %ymm10, %ymm3\r
 \r
-       vpermpd $ 0x1b , %ymm2, %ymm2\r
-       vpermpd $ 0x1b , %ymm3, %ymm3\r
-       vpermpd $ 0xb1 , %ymm2, %ymm2\r
-       vpermpd $ 0xb1 , %ymm3, %ymm3\r
+       vperm2f128 $ 0x01 , %ymm2, %ymm2\r
+       vperm2f128 $ 0x01 , %ymm3, %ymm3\r
 \r
        vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4\r
        vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5\r
@@ -1084,13 +1074,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmovups         -12 * SIZE(BO), %ymm1\r
        vmovups         -16 * SIZE(AO), %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm4\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm5\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm6\r
 \r
        addq            $ 4*SIZE, BO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vmulpd          %ymm0 ,%ymm1  , %ymm7\r
        vmovups         -12 * SIZE(BO), %ymm1\r
 \r
@@ -1100,12 +1090,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        prefetcht0      A_PR1(AO)\r
        vmovups         -16 * SIZE(AO), %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm6\r
 \r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vmovups         -12 * SIZE(BO), %ymm1\r
 \r
@@ -1114,13 +1104,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .macro KERNEL4x4_M2\r
        vmovups         -12 * SIZE(AO), %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm6\r
 \r
        addq            $ 8*SIZE, AO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        vmovups          -8 * SIZE(BO), %ymm1\r
        addq            $ 8*SIZE, BO\r
@@ -1130,13 +1120,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .macro KERNEL4x4_E\r
        vmovups         -12 * SIZE(AO), %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm6\r
 \r
        addq            $ 8*SIZE, AO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
        addq            $ 4*SIZE, BO\r
 .endm\r
@@ -1145,13 +1135,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmovups         -12 * SIZE(BO), %ymm1\r
        vmovups         -16 * SIZE(AO), %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm4\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm5\r
        addq            $ 4*SIZE, BO\r
        vpermpd         $ 0x1b, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm6\r
        addq            $ 4*SIZE, AO\r
-       vpermpd         $ 0xb1, %ymm0  , %ymm0\r
+       vpermilpd       $ 0x05, %ymm0  , %ymm0\r
        vfmadd231pd     %ymm0 ,%ymm1  , %ymm7\r
 \r
 .endm\r
@@ -1165,18 +1155,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        vmulpd  %ymm0 , %ymm5 , %ymm5\r
        vmulpd  %ymm0 , %ymm6 , %ymm6\r
 \r
-       vpermpd $ 0xb1 , %ymm5, %ymm5\r
-       vpermpd $ 0xb1 , %ymm7, %ymm7\r
+       vpermilpd $ 0x05 , %ymm5, %ymm5\r
+       vpermilpd $ 0x05 , %ymm7, %ymm7\r
 \r
        vblendpd $ 0x0a, %ymm5, %ymm4, %ymm0\r
        vblendpd $ 0x05, %ymm5, %ymm4, %ymm1\r
        vblendpd $ 0x0a, %ymm7, %ymm6, %ymm2\r
        vblendpd $ 0x05, %ymm7, %ymm6, %ymm3\r
 \r
-       vpermpd $ 0x1b , %ymm2, %ymm2\r
-       vpermpd $ 0x1b , %ymm3, %ymm3\r
-       vpermpd $ 0xb1 , %ymm2, %ymm2\r
-       vpermpd $ 0xb1 , %ymm3, %ymm3\r
+       vperm2f128 $ 0x01 , %ymm2, %ymm2\r
+       vperm2f128 $ 0x01 , %ymm3, %ymm3\r
 \r
        vblendpd $ 0x03, %ymm0, %ymm2 , %ymm4\r
        vblendpd $ 0x03, %ymm1, %ymm3 , %ymm5\r