私の質問は なVMIN *、VCVTT *、VGETEXT *、VREDUCE *としてSAEコントロールを(すべての例外を抑制します)、許可セマンティックを丸めずにEVEXでエンコードされたパックREG-REG命令に関する、 VRANGE *など インテルは、完全な512ビットのベクトル長でのみSAE認識を宣言します。AVX512ベクトル長とSAE制御
VMINPD xmm1 {k1}{z}, xmm2, xmm3
VMINPD ymm1 {k1}{z}, ymm2, ymm3
VMINPD zmm1 {k1}{z}, zmm2, zmm3{sae}
しかし、xmmまたはymmレジスタが使用される命令にSAEを適用できない理由はありません。
00b: 128bit (XMM)
01b: 256bit (YMM)
10b: 512bit (ZMM)
11b: reserved
: Intel Instruction Set Extensions Programming Reference表4-7の章4.6.4で セマンティックビットEVEX.bを丸めることなく命令にSAEが適用されることを指定し、ビットは、明示的なベクトルの長さを指定EVEX.L'Lと言います
ですので、その組み合わせは合法的である必要があります。
しかしNASMはNASMはvminpd ymm1,ymm2,ymm3,{sae}
を組み立てるために拒否しNDISASMは(62F1ED385DCBを分解
vminpd xmm1,xmm2,xmm3
としてNDISASM 2.12バック分解し62F1ED185DCB、すなわちEVEX.L'L = 00B、EVEX.b = 1、としてvminpd zmm1,zmm2,zmm3,{sae}
を組み立てEVEX.L'L = 01B、EVEX.b = 1)vminpd xmm1,xmm2,xmm3
ように私は騎士CPUがVMINPD ymm1, ymm2, ymm3{sae}
(62F1ED385DCBとして組み立て、EVEX.L'L = 01B、EVEX.b = 1)を実行ランディングないか疑問:
- CPUが例外をスローします。 Intel doc表4-7は誤解を招くようなものです。
- SAEが有効な場合、CPUはスカラー 操作と同じxmmのみで動作します。 NASMとNDISASMは正しく、インテルの文書は です。
- SAEは無視され、Intel docのVMINPD 仕様に従って256ビットで動作します。 NASM & NDISASMが間違っています。
- SAEが有効な場合、CPUは 命令コードで指定された256ビットで動作します。 NASMとNDISASMが間違っている、インテルの書類は 補助は{sae}のxmm/ymm命令を装飾する必要があります。
- SAEが有効です.CPUは、EVEX.L'Lに関係なく、暗黙の完全なベクトルサイズ512 ビットで動作し、静的な丸め{er}が であったのと同じです。 NDISASMとIntelのdoc表4-7は間違っています。
エンコードの詳細にかかわらず、ドキュメントではできないといい点があります。しかし、Mysticialの答えでは、EVEX.L'LはEVEX.RCと重なり、EVEX.bはどちらが解釈されるのかを選択することを指摘しています。 –
@PeterCordes質問で説明したように、表4-7はその解釈と矛盾しています。 EVEX.L'Lはベクトルの長さを決定し、EVEX.RCは適用されないが、EVEX.bは "SAE Control"を選択することを意味する "FP命令は丸め意味を持つ。この表によれば、P2 [6:5]の解釈を決定するのは命令型です。たとえば、 'VMINPD ymm1、ymm2、[rax] {1to8}'はEVEX.bが設定され、EVEX.L'Lは01bでEVEX.RCはN/Aです。 OPの問題は、これが '{sae} 'ではうまくいかないことです。彼が望むエンコーディングは存在しますが、単に許可されていません。 –
最初は、私はあなたの答えに強く反対しました。しかし、表4-7を詳しく説明した後、私はPDFが不完全であるか、または矛盾していると判断しました。 FP命令には、「丸めのセマンティクス」という概念があります。しかし、どの命令にそれが欠けているかを記載した文書はありません。表4-7は、 'P2 [6:5]'は、 "丸めのセマンティクス"を持たないFP命令に対して常に 'EVEX.L'L'として解釈されることを示しています。 – Mysticial