{"id":21,"date":"2007-08-21T18:29:30","date_gmt":"2007-08-21T22:29:30","guid":{"rendered":"http:\/\/www.ragestorm.net\/blogs\/?p=21"},"modified":"2007-08-21T19:18:27","modified_gmt":"2007-08-21T23:18:27","slug":"amd-sse4a","status":"publish","type":"post","link":"https:\/\/www.ragestorm.net\/blogs\/?p=21","title":{"rendered":"AMD SSE4a"},"content":{"rendered":"<p>In the latest version of the programmer&#8217;s manual (for AMD64 architecture) of July 2007, AMD released a new instruction set &#8211; SSE4a. In the beginning we (YASM maililng list) weren&#8217;t sure whether this set is part of Intel&#8217;s SSE4.1 or SSE4.2 until a simple check of the documentation for CPUID shed some light and showed that there is a different bit for indicating the instruction set is SSE4a rather than SSE4.1. So now we got a new instruction set. What&#8217;s so special about it? Well nothing in particular. It only has a few instruction: extrq, insertq, movntsd, movntss.<\/p>\n<p>The ugly thing about these instructions is insertq which gets <em>four<\/em>operands. Two XMM operands and two byte-sized immediates. We have seen many instructions with 3 operands, so it&#8217;s nothing new. Although most of them are in the SSE sets, we got a few in the basic\/integer set such as SHLD\/SHRD\/IMUL&#8230; But four operands? And two of them are immediates? Hmm for example the ENTER instruction gets two immediates of differente size, that&#8217;s the only one I can come up with quickly, maybe a quick test with disOps can yield more, but it doesn&#8217;t really matter. Just trying to show this irregularity. So in diStorm what I did was to add a fourth operand for my extended instruction-information structure (the structure which holds the data that describes a full instruction). Wondering where are we heading to with all those new SSE sets, and weird instructions. It gets harder to parse them every time.<\/p>\n<p>I mean &#8211; come on, even in the internal engine of the AMD processor&#8217;s pipeline, the engineers hated to add support for a fourth operand, or it was rather a quick hack? who knows&#8230;But I am sure they have a generic engine and it&#8217;s not an &#8220;execution&#8221; module of circuity per instruction.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the latest version of the programmer&#8217;s manual (for AMD64 architecture) of July 2007, AMD released a new instruction set &#8211; SSE4a. In the beginning we (YASM maililng list) weren&#8217;t sure whether this set is part of Intel&#8217;s SSE4.1 or SSE4.2 until a simple check of the documentation for CPUID shed some light and showed [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":""},"categories":[5,3],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbWKd-l","_links":{"self":[{"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=\/wp\/v2\/posts\/21"}],"collection":[{"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21"}],"version-history":[{"count":0,"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=\/wp\/v2\/posts\/21\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ragestorm.net\/blogs\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}