blob: a5bcb0f9bc93635515d79be945e8960d14304abc [file] [log] [blame]
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This input extends auto-generated amd64enc.s test suite
// with manually added tests.
#include "../../../../../runtime/textflag.h"
TEXT asmtest(SB),DUPOK|NOSPLIT,$0
// AVX2GATHER: basic combinations.
VPGATHERDQ Y2, (BP)(X7*2), Y1 // c4e2ed904c7d00
VPGATHERDQ X12, (R13)(X14*2), X11 // c40299905c7500
VPGATHERDQ Y12, (R13)(X14*2), Y11 // c4029d905c7500
VPGATHERDQ Y0, 8(X4*1), Y6 // c4e2fd90342508000000
VPGATHERDQ Y0, -8(X4*1), Y6 // c4e2fd903425f8ffffff
VPGATHERDQ Y0, 0(X4*1), Y6 // c4e2fd90342500000000
VPGATHERDQ Y0, 664(X4*1), Y6 // c4e2fd90342598020000
VPGATHERDQ Y0, 8(X4*8), Y6 // c4e2fd9034e508000000
VPGATHERDQ Y0, -8(X4*8), Y6 // c4e2fd9034e5f8ffffff
VPGATHERDQ Y0, 0(X4*8), Y6 // c4e2fd9034e500000000
VPGATHERDQ Y0, 664(X4*8), Y6 // c4e2fd9034e598020000
VPGATHERDQ Y0, 8(X14*1), Y6 // c4a2fd90343508000000
VPGATHERDQ Y0, -8(X14*1), Y6 // c4a2fd903435f8ffffff
VPGATHERDQ Y0, 0(X14*1), Y6 // c4a2fd90343500000000
VPGATHERDQ Y0, 664(X14*1), Y6 // c4a2fd90343598020000
VPGATHERDQ Y0, 8(X14*8), Y6 // c4a2fd9034f508000000
VPGATHERDQ Y0, -8(X14*8), Y6 // c4a2fd9034f5f8ffffff
VPGATHERDQ Y0, 0(X14*8), Y6 // c4a2fd9034f500000000
VPGATHERDQ Y0, 664(X14*8), Y6 // c4a2fd9034f598020000
VPGATHERDQ X2, (BP)(X7*2), X1 // c4e2e9904c7d00
VPGATHERDQ Y2, (BP)(X7*2), Y1 // c4e2ed904c7d00
VPGATHERDQ X12, (R13)(X14*2), X11 // c40299905c7500
VPGATHERDQ Y12, (R13)(X14*2), Y11 // c4029d905c7500
VPGATHERDQ Y0, 8(X4*1), Y6 // c4e2fd90342508000000
VPGATHERDQ Y0, -8(X4*1), Y6 // c4e2fd903425f8ffffff
VPGATHERDQ Y0, 0(X4*1), Y6 // c4e2fd90342500000000
VPGATHERDQ Y0, 664(X4*1), Y6 // c4e2fd90342598020000
VPGATHERDQ Y0, 8(X4*8), Y6 // c4e2fd9034e508000000
VPGATHERDQ Y0, -8(X4*8), Y6 // c4e2fd9034e5f8ffffff
VPGATHERDQ Y0, 0(X4*8), Y6 // c4e2fd9034e500000000
VPGATHERDQ Y0, 664(X4*8), Y6 // c4e2fd9034e598020000
VPGATHERDQ Y0, 8(X14*1), Y6 // c4a2fd90343508000000
VPGATHERDQ Y0, -8(X14*1), Y6 // c4a2fd903435f8ffffff
VPGATHERDQ Y0, 0(X14*1), Y6 // c4a2fd90343500000000
VPGATHERDQ Y0, 664(X14*1), Y6 // c4a2fd90343598020000
VPGATHERDQ Y0, 8(X14*8), Y6 // c4a2fd9034f508000000
VPGATHERDQ Y0, -8(X14*8), Y6 // c4a2fd9034f5f8ffffff
VPGATHERDQ Y0, 0(X14*8), Y6 // c4a2fd9034f500000000
VPGATHERDQ Y0, 664(X14*8), Y6 // c4a2fd9034f598020000
VPGATHERQQ X2, (BP)(X7*2), X1 // c4e2e9914c7d00
VPGATHERQQ Y2, (BP)(Y7*2), Y1 // c4e2ed914c7d00
VPGATHERQQ X12, (R13)(X14*2), X11 // c40299915c7500
VPGATHERQQ Y12, (R13)(Y14*2), Y11 // c4029d915c7500
VPGATHERQQ X2, (BP)(X7*2), X1 // c4e2e9914c7d00
VPGATHERQQ Y2, (BP)(Y7*2), Y1 // c4e2ed914c7d00
VPGATHERQQ X12, (R13)(X14*2), X11 // c40299915c7500
VPGATHERQQ Y12, (R13)(Y14*2), Y11 // c4029d915c7500
VGATHERDPD X2, (BP)(X7*2), X1 // c4e2e9924c7d00
VGATHERDPD Y2, (BP)(X7*2), Y1 // c4e2ed924c7d00
VGATHERDPD X12, (R13)(X14*2), X11 // c40299925c7500
VGATHERDPD Y12, (R13)(X14*2), Y11 // c4029d925c7500
VGATHERDPD Y0, 8(X4*1), Y6 // c4e2fd92342508000000
VGATHERDPD Y0, -8(X4*1), Y6 // c4e2fd923425f8ffffff
VGATHERDPD Y0, 0(X4*1), Y6 // c4e2fd92342500000000
VGATHERDPD Y0, 664(X4*1), Y6 // c4e2fd92342598020000
VGATHERDPD Y0, 8(X4*8), Y6 // c4e2fd9234e508000000
VGATHERDPD Y0, -8(X4*8), Y6 // c4e2fd9234e5f8ffffff
VGATHERDPD Y0, 0(X4*8), Y6 // c4e2fd9234e500000000
VGATHERDPD Y0, 664(X4*8), Y6 // c4e2fd9234e598020000
VGATHERDPD Y0, 8(X14*1), Y6 // c4a2fd92343508000000
VGATHERDPD Y0, -8(X14*1), Y6 // c4a2fd923435f8ffffff
VGATHERDPD Y0, 0(X14*1), Y6 // c4a2fd92343500000000
VGATHERDPD Y0, 664(X14*1), Y6 // c4a2fd92343598020000
VGATHERDPD Y0, 8(X14*8), Y6 // c4a2fd9234f508000000
VGATHERDPD Y0, -8(X14*8), Y6 // c4a2fd9234f5f8ffffff
VGATHERDPD Y0, 0(X14*8), Y6 // c4a2fd9234f500000000
VGATHERDPD Y0, 664(X14*8), Y6 // c4a2fd9234f598020000
VGATHERDPD X2, (BP)(X7*2), X1 // c4e2e9924c7d00
VGATHERDPD Y2, (BP)(X7*2), Y1 // c4e2ed924c7d00
VGATHERDPD X12, (R13)(X14*2), X11 // c40299925c7500
VGATHERDPD Y12, (R13)(X14*2), Y11 // c4029d925c7500
VGATHERDPD Y0, 8(X4*1), Y6 // c4e2fd92342508000000
VGATHERDPD Y0, -8(X4*1), Y6 // c4e2fd923425f8ffffff
VGATHERDPD Y0, 0(X4*1), Y6 // c4e2fd92342500000000
VGATHERDPD Y0, 664(X4*1), Y6 // c4e2fd92342598020000
VGATHERDPD Y0, 8(X4*8), Y6 // c4e2fd9234e508000000
VGATHERDPD Y0, -8(X4*8), Y6 // c4e2fd9234e5f8ffffff
VGATHERDPD Y0, 0(X4*8), Y6 // c4e2fd9234e500000000
VGATHERDPD Y0, 664(X4*8), Y6 // c4e2fd9234e598020000
VGATHERDPD Y0, 8(X14*1), Y6 // c4a2fd92343508000000
VGATHERDPD Y0, -8(X14*1), Y6 // c4a2fd923435f8ffffff
VGATHERDPD Y0, 0(X14*1), Y6 // c4a2fd92343500000000
VGATHERDPD Y0, 664(X14*1), Y6 // c4a2fd92343598020000
VGATHERDPD Y0, 8(X14*8), Y6 // c4a2fd9234f508000000
VGATHERDPD Y0, -8(X14*8), Y6 // c4a2fd9234f5f8ffffff
VGATHERDPD Y0, 0(X14*8), Y6 // c4a2fd9234f500000000
VGATHERDPD Y0, 664(X14*8), Y6 // c4a2fd9234f598020000
VGATHERQPD X2, (BP)(X7*2), X1 // c4e2e9934c7d00
VGATHERQPD Y2, (BP)(Y7*2), Y1 // c4e2ed934c7d00
VGATHERQPD X12, (R13)(X14*2), X11 // c40299935c7500
VGATHERQPD Y12, (R13)(Y14*2), Y11 // c4029d935c7500
VGATHERQPD X2, (BP)(X7*2), X1 // c4e2e9934c7d00
VGATHERQPD Y2, (BP)(Y7*2), Y1 // c4e2ed934c7d00
VGATHERQPD X12, (R13)(X14*2), X11 // c40299935c7500
VGATHERQPD Y12, (R13)(Y14*2), Y11 // c4029d935c7500
VGATHERDPS X2, (BP)(X7*2), X1 // c4e269924c7d00
VGATHERDPS Y2, (BP)(Y7*2), Y1 // c4e26d924c7d00
VGATHERDPS X12, (R13)(X14*2), X11 // c40219925c7500
VGATHERDPS Y12, (R13)(Y14*2), Y11 // c4021d925c7500
VGATHERDPS X3, 8(X4*1), X6 // c4e26192342508000000
VGATHERDPS X3, -8(X4*1), X6 // c4e261923425f8ffffff
VGATHERDPS X3, 0(X4*1), X6 // c4e26192342500000000
VGATHERDPS X3, 664(X4*1), X6 // c4e26192342598020000
VGATHERDPS X3, 8(X4*8), X6 // c4e2619234e508000000
VGATHERDPS X3, -8(X4*8), X6 // c4e2619234e5f8ffffff
VGATHERDPS X3, 0(X4*8), X6 // c4e2619234e500000000
VGATHERDPS X3, 664(X4*8), X6 // c4e2619234e598020000
VGATHERDPS X3, 8(X14*1), X6 // c4a26192343508000000
VGATHERDPS X3, -8(X14*1), X6 // c4a261923435f8ffffff
VGATHERDPS X3, 0(X14*1), X6 // c4a26192343500000000
VGATHERDPS X3, 664(X14*1), X6 // c4a26192343598020000
VGATHERDPS X3, 8(X14*8), X6 // c4a2619234f508000000
VGATHERDPS X3, -8(X14*8), X6 // c4a2619234f5f8ffffff
VGATHERDPS X3, 0(X14*8), X6 // c4a2619234f500000000
VGATHERDPS X3, 664(X14*8), X6 // c4a2619234f598020000
VGATHERDPS X2, (BP)(X7*2), X1 // c4e269924c7d00
VGATHERDPS Y2, (BP)(Y7*2), Y1 // c4e26d924c7d00
VGATHERDPS X12, (R13)(X14*2), X11 // c40219925c7500
VGATHERDPS Y12, (R13)(Y14*2), Y11 // c4021d925c7500
VGATHERDPS X5, 8(X4*1), X6 // c4e25192342508000000
VGATHERDPS X3, -8(X4*1), X6 // c4e261923425f8ffffff
VGATHERDPS X3, 0(X4*1), X6 // c4e26192342500000000
VGATHERDPS X3, 664(X4*1), X6 // c4e26192342598020000
VGATHERDPS X3, 8(X4*8), X6 // c4e2619234e508000000
VGATHERDPS X3, -8(X4*8), X6 // c4e2619234e5f8ffffff
VGATHERDPS X3, 0(X4*8), X6 // c4e2619234e500000000
VGATHERDPS X3, 664(X4*8), X6 // c4e2619234e598020000
VGATHERDPS X3, 8(X14*1), X6 // c4a26192343508000000
VGATHERDPS X3, -8(X14*1), X6 // c4a261923435f8ffffff
VGATHERDPS X3, 0(X14*1), X6 // c4a26192343500000000
VGATHERDPS X3, 664(X14*1), X6 // c4a26192343598020000
VGATHERDPS X3, 8(X14*8), X6 // c4a2619234f508000000
VGATHERDPS X3, -8(X14*8), X6 // c4a2619234f5f8ffffff
VGATHERDPS X3, 0(X14*8), X6 // c4a2619234f500000000
VGATHERDPS X3, 664(X14*8), X6 // c4a2619234f598020000
VGATHERQPS X2, (BP)(X7*2), X1 // c4e269934c7d00
VGATHERQPS X2, (BP)(Y7*2), X1 // c4e26d934c7d00
VGATHERQPS X12, (R13)(X14*2), X11 // c40219935c7500
VGATHERQPS X12, (R13)(Y14*2), X11 // c4021d935c7500
VGATHERQPS X2, (BP)(X7*2), X1 // c4e269934c7d00
VGATHERQPS X2, (BP)(Y7*2), X1 // c4e26d934c7d00
VGATHERQPS X12, (R13)(X14*2), X11 // c40219935c7500
VGATHERQPS X12, (R13)(Y14*2), X11 // c4021d935c7500
VPGATHERDD X2, (BP)(X7*2), X1 // c4e269904c7d00
VPGATHERDD Y2, (BP)(Y7*2), Y1 // c4e26d904c7d00
VPGATHERDD X12, (R13)(X14*2), X11 // c40219905c7500
VPGATHERDD Y12, (R13)(Y14*2), Y11 // c4021d905c7500
VPGATHERDD X3, 8(X4*1), X6 // c4e26190342508000000
VPGATHERDD X3, -8(X4*1), X6 // c4e261903425f8ffffff
VPGATHERDD X3, 0(X4*1), X6 // c4e26190342500000000
VPGATHERDD X3, 664(X4*1), X6 // c4e26190342598020000
VPGATHERDD X3, 8(X4*8), X6 // c4e2619034e508000000
VPGATHERDD X3, -8(X4*8), X6 // c4e2619034e5f8ffffff
VPGATHERDD X3, 0(X4*8), X6 // c4e2619034e500000000
VPGATHERDD X3, 664(X4*8), X6 // c4e2619034e598020000
VPGATHERDD X3, 8(X14*1), X6 // c4a26190343508000000
VPGATHERDD X3, -8(X14*1), X6 // c4a261903435f8ffffff
VPGATHERDD X3, 0(X14*1), X6 // c4a26190343500000000
VPGATHERDD X3, 664(X14*1), X6 // c4a26190343598020000
VPGATHERDD X3, 8(X14*8), X6 // c4a2619034f508000000
VPGATHERDD X3, -8(X14*8), X6 // c4a2619034f5f8ffffff
VPGATHERDD X3, 0(X14*8), X6 // c4a2619034f500000000
VPGATHERDD X3, 664(X14*8), X6 // c4a2619034f598020000
VPGATHERDD X2, (BP)(X7*2), X1 // c4e269904c7d00
VPGATHERDD Y2, (BP)(Y7*2), Y1 // c4e26d904c7d00
VPGATHERDD X12, (R13)(X14*2), X11 // c40219905c7500
VPGATHERDD Y12, (R13)(Y14*2), Y11 // c4021d905c7500
VPGATHERDD X3, 8(X4*1), X6 // c4e26190342508000000
VPGATHERDD X3, -8(X4*1), X6 // c4e261903425f8ffffff
VPGATHERDD X3, 0(X4*1), X6 // c4e26190342500000000
VPGATHERDD X3, 664(X4*1), X6 // c4e26190342598020000
VPGATHERDD X3, 8(X4*8), X6 // c4e2619034e508000000
VPGATHERDD X3, -8(X4*8), X6 // c4e2619034e5f8ffffff
VPGATHERDD X3, 0(X4*8), X6 // c4e2619034e500000000
VPGATHERDD X3, 664(X4*8), X6 // c4e2619034e598020000
VPGATHERDD X3, 8(X14*1), X6 // c4a26190343508000000
VPGATHERDD X3, -8(X14*1), X6 // c4a261903435f8ffffff
VPGATHERDD X3, 0(X14*1), X6 // c4a26190343500000000
VPGATHERDD X3, 664(X14*1), X6 // c4a26190343598020000
VPGATHERDD X3, 8(X14*8), X6 // c4a2619034f508000000
VPGATHERDD X3, -8(X14*8), X6 // c4a2619034f5f8ffffff
VPGATHERDD X3, 0(X14*8), X6 // c4a2619034f500000000
VPGATHERDD X3, 664(X14*8), X6 // c4a2619034f598020000
VPGATHERQD X2, (BP)(X7*2), X1 // c4e269914c7d00
VPGATHERQD X2, (BP)(Y7*2), X1 // c4e26d914c7d00
VPGATHERQD X12, (R13)(X14*2), X11 // c40219915c7500
VPGATHERQD X12, (R13)(Y14*2), X11 // c4021d915c7500
VPGATHERQD X2, (BP)(X7*2), X1 // c4e269914c7d00
VPGATHERQD X2, (BP)(Y7*2), X1 // c4e26d914c7d00
VPGATHERQD X12, (R13)(X14*2), X11 // c40219915c7500
VPGATHERQD X12, (R13)(Y14*2), X11 // c4021d915c7500
VPGATHERQQ X0, 0(X1*1), X2 // c4e2f991140d00000000
VPGATHERQQ Y0, 0(Y1*1), Y2 // c4e2fd91140d00000000
VPGATHERQQ X8, 0(X9*1), X10 // c422b991140d00000000
VPGATHERQQ Y8, 0(Y9*1), Y10 // c422bd91140d00000000
VPGATHERQQ X0, 0(X1*4), X2 // c4e2f991148d00000000
VPGATHERQQ Y0, 0(Y1*4), Y2 // c4e2fd91148d00000000
VPGATHERQQ X8, 0(X9*4), X10 // c422b991148d00000000
VPGATHERQQ Y8, 0(Y9*4), Y10 // c422bd91148d00000000
// AVX2GATHER: test SP/BP base with different displacements.
VPGATHERQQ X0, (SP)(X1*1), X2 // c4e2f991140c
VPGATHERQQ X0, 16(SP)(X1*1), X2 // c4e2f991540c10
VPGATHERQQ X0, 512(SP)(X1*1), X2 // c4e2f991940c00020000
VPGATHERQQ X0, (R12)(X1*1), X2 // c4c2f991140c
VPGATHERQQ X0, 16(R12)(X1*1), X2 // c4c2f991540c10
VPGATHERQQ X0, 512(R12)(X1*1), X2 // c4c2f991940c00020000
VPGATHERQQ X0, (BP)(X1*1), X2 // c4e2f991540d00
VPGATHERQQ X0, 16(BP)(X1*1), X2 // c4e2f991540d10
VPGATHERQQ X0, 512(BP)(X1*1), X2 // c4e2f991940d00020000
VPGATHERQQ X0, (R13)(X1*1), X2 // c4c2f991540d00
VPGATHERQQ X0, 16(R13)(X1*1), X2 // c4c2f991540d10
VPGATHERQQ X0, 512(R13)(X1*1), X2 // c4c2f991940d00020000
VPGATHERQQ Y0, (SP)(Y1*1), Y2 // c4e2fd91140c
VPGATHERQQ Y0, 16(SP)(Y1*1), Y2 // c4e2fd91540c10
VPGATHERQQ Y0, 512(SP)(Y1*1), Y2 // c4e2fd91940c00020000
VPGATHERQQ Y0, (R12)(Y1*1), Y2 // c4c2fd91140c
VPGATHERQQ Y0, 16(R12)(Y1*1), Y2 // c4c2fd91540c10
VPGATHERQQ Y0, 512(R12)(Y1*1), Y2 // c4c2fd91940c00020000
VPGATHERQQ Y0, (BP)(Y1*1), Y2 // c4e2fd91540d00
VPGATHERQQ Y0, 16(BP)(Y1*1), Y2 // c4e2fd91540d10
VPGATHERQQ Y0, 512(BP)(Y1*1), Y2 // c4e2fd91940d00020000
VPGATHERQQ Y0, (R13)(Y1*1), Y2 // c4c2fd91540d00
VPGATHERQQ Y0, 16(R13)(Y1*1), Y2 // c4c2fd91540d10
VPGATHERQQ Y0, 512(R13)(Y1*1), Y2 // c4c2fd91940d00020000
// Test low-8 register for /is4 "hr" operand.
VPBLENDVB X0, (BX), X1, X2 // c4e3714c1300
// End of tests.
RET