VEX.L
読み:ヴィーイーエックス-ドット-エル
外語:VEX.L
x86のオペコードの表記で、VEX.Lフィールドが1となったVEXプリフィックスが存在すること。
概要
VEXプリフィックスは2バイト長と3バイト長があるほか、さまざまな情報フィールドがあり、このためVEX.L=1の表現をしようとしても、オペコードが一定しない。
しかも、VEX.Lフィールドは2バイトVEXプリフィックスにも、3バイトVEXプリフィックスにも存在する。
具体的には、VEX.L=1に限定しても、2バイトVEXプリフィックスでは32通りの自由度、3バイトVEXプリフィックスでは2バイト目は8通り、3バイト目は32通りの自由度があるため、32+8×32通りで計288通りが存在する事になる。そこで、16進数での表記を諦めて、「VEX.L」と記載する。
特徴
機能
VEX.Lフィールドは、ベクトル長を表わす。
- VEX.L=0: 128ビットベクトルまたは32/64ビットスカラー
- VEX.L=1: 256ビットベクトル
動作
切り替わり方は、命令ごとに若干の差があるが、概ね次のような傾向を示す。
- xmmやm32の命令は、VEX.L=1にすることでymm命令に切り替わる。
- VEX.L=0 ‐ vbroadcastss xmm1, m32
- VEX.L=1 ‐ vbroadcastss ymm1, m32
- xmmやm64の命令は、VEX.L=1にすることでymmやm128命令に切り替わる。
- VEX.L=0 ‐ vcvtph2ps xmm1, xmm2/m64
- VEX.L=1 ‐ vcvtph2ps ymm1, xmm2/m128
- xmmやm128の命令は、VEX.L=1にすることでymmやm256命令に切り替わる。
- VEX.L=0 ‐ vfmaddsub132pd xmm0, xmm1, xmm2/m128
- VEX.L=1 ‐ vfmaddsub132pd ymm0, ymm1, ymm2/m256
VEX.L=0でXMMレジスター、VEX.L=1でYMMレジスターとなるのが主たる目的であるが、それに合わせてメモリーアクセスなども変化することがある。
再検索