268 lines
6.4 KiB
ArmAsm
268 lines
6.4 KiB
ArmAsm
# Check x86-64 AVX2 instructions
|
|
|
|
.allow_index_reg
|
|
.text
|
|
_start:
|
|
|
|
# Tests for op mem256, mask, ymm
|
|
# Tests for op ymm, mask, mem256
|
|
vpmaskmovd (%rcx),%ymm4,%ymm6
|
|
vpmaskmovd %ymm4,%ymm6,(%rcx)
|
|
vpmaskmovq (%rcx),%ymm4,%ymm6
|
|
vpmaskmovq %ymm4,%ymm6,(%rcx)
|
|
|
|
# Tests for op imm8, ymm/mem256, ymm
|
|
vpermpd $7,%ymm6,%ymm2
|
|
vpermpd $7,(%rcx),%ymm6
|
|
vpermq $7,%ymm6,%ymm2
|
|
vpermq $7,(%rcx),%ymm6
|
|
|
|
# Tests for op ymm/mem256, ymm, ymm
|
|
vpermd %ymm4,%ymm6,%ymm2
|
|
vpermd (%rcx),%ymm6,%ymm2
|
|
vpermps %ymm4,%ymm6,%ymm2
|
|
vpermps (%rcx),%ymm6,%ymm2
|
|
vpsllvd %ymm4,%ymm6,%ymm2
|
|
vpsllvd (%rcx),%ymm6,%ymm2
|
|
vpsllvq %ymm4,%ymm6,%ymm2
|
|
vpsllvq (%rcx),%ymm6,%ymm2
|
|
vpsravd %ymm4,%ymm6,%ymm2
|
|
vpsravd (%rcx),%ymm6,%ymm2
|
|
vpsrlvd %ymm4,%ymm6,%ymm2
|
|
vpsrlvd (%rcx),%ymm6,%ymm2
|
|
vpsrlvq %ymm4,%ymm6,%ymm2
|
|
vpsrlvq (%rcx),%ymm6,%ymm2
|
|
|
|
# Tests for op mem256, ymm
|
|
vmovntdqa (%rcx),%ymm4
|
|
|
|
# Tests for op ymm, xmm
|
|
vbroadcastsd %xmm4,%ymm6
|
|
vbroadcastss %xmm4,%ymm6
|
|
|
|
# Tests for op imm8, ymm/mem256, ymm, ymm
|
|
vpblendd $7,%ymm4,%ymm6,%ymm2
|
|
vpblendd $7,(%rcx),%ymm6,%ymm2
|
|
vperm2i128 $7,%ymm4,%ymm6,%ymm2
|
|
vperm2i128 $7,(%rcx),%ymm6,%ymm2
|
|
|
|
# Tests for op imm8, xmm/mem128, ymm, ymm
|
|
vinserti128 $7,%xmm4,%ymm4,%ymm6
|
|
vinserti128 $7,(%rcx),%ymm4,%ymm6
|
|
|
|
# Tests for op mem128, ymm
|
|
vbroadcasti128 (%rcx),%ymm4
|
|
|
|
# Tests for op xmm/mem128, xmm, xmm
|
|
vpsllvd %xmm4,%xmm6,%xmm2
|
|
vpsllvd (%rcx),%xmm6,%xmm7
|
|
vpsllvq %xmm4,%xmm6,%xmm2
|
|
vpsllvq (%rcx),%xmm6,%xmm7
|
|
vpsravd %xmm4,%xmm6,%xmm2
|
|
vpsravd (%rcx),%xmm6,%xmm7
|
|
vpsrlvd %xmm4,%xmm6,%xmm2
|
|
vpsrlvd (%rcx),%xmm6,%xmm7
|
|
vpsrlvq %xmm4,%xmm6,%xmm2
|
|
vpsrlvq (%rcx),%xmm6,%xmm7
|
|
|
|
# Tests for op mem128, xmm, xmm
|
|
vpmaskmovd (%rcx),%xmm4,%xmm6
|
|
vpmaskmovq (%rcx),%xmm4,%xmm6
|
|
|
|
# Tests for op imm8, ymm, xmm128/mem
|
|
vextracti128 $7,%ymm4,%xmm6
|
|
vextracti128 $7,%ymm4,(%rcx)
|
|
|
|
# Tests for op xmm, xmm, mem128
|
|
vpmaskmovd %xmm4,%xmm6,(%rcx)
|
|
vpmaskmovq %xmm4,%xmm6,(%rcx)
|
|
|
|
# Tests for op imm8, xmm/mem128, xmm, xmm
|
|
vpblendd $7,%xmm4,%xmm6,%xmm2
|
|
vpblendd $7,(%rcx),%xmm6,%xmm2
|
|
|
|
# Tests for op xmm/mem64, xmm
|
|
vpbroadcastq %xmm4,%xmm6
|
|
vpbroadcastq (%rcx),%xmm4
|
|
|
|
# Tests for op xmm/mem64, ymm
|
|
vpbroadcastq %xmm4,%ymm6
|
|
vpbroadcastq (%rcx),%ymm4
|
|
|
|
# Tests for op xmm/mem32, ymm
|
|
vpbroadcastd %xmm4,%ymm4
|
|
vpbroadcastd (%rcx),%ymm4
|
|
|
|
# Tests for op xmm/mem32, xmm
|
|
vpbroadcastd %xmm4,%xmm6
|
|
vpbroadcastd (%rcx),%xmm4
|
|
|
|
# Tests for op xmm/m16, xmm
|
|
vpbroadcastw %xmm4,%xmm6
|
|
vpbroadcastw (%rcx),%xmm4
|
|
|
|
# Tests for op xmm/m16, ymm
|
|
vpbroadcastw %xmm4,%ymm6
|
|
vpbroadcastw (%rcx),%ymm4
|
|
|
|
# Tests for op xmm/m8, xmm
|
|
vpbroadcastb %xmm4,%xmm6
|
|
vpbroadcastb (%rcx),%xmm4
|
|
|
|
# Tests for op xmm/m8, ymm
|
|
vpbroadcastb %xmm4,%ymm6
|
|
vpbroadcastb (%rcx),%ymm4
|
|
|
|
# Tests for op xmm, xmm
|
|
vbroadcastss %xmm4,%xmm6
|
|
|
|
.intel_syntax noprefix
|
|
|
|
# Tests for op mem256, mask, ymm
|
|
# Tests for op ymm, mask, mem256
|
|
vpmaskmovd ymm6,ymm4,YMMWORD PTR [rcx]
|
|
vpmaskmovd YMMWORD PTR [rcx],ymm6,ymm4
|
|
vpmaskmovd ymm6,ymm4,[rcx]
|
|
vpmaskmovd [rcx],ymm6,ymm4
|
|
vpmaskmovq ymm6,ymm4,YMMWORD PTR [rcx]
|
|
vpmaskmovq YMMWORD PTR [rcx],ymm6,ymm4
|
|
vpmaskmovq ymm6,ymm4,[rcx]
|
|
vpmaskmovq [rcx],ymm6,ymm4
|
|
|
|
# Tests for op imm8, ymm/mem256, ymm
|
|
vpermpd ymm2,ymm6,7
|
|
vpermpd ymm6,YMMWORD PTR [rcx],7
|
|
vpermpd ymm6,[rcx],7
|
|
vpermq ymm2,ymm6,7
|
|
vpermq ymm6,YMMWORD PTR [rcx],7
|
|
vpermq ymm6,[rcx],7
|
|
|
|
# Tests for op ymm/mem256, ymm, ymm
|
|
vpermd ymm2,ymm6,ymm4
|
|
vpermd ymm2,ymm6,YMMWORD PTR [rcx]
|
|
vpermd ymm2,ymm6,[rcx]
|
|
vpermps ymm2,ymm6,ymm4
|
|
vpermps ymm2,ymm6,YMMWORD PTR [rcx]
|
|
vpermps ymm2,ymm6,[rcx]
|
|
vpsllvd ymm2,ymm6,ymm4
|
|
vpsllvd ymm2,ymm6,YMMWORD PTR [rcx]
|
|
vpsllvd ymm2,ymm6,[rcx]
|
|
vpsllvq ymm2,ymm6,ymm4
|
|
vpsllvq ymm2,ymm6,YMMWORD PTR [rcx]
|
|
vpsllvq ymm2,ymm6,[rcx]
|
|
vpsravd ymm2,ymm6,ymm4
|
|
vpsravd ymm2,ymm6,YMMWORD PTR [rcx]
|
|
vpsravd ymm2,ymm6,[rcx]
|
|
vpsrlvd ymm2,ymm6,ymm4
|
|
vpsrlvd ymm2,ymm6,YMMWORD PTR [rcx]
|
|
vpsrlvd ymm2,ymm6,[rcx]
|
|
vpsrlvq ymm2,ymm6,ymm4
|
|
vpsrlvq ymm2,ymm6,YMMWORD PTR [rcx]
|
|
vpsrlvq ymm2,ymm6,[rcx]
|
|
|
|
# Tests for op mem256, ymm
|
|
vmovntdqa ymm4,YMMWORD PTR [rcx]
|
|
vmovntdqa ymm4,[rcx]
|
|
|
|
# Tests for op ymm, xmm
|
|
vbroadcastsd ymm6,xmm4
|
|
vbroadcastss ymm6,xmm4
|
|
|
|
# Tests for op imm8, ymm/mem256, ymm, ymm
|
|
vpblendd ymm2,ymm6,ymm4,7
|
|
vpblendd ymm2,ymm6,YMMWORD PTR [rcx],7
|
|
vpblendd ymm2,ymm6,[rcx],7
|
|
vperm2i128 ymm2,ymm6,ymm4,7
|
|
vperm2i128 ymm2,ymm6,YMMWORD PTR [rcx],7
|
|
vperm2i128 ymm2,ymm6,[rcx],7
|
|
|
|
# Tests for op imm8, xmm/mem128, ymm, ymm
|
|
vinserti128 ymm6,ymm4,xmm4,7
|
|
vinserti128 ymm6,ymm4,XMMWORD PTR [rcx],7
|
|
vinserti128 ymm6,ymm4,[rcx],7
|
|
|
|
# Tests for op mem128, ymm
|
|
vbroadcasti128 ymm4,XMMWORD PTR [rcx]
|
|
vbroadcasti128 ymm4,[rcx]
|
|
|
|
# Tests for op xmm/mem128, xmm, xmm
|
|
vpsllvd xmm2,xmm6,xmm4
|
|
vpsllvd xmm7,xmm6,XMMWORD PTR [rcx]
|
|
vpsllvd xmm7,xmm6,[rcx]
|
|
vpsllvq xmm2,xmm6,xmm4
|
|
vpsllvq xmm7,xmm6,XMMWORD PTR [rcx]
|
|
vpsllvq xmm7,xmm6,[rcx]
|
|
vpsravd xmm2,xmm6,xmm4
|
|
vpsravd xmm7,xmm6,XMMWORD PTR [rcx]
|
|
vpsravd xmm7,xmm6,[rcx]
|
|
vpsrlvd xmm2,xmm6,xmm4
|
|
vpsrlvd xmm7,xmm6,XMMWORD PTR [rcx]
|
|
vpsrlvd xmm7,xmm6,[rcx]
|
|
vpsrlvq xmm2,xmm6,xmm4
|
|
vpsrlvq xmm7,xmm6,XMMWORD PTR [rcx]
|
|
vpsrlvq xmm7,xmm6,[rcx]
|
|
|
|
# Tests for op mem128, xmm, xmm
|
|
vpmaskmovd xmm6,xmm4,XMMWORD PTR [rcx]
|
|
vpmaskmovd xmm6,xmm4,[rcx]
|
|
vpmaskmovq xmm6,xmm4,XMMWORD PTR [rcx]
|
|
vpmaskmovq xmm6,xmm4,[rcx]
|
|
|
|
# Tests for op imm8, ymm, xmm128/mem
|
|
vextracti128 xmm6,ymm4,7
|
|
vextracti128 XMMWORD PTR [rcx],ymm4,7
|
|
vextracti128 [rcx],ymm4,7
|
|
|
|
# Tests for op xmm, xmm, mem128
|
|
vpmaskmovd XMMWORD PTR [rcx],xmm6,xmm4
|
|
vpmaskmovd [rcx],xmm6,xmm4
|
|
vpmaskmovq XMMWORD PTR [rcx],xmm6,xmm4
|
|
vpmaskmovq [rcx],xmm6,xmm4
|
|
|
|
# Tests for op imm8, xmm/mem128, xmm, xmm
|
|
vpblendd xmm2,xmm6,xmm4,7
|
|
vpblendd xmm2,xmm6,XMMWORD PTR [rcx],7
|
|
vpblendd xmm2,xmm6,[rcx],7
|
|
|
|
# Tests for op xmm/mem64, xmm
|
|
vpbroadcastq xmm6,xmm4
|
|
vpbroadcastq xmm4,QWORD PTR [rcx]
|
|
vpbroadcastq xmm4,[rcx]
|
|
|
|
# Tests for op xmm/mem64, ymm
|
|
vpbroadcastq ymm6,xmm4
|
|
vpbroadcastq ymm4,QWORD PTR [rcx]
|
|
vpbroadcastq ymm4,[rcx]
|
|
|
|
# Tests for op xmm/mem32, ymm
|
|
vpbroadcastd ymm4,xmm4
|
|
vpbroadcastd ymm4,DWORD PTR [rcx]
|
|
vpbroadcastd ymm4,[rcx]
|
|
|
|
# Tests for op xmm/mem32, xmm
|
|
vpbroadcastd xmm6,xmm4
|
|
vpbroadcastd xmm4,DWORD PTR [rcx]
|
|
vpbroadcastd xmm4,[rcx]
|
|
|
|
# Tests for op xmm/m16, xmm
|
|
vpbroadcastw xmm6,xmm4
|
|
vpbroadcastw xmm4,WORD PTR [rcx]
|
|
vpbroadcastw xmm4,[rcx]
|
|
|
|
# Tests for op xmm/m16, ymm
|
|
vpbroadcastw ymm6,xmm4
|
|
vpbroadcastw ymm4,WORD PTR [rcx]
|
|
vpbroadcastw ymm4,[rcx]
|
|
|
|
# Tests for op xmm/m8, xmm
|
|
vpbroadcastb xmm6,xmm4
|
|
vpbroadcastb xmm4,BYTE PTR [rcx]
|
|
vpbroadcastb xmm4,[rcx]
|
|
|
|
# Tests for op xmm/m8, ymm
|
|
vpbroadcastb ymm6,xmm4
|
|
vpbroadcastb ymm4,BYTE PTR [rcx]
|
|
vpbroadcastb ymm4,[rcx]
|
|
|
|
# Tests for op xmm, xmm
|
|
vbroadcastss xmm6,xmm4
|