VBROADCASTF128 | VBROADCASTF128 ymm1, m128 Broadcast 128 bits of floating-point data in mem to low and high 128-bits in ymm1. 储在内存中的128位浮点值广播到一个256位YMM寄存器的所有元素。这意味着存储在内存中的相同128位值将被复制到YMM寄存器的所有元素中 VBROADCASTF128 (VEX.256 Encoded Version) temp := SRC[127:0] DEST[127:0] := temp DEST[255:128] := temp DEST[MAXVL-1:256] := 0 |
VBROADCASTSD | VBROADCASTSD ymm1, m64 Broadcast double precision floating-point element in mem to four locations in ymm1. 存储在内存中的64位浮点值广播到一个256位YMM寄存器的所有元素。这意味着存储在内存中的相同64位值将被复制到YMM寄存器的所有元素中 VBROADCASTSD (VEX.256 Encoded Version) temp := SRC[63:0] DEST[63:0] := temp DEST[127:64] := temp DEST[191:128] := temp DEST[255:192] := temp DEST[MAXVL-1:256] := 0 |
VBROADCASTSS | VBROADCASTSS xmm1, m32 Broadcast single precision floating-point element in mem to four locations in xmm1. 将存储在内存中的32位浮点值广播到一个128位XMM寄存器的所有元素。这意味着存储在内存中的相同32位值将被复制到XMM寄存器的所有元素中 VBROADCASTSS ymm1, m32 Broadcast single precision floating-point element in mem to eight locations in ymm1. 将存储在内存中的32位浮点值广播到一个256位YMM寄存器的所有元素。这意味着存储在内存中的相同32位值将被复制到YMM寄存器的所有元素中。 VBROADCASTSS (128-bit Version VEX and Legacy) xmm寄存器 temp := SRC[31:0] DEST[31:0] := temp DEST[63:32] := temp DEST[95:64] := temp DEST[127:96] := temp DEST[MAXVL-1:128] := 0 VBROADCASTSS (VEX.256 Encoded Version) ymm寄存器 temp := SRC[31:0] DEST[31:0] := temp DEST[63:32] := temp DEST[95:64] := temp DEST[127:96] := temp DEST[159:128] := temp DEST[191:160] := temp DEST[223:192] := temp DEST[255:224] := temp DEST[MAXVL-1:256] := 0 |
VEXTRACTF128 | VEXTRACTF128 xmm1/m128, ymm2, imm8 Extract 128 bits of packed floating-point values from ymm2 and store results in xmm1/m128. 从256位YMM寄存器ymm2 的低半部分或高半部分提取一个128位浮点值,并根据立即数imm8 将其存储到目标XMM寄存器xmm1 或内存位置m128 中。 VEXTRACTF128 (Memory Destination Form) CASE (imm8[0]) OF 0: DEST[127:0] := SRC1[127:0] 1: DEST[127:0] := SRC1[255:128] ESAC. VEXTRACTF128 (Register Destination Form) CASE (imm8[0]) OF 0: DEST[127:0] := SRC1[127:0] 1: DEST[127:0] := SRC1[255:128] ESAC. DEST[MAXVL-1:128] := 0 |
VINSERTF128 | VINSERTF128 ymm1, ymm2, xmm3/m128, imm8 Insert 128 bits of packed floating-point values from xmm3/m128 and the remaining values from ymm2 into ymm1. 根据立即数imm8 将来自XMM寄存器xmm3 或内存位置m128 的128位浮点值插入到256位YMM寄存器ymm1 的相应半部分。 VINSERTF128 (VEX encoded version) TEMP[255:0] := SRC1[255:0] CASE (imm8[0]) OF 0: TEMP[127:0] := SRC2[127:0] 1: TEMP[255:128] := SRC2[127:0] ESAC DEST := TEMP |
VMASKMOVPS | VMASKMOVPS xmm1, xmm2, m128 Conditionally load packed single-precision values from m128 using mask in xmm2 and store in xmm1. 在xmm2中使用掩码,有条件地从m128加载压缩单精度值,并存储在xmm1中。 VMASKMOVPS ymm1, ymm2, m256 Conditionally load packed single-precision values from m256 using mask in ymm2 and store in ymm1. 使用ymm2中的掩码有条件地加载m256中的压缩单精度值,并存储在ymm1中。 VMASKMOVPS m128, xmm1, xmm2 Conditionally store packed single-precision values from xmm2 using mask in xmm1. 使用xmm1中的掩码有条件地存储xmm2中的压缩单精度值。 VMASKMOVPS m256, ymm1, ymm2 Conditionally store packed single-precision values from ymm2 using mask in ymm1. 使用ymm1中的掩码有条件地存储来自ymm2的压缩单精度值。 VMASKMOVPS -128-bit load DEST[31:0] := IF (SRC1[31]) Load_32(mem) ELSE 0 DEST[63:32] := IF (SRC1[63]) Load_32(mem + 4) ELSE 0 DEST[95:64] := IF (SRC1[95]) Load_32(mem + 8) ELSE 0 DEST[127:97] := IF (SRC1[127]) Load_32(mem + 12) ELSE 0 DEST[MAXVL-1:128] := 0 VMASKMOVPS - 256-bit load DEST[31:0] := IF (SRC1[31]) Load_32(mem) ELSE 0 DEST[63:32] := IF (SRC1[63]) Load_32(mem + 4) ELSE 0 DEST[95:64] := IF (SRC1[95]) Load_32(mem + 8) ELSE 0 DEST[127:96] := IF (SRC1[127]) Load_32(mem + 12) ELSE 0 DEST[159:128] := IF (SRC1[159]) Load_32(mem + 16) ELSE 0 DEST[191:160] := IF (SRC1[191]) Load_32(mem + 20) ELSE 0 DEST[223:192] := IF (SRC1[223]) Load_32(mem + 24) ELSE 0 DEST[255:224] := IF (SRC1[255]) Load_32(mem + 28) ELSE 0 VMASKMOVPS - 128-bit store IF (SRC1[31]) DEST[31:0] := SRC2[31:0] IF (SRC1[63]) DEST[63:32] := SRC2[63:32] IF (SRC1[95]) DEST[95:64] := SRC2[95:64] IF (SRC1[127]) DEST[127:96] := SRC2[127:96] VMASKMOVPS - 256-bit store IF (SRC1[31]) DEST[31:0] := SRC2[31:0] IF (SRC1[63]) DEST[63:32] := SRC2[63:32] IF (SRC1[95]) DEST[95:64] := SRC2[95:64] IF (SRC1[127]) DEST[127:96] := SRC2[127:96] IF (SRC1[159]) DEST[159:128] :=SRC2[159:128] IF (SRC1[191]) DEST[191:160] := SRC2[191:160] IF (SRC1[223]) DEST[223:192] := SRC2[223:192] IF (SRC1[255]) DEST[255:224] := SRC2[255:224] |
VMASKMOVPD | VMASKMOVPD xmm1, xmm2, m128 Conditionally load packed double precision values from m128 using mask in xmm2 and store in xmm1. 在xmm2中使用掩码,有条件地从m128加载压缩双精度值,并存储在xmm1中。 VMASKMOVPD ymm1, ymm2, m256 Conditionally load packed double precision values from m256 using mask in ymm2 and store in ymm1. 使用ymm2中的掩码,有条件地加载m256中的压缩双精度值,并存储在ymm1中。 VMASKMOVPD m128, xmm1, xmm2 Conditionally store packed double precision values from xmm2 using mask in xmm1. 使用xmm1中的掩码有条件地存储xmm2中的压缩双精度值。 VMASKMOVPD m256, ymm1, ymm2 Conditionally store packed double precision values from ymm2 using mask in ymm1. 使用ymm1中的掩码有条件地存储来自ymm2的压缩双精度值。 VMASKMOVPD - 128-bit load DEST[63:0] := IF (SRC1[63]) Load_64(mem) ELSE 0 DEST[127:64] := IF (SRC1[127]) Load_64(mem + 16) ELSE 0 DEST[MAXVL-1:128] := 0 VMASKMOVPD - 256-bit load DEST[63:0] := IF (SRC1[63]) Load_64(mem) ELSE 0 DEST[127:64] := IF (SRC1[127]) Load_64(mem + 8) ELSE 0 DEST[195:128] := IF (SRC1[191]) Load_64(mem + 16) ELSE 0 DEST[255:196] := IF (SRC1[255]) Load_64(mem + 24) ELSE 0 VMASKMOVPD - 128-bit store IF (SRC1[63]) DEST[63:0] := SRC2[63:0] IF (SRC1[127]) DEST[127:64] := SRC2[127:64] VMASKMOVPD - 256-bit store IF (SRC1[63]) DEST[63:0] := SRC2[63:0] IF (SRC1[127]) DEST[127:64] := SRC2[127:64] IF (SRC1[191]) DEST[191:128] := SRC2[191:128] IF (SRC1[255]) DEST[255:192] := SRC2[255:192] |
VPERMILPD | VPERMILPD xmm1, xmm2, xmm3/m128 Permute double precision floating-point values in xmm2 using controls from xmm3/m128 and store result in xmm1. 使用xmm3/m128中的控件对xmm2中的双精度浮点值进行Permute处理,并将结果存储在xmm1中。 VPERMILPD ymm1, ymm2, ymm3/m256 Permute double precision floating-point values in ymm2 using controls from ymm3/m256 and store result in ymm1. 使用ymm3/m256中的控件对ymm2中的双精度浮点值进行静音处理,并将结果存储在ymm1中。 VPERMILPD xmm1, xmm2/m128, imm8 Permute double precision floating-point values in xmm2/m128 using controls from imm8. 使用imm8中的控件对xmm2/m128中的双精度浮点值进行Permute处理。 VPERMILPD ymm1, ymm2/m256, imm8 Permute double precision floating-point values in ymm2/m256 using controls from imm8. 使用imm8中的控件对ymm2/m256中的双精度浮点值进行静音处理。 VPERMILPD (256-bit immediate version) IF (imm8[0] = 0) THEN DEST[63:0] := SRC1[63:0] IF (imm8[0] = 1) THEN DEST[63:0] := SRC1[127:64] IF (imm8[1] = 0) THEN DEST[127:64] := SRC1[63:0] IF (imm8[1] = 1) THEN DEST[127:64] := SRC1[127:64] IF (imm8[2] = 0) THEN DEST[191:128] := SRC1[191:128] IF (imm8[2] = 1) THEN DEST[191:128] := SRC1[255:192] IF (imm8[3] = 0) THEN DEST[255:192] := SRC1[191:128] IF (imm8[3] = 1) THEN DEST[255:192] := SRC1[255:192] DEST[MAXVL-1:256] := 0 VPERMILPD (128-bit immediate version) IF (imm8[0] = 0) THEN DEST[63:0] := SRC1[63:0] IF (imm8[0] = 1) THEN DEST[63:0] := SRC1[127:64] IF (imm8[1] = 0) THEN DEST[127:64] := SRC1[63:0] IF (imm8[1] = 1) THEN DEST[127:64] := SRC1[127:64] DEST[MAXVL-1:128] := 0 VPERMILPD (256-bit variable version) IF (SRC2[1] = 0) THEN DEST[63:0] := SRC1[63:0] IF (SRC2[1] = 1) THEN DEST[63:0] := SRC1[127:64] IF (SRC2[65] = 0) THEN DEST[127:64] := SRC1[63:0] IF (SRC2[65] = 1) THEN DEST[127:64] := SRC1[127:64] IF (SRC2[129] = 0) THEN DEST[191:128] := SRC1[191:128] IF (SRC2[129] = 1) THEN DEST[191:128] := SRC1[255:192] IF (SRC2[193] = 0) THEN DEST[255:192] := SRC1[191:128] IF (SRC2[193] = 1) THEN DEST[255:192] := SRC1[255:192] DEST[MAXVL-1:256] := 0 VPERMILPD (128-bit variable version) IF (SRC2[1] = 0) THEN DEST[63:0] := SRC1[63:0] IF (SRC2[1] = 1) THEN DEST[63:0] := SRC1[127:64] IF (SRC2[65] = 0) THEN DEST[127:64] := SRC1[63:0] IF (SRC2[65] = 1) THEN DEST[127:64] := SRC1[127:64] DEST[MAXVL-1:128] := 0 |
VPERMILPS | VPERMILPS xmm1, xmm2, xmm3/m128 Permute single-precision floating-point values in xmm2 using controls from xmm3/m128 and store result in xmm1. 使用xmm3/m128中的控件对xmm2中的单精度浮点值进行Permute处理,并将结果存储在xmm1中。 VPERMILPS xmm1, xmm2/m128, imm8 Permute single-precision floating-point values in xmm2/m128 using controls from imm8 and store result in xmm1. 使用imm8中的控件对xmm2/m128中的单精度浮点值进行Permute处理,并将结果存储在xmm1中。 VPERMILPS ymm1, ymm2, ymm3/m256 Permute single-precision floating-point values in ymm2 using controls from ymm3/m256 and store result in ymm1. 使用ymm3/m256和的控件对ymm2中的单精度浮点值进行静音处理 VPERMILPS ymm1, ymm2/m256, imm8 Permute single-precision floating-point values in ymm2/m256 using controls from imm8 and store result in ymm1. 使用imm8中的控件对ymm2/m256中的单精度浮点值进行静音处理,并将结果存储在ymm1中。 Select4(SRC, control) { CASE (control[1:0]) OF 0: TMP := SRC[31:0]; 1: TMP := SRC[63:32]; 2: TMP := SRC[95:64]; 3: TMP := SRC[127:96]; ESAC; RETURN TMP } VPERMILPS (256-bit immediate version) DEST[31:0] := Select4(SRC1[127:0], imm8[1:0]); DEST[63:32] := Select4(SRC1[127:0], imm8[3:2]); DEST[95:64] := Select4(SRC1[127:0], imm8[5:4]); DEST[127:96] := Select4(SRC1[127:0], imm8[7:6]); DEST[159:128] := Select4(SRC1[255:128], imm8[1:0]); DEST[191:160] := Select4(SRC1[255:128], imm8[3:2]); DEST[223:192] := Select4(SRC1[255:128], imm8[5:4]); DEST[255:224] := Select4(SRC1[255:128], imm8[7:6]); VPERMILPS (128-bit immediate version) DEST[31:0] := Select4(SRC1[127:0], imm8[1:0]); DEST[63:32] := Select4(SRC1[127:0], imm8[3:2]); DEST[95:64] := Select4(SRC1[127:0], imm8[5:4]); DEST[127:96] := Select4(SRC1[127:0], imm8[7:6]); DEST[MAXVL-1:128] := 0 VPERMILPS (256-bit variable version) DEST[31:0] := Select4(SRC1[127:0], SRC2[1:0]); DEST[63:32] := Select4(SRC1[127:0], SRC2[33:32]); DEST[95:64] := Select4(SRC1[127:0], SRC2[65:64]); DEST[127:96] := Select4(SRC1[127:0], SRC2[97:96]); DEST[159:128] := Select4(SRC1[255:128], SRC2[129:128]); DEST[191:160] := Select4(SRC1[255:128], SRC2[161:160]); DEST[223:192] := Select4(SRC1[255:128], SRC2[193:192]); DEST[255:224] := Select4(SRC1[255:128], SRC2[225:224]); DEST[MAXVL-1:256] := 0 VPERMILPS (128-bit variable version) DEST[31:0] := Select4(SRC1[127:0], SRC2[1:0]); DEST[63:32] := Select4(SRC1[127:0], SRC2[33:32]); DEST[95:64] :=Select4(SRC1[127:0], SRC2[65:64]); DEST[127:96] := Select4(SRC1[127:0], SRC2[97:96]); DEST[MAXVL-1:128] := 0 |
VPERM2F128 | VPERM2F128 ymm1, ymm2, ymm3/m256, imm8 Permute 128-bit floating-point fields in ymm2 and ymm3/mem using controls from imm8 and store result in ymm1. 使用imm8中的控件对ymm2和ymm3/mem中的128位浮点字段进行静音处理,并将结果存储在ymm1中。 VPERM2F128 CASE IMM8[1:0] of 0: DEST[127:0] := SRC1[127:0] 1: DEST[127:0] := SRC1[255:128] 2: DEST[127:0] := SRC2[127:0] 3: DEST[127:0] := SRC2[255:128] ESAC CASE IMM8[5:4] of 0: DEST[255:128] := SRC1[127:0] 1: DEST[255:128] := SRC1[255:128] 2: DEST[255:128] := SRC2[127:0] 3: DEST[255:128] := SRC2[255:128] ESAC IF (imm8[3]) DEST[127:0] := 0 FI IF (imm8[7]) DEST[MAXVL-1:128] := 0 FI Int |
VTESTPS | VTESTPS xmm1, xmm2/m128 Set ZF and CF depending on sign bit AND and ANDN of packed single-precision floating-point sources. 根据压缩单精度浮点源的符号位and和ANDN设置ZF和CF。 VTESTPS ymm1, ymm2/m256 Set ZF and CF depending on sign bit AND and ANDN of packed single-precision floating-point sources. 根据压缩单精度浮点源的符号位and和ANDN设置ZF和CF。 VTESTPS (128-bit version) TEMP[127:0] := SRC[127:0] AND DEST[127:0] IF (TEMP[31] = TEMP[63] = TEMP[95] = TEMP[127] = 0) THEN ZF := 1; ELSE ZF := 0; TEMP[127:0] := SRC[127:0] AND NOT DEST[127:0] IF (TEMP[31] = TEMP[63] = TEMP[95] = TEMP[127] = 0) THEN CF := 1; ELSE CF := 0; DEST (unmodified) AF := OF := PF := SF := 0; VTESTPS (VEX.256 encoded version) TEMP[255:0] := SRC[255:0] AND DEST[255:0] IF (TEMP[31] = TEMP[63] = TEMP[95] = TEMP[127]= TEMP[160] =TEMP[191] = TEMP[224] = TEMP[255] = 0) THEN ZF := 1; ELSE ZF := 0; TEMP[255:0] := SRC[255:0] AND NOT DEST[255:0] IF (TEMP[31] = TEMP[63] = TEMP[95] = TEMP[127]= TEMP[160] =TEMP[191] = TEMP[224] = TEMP[255] = 0) THEN CF := 1; ELSE CF := 0; DEST (unmodified) AF := OF := PF := SF := 0; |
VTESTPD | VTESTPD xmm1, xmm2/m128 Set ZF and CF depending on sign bit AND and ANDN of packed double precision floating-point sources. 根据压缩双精度浮点源的符号位and和ANDN设置ZF和CF。 VTESTPD ymm1, ymm2/m256 Set ZF and CF depending on sign bit AND and ANDN of packed double precision floating-point sources. 根据压缩双精度浮点源的符号位and和ANDN设置ZF和CF。 VTESTPD (128-bit version) TEMP[127:0] := SRC[127:0] AND DEST[127:0] IF ( TEMP[63] = TEMP[127] = 0) THEN ZF := 1; ELSE ZF := 0; TEMP[127:0] := SRC[127:0] AND NOT DEST[127:0] IF ( TEMP[63] = TEMP[127] = 0) THEN CF := 1; ELSE CF := 0; DEST (unmodified) AF := OF := PF := SF := 0; VTESTPD (VEX.256 encoded version) TEMP[255:0] := SRC[255:0] AND DEST[255:0] IF (TEMP[63] = TEMP[127] = TEMP[191] = TEMP[255] = 0) THEN ZF := 1; ELSE ZF := 0; TEMP[255:0] := SRC[255:0] AND NOT DEST[255:0] IF (TEMP[63] = TEMP[127] = TEMP[191] = TEMP[255] = 0) THEN CF := 1; ELSE CF := 0; DEST (unmodified) AF := OF := PF := SF := 0; |
VZEROALL | Zero some of the XMM, YMM, and ZMM registers. Zero all YMM registers. |
VZEROUPPER | Zero bits in positions 128 and higher of some YMM and ZMM registers. Zero upper 128 bits of all YMM registers |
| |
| |