{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/14523","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/14523/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/14523/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/14523/events","html_url":"https://github.com/dotnet/coreclr/issues/14523","id":265883978,"number":14523,"title":"Refactor `emitter::instrDesc` and supporting code for XARCH","user":{"login":"CarolEidt","id":2973870,"avatar_url":"https://avatars1.githubusercontent.com/u/2973870?v=4","gravatar_id":"","url":"https://api.github.com/users/CarolEidt","html_url":"https://github.com/CarolEidt","followers_url":"https://api.github.com/users/CarolEidt/followers","following_url":"https://api.github.com/users/CarolEidt/following{/other_user}","gists_url":"https://api.github.com/users/CarolEidt/gists{/gist_id}","starred_url":"https://api.github.com/users/CarolEidt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CarolEidt/subscriptions","organizations_url":"https://api.github.com/users/CarolEidt/orgs","repos_url":"https://api.github.com/users/CarolEidt/repos","events_url":"https://api.github.com/users/CarolEidt/events{/privacy}","received_events_url":"https://api.github.com/users/CarolEidt/received_events","type":"User","site_admin":false},"labels":[{"id":451595438,"url":"https://api.github.com/repos/dotnet/coreclr/labels/JitThroughput","name":"JitThroughput","color":"fbca04","default":false},{"id":563254253,"url":"https://api.github.com/repos/dotnet/coreclr/labels/arch-x64","name":"arch-x64","color":"eb6420","default":false},{"id":330164122,"url":"https://api.github.com/repos/dotnet/coreclr/labels/arch-x86","name":"arch-x86","color":"eb6420","default":false},{"id":196940911,"url":"https://api.github.com/repos/dotnet/coreclr/labels/area-CodeGen","name":"area-CodeGen","color":"d4c5f9","default":false},{"id":172143005,"url":"https://api.github.com/repos/dotnet/coreclr/labels/enhancement","name":"enhancement","color":"1d76db","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/dotnet/coreclr/milestones/5","html_url":"https://github.com/dotnet/coreclr/milestone/5","labels_url":"https://api.github.com/repos/dotnet/coreclr/milestones/5/labels","id":1328081,"number":5,"title":"Future","description":"Milestone tracking issues not triaged to a planned release. Work in this milestone may happen, or may not: it is not committed.","creator":{"login":"joshfree","id":1302850,"avatar_url":"https://avatars1.githubusercontent.com/u/1302850?v=4","gravatar_id":"","url":"https://api.github.com/users/joshfree","html_url":"https://github.com/joshfree","followers_url":"https://api.github.com/users/joshfree/followers","following_url":"https://api.github.com/users/joshfree/following{/other_user}","gists_url":"https://api.github.com/users/joshfree/gists{/gist_id}","starred_url":"https://api.github.com/users/joshfree/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joshfree/subscriptions","organizations_url":"https://api.github.com/users/joshfree/orgs","repos_url":"https://api.github.com/users/joshfree/repos","events_url":"https://api.github.com/users/joshfree/events{/privacy}","received_events_url":"https://api.github.com/users/joshfree/received_events","type":"User","site_admin":false},"open_issues":1180,"closed_issues":987,"state":"open","created_at":"2015-09-29T00:26:07Z","updated_at":"2018-02-12T18:38:26Z","due_on":null,"closed_at":null},"comments":10,"created_at":"2017-10-16T19:18:16Z","updated_at":"2018-02-12T18:40:14Z","closed_at":null,"author_association":"MEMBER","body":"As new instructions have been added for SSE and AVX, the existing encoding tables aren't adequately expressive, resulting in a great deal of conditional code that impacts throughput. This should be refactored both for throughput, as well as to avoid complex conditional code that is harder to maintain.\r\nThis will contribute to the resolution of #7454."},"comment":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/comments/365020210","html_url":"https://github.com/dotnet/coreclr/issues/14523#issuecomment-365020210","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/14523","id":365020210,"user":{"login":"tannergooding","id":10487869,"avatar_url":"https://avatars3.githubusercontent.com/u/10487869?v=4","gravatar_id":"","url":"https://api.github.com/users/tannergooding","html_url":"https://github.com/tannergooding","followers_url":"https://api.github.com/users/tannergooding/followers","following_url":"https://api.github.com/users/tannergooding/following{/other_user}","gists_url":"https://api.github.com/users/tannergooding/gists{/gist_id}","starred_url":"https://api.github.com/users/tannergooding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tannergooding/subscriptions","organizations_url":"https://api.github.com/users/tannergooding/orgs","repos_url":"https://api.github.com/users/tannergooding/repos","events_url":"https://api.github.com/users/tannergooding/events{/privacy}","received_events_url":"https://api.github.com/users/tannergooding/received_events","type":"User","site_admin":false},"created_at":"2018-02-12T18:40:14Z","updated_at":"2018-02-12T18:40:14Z","author_association":"MEMBER","body":"I believe the first issue (the current implementation requires definitions to be particularly ordered) is more trivial to resolve (and I think I have such a refactoring complete locally, at the very least all the tests are passing).\r\n\r\nIt looks like we currently require the entries to be defined in the following order:\r\n* INST5\r\n* INST4\r\n* INST3\r\n* INST2\r\n* INST1\r\n* INST0\r\n\r\nIt looks like this was done in order to save space in the various `insCodes` tables. However, this quickly broke down with the introduction of the SIMD instructions where they all use the `INST3` definitions and generally have two `BAD_CODE` encodings.\r\n\r\nUpdating the tables to define an entry for all instructions removes most of the ordering limitations. The remaining ordering limitations are with certain instruction \"groups\" (such as `imul_AX` through `imul_R15`, or the `JCC`, `SETCC`, or `MOVCC` instructions). However these remaining limitations cause less issues."}}
{"actor":{"display_login":"tannergooding"}}