{"action":"created","issue":{"url":"https://api.github.com/repos/eschkufz/x64asm/issues/159","labels_url":"https://api.github.com/repos/eschkufz/x64asm/issues/159/labels{/name}","comments_url":"https://api.github.com/repos/eschkufz/x64asm/issues/159/comments","events_url":"https://api.github.com/repos/eschkufz/x64asm/issues/159/events","html_url":"https://github.com/eschkufz/x64asm/issues/159","id":58627747,"number":159,"title":"Invalid spreadsheet entries for read/write sets for many instructions","user":{"login":"stefanheule","id":2499625,"avatar_url":"https://avatars.githubusercontent.com/u/2499625?v=3","gravatar_id":"","url":"https://api.github.com/users/stefanheule","html_url":"https://github.com/stefanheule","followers_url":"https://api.github.com/users/stefanheule/followers","following_url":"https://api.github.com/users/stefanheule/following{/other_user}","gists_url":"https://api.github.com/users/stefanheule/gists{/gist_id}","starred_url":"https://api.github.com/users/stefanheule/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefanheule/subscriptions","organizations_url":"https://api.github.com/users/stefanheule/orgs","repos_url":"https://api.github.com/users/stefanheule/repos","events_url":"https://api.github.com/users/stefanheule/events{/privacy}","received_events_url":"https://api.github.com/users/stefanheule/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/eschkufz/x64asm/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/eschkufz/x64asm/labels/Medium!","name":"Medium!","color":"fbca04"}],"state":"open","locked":false,"assignee":{"login":"stefanheule","id":2499625,"avatar_url":"https://avatars.githubusercontent.com/u/2499625?v=3","gravatar_id":"","url":"https://api.github.com/users/stefanheule","html_url":"https://github.com/stefanheule","followers_url":"https://api.github.com/users/stefanheule/followers","following_url":"https://api.github.com/users/stefanheule/following{/other_user}","gists_url":"https://api.github.com/users/stefanheule/gists{/gist_id}","starred_url":"https://api.github.com/users/stefanheule/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefanheule/subscriptions","organizations_url":"https://api.github.com/users/stefanheule/orgs","repos_url":"https://api.github.com/users/stefanheule/repos","events_url":"https://api.github.com/users/stefanheule/events{/privacy}","received_events_url":"https://api.github.com/users/stefanheule/received_events","type":"User","site_admin":false},"milestone":null,"comments":5,"created_at":"2015-02-23T18:32:43Z","updated_at":"2015-02-24T22:47:44Z","closed_at":null,"body":"The maybe_read_set of movsd is wrong.  For `movsd %xmm12, %xmm8`, it is reported as `{ %xmm12 }`, but it should be `{ %xmm8, %xmm12 }`.  This is because `movsd` leaves the upper 64 bits of `%xmm8` unchanged.\r\n\r\nI looked at the spreadsheet, and I think the Properties column reads \"W, R\", which looks right to me (but every time I look at the spreadsheet, I don't understand what most things mean.  If anybody explains this to me (again?), I will write it down in a README or something).  So, I don't know why this is happening.\r\n\r\nI also wonder if there are other opcodes with the same problem (like `movss`, etc.)?"},"comment":{"url":"https://api.github.com/repos/eschkufz/x64asm/issues/comments/75864066","html_url":"https://github.com/eschkufz/x64asm/issues/159#issuecomment-75864066","issue_url":"https://api.github.com/repos/eschkufz/x64asm/issues/159","id":75864066,"user":{"login":"eschkufz","id":637102,"avatar_url":"https://avatars.githubusercontent.com/u/637102?v=3","gravatar_id":"","url":"https://api.github.com/users/eschkufz","html_url":"https://github.com/eschkufz","followers_url":"https://api.github.com/users/eschkufz/followers","following_url":"https://api.github.com/users/eschkufz/following{/other_user}","gists_url":"https://api.github.com/users/eschkufz/gists{/gist_id}","starred_url":"https://api.github.com/users/eschkufz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eschkufz/subscriptions","organizations_url":"https://api.github.com/users/eschkufz/orgs","repos_url":"https://api.github.com/users/eschkufz/repos","events_url":"https://api.github.com/users/eschkufz/events{/privacy}","received_events_url":"https://api.github.com/users/eschkufz/received_events","type":"User","site_admin":false},"created_at":"2015-02-24T22:47:44Z","updated_at":"2015-02-24T22:47:44Z","body":"Is that relevant? Yes.\nCan you fix that? No without rewriting everything.\n\nOn Tue, Feb 24, 2015 at 2:35 PM, Stefan Heule <notifications@github.com>\nwrote:\n\n> Question: For movss/movsd, the destination can be either xmm or memory. In\n> the former case, the destination is read (because the upper bits are left\n> unchanged), but not in the memory case. In the spreadsheet, there is only a\n> single row, so (to be conservative), the memory destination is now also in\n> the maybe_read_set. Is that a problem? Can I fix that? Here is the relevant\n> row (after my change):\n>\n> F3 0F 11 /r MOVSS xmm2/m32, xmm MR  RW, R                       V   V   SSE movss       Move scalar single-precision floating-point value from xmm1 register to xmm2/m32.\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/eschkufz/x64asm/issues/159#issuecomment-75862101>.\n>\n"}}