VCMPPH - CoMPare Packed Half

VCMPPH k1{k2}, xmm2, xmm3/m128/m16bcst, imm8    (V5+FP16+VL
__mmask8 _mm_cmp_ph_mask(__m128h a, __m128h b, int imm8)
__mmask8 _mm_mask_cmp_ph_mask(__mmask8 k2, __m128h a, __m128h b, int imm8)

各FP16について比較を行い、 imm8で指定した条件を満たすとき1を、それ以外のとき0を③の対応するビットにセット
k2のビットが0の要素は比較されず③の対応するビットは0になる。③の上位ビットは0クリアされる。
VCMPPH k1{k2}, ymm2, ymm3/m256/m16bcst, imm8    (V5+FP16+VL
__mmask16 _mm256_cmp_ph_mask(__m256h a, __m256h b, int imm8)
__mmask16 _mm256_mask_cmp_ph_mask(__mmask16 k2, __m256h a, __m256h b, int imm8)

各FP16について比較を行い、 imm8で指定した条件を満たすとき1を、それ以外のとき0を③の対応するビットにセット
k2のビットが0の要素は比較されず③の対応するビットは0になる。③の上位ビットは0クリアされる。
VCMPPH k1{k2}, zmm2, zmm3/m512/m16bcst{sae}, imm8    (V5+FP16
__mmask32 _mm512_cmp_ph_mask(__m512h a, __m512h b, int imm8)
__mmask32 _mm512_mask_cmp_ph_mask(__mmask32 k2, __m512h a, __m512h b, int imm8)
__mmask32 _mm512_cmp_round_ph_mask(__m512h a, __m512h b, int imm8, int sae)
__mmask32 _mm512_mask_cmp_round_ph_mask(__mmask32 k2, __m512h a, __m512h b, int imm8, int sae)

各FP16について比較を行い、 imm8で指定した条件を満たすとき1を、それ以外のとき0を③の対応するビットにセット
k2のビットが0の要素は比較されず③の対応するビットは0になる。③の上位ビットは0クリアされる。

imm8

一方または両方がNaNのとき 条件不成立
(Ordered)
条件成立とみなす
(Unordered)
QNaNで例外 YES
(Signaling)
NO
(Quiet)
YES
(Signaling)
NO
(Quiet)
compare for == 10h
_CMP_EQ_OS
0h
_CMP_EQ_OQ
18h
_CMP_EQ_US
8h
_CMP_EQ_UQ
compare for < 1h
_CMP_LT_OS
11h
_CMP_LT_OQ
   
compare for <= 2h
_CMP_LE_OS
12h
_CMP_LE_OQ
compare for > 0Eh
_CMP_GT_OS
1Eh
_CMP_GT_OQ
   
compare for >= 0Dh
_CMP_GE_OS
1Dh
_CMP_GE_OQ
   
compare for != 1Ch
_CMP_NEQ_OS
0Ch
_CMP_NEQ_OQ
14h
_CMP_NEQ_US
04h
_CMP_NEQ_UQ
compare for ! < 5h
_CMP_NLT_US
15h
_CMP_NLT_UQ
compare for ! <=     6h
_CMP_NLE_US
16h
_CMP_NLE_UQ
compare for ! > 0Ah
_CMP_NGT_US
1Ah
_CMP_NGT_UQ
compare for ! >=     9h
_CMP_NGE_US
19h
_CMP_NGE_UQ
compare for ordered 17h
_CMP_ORD_S
7h
_CMP_ORD_Q
compare for unordered     13h
_CMP_UNORD_S
3h
_CMP_UNORD_Q
TRUE 1Fh
_CMP_TRUE_US
0Fh
_CMP_TRUE_UQ
FALSE 1Bh
_CMP_FALSE_OS
0Bh
_CMP_FALSE_OQ
   

x86/x64 SIMD Instruction List  Feedback