Add SSE3 instructions to the x86 configuration file. Signed-off-by: Jan Bobek <jan.bo...@gmail.com> --- x86.risu | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+)
diff --git a/x86.risu b/x86.risu index b9d424e..d40b9df 100644 --- a/x86.risu +++ b/x86.risu @@ -161,6 +161,26 @@ MOVMSKPS SSE 00001111 01010000 \ MOVMSKPD SSE2 00001111 01010000 \ !constraints { data16($_); modrm($_); $_->{modrm}{reg} != REG_RSP && defined $_->{modrm}{reg2} } +# F2 0F F0 /r: LDDQU xmm1, m128 +LDDQU SSE3 00001111 11110000 \ + !constraints { repne($_); modrm($_); !defined $_->{modrm}{reg2} } \ + !memory { load(size => 16); } + +# F3 0F 16 /r: MOVSHDUP xmm1, xmm2/m128 +MOVSHDUP SSE3 00001111 00010110 \ + !constraints { rep($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + +# F3 0F 12 /r: MOVSLDUP xmm1, xmm2/m128 +MOVSLDUP SSE3 00001111 00010010 \ + !constraints { rep($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + +# F2 0F 12 /r: MOVDDUP xmm1, xmm2/m64 +MOVDDUP SSE3 00001111 00010010 \ + !constraints { repne($_); modrm($_); 1 } \ + !memory { load(size => 8); } + # # Arithmetic Instructions # ----------------------- @@ -266,6 +286,16 @@ ADDSD SSE2 00001111 01011000 \ !constraints { repne($_); modrm($_); 1 } \ !memory { load(size => 8); } +# F2 0F 7C /r: HADDPS xmm1, xmm2/m128 +HADDPS SSE3 00001111 01111100 \ + !constraints { repne($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + +# 66 0F 7C /r: HADDPD xmm1, xmm2/m128 +HADDPD SSE3 00001111 01111100 \ + !constraints { data16($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + # NP 0F F8 /r: PSUBB mm, mm/m64 PSUBB MMX 00001111 11111000 \ !constraints { modrm($_); $_->{modrm}{reg} &= 0b111; $_->{modrm}{reg2} &= 0b111 if defined $_->{modrm}{reg2}; 1 } \ @@ -366,6 +396,26 @@ SUBSD SSE2 00001111 01011100 \ !constraints { repne($_); modrm($_); 1 } \ !memory { load(size => 8); } +# F2 0F 7D /r: HSUBPS xmm1, xmm2/m128 +HSUBPS SSE3 00001111 01111101 \ + !constraints { repne($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + +# 66 0F 7D /r: HSUBPD xmm1, xmm2/m128 +HSUBPD SSE3 00001111 01111101 \ + !constraints { data16($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + +# F2 0F D0 /r: ADDSUBPS xmm1, xmm2/m128 +ADDSUBPS SSE3 00001111 11010000 \ + !constraints { repne($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + +# 66 0F D0 /r: ADDSUBPD xmm1, xmm2/m128 +ADDSUBPD SSE3 00001111 11010000 \ + !constraints { data16($_); modrm($_); 1 } \ + !memory { load(size => 16, align => 16); } + # NP 0F D5 /r: PMULLW mm, mm/m64 PMULLW MMX 00001111 11010101 \ !constraints { modrm($_); $_->{modrm}{reg} &= 0b111; $_->{modrm}{reg2} &= 0b111 if defined $_->{modrm}{reg2}; 1 } \ -- 2.20.1