मेरा प्रश्न अर्थ जो ऐसे vmin *, VCVTT *, VGETEXT *, VREDUCE * के रूप में एसएई नियंत्रण (सभी अपवाद को रोकें), की अनुमति देने के गोलाई बिना EVEX एन्कोड पैक रेग-रेग निर्देश चिंताओं, 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 रजिस्टरों उपयोग किया जाता है के लिए लागू नहीं किया जा सका नहीं दिख रहा।
Intel Instruction Set Extensions Programming Reference तालिका 4-7 की 4.6.4 अध्याय में कहते हैं अर्थ बिट EVEX.b गोलाई के बिना दिए गए निर्देशों में यह बताता है कि कि एसएई लागू किया जाता है, और बिट्स स्पष्ट वेक्टर लंबाई निर्दिष्ट EVEX.L'L:
00b: 128bit (XMM)
01b: 256bit (YMM)
10b: 512bit (ZMM)
11b: reserved
इसलिए उनका संयोजन कानूनी होना चाहिए।
हालांकि एनएएसएम असेंबल vminpd zmm1,zmm2,zmm3,{sae}
62F1ED185DCB, यानी EVEX.L'L = 00b, EVEX.b = 1, जो NDISASM 2.12 से वापस disassembled है vminpd xmm1,xmm2,xmm3
एनएएसएम vminpd ymm1,ymm2,ymm3,{sae}
इकट्ठा करने के लिए मना कर दिया और NDISASM 62F1ED385DCB (disassembles के रूप में के रूप में EVEX.L'L = 01B, EVEX.b = 1) के रूप में vminpd xmm1,xmm2,xmm3
मुझे आश्चर्य है कि कैसे शूरवीरों लैंडिंग सीपीयू पर अमल करता है VMINPD ymm1, ymm2, ymm3{sae}
(62F1ED385DCB के रूप में इकट्ठा किया, EVEX.L'L = 01B, EVEX.b = 1):
- सीपीयू एक अपवाद फेंकता है। इंटेल दस्तावेज़ तालिका 4-7 भ्रामक है।
- एसएई प्रभाव में है, सीपीयू केवल xmm के साथ काम करता है, जैसे स्केलर संचालन में। NASM और NDISASM सही करते हैं, इंटेल दस्तावेज़ गलत है।
- एसएई को नजरअंदाज कर दिया गया है, सीपीयू इंटेल डॉक में वीएमआईएनपीडी विनिर्देश के अनुसार 256 बिट्स के साथ काम करता है। NASM & एनडीआईएसएएसएम गलत हैं।
- एसईई प्रभाव में है, सीपीयू 256 बिट्स के साथ संचालित होता है जैसा कि निर्देश कोड में निर्दिष्ट है। NASM और NDISASM गलत हैं, इंटेल दस्तावेज़ को {sae} के साथ पूरक सजावट xmm/ymm निर्देशों की आवश्यकता है।
- एसईई प्रभाव में है, सीपीयू ईवीएक्सएक्सएल के बावजूद अंतर्निहित पूर्ण वेक्टर आकार 512 बिट्स के साथ काम करता है, जैसे स्थिर ग्राउंडिंग {er} की अनुमति है। एनडीआईएसएएसएम और इंटेल डॉक्टर तालिका 4-7 गलत हैं।
अच्छा बिंदु कि दस्तावेज़ कहते हैं कि आप एन्कोडिंग विवरणों के बावजूद इसे नहीं कर सकते हैं। हालांकि, मिस्टिकियल का जवाब बताता है कि EVEX.L'L EVEX.RC को ओवरलैप करता है, और EVEX.b चुनता है कि किसके बारे में उनका अर्थ है। –
@ पीटरकॉर्डस, जैसा कि प्रश्न में बताया गया है, तालिका 4-7 उस व्याख्या के विपरीत है। यह कहता है कि "एफपी निर्देश डब्ल्यू/ओ अर्थात् राउंडिंग, #XF का कारण बन सकता है" कि EVEX.b EVEX.L'L निर्धारित करता है "वेयर कंट्रोल" का चयन करता है जबकि वेक्टर लंबाई और EVEX.RC लागू नहीं होता है। तालिका के अनुसार यह निर्देश प्रकार है जो 'पी 2 [6: 5] 'की व्याख्या निर्धारित करता है। तो उदाहरण के लिए 'वीएमआईएनपीडी वाईएम 1, वाईएम 2, [रैक्स] {1to8} 'में EVEX.b सेट है जबकि EVEX.L'L 01b है और EVEX.RC एन/ए है। ओपी समस्या यह है कि यह '{sae}' के लिए काम नहीं करता है। एन्कोडिंग वह चाहता है कि वह मौजूद है, लेकिन इसकी अनुमति नहीं है। –
प्रारंभ में, मैं आपके उत्तर से दृढ़ता से असहमत था। लेकिन विस्तार से तालिका 4-7 के माध्यम से जाने के बाद, मैंने यह निर्धारित किया है कि पीडीएफ या तो अपूर्ण है या इसके विपरीत है। एफपी निर्देशों में "राउंडिंग अर्थशास्त्र" की अवधारणा है। लेकिन उस दस्तावेज़ में कोई सूची नहीं है जिसमें कहा गया है कि कौन से निर्देशों की कमी है। तालिका 4-7 में कहा गया है कि 'पी 2 [6: 5]' को एफपी निर्देशों के लिए हमेशा 'EVEX.L'L' के रूप में व्याख्या किया जाता है जिसमें "राउंडिंग सेमेन्टिक्स" की कमी होती है। – Mysticial