{"action":"opened","issue":{"url":"https://api.github.com/repos/radare/radare2/issues/9948","repository_url":"https://api.github.com/repos/radare/radare2","labels_url":"https://api.github.com/repos/radare/radare2/issues/9948/labels{/name}","comments_url":"https://api.github.com/repos/radare/radare2/issues/9948/comments","events_url":"https://api.github.com/repos/radare/radare2/issues/9948/events","html_url":"https://github.com/radare/radare2/issues/9948","id":317185625,"number":9948,"title":"support more mmx instructions","user":{"login":"radare","id":917142,"avatar_url":"https://avatars1.githubusercontent.com/u/917142?v=4","gravatar_id":"","url":"https://api.github.com/users/radare","html_url":"https://github.com/radare","followers_url":"https://api.github.com/users/radare/followers","following_url":"https://api.github.com/users/radare/following{/other_user}","gists_url":"https://api.github.com/users/radare/gists{/gist_id}","starred_url":"https://api.github.com/users/radare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/radare/subscriptions","organizations_url":"https://api.github.com/users/radare/orgs","repos_url":"https://api.github.com/users/radare/repos","events_url":"https://api.github.com/users/radare/events{/privacy}","received_events_url":"https://api.github.com/users/radare/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-04-24T11:34:51Z","updated_at":"2018-04-24T11:34:51Z","closed_at":null,"author_association":"OWNER","body":"```\r\n        ╭─> 0x100037b10         660f6f040f         movdqa xmm0, xmmword [rdi + rcx]\r\n        ⋮   0x100037b15         f30f6f0c0e         movdqu xmm1, xmmword [rsi + rcx]\r\n        ⋮   0x100037b1a         660f74c1           pcmpeqb xmm0, xmm1\r\n        ⋮   0x100037b1e         660f74ca           pcmpeqb xmm1, xmm2\r\n        ⋮   0x100037b22         660fdfc8           pandn xmm1, xmm0\r\n        ⋮   0x100037b26         660fd7c1           pmovmskb eax, xmm1\r\n        ⋮   0x100037b2a         4883c110           add rcx, 0x10\r\n        ⋮   0x100037b2e         3dffff0000         cmp eax, 0xffff\r\n        ╰─< 0x100037b33 [4]     74db               je 0x100037b10\r\n```\r\n\r\nmovdqa = load 128 bits from rdi+rcx into xmm0\r\npcmpeqb xmm0, xmm1 => xmm0 = (xmm0 == xmm1)? 0: -1;\r\npandn xmm1, xmm0 => xmm1 = !(xmm0 & xmm1)\r\npmovmskb eax, xmm1 => Creates a mask made up of the most significant bit of each byte of the source operand (second operand) and stores the result in the low byte or word of the destination operand (first operand).\r\n\r\nthere's no pseudocode for those instructions"}}
{"actor":{"display_login":"radare"}}