* Re: [PATCH] PowerPC VLE changes
@ 2017-03-24 15:32 Александр Федотов
2017-03-27 14:32 ` Andrew Jenner
0 siblings, 1 reply; 20+ messages in thread
From: Александр Федотов @ 2017-03-24 15:32 UTC (permalink / raw)
To: binutils
Hi all
I have question in continuation of
https://sourceware.org/ml/binutils/2016-07/msg00342.html
Why do you need to have "e_cmpwi" etc in vle_opcodes table ? It seems
they are just alias names because of the same opcodes and objdump
never show them.
Why don't to use powerpc_macros instead ?
And it seems that following instructions must be marked as E200Z4 also
respectively to MPC5748G Reference Manual:
lbdx
lhdx
lwdx
stbdx
sthdx
stwdx
Alexander
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-03-24 15:32 [PATCH] PowerPC VLE changes Александр Федотов
@ 2017-03-27 14:32 ` Andrew Jenner
2017-03-28 14:14 ` Александр Федотов
2017-03-28 23:33 ` Alan Modra
0 siblings, 2 replies; 20+ messages in thread
From: Andrew Jenner @ 2017-03-27 14:32 UTC (permalink / raw)
To: Александр
Федотов,
binutils
Hi Alexander,
On 24/03/2017 15:32, ÐлекÑÐ°Ð½Ð´Ñ Ð¤ÐµÐ´Ð¾Ñов wrote:
> I have question in continuation of
> https://sourceware.org/ml/binutils/2016-07/msg00342.html
>
> Why do you need to have "e_cmpwi" etc in vle_opcodes table ? It seems
> they are just alias names because of the same opcodes and objdump
> never show them.
> Why don't to use powerpc_macros instead ?
>
> And it seems that following instructions must be marked as E200Z4 also
> respectively to MPC5748G Reference Manual:
>
> lbdx
> lhdx
> lwdx
> stbdx
> sthdx
> stwdx
You may very well be right, on both counts. If you'd like to propose a
patch, I'll take a look and run tests on it. Otherwise, I'll look into
making these changes next time I'm doing some VLE work.
Thanks,
Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-03-27 14:32 ` Andrew Jenner
@ 2017-03-28 14:14 ` Александр Федотов
2017-03-28 23:33 ` Alan Modra
1 sibling, 0 replies; 20+ messages in thread
From: Александр Федотов @ 2017-03-28 14:14 UTC (permalink / raw)
To: Andrew Jenner; +Cc: binutils
Hello Andrew
Here is the patch:
diff -ruN binutils-2.28-orig/opcodes/ppc-opc.c binutils-2.28/opcodes/ppc-opc.c
--- binutils-2.28-orig/opcodes/ppc-opc.c 2017-03-02 11:23:54.000000000 +0300
+++ binutils-2.28/opcodes/ppc-opc.c 2017-03-28 16:51:08.000000000 +0300
@@ -5762,7 +5762,7 @@
{"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
{"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lbdx", X(31,515), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0,
{RT, RA, RB}},
{"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
@@ -5813,7 +5813,7 @@
{"maskir.", XRC(31,541,1), X_MASK, M601, 0,
{RA, RS, RB}},
{"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lhdx", X(31,547), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0,
{RT, RA, RB}},
{"lvtrx", X(31,549), X_MASK, PPCVEC2, 0, {VD,
RA0, RB}},
@@ -5837,7 +5837,7 @@
{"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
{"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lwdx", X(31,579), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0,
{RT, RA, RB}},
{"lvtlx", X(31,581), X_MASK, PPCVEC2, 0, {VD,
RA0, RB}},
@@ -5888,7 +5888,7 @@
{"lfdux", X(31,631), X_MASK, COM, PPCEFS,
{FRT, RAS, RB}},
{"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
-{"stbdx", X(31,643), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0,
{RS, RA, RB}},
{"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0,
{FCRT, RA, RB}},
@@ -5926,7 +5926,7 @@
{"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
{"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
-{"sthdx", X(31,675), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0,
{RS, RA, RB}},
{"stvfrx", X(31,677), X_MASK, PPCVEC2, 0,
{VS, RA0, RB}},
@@ -5944,7 +5944,7 @@
{"sriq.", XRC(31,696,1), X_MASK, M601, 0,
{RA, RS, SH}},
{"stwdcbx", X(31,706), X_MASK, E200Z4, 0,
{RS, RA, RB}},
-{"stwdx", X(31,707), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0,
{RS, RA, RB}},
{"stvflx", X(31,709), X_MASK, PPCVEC2, 0,
{VS, RA0, RB}},
@@ -7020,9 +7020,7 @@
{"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
{"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0,
{CRD32, RA, SCLSCI8}},
-{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0,
{CRD32, RA, SCLSCI8}},
{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0,
{CRD32, RA, SCLSCI8}},
-{"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0,
{CRD32, RA, SCLSCI8}},
{"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT,
RA, SCLSCI8}},
{"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT,
RA, SCLSCI8N}},
{"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT,
RA, SCLSCI8}},
@@ -7273,6 +7271,8 @@
{"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
{"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
+{"e_cmpwi", 3, PPCVLE, "e_cmpi %0,%1,%2"},
+{"e_cmplwi", 3, PPCVLE, "e_cmpli %0,%1,%2"},
{"e_extlwi", 4, PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
{"e_extrwi", 4, PPCVLE, "e_rlwinm
%0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
{"e_inslwi", 4, PPCVLE, "e_rlwimi
%0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
Alex
2017-03-27 17:32 GMT+03:00 Andrew Jenner <andrew@codesourcery.com>:
> Hi Alexander,
>
> On 24/03/2017 15:32, Александр Федотов wrote:
>>
>> I have question in continuation of
>> https://sourceware.org/ml/binutils/2016-07/msg00342.html
>>
>> Why do you need to have "e_cmpwi" etc in vle_opcodes table ? It seems
>> they are just alias names because of the same opcodes and objdump
>> never show them.
>> Why don't to use powerpc_macros instead ?
>>
>> And it seems that following instructions must be marked as E200Z4 also
>> respectively to MPC5748G Reference Manual:
>>
>> lbdx
>> lhdx
>> lwdx
>> stbdx
>> sthdx
>> stwdx
>
>
> You may very well be right, on both counts. If you'd like to propose a
> patch, I'll take a look and run tests on it. Otherwise, I'll look into
> making these changes next time I'm doing some VLE work.
>
> Thanks,
>
> Andrew
--
Best regards,
AF
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-03-27 14:32 ` Andrew Jenner
2017-03-28 14:14 ` Александр Федотов
@ 2017-03-28 23:33 ` Alan Modra
2017-03-29 19:36 ` Alexander Fedotov
1 sibling, 1 reply; 20+ messages in thread
From: Alan Modra @ 2017-03-28 23:33 UTC (permalink / raw)
To: Andrew Jenner
Cc: Александр
Федотов,
binutils
On Mon, Mar 27, 2017 at 03:32:23PM +0100, Andrew Jenner wrote:
> Hi Alexander,
>
> On 24/03/2017 15:32, ÐлекÑÐ°Ð½Ð´Ñ Ð¤ÐµÐ´Ð¾Ñов wrote:
> >I have question in continuation of
> >https://sourceware.org/ml/binutils/2016-07/msg00342.html
> >
> >Why do you need to have "e_cmpwi" etc in vle_opcodes table ? It seems
> >they are just alias names because of the same opcodes and objdump
> >never show them.
> >Why don't to use powerpc_macros instead ?
It is the other way around. If there is something in the macro table
that could go in the main opcode table then it should be moved there.
Mnemonic lookup in the main opcode table happens first. Macro lookup
is later. So putting something in the macro table unnecessarily, just
slows does the assembler a litte. The macro table should really only
be used where some manipulation of arguments is needed.
Hmm, looking at the macros, that means e_rotlwi and e_clrlwi probably
ought to be moved since the macros just provide a default argument to
the underlying machine insn rather than some arithmetic manipulation.
Fixing this isn't at all important though, so don't see these comments
as a request for someone to tidy the VLE support. Note that moving
those insns to the main table would also allow the disassembler to
produce e_rotlwi or e_clrlwi rather than e_rlwinm, depending on
whether you place them before e_rlwinm or after. I recognize that
some people (more hardware oriented) would prefer to see rlwinm rather
than rotlwi (likely prefered by those more software oriented). I've
just been working on a patch that will add -Mraw to the powerpc
disassembler to maybe satisfy both camps.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-03-28 23:33 ` Alan Modra
@ 2017-03-29 19:36 ` Alexander Fedotov
2017-04-04 1:29 ` Alan Modra
0 siblings, 1 reply; 20+ messages in thread
From: Alexander Fedotov @ 2017-03-29 19:36 UTC (permalink / raw)
To: Alan Modra; +Cc: Andrew Jenner, binutils
Well, I think while such aliases are not in PowerISA and may be
changed in any moment - better to move such ones to macros table.
Performance should not harm dramatically if at all.
Anyway, don't miss decorated storage instruction for e200z4 from my patch.
On Wed, Mar 29, 2017 at 2:33 AM, Alan Modra <amodra@gmail.com> wrote:
> On Mon, Mar 27, 2017 at 03:32:23PM +0100, Andrew Jenner wrote:
>> Hi Alexander,
>>
>> On 24/03/2017 15:32, Александр Федотов wrote:
>> >I have question in continuation of
>> >https://sourceware.org/ml/binutils/2016-07/msg00342.html
>> >
>> >Why do you need to have "e_cmpwi" etc in vle_opcodes table ? It seems
>> >they are just alias names because of the same opcodes and objdump
>> >never show them.
>> >Why don't to use powerpc_macros instead ?
>
> It is the other way around. If there is something in the macro table
> that could go in the main opcode table then it should be moved there.
>
> Mnemonic lookup in the main opcode table happens first. Macro lookup
> is later. So putting something in the macro table unnecessarily, just
> slows does the assembler a litte. The macro table should really only
> be used where some manipulation of arguments is needed.
>
> Hmm, looking at the macros, that means e_rotlwi and e_clrlwi probably
> ought to be moved since the macros just provide a default argument to
> the underlying machine insn rather than some arithmetic manipulation.
> Fixing this isn't at all important though, so don't see these comments
> as a request for someone to tidy the VLE support. Note that moving
> those insns to the main table would also allow the disassembler to
> produce e_rotlwi or e_clrlwi rather than e_rlwinm, depending on
> whether you place them before e_rlwinm or after. I recognize that
> some people (more hardware oriented) would prefer to see rlwinm rather
> than rotlwi (likely prefered by those more software oriented). I've
> just been working on a patch that will add -Mraw to the powerpc
> disassembler to maybe satisfy both camps.
>
> --
> Alan Modra
> Australia Development Lab, IBM
--
Best regards,
AF
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-03-29 19:36 ` Alexander Fedotov
@ 2017-04-04 1:29 ` Alan Modra
2017-04-04 10:23 ` Alexander Fedotov
0 siblings, 1 reply; 20+ messages in thread
From: Alan Modra @ 2017-04-04 1:29 UTC (permalink / raw)
To: Alexander Fedotov; +Cc: Andrew Jenner, binutils
On Wed, Mar 29, 2017 at 10:36:36PM +0300, Alexander Fedotov wrote:
> Well, I think while such aliases are not in PowerISA and may be
> changed in any moment - better to move such ones to macros table.
> Performance should not harm dramatically if at all.
>
> Anyway, don't miss decorated storage instruction for e200z4 from my patch.
I don't like being a dictator since that tends to drive away
contributors, but let me make it absolutely clear. I will not accept
a patch that moves insns to the powerpc macro table. Since your patch
at https://sourceware.org/ml/binutils/2017-03/msg00348.html does that,
and lacks a ChangeLog entry, it is currently blocked.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-04-04 1:29 ` Alan Modra
@ 2017-04-04 10:23 ` Alexander Fedotov
2017-04-04 10:33 ` Alexander Fedotov
0 siblings, 1 reply; 20+ messages in thread
From: Alexander Fedotov @ 2017-04-04 10:23 UTC (permalink / raw)
To: Alan Modra; +Cc: Andrew Jenner, binutils
Okay. Removed change about macro from patch. Kept only e200z4 instructions.
diff -ruN binutils-2.28-orig/opcodes/ppc-opc.c binutils-2.28/opcodes/ppc-opc.c
--- binutils-2.28-orig/opcodes/ppc-opc.c 2017-03-02 11:23:54.000000000 +0300
+++ binutils-2.28/opcodes/ppc-opc.c 2017-04-04 13:21:36.789164587 +0300
@@ -5762,7 +5762,7 @@
{"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
{"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lbdx", X(31,515), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0,
{RT, RA, RB}},
{"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
@@ -5813,7 +5813,7 @@
{"maskir.", XRC(31,541,1), X_MASK, M601, 0,
{RA, RS, RB}},
{"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lhdx", X(31,547), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0,
{RT, RA, RB}},
{"lvtrx", X(31,549), X_MASK, PPCVEC2, 0, {VD,
RA0, RB}},
@@ -5837,7 +5837,7 @@
{"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
{"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lwdx", X(31,579), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0,
{RT, RA, RB}},
{"lvtlx", X(31,581), X_MASK, PPCVEC2, 0, {VD,
RA0, RB}},
@@ -5888,7 +5888,7 @@
{"lfdux", X(31,631), X_MASK, COM, PPCEFS,
{FRT, RAS, RB}},
{"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
-{"stbdx", X(31,643), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0,
{RS, RA, RB}},
{"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0,
{FCRT, RA, RB}},
@@ -5926,7 +5926,7 @@
{"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
{"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
-{"sthdx", X(31,675), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0,
{RS, RA, RB}},
{"stvfrx", X(31,677), X_MASK, PPCVEC2, 0,
{VS, RA0, RB}},
@@ -5944,7 +5944,7 @@
{"sriq.", XRC(31,696,1), X_MASK, M601, 0,
{RA, RS, SH}},
{"stwdcbx", X(31,706), X_MASK, E200Z4, 0,
{RS, RA, RB}},
-{"stwdx", X(31,707), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0,
{RS, RA, RB}},
{"stvflx", X(31,709), X_MASK, PPCVEC2, 0,
{VS, RA0, RB}},
On Tue, Apr 4, 2017 at 4:28 AM, Alan Modra <amodra@gmail.com> wrote:
> On Wed, Mar 29, 2017 at 10:36:36PM +0300, Alexander Fedotov wrote:
>> Well, I think while such aliases are not in PowerISA and may be
>> changed in any moment - better to move such ones to macros table.
>> Performance should not harm dramatically if at all.
>>
>> Anyway, don't miss decorated storage instruction for e200z4 from my patch.
>
> I don't like being a dictator since that tends to drive away
> contributors, but let me make it absolutely clear. I will not accept
> a patch that moves insns to the powerpc macro table. Since your patch
> at https://sourceware.org/ml/binutils/2017-03/msg00348.html does that,
> and lacks a ChangeLog entry, it is currently blocked.
>
> --
> Alan Modra
> Australia Development Lab, IBM
--
Best regards,
AF
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-04-04 10:23 ` Alexander Fedotov
@ 2017-04-04 10:33 ` Alexander Fedotov
2017-04-22 8:51 ` Alan Modra
0 siblings, 1 reply; 20+ messages in thread
From: Alexander Fedotov @ 2017-04-04 10:33 UTC (permalink / raw)
To: Alan Modra; +Cc: Andrew Jenner, binutils
Another one is related to VLE also:
diff -ruN binutils-2.28-orig/opcodes/ppc-opc.c binutils-2.28/opcodes/ppc-opc.c
--- binutils-2.28-orig/opcodes/ppc-opc.c 2017-03-02 11:23:54.000000000 +0300
+++ binutils-2.28/opcodes/ppc-opc.c 2017-04-04 13:27:48.125164587 +0300
@@ -6997,6 +6997,7 @@
{"se_rfci", C(9), C_MASK, PPCVLE, 0, {}},
{"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}},
{"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}},
+{"se_rfgi", C(12), C_MASK, PPCVLE, 0, {}},
{"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}},
{"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}},
{"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}},
@@ -7154,6 +7155,7 @@
{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
{"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
+{"e_sc", X(31,36), XRTRA_MASK, PPCVLE, 0, {ELEV}},
{"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
{"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
{"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
On Tue, Apr 4, 2017 at 1:23 PM, Alexander Fedotov <alfedotov@gmail.com> wrote:
> Okay. Removed change about macro from patch. Kept only e200z4 instructions.
>
> diff -ruN binutils-2.28-orig/opcodes/ppc-opc.c binutils-2.28/opcodes/ppc-opc.c
> --- binutils-2.28-orig/opcodes/ppc-opc.c 2017-03-02 11:23:54.000000000 +0300
> +++ binutils-2.28/opcodes/ppc-opc.c 2017-04-04 13:21:36.789164587 +0300
> @@ -5762,7 +5762,7 @@
> {"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
>
> {"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
> -{"lbdx", X(31,515), X_MASK, E500MC, 0, {RT, RA, RB}},
> +{"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0,
> {RT, RA, RB}},
>
> {"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
>
> @@ -5813,7 +5813,7 @@
> {"maskir.", XRC(31,541,1), X_MASK, M601, 0,
> {RA, RS, RB}},
>
> {"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
> -{"lhdx", X(31,547), X_MASK, E500MC, 0, {RT, RA, RB}},
> +{"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0,
> {RT, RA, RB}},
>
> {"lvtrx", X(31,549), X_MASK, PPCVEC2, 0, {VD,
> RA0, RB}},
>
> @@ -5837,7 +5837,7 @@
> {"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
>
> {"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
> -{"lwdx", X(31,579), X_MASK, E500MC, 0, {RT, RA, RB}},
> +{"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0,
> {RT, RA, RB}},
>
> {"lvtlx", X(31,581), X_MASK, PPCVEC2, 0, {VD,
> RA0, RB}},
>
> @@ -5888,7 +5888,7 @@
> {"lfdux", X(31,631), X_MASK, COM, PPCEFS,
> {FRT, RAS, RB}},
>
> {"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
> -{"stbdx", X(31,643), X_MASK, E500MC, 0, {RS, RA, RB}},
> +{"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0,
> {RS, RA, RB}},
>
> {"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
> {"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0,
> {FCRT, RA, RB}},
> @@ -5926,7 +5926,7 @@
> {"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
>
> {"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
> -{"sthdx", X(31,675), X_MASK, E500MC, 0, {RS, RA, RB}},
> +{"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0,
> {RS, RA, RB}},
>
> {"stvfrx", X(31,677), X_MASK, PPCVEC2, 0,
> {VS, RA0, RB}},
>
> @@ -5944,7 +5944,7 @@
> {"sriq.", XRC(31,696,1), X_MASK, M601, 0,
> {RA, RS, SH}},
>
> {"stwdcbx", X(31,706), X_MASK, E200Z4, 0,
> {RS, RA, RB}},
> -{"stwdx", X(31,707), X_MASK, E500MC, 0, {RS, RA, RB}},
> +{"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0,
> {RS, RA, RB}},
>
> {"stvflx", X(31,709), X_MASK, PPCVEC2, 0,
> {VS, RA0, RB}},
>
> On Tue, Apr 4, 2017 at 4:28 AM, Alan Modra <amodra@gmail.com> wrote:
>> On Wed, Mar 29, 2017 at 10:36:36PM +0300, Alexander Fedotov wrote:
>>> Well, I think while such aliases are not in PowerISA and may be
>>> changed in any moment - better to move such ones to macros table.
>>> Performance should not harm dramatically if at all.
>>>
>>> Anyway, don't miss decorated storage instruction for e200z4 from my patch.
>>
>> I don't like being a dictator since that tends to drive away
>> contributors, but let me make it absolutely clear. I will not accept
>> a patch that moves insns to the powerpc macro table. Since your patch
>> at https://sourceware.org/ml/binutils/2017-03/msg00348.html does that,
>> and lacks a ChangeLog entry, it is currently blocked.
>>
>> --
>> Alan Modra
>> Australia Development Lab, IBM
>
>
>
> --
> Best regards,
> AF
--
Best regards,
AF
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-04-04 10:33 ` Alexander Fedotov
@ 2017-04-22 8:51 ` Alan Modra
0 siblings, 0 replies; 20+ messages in thread
From: Alan Modra @ 2017-04-22 8:51 UTC (permalink / raw)
To: Alexander Fedotov; +Cc: Andrew Jenner, binutils
On Tue, Apr 04, 2017 at 01:33:44PM +0300, Alexander Fedotov wrote:
> Another one is related to VLE also:
Neither of these patches applied, because your mail client wrapped
lines and converted tabs to spaces. The second didn't compile,
lacking a definition for ELEV, and ChangeLog entries were missing.
I've fixed these problems and added to the VLE gas testsuite.
Committed.
opcodes/
* ppc-opc.c (ELEV): Define.
(vle_opcodes): Add se_rfgi and e_sc.
(powerpc_opcodes): Enable lbdx, lhdx, lwdx, stbdx, sthdx, stwdx
for E200Z4.
gas/
* testsuite/gas/ppc/vle.s: Format. Add se_rfgi and e_sc.
* testsuite/gas/ppc/vle.d: Update.
diff --git a/gas/ChangeLog b/gas/ChangeLog
index a31c799..c5531a7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2017-04-22 Alan Modra <amodra@gmail.com>
+
+ * testsuite/gas/ppc/vle.s: Format. Add se_rfgi and e_sc.
+ * testsuite/gas/ppc/vle.d: Update.
+
2017-04-21 Nick Clifton <nickc@redhat.com>
PR binutils/21380
diff --git a/gas/testsuite/gas/ppc/vle.d b/gas/testsuite/gas/ppc/vle.d
index ea75658..dcc2cc3 100644
--- a/gas/testsuite/gas/ppc/vle.d
+++ b/gas/testsuite/gas/ppc/vle.d
@@ -148,3 +148,7 @@ Disassembly of section \.text:
194: e9 c2 se_bl 118 <middle_label>
196: 79 ff ff 82 e_b 118 <middle_label>
19a: 79 ff fe 67 e_bl 0 <start_label>
+ 19e: 00 0c se_rfgi
+ 1a0: 7c 00 00 48 e_sc
+ 1a4: 7c 00 00 48 e_sc
+ 1a8: 7c 00 08 48 e_sc 1
diff --git a/gas/testsuite/gas/ppc/vle.s b/gas/testsuite/gas/ppc/vle.s
index cab6120..4354c1f 100644
--- a/gas/testsuite/gas/ppc/vle.s
+++ b/gas/testsuite/gas/ppc/vle.s
@@ -41,144 +41,148 @@
.equ r31,31
.equ r32,32
.equ rsp,r1
-
-start_label:
+
+start_label:
e_add16i r4,r3,27
- e_add2i. r0,0x3456
- e_add2is r1,0x4321
- e_addi. r2,r6,SCI0
- e_addi r3,r5,SCI1
- e_addic. r4,r4,SCI2
- e_addic r7,r8,SCI3
- e_and2i. r9,0xfeed
- e_and2is. r10,5
- e_andi. r11,r13,0x39
- e_andi r12,r15,SCI2
- e_b middle_label
- e_bl extern_subr
- e_bc 0,3,start_label
- e_bcl 1,15,extern_subr
+ e_add2i. r0,0x3456
+ e_add2is r1,0x4321
+ e_addi. r2,r6,SCI0
+ e_addi r3,r5,SCI1
+ e_addic. r4,r4,SCI2
+ e_addic r7,r8,SCI3
+ e_and2i. r9,0xfeed
+ e_and2is. r10,5
+ e_andi. r11,r13,0x39
+ e_andi r12,r15,SCI2
+ e_b middle_label
+ e_bl extern_subr
+ e_bc 0,3,start_label
+ e_bcl 1,15,extern_subr
e_cmp16i r2,0x3333
e_cmpi 2,r6,SCI1
e_cmph 1,r7,r11
e_cmph16i r12,0xfdef
e_cmphl 0,r6,r8
e_cmphl16i r13,0x1234
- e_cmpl16i r1, 0xfee0
- e_cmpli 1,r3,SCI3
- e_crand 0x1d,3,0
- e_crandc 0,2,0x1d
- e_creqv 15,16,17
- e_crnand 0xf,0,3
- e_crnor 0xf,0,3
- e_cror 12,13,14
- e_crorc 19,18,17
- e_crxor 0,0,0
- e_lbz r7,0xffffcc0d(r3)
- e_lbzu r7,-52(r5)
- e_lha r8,0x1ff(r10)
- e_lhau r8,-1(r1)
+ e_cmpl16i r1, 0xfee0
+ e_cmpli 1,r3,SCI3
+ e_crand 0x1d,3,0
+ e_crandc 0,2,0x1d
+ e_creqv 15,16,17
+ e_crnand 0xf,0,3
+ e_crnor 0xf,0,3
+ e_cror 12,13,14
+ e_crorc 19,18,17
+ e_crxor 0,0,0
+ e_lbz r7,0xffffcc0d(r3)
+ e_lbzu r7,-52(r5)
+ e_lha r8,0x1ff(r10)
+ e_lhau r8,-1(r1)
e_lhz r7,6200(r0)
e_lhzu r7,62(r0)
- e_li r0,0x33333
- e_lis r1,0x3333
- e_lmw r5,24(r3)
- e_lwz r5,10024(r3)
- e_lwzu r6,0x72(r2)
- e_mcrf 1,6
- e_mulli r9,r10,SCI0
- e_mull2i r1,0x668
- e_or2i r5,0x2345
- e_or2is r5,0xa345
- e_ori. r7,r9,SCI0
- e_ori r7,r8,SCI1
- e_rlw r18, r22,r0
- e_rlw. r8, r2,r0
- e_rlwi r20,r3,21
- e_rlwi. r2,r3,21
- e_rlwimi r4,r19,13,8,15
- e_rlwinm r4,r1,13,1,17
- e_slwi r12,r19,6
- e_slwi. r12,r10,20
- e_srwi r0,r1,16
- e_srwi. r0,r1,11
- e_stb r3,22000(r1)
- e_stbu r19,-4(r22)
- e_sth r0,666(r21)
- e_sthu r1,-1(r23)
- e_stmw r0,4(r3)
- e_stw r3,16161(r0)
- e_stwu r22,0xffffffee(r4)
- e_subfic r0,r21,SCI2
- e_subfic. r22,r0,SCI3
- e_xori r21,r3,SCI1
- e_xori. r0,r20,SCI0
-middle_label:
- se_add r31,r7
- se_addi r28,0x1f
- se_and r0,r1
- se_and. r1,r0
- se_andc r2, r3
- se_andi r4,0x11
- se_b middle_label
- se_bl extern_subr
- se_bc 1,3,not_end_label
- se_bclri r27,0x12
- se_bctr
- se_bctrl
- se_bgeni r7,17
- se_blr
- se_blrl
- se_bmaski r6,0
- se_bseti r0,1
- se_btsti r4,7
- se_cmp r0,r1
- se_cmph r31,r28
- se_cmphl r1,r25
- se_cmpi r3,22
- se_cmpl r6,r7
- se_cmpli r28,0xc
- se_extsb r1
- se_extsh r2
- se_extzb r30
- se_extzh r24
+ e_li r0,0x33333
+ e_lis r1,0x3333
+ e_lmw r5,24(r3)
+ e_lwz r5,10024(r3)
+ e_lwzu r6,0x72(r2)
+ e_mcrf 1,6
+ e_mulli r9,r10,SCI0
+ e_mull2i r1,0x668
+ e_or2i r5,0x2345
+ e_or2is r5,0xa345
+ e_ori. r7,r9,SCI0
+ e_ori r7,r8,SCI1
+ e_rlw r18, r22,r0
+ e_rlw. r8, r2,r0
+ e_rlwi r20,r3,21
+ e_rlwi. r2,r3,21
+ e_rlwimi r4,r19,13,8,15
+ e_rlwinm r4,r1,13,1,17
+ e_slwi r12,r19,6
+ e_slwi. r12,r10,20
+ e_srwi r0,r1,16
+ e_srwi. r0,r1,11
+ e_stb r3,22000(r1)
+ e_stbu r19,-4(r22)
+ e_sth r0,666(r21)
+ e_sthu r1,-1(r23)
+ e_stmw r0,4(r3)
+ e_stw r3,16161(r0)
+ e_stwu r22,0xffffffee(r4)
+ e_subfic r0,r21,SCI2
+ e_subfic. r22,r0,SCI3
+ e_xori r21,r3,SCI1
+ e_xori. r0,r20,SCI0
+middle_label:
+ se_add r31,r7
+ se_addi r28,0x1f
+ se_and r0,r1
+ se_and. r1,r0
+ se_andc r2, r3
+ se_andi r4,0x11
+ se_b middle_label
+ se_bl extern_subr
+ se_bc 1,3,not_end_label
+ se_bclri r27,0x12
+ se_bctr
+ se_bctrl
+ se_bgeni r7,17
+ se_blr
+ se_blrl
+ se_bmaski r6,0
+ se_bseti r0,1
+ se_btsti r4,7
+ se_cmp r0,r1
+ se_cmph r31,r28
+ se_cmphl r1,r25
+ se_cmpi r3,22
+ se_cmpl r6,r7
+ se_cmpli r28,0xc
+ se_extsb r1
+ se_extsh r2
+ se_extzb r30
+ se_extzh r24
not_end_label:
- se_illegal
- se_isync
- se_lbz r1,8(r24)
- se_lhz r24,18(r4)
+ se_illegal
+ se_isync
+ se_lbz r1,8(r24)
+ se_lhz r24,18(r4)
se_li r4,0x4f
- se_lwz r6,60(r0)
- se_mfar r7,r8
- se_mfctr r3
- se_mflr r4
- se_mr r31,r0
- se_mtar r23,r2
- se_mtctr r6
- se_mtlr r31
+ se_lwz r6,60(r0)
+ se_mfar r7,r8
+ se_mfctr r3
+ se_mflr r4
+ se_mr r31,r0
+ se_mtar r23,r2
+ se_mtctr r6
+ se_mtlr r31
se_mullw r3,r4
- se_neg r24
- se_not r25
- se_or r0,r1
- se_rfci
- se_rfdi
- se_rfi
- se_sc
- se_slw r5,r6
- se_slwi r7,7
- se_sraw r6,r30
- se_srawi r25,8
- se_srw r30,r0
- se_srwi r29,25
- se_stb r0,10(r2)
- se_sth r1,12(r30)
- se_stw r7,0(r29)
- se_sub r1,r2
- se_subf r29,r26
- se_subi r7,24
+ se_neg r24
+ se_not r25
+ se_or r0,r1
+ se_rfci
+ se_rfdi
+ se_rfi
+ se_sc
+ se_slw r5,r6
+ se_slwi r7,7
+ se_sraw r6,r30
+ se_srawi r25,8
+ se_srw r30,r0
+ se_srwi r29,25
+ se_stb r0,10(r2)
+ se_sth r1,12(r30)
+ se_stw r7,0(r29)
+ se_sub r1,r2
+ se_subf r29,r26
+ se_subi r7,24
end_label:
- se_subi. r25,19
- se_bl middle_label
- e_b middle_label
- e_bl start_label
+ se_subi. r25,19
+ se_bl middle_label
+ e_b middle_label
+ e_bl start_label
+ se_rfgi
+ e_sc
+ e_sc 0
+ e_sc 1
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 8595f2d..53ebe54 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,11 @@
+2017-04-22 Alexander Fedotov <alfedotov@gmail.com>
+ Alan Modra <amodra@gmail.com>
+
+ * ppc-opc.c (ELEV): Define.
+ (vle_opcodes): Add se_rfgi and e_sc.
+ (powerpc_opcodes): Enable lbdx, lhdx, lwdx, stbdx, sthdx, stwdx
+ for E200Z4.
+
2017-04-21 Jose E. Marchesi <jose.marchesi@oracle.com>
* sparc-opc.c (sparc_opcodes): Mark RETT instructions as v6notv9.
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 55e6bed..426261a 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -652,8 +652,10 @@ const struct powerpc_operand powerpc_operands[] =
#define SH6_MASK ((0x1f << 11) | (1 << 1))
{ 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
- /* The SH field of the tlbwe instruction, which is optional. */
+ /* The SH field of some variants of the tlbre and tlbwe
+ instructions, and the ELEV field of the e_sc instruction. */
#define SHO SH6 + 1
+#define ELEV SHO
{ 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
/* The SI field in a D form instruction. */
@@ -5874,7 +5876,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
{"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lbdx", X(31,515), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
{"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
@@ -5925,7 +5927,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}},
{"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lhdx", X(31,547), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
{"lvtrx", X(31,549), X_MASK, E6500, 0, {VD, RA0, RB}},
@@ -5949,7 +5951,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
{"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
-{"lwdx", X(31,579), X_MASK, E500MC, 0, {RT, RA, RB}},
+{"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
{"lvtlx", X(31,581), X_MASK, E6500, 0, {VD, RA0, RB}},
@@ -6000,7 +6002,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
{"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
-{"stbdx", X(31,643), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
{"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
@@ -6038,7 +6040,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
{"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
-{"sthdx", X(31,675), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
{"stvfrx", X(31,677), X_MASK, E6500, 0, {VS, RA0, RB}},
@@ -6056,7 +6058,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}},
{"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}},
-{"stwdx", X(31,707), X_MASK, E500MC, 0, {RS, RA, RB}},
+{"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
{"stvflx", X(31,709), X_MASK, E6500, 0, {VS, RA0, RB}},
@@ -7109,6 +7111,7 @@ const struct powerpc_opcode vle_opcodes[] = {
{"se_rfci", C(9), C_MASK, PPCVLE, 0, {}},
{"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}},
{"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}},
+{"se_rfgi", C(12), C_MASK, PPCVLE, 0, {}},
{"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}},
{"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}},
{"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}},
@@ -7266,6 +7269,7 @@ const struct powerpc_opcode vle_opcodes[] = {
{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
{"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
+{"e_sc", X(31,36), XRTRA_MASK, PPCVLE, 0, {ELEV}},
{"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
{"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
{"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-06-23 21:34 ` Alexander Fedotov
@ 2017-06-24 13:22 ` Alan Modra
0 siblings, 0 replies; 20+ messages in thread
From: Alan Modra @ 2017-06-24 13:22 UTC (permalink / raw)
To: Alexander Fedotov; +Cc: binutils, Edmar Wienskoski
On Sat, Jun 24, 2017 at 12:34:51AM +0300, Alexander Fedotov wrote:
> This patch separates EFS2 instructions from SPE2
Like the others, needs a Changelog entry.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-06-23 20:56 ` Alexander Fedotov
2017-06-23 21:34 ` Alexander Fedotov
@ 2017-06-24 13:21 ` Alan Modra
1 sibling, 0 replies; 20+ messages in thread
From: Alan Modra @ 2017-06-24 13:21 UTC (permalink / raw)
To: Alexander Fedotov; +Cc: binutils, Edmar Wienskoski
On Fri, Jun 23, 2017 at 11:56:24PM +0300, Alexander Fedotov wrote:
> This patch for SPE2 instructions support
Missing Changelog.
> +static unsigned long insert_evuimm1_ex0 (unsigned long, long, ppc_cpu_t, const char **);
> static unsigned long insert_evuimm2_ex0 (unsigned long, long, ppc_cpu_t, const char **);
> static unsigned long insert_evuimm4_ex0 (unsigned long, long, ppc_cpu_t, const char **);
> static unsigned long insert_evuimm8_ex0 (unsigned long, long, ppc_cpu_t, const char **);
> +static unsigned long insert_evuimm_lt8 (unsigned long, long, ppc_cpu_t, const char **);
> static unsigned long insert_evuimm_lt16 (unsigned long, long, ppc_cpu_t, const char **);
> static unsigned long insert_rD_rS_even (unsigned long, long, ppc_cpu_t, const char **);
> static unsigned long insert_off_lsp (unsigned long, long, ppc_cpu_t, const char **);
> +static unsigned long insert_off_spe2 (unsigned long, long, ppc_cpu_t, const char **);
Overlong lines, missing extract functions.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-06-23 20:55 ` Alexander Fedotov
2017-06-23 20:56 ` Alexander Fedotov
@ 2017-06-24 13:18 ` Alan Modra
1 sibling, 0 replies; 20+ messages in thread
From: Alan Modra @ 2017-06-24 13:18 UTC (permalink / raw)
To: Alexander Fedotov; +Cc: binutils, Edmar Wienskoski
On Fri, Jun 23, 2017 at 11:54:47PM +0300, Alexander Fedotov wrote:
> This patch for LSP instructions support
Missing Changelog.
> +static unsigned long insert_evuimm2_ex0 (unsigned long, long, ppc_cpu_t, const char **);
> +static unsigned long insert_evuimm4_ex0 (unsigned long, long, ppc_cpu_t, const char **);
> +static unsigned long insert_evuimm8_ex0 (unsigned long, long, ppc_cpu_t, const char **);
> +static unsigned long insert_evuimm_lt16 (unsigned long, long, ppc_cpu_t, const char **);
> +static unsigned long insert_rD_rS_even (unsigned long, long, ppc_cpu_t, const char **);
> +static unsigned long insert_off_lsp (unsigned long, long, ppc_cpu_t, const char **);
If you need an insert function, then you also need an extract
function to disassemble correctly. Also, overlong lines.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-06-23 20:52 Alexander Fedotov
2017-06-23 20:55 ` Alexander Fedotov
@ 2017-06-24 13:11 ` Alan Modra
1 sibling, 0 replies; 20+ messages in thread
From: Alan Modra @ 2017-06-24 13:11 UTC (permalink / raw)
To: Alexander Fedotov; +Cc: binutils, Edmar Wienskoski
On Fri, Jun 23, 2017 at 11:51:57PM +0300, Alexander Fedotov wrote:
> Hello Alan
>
> We want to upstream our changes for VLE, LSP, SPE2 and other stuff.
> All of them are based on 2.28 release.
Please rebase against current master, and provide Changelog entries.
> - if (symaddr - reladdr + max_branch_offset
> - < 2 * max_branch_offset)
> - continue;
> +
> + /* I don't trust the relocation check using ' ... < (2 * max_branch_offset)'
I do trust it. This change is silly.
> - stub_rtype = R_PPC_RELAX;
> + stub_rtype = (target_stub_type == stub_entry_type_vle) ? R_PPC_VLE_RELAX : R_PPC_RELAX;
Overlong lines. Wrap to 80 chars or less.
> @@ -7385,10 +7503,21 @@
> case R_PPC_REL24:
> case R_PPC_LOCAL24PC:
> case R_PPC_PLTREL24:
> - t0 = bfd_get_32 (abfd, hit_addr);
> - t0 &= ~0x3fffffc;
> - t0 |= val & 0x3fffffc;
> - bfd_put_32 (abfd, t0, hit_addr);
> + if (r_type == R_PPC_PLTREL24
> + && (elf_section_flags (isec) & SHF_PPC_VLE) != 0)
Something is fishy here. Why is PLTREL24 treated differently when
VLE? You haven't changed the insn here!
> @@ -9063,8 +9214,8 @@
> }
> else
> {
> - stub = stub_entry;
> - size = ARRAY_SIZE (stub_entry);
> + stub = (r_type == R_PPC_VLE_RELAX) ? stub_entry_vle : stub_entry;
> + size = ARRAY_SIZE (stub_entry); /* stub_entry and stub_entry_vle must be same size */
Overlong line again. An assert would be better than a comment.
> --- binutils-2.28/binutils/objdump.c 2017-03-02 11:23:53.000000000 +0300
> +++ binutils-2.28-vle/binutils/objdump.c 2017-06-23 17:25:21.641299056 +0300
> @@ -481,6 +481,10 @@
> PF (SEC_NEVER_LOAD, "NEVER_LOAD");
> PF (SEC_EXCLUDE, "EXCLUDE");
> PF (SEC_SORT_ENTRIES, "SORT_ENTRIES");
> + if (bfd_get_arch(abfd) == bfd_arch_powerpc || bfd_get_arch (abfd) == bfd_mach_ppc_vle)
> + {
> + PF (SEC_TIC54X_BLOCK, "VLE"); /* hack, would have to include ppc.h */
> + }
Ick. Don't do this, define a flag in bfd/section.c.
> diff -ruN binutils-2.28/include/elf/ppc.h binutils-2.28-vle/include/elf/ppc.h
> --- binutils-2.28/include/elf/ppc.h 2017-03-02 11:23:54.000000000 +0300
> +++ binutils-2.28-vle/include/elf/ppc.h 2017-06-23 17:34:20.838930833 +0300
> @@ -79,8 +79,10 @@
> RELOC_NUMBER (R_PPC_RELAX, 48)
> RELOC_NUMBER (R_PPC_RELAX_PLT, 49)
> RELOC_NUMBER (R_PPC_RELAX_PLTREL24, 50)
> + RELOC_NUMBER (R_PPC_VLE_RELAX, 51)
> /* Reloc only used internally by gas. As above, value is unimportant. */
> - RELOC_NUMBER (R_PPC_16DX_HA, 51)
> + RELOC_NUMBER (R_PPC_16DX_HA, 52)
> + RELOC_NUMBER (R_PPC_VLE_PLTREL24, 53)
> #endif
This seems an odd place to put R_PPC_VLE_PLTREL24. Is it just an
internal relocation? (I don't see anything that would use it, nor the
new R_PPC_VLE_ADDR20. Missing patch?)
> +/* BFD section headers flag. */
> +#define SEC_PPC_VLE SEC_TIC54X_BLOCK
No, this define is in the wrong place, and if you'd defined it in
section.c you would see why you can't reuse SEC_TIC54X_BLOCK.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-06-23 20:56 ` Alexander Fedotov
@ 2017-06-23 21:34 ` Alexander Fedotov
2017-06-24 13:22 ` Alan Modra
2017-06-24 13:21 ` Alan Modra
1 sibling, 1 reply; 20+ messages in thread
From: Alexander Fedotov @ 2017-06-23 21:34 UTC (permalink / raw)
To: Alan Modra, binutils; +Cc: Edmar Wienskoski
[-- Attachment #1: Type: text/plain, Size: 781 bytes --]
This patch separates EFS2 instructions from SPE2
Forgot to say about of patches apply order:
1. 2.28-vle.patch
2. 2.28-lsp.patch
3. 2.28-spe2.patch
4. 2.28-efs2.patch
Alex
On Fri, Jun 23, 2017 at 11:56 PM, Alexander Fedotov <alfedotov@gmail.com> wrote:
> This patch for SPE2 instructions support
>
>
> On Fri, Jun 23, 2017 at 11:54 PM, Alexander Fedotov <alfedotov@gmail.com> wrote:
>> This patch for LSP instructions support
>>
>> On Fri, Jun 23, 2017 at 11:51 PM, Alexander Fedotov <alfedotov@gmail.com> wrote:
>>> Hello Alan
>>>
>>> We want to upstream our changes for VLE, LSP, SPE2 and other stuff.
>>> All of them are based on 2.28 release.
>>>
>>> Best regards,
>>> Alexander
>>
>>
>>
>> --
>> Best regards,
>> AF
>
>
>
> --
> Best regards,
> AF
--
Best regards,
AF
[-- Attachment #2: 2.28-efs2.patch --]
[-- Type: text/x-patch, Size: 18892 bytes --]
diff -ruN binutils-2.28-spe2/gas/testsuite/gas/ppc/efs2.d binutils-2.28-efs2/gas/testsuite/gas/ppc/efs2.d
--- binutils-2.28-spe2/gas/testsuite/gas/ppc/efs2.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-efs2/gas/testsuite/gas/ppc/efs2.d 2017-06-23 23:58:43.111735000 +0300
@@ -0,0 +1,19 @@
+#as: -mvle
+#objdump: -d -Mvle -Mefs2
+#name: Validate EFS2 instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 10 01 12 b0 efsmax r0,r1,r2
+ 4: 10 01 12 b1 efsmin r0,r1,r2
+ 8: 10 01 12 b8 efdmax r0,r1,r2
+ c: 10 01 12 b9 efdmin r0,r1,r2
+ 10: 10 01 02 c7 efssqrt r0,r1
+ 14: 10 04 12 d1 efscfh r0,r2
+ 18: 10 04 12 d5 efscth r0,r2
+ 1c: 10 01 02 e7 efdsqrt r0,r1
+ 20: 10 04 12 f1 efdcfh r0,r2
+ 24: 10 04 12 f5 efdcth r0,r2
\ No newline at end of file
diff -ruN binutils-2.28-spe2/gas/testsuite/gas/ppc/efs2.s binutils-2.28-efs2/gas/testsuite/gas/ppc/efs2.s
--- binutils-2.28-spe2/gas/testsuite/gas/ppc/efs2.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-efs2/gas/testsuite/gas/ppc/efs2.s 2017-06-23 17:44:50.947719000 +0300
@@ -0,0 +1,18 @@
+# PA EFS2 instructions in accordance with EFP2_rev.1.4_spec
+# CMPE200GCC-62
+ .section ".text"
+
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0
+
+ efsmax rD, rA, rB
+ efsmin rD, rA, rB
+ efdmax rD, rA, rB
+ efdmin rD, rA, rB
+ efssqrt rD, rA
+ efscfh rD, rB
+ efscth rD, rB
+ efdsqrt rD, rA
+ efdcfh rD, rB
+ efdcth rD, rB
diff -ruN binutils-2.28-spe2/gas/testsuite/gas/ppc/efs.d binutils-2.28-efs2/gas/testsuite/gas/ppc/efs.d
--- binutils-2.28-spe2/gas/testsuite/gas/ppc/efs.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-efs2/gas/testsuite/gas/ppc/efs.d 2017-06-23 23:58:43.111735000 +0300
@@ -0,0 +1,25 @@
+#as: -mvle
+#objdump: -d -Mefs -Mvle -Mefs2
+#name: Validate EFS instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 10 00 12 d1 efscfsi r0,r2
+ 4: 10 00 12 d5 efsctsi r0,r2
+ 8: 10 00 12 f1 efdcfsi r0,r2
+ c: 10 00 12 f5 efdctsi r0,r2
+ 10: 10 01 12 c2 efsmadd r0,r1,r2
+ 14: 10 01 12 c3 efsmsub r0,r1,r2
+ 18: 10 01 12 ca efsnmadd r0,r1,r2
+ 1c: 10 01 12 cb efsnmsub r0,r1,r2
+ 20: 10 01 12 e2 efdmadd r0,r1,r2
+ 24: 10 01 12 e3 efdmsub r0,r1,r2
+ 28: 10 01 12 ea efdnmadd r0,r1,r2
+ 2c: 10 01 12 eb efdnmsub r0,r1,r2
+ 30: 10 01 12 f0 efdcfuid r0,r2
+ 34: 10 01 12 f1 efdcfsid r0,r2
+ 38: 10 01 12 f8 efdctuidz r0,r2
+ 3c: 10 01 12 fa efdctsidz r0,r2
\ No newline at end of file
diff -ruN binutils-2.28-spe2/gas/testsuite/gas/ppc/efs.s binutils-2.28-efs2/gas/testsuite/gas/ppc/efs.s
--- binutils-2.28-spe2/gas/testsuite/gas/ppc/efs.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-efs2/gas/testsuite/gas/ppc/efs.s 2017-06-23 17:44:50.947719000 +0300
@@ -0,0 +1,33 @@
+# PA EFS 1.0 and 1.1 instructions
+# CMPE200GCC-62
+ .section ".text"
+
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0
+
+;# EFS 1.0 instructions in accordance with EFP2_rev.1.4_spec
+ efscfsi rD, rB
+ efsctsi rD, rB
+ efdcfsi rD, rB
+ efdctsi rD, rB
+
+;# EFS 1.1 instructions in accordance with EFP2_rev.1.4_spec
+ efsmadd rD, rA, rB
+ efsmsub rD, rA, rB
+ efsnmadd rD, rA, rB
+ efsnmsub rD, rA, rB
+ efdmadd rD, rA, rB
+ efdmsub rD, rA, rB
+ efdnmadd rD, rA, rB
+ efdnmsub rD, rA, rB
+
+;# moved EFS opcodes in accordance with EFP2_rev.1.4_spec
+ efdcfuid rD, rB
+ efdcfsid rD, rB
+ efdctuidz rD, rB
+ efdctsidz rD, rB
+
+
+
+
diff -ruN binutils-2.28-spe2/gas/testsuite/gas/ppc/ppc.exp binutils-2.28-efs2/gas/testsuite/gas/ppc/ppc.exp
--- binutils-2.28-spe2/gas/testsuite/gas/ppc/ppc.exp 2017-06-23 17:54:18.847627054 +0300
+++ binutils-2.28-efs2/gas/testsuite/gas/ppc/ppc.exp 2017-06-24 00:04:26.643735001 +0300
@@ -61,6 +61,8 @@
run_dump_test "vle-simple-6"
run_dump_test "lsp"
run_dump_test "lsp-checks"
+ run_dump_test "efs"
+ run_dump_test "efs2"
run_dump_test "spe2"
run_dump_test "spe2-checks"
run_dump_test "spe"
diff -ruN binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2.d binutils-2.28-efs2/gas/testsuite/gas/ppc/spe2.d
--- binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2.d 2017-06-23 17:44:50.951717000 +0300
+++ binutils-2.28-efs2/gas/testsuite/gas/ppc/spe2.d 2017-06-24 00:04:37.627735001 +0300
@@ -1,5 +1,5 @@
#as: -mvle -mspe2
-#objdump: -d -Mspe2
+#objdump: -d -Mspe2 -Mefs2
#name: Validate SPE2 instructions
.*: +file format elf.*-powerpc.*
diff -ruN binutils-2.28-spe2/include/opcode/ppc.h binutils-2.28-efs2/include/opcode/ppc.h
--- binutils-2.28-spe2/include/opcode/ppc.h 2017-06-23 17:55:36.864599055 +0300
+++ binutils-2.28-efs2/include/opcode/ppc.h 2017-06-24 00:05:19.075735001 +0300
@@ -225,6 +225,9 @@
/* Opcode is only supported by Freescale SPE2 APU. */
#define PPC_OPCODE_SPE2 0x4000000000000000ull
+/* Opcode is supported by EFS2. */
+#define PPC_OPCODE_EFS2 0x2000000000000000ull
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
diff -ruN binutils-2.28-spe2/opcodes/ppc-dis.c binutils-2.28-efs2/opcodes/ppc-dis.c
--- binutils-2.28-spe2/opcodes/ppc-dis.c 2017-06-23 17:56:52.074975055 +0300
+++ binutils-2.28-efs2/opcodes/ppc-dis.c 2017-06-24 00:05:55.467735001 +0300
@@ -108,7 +108,8 @@
{ "e200z4", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
| PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
- | PPC_OPCODE_E500 | PPC_OPCODE_E200Z4 | PPC_OPCODE_VLE),
+ | PPC_OPCODE_E500 | PPC_OPCODE_E200Z4 | PPC_OPCODE_VLE
+ | PPC_OPCODE_EFS2 | PPC_OPCODE_LSP),
0 },
{ "e300", PPC_OPCODE_PPC | PPC_OPCODE_E300,
0 },
@@ -145,6 +146,8 @@
0 },
{ "efs", PPC_OPCODE_PPC | PPC_OPCODE_EFS,
0 },
+ { "efs2", PPC_OPCODE_PPC | PPC_OPCODE_EFS | PPC_OPCODE_EFS2,
+ 0 },
{ "power4", PPC_OPCODE_PPC | PPC_OPCODE_64 | PPC_OPCODE_POWER4,
0 },
{ "power5", (PPC_OPCODE_PPC | PPC_OPCODE_64 | PPC_OPCODE_POWER4
@@ -212,7 +215,7 @@
0 },
{ "spe", PPC_OPCODE_PPC | PPC_OPCODE_EFS,
PPC_OPCODE_SPE },
- { "spe2", PPC_OPCODE_PPC | PPC_OPCODE_EFS | PPC_OPCODE_SPE,
+ { "spe2", PPC_OPCODE_PPC | PPC_OPCODE_EFS | PPC_OPCODE_EFS2 | PPC_OPCODE_SPE,
PPC_OPCODE_SPE2 },
{ "titan", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_PMR
| PPC_OPCODE_RFMCI | PPC_OPCODE_TITAN),
@@ -220,7 +223,7 @@
{ "vle", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
| PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
- | PPC_OPCODE_LSP | PPC_OPCODE_SPE2),
+ | PPC_OPCODE_LSP | PPC_OPCODE_EFS2 | PPC_OPCODE_SPE2),
PPC_OPCODE_VLE },
{ "vsx", PPC_OPCODE_PPC,
PPC_OPCODE_VSX | PPC_OPCODE_VSX3 },
diff -ruN binutils-2.28-spe2/opcodes/ppc-opc.c binutils-2.28-efs2/opcodes/ppc-opc.c
--- binutils-2.28-spe2/opcodes/ppc-opc.c 2017-06-23 23:38:05.522746700 +0300
+++ binutils-2.28-efs2/opcodes/ppc-opc.c 2017-06-24 00:23:55.371735001 +0300
@@ -3252,6 +3252,7 @@
#define PPCSPE2 PPC_OPCODE_SPE2
#define PPCISEL PPC_OPCODE_ISEL
#define PPCEFS PPC_OPCODE_EFS
+#define PPCEFS2 PPC_OPCODE_EFS2
#define PPCBRLK PPC_OPCODE_BRLOCK
#define PPCPMR PPC_OPCODE_PMR
#define PPCTMR PPC_OPCODE_TMR
@@ -3601,6 +3602,7 @@
{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}},
{"evfsneg", VX (4, 646), VX_MASK, PPCSPE, 0, {RS, RA}},
{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
+{"evfssqrt", VX_RB_CONST(4, 647, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
{"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
@@ -3614,10 +3616,12 @@
{"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
{"vupklsb", VX (4, 654), VXVA_MASK, PPCVEC, 0, {VD, VB}},
{"evfscfui", VX (4, 656), VX_MASK, PPCSPE, 0, {RS, RB}},
+{"evfscfh", VX_RA_CONST(4, 657, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
{"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, 0, {RS, RB}},
{"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, 0, {RS, RB}},
{"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, 0, {RS, RB}},
{"evfsctui", VX (4, 660), VX_MASK, PPCSPE, 0, {RS, RB}},
+{"evfscth", VX_RA_CONST(4, 661, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
{"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, 0, {RS, RB}},
{"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, 0, {RS, RB}},
{"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, 0, {RS, RB}},
@@ -3627,19 +3631,43 @@
{"evfststgt", VX (4, 668), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
{"evfststlt", VX (4, 669), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
{"evfststeq", VX (4, 670), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
+{"evfsmax", VX (4, 672), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsmin", VX (4, 673), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsaddsub", VX (4, 674), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfssubadd", VX (4, 675), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfssum", VX (4, 676), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsdiff", VX (4, 677), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfssumdiff", VX (4, 678), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsdiffsum", VX (4, 679), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsaddx", VX (4, 680), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfssubx", VX (4, 681), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsaddsubx", VX (4, 682), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfssubaddx", VX (4, 683), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsmulx", VX (4, 684), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsmule", VX (4, 686), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"evfsmulo", VX (4, 687), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"efsmax", VX (4, 688), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"efsmin", VX (4, 689), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
+{"efdmax", VX (4, 696), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
{"cput", APU(4, 348,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
+{"efdmin", VX (4, 697), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
{"efsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
{"efssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
+{"efsmadd", VX (4, 706), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
{"vminud", VX (4, 706), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
+{"efsmsub", VX (4, 707), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
{"efsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}},
{"vsr", VX (4, 708), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"efsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}},
{"efsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}},
{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
+{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0, {RD, RA}},
{"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
{"efsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
{"efsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
+{"efsnmadd", VX (4, 714), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
{"vrfim", VX (4, 714), VXVA_MASK, PPCVEC, 0, {VD, VB}},
+{"efsnmsub", VX (4, 715), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
{"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
{"vextractd", VX (4, 717), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
{"efscmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
@@ -3647,10 +3675,12 @@
{"vupklsh", VX (4, 718), VXVA_MASK, PPCVEC, 0, {VD, VB}},
{"efscfd", VX (4, 719), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efscfh", VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
{"efscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efscth", VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
{"efsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}},
@@ -3662,30 +3692,41 @@
{"efststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
{"efdadd", VX (4, 736), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
{"efdsub", VX (4, 737), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
-{"efdcfuid", VX (4, 738), VX_MASK, PPCEFS, 0, {RS, RB}},
-{"efdcfsid", VX (4, 739), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efdmadd", VX (4, 738), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
+{"efdcfuid", VX (4, 738), VX_MASK, E500|E500MC,0, {RS, RB}},
+{"efdmsub", VX (4, 739), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
+{"efdcfsid", VX (4, 739), VX_MASK, E500|E500MC,0, {RS, RB}},
{"efdabs", VX (4, 740), VX_MASK, PPCEFS, 0, {RS, RA}},
{"efdnabs", VX (4, 741), VX_MASK, PPCEFS, 0, {RS, RA}},
{"efdneg", VX (4, 742), VX_MASK, PPCEFS, 0, {RS, RA}},
+{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
{"efdmul", VX (4, 744), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
{"efddiv", VX (4, 745), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
-{"efdctuidz", VX (4, 746), VX_MASK, PPCEFS, 0, {RS, RB}},
-{"efdctsidz", VX (4, 747), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efdnmadd", VX (4, 746), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
+{"efdctuidz", VX (4, 746), VX_MASK, E500|E500MC,0, {RS, RB}},
+{"efdnmsub", VX (4, 747), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
+{"efdctsidz", VX (4, 747), VX_MASK, E500|E500MC,0, {RS, RB}},
{"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
{"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
{"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
{"efdcfs", VX (4, 751), VX_MASK, PPCEFS, 0, {RS, RB}},
-{"efdcfui", VX (4, 752), VX_MASK, PPCEFS, 0, {RS, RB}},
-{"efdcfsi", VX (4, 753), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efdcfui", VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
+{"efdcfuid", VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
+{"efdcfsi", VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
+{"efdcfsid", VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
+{"efdcfh", VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
{"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efdctui", VX (4, 756), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efdcth", VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
{"efdctsi", VX (4, 757), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efdctuf", VX (4, 758), VX_MASK, PPCEFS, 0, {RS, RB}},
{"efdctsf", VX (4, 759), VX_MASK, PPCEFS, 0, {RS, RB}},
-{"efdctuiz", VX (4, 760), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efdctuiz", VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
+{"efdctuidz", VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
{"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
-{"efdctsiz", VX (4, 762), VX_MASK, PPCEFS, 0, {RS, RB}},
+{"efdctsiz", VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
+{"efdctsidz", VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
{"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
{"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
{"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
@@ -8672,42 +8713,6 @@
{"evsroiu", VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
{"evsrois", VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
{"evsloi", VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
-{"evfssqrt", VX_RB_CONST(4, 647, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
-{"evfscfh", VX_RA_CONST(4, 657, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
-{"evfscth", VX_RA_CONST(4, 661, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
-{"evfsmax", VX (4, 672), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsmin", VX (4, 673), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsaddsub", VX (4, 674), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfssubadd", VX (4, 675), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfssum", VX (4, 676), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsdiff", VX (4, 677), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfssumdiff", VX (4, 678), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsdiffsum", VX (4, 679), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsaddx", VX (4, 680), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfssubx", VX (4, 681), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsaddsubx", VX (4, 682), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfssubaddx", VX (4, 683), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsmulx", VX (4, 684), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsmule", VX (4, 686), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"evfsmulo", VX (4, 687), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"efsmax", VX (4, 688), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"efsmin", VX (4, 689), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"efdmax", VX (4, 696), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"efdmin", VX (4, 697), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
-{"efsmadd", VX (4, 706), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
-{"efsmsub", VX (4, 707), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
-{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
-{"efsnmadd", VX (4, 714), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
-{"efsnmsub", VX (4, 715), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
-{"efscfh", VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
-{"efscth", VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
-{"efdmadd", VX (4, 738), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
-{"efdmsub", VX (4, 739), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
-{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
-{"efdnmadd", VX (4, 746), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
-{"efdnmsub", VX (4, 747), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
-{"efdcfh", VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
-{"efdcth", VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
{"evldbx", VX (4, 774), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
{"evldb", VX (4, 775), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8, RA}},
{"evlhhsplathx", VX (4, 778), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-06-23 20:55 ` Alexander Fedotov
@ 2017-06-23 20:56 ` Alexander Fedotov
2017-06-23 21:34 ` Alexander Fedotov
2017-06-24 13:21 ` Alan Modra
2017-06-24 13:18 ` Alan Modra
1 sibling, 2 replies; 20+ messages in thread
From: Alexander Fedotov @ 2017-06-23 20:56 UTC (permalink / raw)
To: Alan Modra, binutils; +Cc: Edmar Wienskoski
[-- Attachment #1: Type: text/plain, Size: 470 bytes --]
This patch for SPE2 instructions support
On Fri, Jun 23, 2017 at 11:54 PM, Alexander Fedotov <alfedotov@gmail.com> wrote:
> This patch for LSP instructions support
>
> On Fri, Jun 23, 2017 at 11:51 PM, Alexander Fedotov <alfedotov@gmail.com> wrote:
>> Hello Alan
>>
>> We want to upstream our changes for VLE, LSP, SPE2 and other stuff.
>> All of them are based on 2.28 release.
>>
>> Best regards,
>> Alexander
>
>
>
> --
> Best regards,
> AF
--
Best regards,
AF
[-- Attachment #2: 2.28-spe2.patch --]
[-- Type: text/x-patch, Size: 178154 bytes --]
diff -ruN binutils-2.28-lsp/gas/config/tc-ppc.c binutils-2.28-spe2/gas/config/tc-ppc.c
--- binutils-2.28-lsp/gas/config/tc-ppc.c 2017-06-23 17:49:36.256993055 +0300
+++ binutils-2.28-spe2/gas/config/tc-ppc.c 2017-06-23 17:53:24.390869055 +0300
@@ -48,6 +48,9 @@
/* Whether or not, we've set target_big_endian. */
static int set_target_endian = 0;
+/* SPE version. Allowed values: 1 or 2 */
+int spe_version = 1;
+
/* Whether to use user friendly register names. */
#ifndef TARGET_REG_NAMES_P
#ifdef TE_PE
@@ -1215,6 +1218,15 @@
msolaris = FALSE;
ppc_comment_chars = ppc_eabi_comment_chars;
}
+ else if (strcmp (arg, "spe") == 0)
+ {
+ spe_version = 1;
+ }
+ else if (strcmp (arg, "spe2") == 0)
+ {
+ spe_version = 2;
+ ppc_cpu |= PPC_OPCODE_SPE2;
+ }
#endif
else
{
@@ -1311,6 +1323,7 @@
-me5500, generate code for Freescale e5500 core complex\n\
-me6500, generate code for Freescale e6500 core complex\n\
-mspe generate code for Motorola SPE instructions\n\
+-mspe2 generate code for Freescale SPE2 instructions\n\
-mvle generate code for Freescale VLE instructions\n\
-mtitan generate code for AppliedMicro Titan core complex\n\
-mregnames Allow symbolic names for registers\n\
@@ -1646,6 +1659,54 @@
}
}
+ /* SPE2 instructions */
+ if ((ppc_cpu & PPC_OPCODE_SPE2) == PPC_OPCODE_SPE2)
+ {
+ op_end = spe2_opcodes + spe2_num_opcodes;
+ for (op = spe2_opcodes; op < op_end; op++)
+ {
+ if (ENABLE_CHECKING)
+ {
+ if (op != spe2_opcodes)
+ {
+ unsigned old_seg, new_seg;
+
+ old_seg = VLE_OP (op[-1].opcode, op[-1].mask);
+ old_seg = VLE_OP_TO_SEG (old_seg);
+ new_seg = VLE_OP (op[0].opcode, op[0].mask);
+ new_seg = VLE_OP_TO_SEG (new_seg);
+
+ /* The major opcodes had better be sorted. Code in the
+ disassembler assumes the insns are sorted according to
+ major opcode. */
+ if (new_seg < old_seg)
+ {
+ as_bad (_("major opcode is not sorted for %s"), op->name);
+ bad_insn = TRUE;
+ }
+ }
+
+ bad_insn |= insn_validate (op);
+ }
+
+ if ((ppc_cpu & op->flags) != 0 && !(ppc_cpu & op->deprecated))
+ {
+ const char *retval;
+
+ retval = hash_insert (ppc_hash, op->name, (void *) op);
+ if (retval != NULL)
+ {
+ as_bad (_("duplicate instruction %s"),
+ op->name);
+ bad_insn = TRUE;
+ }
+ }
+ }
+
+ for (op = spe2_opcodes; op < op_end; op++)
+ hash_insert (ppc_hash, op->name, (void *) op);
+ }
+
/* Insert the macros into a hash table. */
ppc_macro_hash = hash_new ();
diff -ruN binutils-2.28-lsp/gas/doc/c-ppc.texi binutils-2.28-spe2/gas/doc/c-ppc.texi
--- binutils-2.28-lsp/gas/doc/c-ppc.texi 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-spe2/gas/doc/c-ppc.texi 2017-06-23 17:53:43.969075055 +0300
@@ -99,6 +99,9 @@
@item -mspe
Generate code for Motorola SPE instructions.
+@item -mspe2
+Generate code for Freescale SPE2 instructions.
+
@item -mtitan
Generate code for AppliedMicro Titan core complex.
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/ppc.exp binutils-2.28-spe2/gas/testsuite/gas/ppc/ppc.exp
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/ppc.exp 2017-06-23 17:46:07.285531055 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/ppc.exp 2017-06-23 17:54:18.847627054 +0300
@@ -61,6 +61,12 @@
run_dump_test "vle-simple-6"
run_dump_test "lsp"
run_dump_test "lsp-checks"
+ run_dump_test "spe2"
+ run_dump_test "spe2-checks"
+ run_dump_test "spe"
+
+ setup_xfail "*-*-*"
+ run_dump_test "spe_ambiguous"
}
}
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2-checks.d binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2-checks.d
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2-checks.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2-checks.d 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,4 @@
+#as: -mvle -mspe2
+#name: Test SPE2 operands checks
+#error-output: spe2-checks.l
+
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2-checks.l binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2-checks.l
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2-checks.l 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2-checks.l 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,73 @@
+[^:]*: Assembler messages:
+.*:29: Error: operand out of range \(32 is not between 0 and 31\)
+.*:30: Error: operand out of range \(32 is not between 0 and 31\)
+.*:31: Error: operand out of range \(32 is not between 0 and 31\)
+.*:32: Error: operand out of range \(32 is not between 0 and 31\)
+.*:33: Error: operand out of range \(8 is not between 0 and 7\)
+.*:34: Error: operand out of range \(8 is not between 0 and 7\)
+.*:35: Error: operand out of range \(4 is not between 0 and 3\)
+.*:36: Error: operand out of range \(8 is not between 0 and 7\)
+.*:37: Error: operand out of range \(4 is not between 0 and 3\)
+.*:38: Error: operand out of range \(16 is not between 0 and 15\)
+.*:39: Error: operand out of range \(16 is not between 0 and 15\)
+.*:40: Error: operand out of range \(16 is not between 0 and 15\)
+.*:41: Error: operand out of range \(4 is not between 0 and 3\)
+.*:42: Error: operand out of range \(4 is not between 0 and 3\)
+.*:43: Error: invalid offset
+.*:44: Error: operand out of range \(8 is not between 0 and 7\)
+.*:44: Error: invalid offset
+.*:45: Error: UIMM values >7 are illegal
+.*:46: Error: UIMM values >7 are illegal
+.*:47: Error: UIMM values >7 are illegal
+.*:48: Error: UIMM values >7 are illegal
+.*:49: Error: UIMM values >15 are illegal
+.*:50: Error: UIMM values >15 are illegal
+.*:51: Error: UIMM values >15 are illegal
+.*:52: Error: UIMM values >15 are illegal
+.*:53: Error: operand out of range \(8 is not between 0 and 7\)
+.*:54: Error: operand out of range \(8 is not between 0 and 7\)
+.*:55: Error: operand out of range \(8 is not between 0 and 7\)
+.*:56: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:57: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:58: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:59: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:60: Error: operand out of range \(32 is not between 0 and 31\)
+.*:61: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:62: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:63: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:64: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:65: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:66: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:67: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:68: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:69: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:70: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:71: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:72: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:73: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:74: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:75: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:76: Error: operand out of domain \(1 is not a multiple of 2\)
+.*:77: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:78: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:79: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:80: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:81: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:82: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:83: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:84: Error: UIMM = 00000 is illegal
+.*:85: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:86: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:87: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:88: Error: operand out of domain \(7 is not a multiple of 8\)
+.*:89: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:90: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:91: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:92: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:93: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:94: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:95: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:96: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:97: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:98: Error: operand out of domain \(3 is not a multiple of 4\)
+.*:99: Error: operand out of domain \(1 is not a multiple of 2\)
\ No newline at end of file
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2-checks.s binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2-checks.s
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2-checks.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2-checks.s 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,99 @@
+# PA SPE2 instructions
+ .section ".text"
+
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0
+ .equ rS,0
+ .equ UIMM_ILL, 32
+ .equ UIMM_1_ZERO, 0
+ .equ UIMM_1_ILL, 32
+ .equ UIMM_2_ILL, 1
+ .equ UIMM_4_ILL, 3
+ .equ UIMM_8_ILL, 7
+ .equ UIMM_GT7, 8
+ .equ UIMM_GT15, 16
+ .equ nnn_ILL, 8
+ .equ bbb_ILL, 8
+ .equ dd, 3
+ .equ dd_ILL, 4
+ .equ Ddd, 7
+ .equ Ddd_ILL, 8
+ .equ hh, 3
+ .equ hh_ILL, 4
+ .equ mask_ILL, 16
+ .equ offset_ILL0, 0
+ .equ offset_ILL, 8
+
+
+ evaddib rD, rB, UIMM_ILL
+ evaddih rD, rB, UIMM_ILL
+ evsubifh rD, UIMM_ILL, rB
+ evsubifb rD, UIMM_ILL, rB
+ evinsb rD, rA, Ddd, bbb_ILL
+ evxtrb rD, rA, Ddd, bbb_ILL
+ evsplath rD, rA, hh_ILL
+ evsplatb rD, rA, bbb_ILL
+ evinsh rD, rA, dd_ILL, hh
+ evclrbe rD, rA, mask_ILL
+ evclrbo rD, rA, mask_ILL
+ evclrh rD, rA, mask_ILL
+ evxtrh rD, rA, dd_ILL, hh
+ evxtrh rD, rA, dd, hh_ILL
+ evxtrd rD, rA, rB, offset_ILL0
+ evxtrd rD, rA, rB, offset_ILL
+ evsrbiu rD, rA, UIMM_GT7
+ evsrbis rD, rA, UIMM_GT7
+ evslbi rD, rA, UIMM_GT7
+ evrlbi rD, rA, UIMM_GT7
+ evsrhiu rD, rA, UIMM_GT15
+ evsrhis rD, rA, UIMM_GT15
+ evslhi rD, rA, UIMM_GT15
+ evrlhi rD, rA, UIMM_GT15
+ evsroiu rD, rA, nnn_ILL
+ evsrois rD, rA, nnn_ILL
+ evsloi rD, rA, nnn_ILL
+ evldb rD, UIMM_8_ILL (rA)
+ evlhhsplath rD, UIMM_2_ILL (rA)
+ evlwbsplatw rD, UIMM_4_ILL (rA)
+ evlwhsplatw rD, UIMM_4_ILL (rA)
+ evlbbsplatb rD, UIMM_1_ILL (rA)
+ evstdb rS, UIMM_8_ILL (rA)
+ evlwbe rD, UIMM_4_ILL (rA)
+ evlwbou rD, UIMM_4_ILL (rA)
+ evlwbos rD, UIMM_4_ILL (rA)
+ evstwbe rS, UIMM_4_ILL (rA)
+ evstwbo rS, UIMM_4_ILL (rA)
+ evstwb rS, UIMM_4_ILL (rA)
+ evsthb rS, UIMM_2_ILL (rA)
+ evlddu rD, UIMM_8_ILL (rA)
+ evldwu rD, UIMM_8_ILL (rA)
+ evldhu rD, UIMM_8_ILL (rA)
+ evldbu rD, UIMM_8_ILL (rA)
+ evlhhesplatu rD, UIMM_2_ILL (rA)
+ evlhhsplathu rD, UIMM_2_ILL (rA)
+ evlhhousplatu rD, UIMM_2_ILL (rA)
+ evlhhossplatu rD, UIMM_2_ILL (rA)
+ evlwheu rD, UIMM_4_ILL (rA)
+ evlwbsplatwu rD, UIMM_4_ILL (rA)
+ evlwhouu rD, UIMM_4_ILL (rA)
+ evlwhosu rD, UIMM_4_ILL (rA)
+ evlwwsplatu rD, UIMM_4_ILL (rA)
+ evlwhsplatwu rD, UIMM_4_ILL (rA)
+ evlwhsplatu rD, UIMM_4_ILL (rA)
+ evlbbsplatbu rD, UIMM_1_ZERO (rA)
+ evstddu rS, UIMM_8_ILL (rA)
+ evstdwu rS, UIMM_8_ILL (rA)
+ evstdhu rS, UIMM_8_ILL (rA)
+ evstdbu rS, UIMM_8_ILL (rA)
+ evlwbeu rD, UIMM_4_ILL (rA)
+ evlwbouu rD, UIMM_4_ILL (rA)
+ evlwbosu rD, UIMM_4_ILL (rA)
+ evstwheu rS, UIMM_4_ILL (rA)
+ evstwbeu rS, UIMM_4_ILL (rA)
+ evstwhou rS, UIMM_4_ILL (rA)
+ evstwbou rS, UIMM_4_ILL (rA)
+ evstwweu rS, UIMM_4_ILL (rA)
+ evstwbu rS, UIMM_4_ILL (rA)
+ evstwwou rS, UIMM_4_ILL (rA)
+ evsthbu rS, UIMM_2_ILL (rA)
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2.d binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2.d
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2.d 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,815 @@
+#as: -mvle -mspe2
+#objdump: -d -Mspe2
+#name: Validate SPE2 instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 10 01 10 80 evdotpwcssi r0,r1,r2
+ 4: 10 01 10 81 evdotpwcsmi r0,r1,r2
+ 8: 10 01 10 82 evdotpwcssfr r0,r1,r2
+ c: 10 01 10 83 evdotpwcssf r0,r1,r2
+ 10: 10 01 10 88 evdotpwgasmf r0,r1,r2
+ 14: 10 01 10 89 evdotpwxgasmf r0,r1,r2
+ 18: 10 01 10 8a evdotpwgasmfr r0,r1,r2
+ 1c: 10 01 10 8b evdotpwxgasmfr r0,r1,r2
+ 20: 10 01 10 8c evdotpwgssmf r0,r1,r2
+ 24: 10 01 10 8d evdotpwxgssmf r0,r1,r2
+ 28: 10 01 10 8e evdotpwgssmfr r0,r1,r2
+ 2c: 10 01 10 8f evdotpwxgssmfr r0,r1,r2
+ 30: 10 01 10 90 evdotpwcssiaaw3 r0,r1,r2
+ 34: 10 01 10 91 evdotpwcsmiaaw3 r0,r1,r2
+ 38: 10 01 10 92 evdotpwcssfraaw3 r0,r1,r2
+ 3c: 10 01 10 93 evdotpwcssfaaw3 r0,r1,r2
+ 40: 10 01 10 98 evdotpwgasmfaa3 r0,r1,r2
+ 44: 10 01 10 99 evdotpwxgasmfaa3 r0,r1,r2
+ 48: 10 01 10 9a evdotpwgasmfraa3 r0,r1,r2
+ 4c: 10 01 10 9b evdotpwxgasmfraa3 r0,r1,r2
+ 50: 10 01 10 9c evdotpwgssmfaa3 r0,r1,r2
+ 54: 10 01 10 9d evdotpwxgssmfaa3 r0,r1,r2
+ 58: 10 01 10 9e evdotpwgssmfraa3 r0,r1,r2
+ 5c: 10 01 10 9f evdotpwxgssmfraa3 r0,r1,r2
+ 60: 10 01 10 a0 evdotpwcssia r0,r1,r2
+ 64: 10 01 10 a1 evdotpwcsmia r0,r1,r2
+ 68: 10 01 10 a2 evdotpwcssfra r0,r1,r2
+ 6c: 10 01 10 a3 evdotpwcssfa r0,r1,r2
+ 70: 10 01 10 a8 evdotpwgasmfa r0,r1,r2
+ 74: 10 01 10 a9 evdotpwxgasmfa r0,r1,r2
+ 78: 10 01 10 aa evdotpwgasmfra r0,r1,r2
+ 7c: 10 01 10 ab evdotpwxgasmfra r0,r1,r2
+ 80: 10 01 10 ac evdotpwgssmfa r0,r1,r2
+ 84: 10 01 10 ad evdotpwxgssmfa r0,r1,r2
+ 88: 10 01 10 ae evdotpwgssmfra r0,r1,r2
+ 8c: 10 01 10 af evdotpwxgssmfra r0,r1,r2
+ 90: 10 01 10 b0 evdotpwcssiaaw r0,r1,r2
+ 94: 10 01 10 b1 evdotpwcsmiaaw r0,r1,r2
+ 98: 10 01 10 b2 evdotpwcssfraaw r0,r1,r2
+ 9c: 10 01 10 b3 evdotpwcssfaaw r0,r1,r2
+ a0: 10 01 10 b8 evdotpwgasmfaa r0,r1,r2
+ a4: 10 01 10 b9 evdotpwxgasmfaa r0,r1,r2
+ a8: 10 01 10 ba evdotpwgasmfraa r0,r1,r2
+ ac: 10 01 10 bb evdotpwxgasmfraa r0,r1,r2
+ b0: 10 01 10 bc evdotpwgssmfaa r0,r1,r2
+ b4: 10 01 10 bd evdotpwxgssmfaa r0,r1,r2
+ b8: 10 01 10 be evdotpwgssmfraa r0,r1,r2
+ bc: 10 01 10 bf evdotpwxgssmfraa r0,r1,r2
+ c0: 10 01 11 00 evdotphihcssi r0,r1,r2
+ c4: 10 01 11 01 evdotplohcssi r0,r1,r2
+ c8: 10 01 11 02 evdotphihcssf r0,r1,r2
+ cc: 10 01 11 03 evdotplohcssf r0,r1,r2
+ d0: 10 01 11 08 evdotphihcsmi r0,r1,r2
+ d4: 10 01 11 09 evdotplohcsmi r0,r1,r2
+ d8: 10 01 11 0a evdotphihcssfr r0,r1,r2
+ dc: 10 01 11 0b evdotplohcssfr r0,r1,r2
+ e0: 10 01 11 10 evdotphihcssiaaw3 r0,r1,r2
+ e4: 10 01 11 11 evdotplohcssiaaw3 r0,r1,r2
+ e8: 10 01 11 12 evdotphihcssfaaw3 r0,r1,r2
+ ec: 10 01 11 13 evdotplohcssfaaw3 r0,r1,r2
+ f0: 10 01 11 18 evdotphihcsmiaaw3 r0,r1,r2
+ f4: 10 01 11 19 evdotplohcsmiaaw3 r0,r1,r2
+ f8: 10 01 11 1a evdotphihcssfraaw3 r0,r1,r2
+ fc: 10 01 11 1b evdotplohcssfraaw3 r0,r1,r2
+ 100: 10 01 11 20 evdotphihcssia r0,r1,r2
+ 104: 10 01 11 21 evdotplohcssia r0,r1,r2
+ 108: 10 01 11 22 evdotphihcssfa r0,r1,r2
+ 10c: 10 01 11 23 evdotplohcssfa r0,r1,r2
+ 110: 10 01 11 28 evdotphihcsmia r0,r1,r2
+ 114: 10 01 11 29 evdotplohcsmia r0,r1,r2
+ 118: 10 01 11 2a evdotphihcssfra r0,r1,r2
+ 11c: 10 01 11 2b evdotplohcssfra r0,r1,r2
+ 120: 10 01 11 30 evdotphihcssiaaw r0,r1,r2
+ 124: 10 01 11 31 evdotplohcssiaaw r0,r1,r2
+ 128: 10 01 11 32 evdotphihcssfaaw r0,r1,r2
+ 12c: 10 01 11 33 evdotplohcssfaaw r0,r1,r2
+ 130: 10 01 11 38 evdotphihcsmiaaw r0,r1,r2
+ 134: 10 01 11 39 evdotplohcsmiaaw r0,r1,r2
+ 138: 10 01 11 3a evdotphihcssfraaw r0,r1,r2
+ 13c: 10 01 11 3b evdotplohcssfraaw r0,r1,r2
+ 140: 10 01 11 40 evdotphausi r0,r1,r2
+ 144: 10 01 11 41 evdotphassi r0,r1,r2
+ 148: 10 01 11 42 evdotphasusi r0,r1,r2
+ 14c: 10 01 11 43 evdotphassf r0,r1,r2
+ 150: 10 01 11 47 evdotphsssf r0,r1,r2
+ 154: 10 01 11 48 evdotphaumi r0,r1,r2
+ 158: 10 01 11 49 evdotphasmi r0,r1,r2
+ 15c: 10 01 11 4a evdotphasumi r0,r1,r2
+ 160: 10 01 11 4b evdotphassfr r0,r1,r2
+ 164: 10 01 11 4d evdotphssmi r0,r1,r2
+ 168: 10 01 11 4f evdotphsssfr r0,r1,r2
+ 16c: 10 01 11 50 evdotphausiaaw3 r0,r1,r2
+ 170: 10 01 11 51 evdotphassiaaw3 r0,r1,r2
+ 174: 10 01 11 52 evdotphasusiaaw3 r0,r1,r2
+ 178: 10 01 11 53 evdotphassfaaw3 r0,r1,r2
+ 17c: 10 01 11 55 evdotphsssiaaw3 r0,r1,r2
+ 180: 10 01 11 57 evdotphsssfaaw3 r0,r1,r2
+ 184: 10 01 11 58 evdotphaumiaaw3 r0,r1,r2
+ 188: 10 01 11 59 evdotphasmiaaw3 r0,r1,r2
+ 18c: 10 01 11 5a evdotphasumiaaw3 r0,r1,r2
+ 190: 10 01 11 5b evdotphassfraaw3 r0,r1,r2
+ 194: 10 01 11 5d evdotphssmiaaw3 r0,r1,r2
+ 198: 10 01 11 5f evdotphsssfraaw3 r0,r1,r2
+ 19c: 10 01 11 60 evdotphausia r0,r1,r2
+ 1a0: 10 01 11 61 evdotphassia r0,r1,r2
+ 1a4: 10 01 11 62 evdotphasusia r0,r1,r2
+ 1a8: 10 01 11 63 evdotphassfa r0,r1,r2
+ 1ac: 10 01 11 67 evdotphsssfa r0,r1,r2
+ 1b0: 10 01 11 68 evdotphaumia r0,r1,r2
+ 1b4: 10 01 11 69 evdotphasmia r0,r1,r2
+ 1b8: 10 01 11 6a evdotphasumia r0,r1,r2
+ 1bc: 10 01 11 6b evdotphassfra r0,r1,r2
+ 1c0: 10 01 11 6d evdotphssmia r0,r1,r2
+ 1c4: 10 01 11 6f evdotphsssfra r0,r1,r2
+ 1c8: 10 01 11 70 evdotphausiaaw r0,r1,r2
+ 1cc: 10 01 11 71 evdotphassiaaw r0,r1,r2
+ 1d0: 10 01 11 72 evdotphasusiaaw r0,r1,r2
+ 1d4: 10 01 11 73 evdotphassfaaw r0,r1,r2
+ 1d8: 10 01 11 75 evdotphsssiaaw r0,r1,r2
+ 1dc: 10 01 11 77 evdotphsssfaaw r0,r1,r2
+ 1e0: 10 01 11 78 evdotphaumiaaw r0,r1,r2
+ 1e4: 10 01 11 79 evdotphasmiaaw r0,r1,r2
+ 1e8: 10 01 11 7a evdotphasumiaaw r0,r1,r2
+ 1ec: 10 01 11 7b evdotphassfraaw r0,r1,r2
+ 1f0: 10 01 11 7d evdotphssmiaaw r0,r1,r2
+ 1f4: 10 01 11 7f evdotphsssfraaw r0,r1,r2
+ 1f8: 10 01 11 80 evdotp4hgaumi r0,r1,r2
+ 1fc: 10 01 11 81 evdotp4hgasmi r0,r1,r2
+ 200: 10 01 11 82 evdotp4hgasumi r0,r1,r2
+ 204: 10 01 11 83 evdotp4hgasmf r0,r1,r2
+ 208: 10 01 11 84 evdotp4hgssmi r0,r1,r2
+ 20c: 10 01 11 85 evdotp4hgssmf r0,r1,r2
+ 210: 10 01 11 86 evdotp4hxgasmi r0,r1,r2
+ 214: 10 01 11 87 evdotp4hxgasmf r0,r1,r2
+ 218: 10 01 11 88 evdotpbaumi r0,r1,r2
+ 21c: 10 01 11 89 evdotpbasmi r0,r1,r2
+ 220: 10 01 11 8a evdotpbasumi r0,r1,r2
+ 224: 10 01 11 8e evdotp4hxgssmi r0,r1,r2
+ 228: 10 01 11 8f evdotp4hxgssmf r0,r1,r2
+ 22c: 10 01 11 90 evdotp4hgaumiaa3 r0,r1,r2
+ 230: 10 01 11 91 evdotp4hgasmiaa3 r0,r1,r2
+ 234: 10 01 11 92 evdotp4hgasumiaa3 r0,r1,r2
+ 238: 10 01 11 93 evdotp4hgasmfaa3 r0,r1,r2
+ 23c: 10 01 11 94 evdotp4hgssmiaa3 r0,r1,r2
+ 240: 10 01 11 95 evdotp4hgssmfaa3 r0,r1,r2
+ 244: 10 01 11 96 evdotp4hxgasmiaa3 r0,r1,r2
+ 248: 10 01 11 97 evdotp4hxgasmfaa3 r0,r1,r2
+ 24c: 10 01 11 98 evdotpbaumiaaw3 r0,r1,r2
+ 250: 10 01 11 99 evdotpbasmiaaw3 r0,r1,r2
+ 254: 10 01 11 9a evdotpbasumiaaw3 r0,r1,r2
+ 258: 10 01 11 9e evdotp4hxgssmiaa3 r0,r1,r2
+ 25c: 10 01 11 9f evdotp4hxgssmfaa3 r0,r1,r2
+ 260: 10 01 11 a0 evdotp4hgaumia r0,r1,r2
+ 264: 10 01 11 a1 evdotp4hgasmia r0,r1,r2
+ 268: 10 01 11 a2 evdotp4hgasumia r0,r1,r2
+ 26c: 10 01 11 a3 evdotp4hgasmfa r0,r1,r2
+ 270: 10 01 11 a4 evdotp4hgssmia r0,r1,r2
+ 274: 10 01 11 a5 evdotp4hgssmfa r0,r1,r2
+ 278: 10 01 11 a6 evdotp4hxgasmia r0,r1,r2
+ 27c: 10 01 11 a7 evdotp4hxgasmfa r0,r1,r2
+ 280: 10 01 11 a8 evdotpbaumia r0,r1,r2
+ 284: 10 01 11 a9 evdotpbasmia r0,r1,r2
+ 288: 10 01 11 aa evdotpbasumia r0,r1,r2
+ 28c: 10 01 11 ae evdotp4hxgssmia r0,r1,r2
+ 290: 10 01 11 af evdotp4hxgssmfa r0,r1,r2
+ 294: 10 01 11 b0 evdotp4hgaumiaa r0,r1,r2
+ 298: 10 01 11 b1 evdotp4hgasmiaa r0,r1,r2
+ 29c: 10 01 11 b2 evdotp4hgasumiaa r0,r1,r2
+ 2a0: 10 01 11 b3 evdotp4hgasmfaa r0,r1,r2
+ 2a4: 10 01 11 b4 evdotp4hgssmiaa r0,r1,r2
+ 2a8: 10 01 11 b5 evdotp4hgssmfaa r0,r1,r2
+ 2ac: 10 01 11 b6 evdotp4hxgasmiaa r0,r1,r2
+ 2b0: 10 01 11 b7 evdotp4hxgasmfaa r0,r1,r2
+ 2b4: 10 01 11 b8 evdotpbaumiaaw r0,r1,r2
+ 2b8: 10 01 11 b9 evdotpbasmiaaw r0,r1,r2
+ 2bc: 10 01 11 ba evdotpbasumiaaw r0,r1,r2
+ 2c0: 10 01 11 be evdotp4hxgssmiaa r0,r1,r2
+ 2c4: 10 01 11 bf evdotp4hxgssmfaa r0,r1,r2
+ 2c8: 10 01 11 c0 evdotpwausi r0,r1,r2
+ 2cc: 10 01 11 c1 evdotpwassi r0,r1,r2
+ 2d0: 10 01 11 c2 evdotpwasusi r0,r1,r2
+ 2d4: 10 01 11 c8 evdotpwaumi r0,r1,r2
+ 2d8: 10 01 11 c9 evdotpwasmi r0,r1,r2
+ 2dc: 10 01 11 ca evdotpwasumi r0,r1,r2
+ 2e0: 10 01 11 cd evdotpwssmi r0,r1,r2
+ 2e4: 10 01 11 d0 evdotpwausiaa3 r0,r1,r2
+ 2e8: 10 01 11 d1 evdotpwassiaa3 r0,r1,r2
+ 2ec: 10 01 11 d2 evdotpwasusiaa3 r0,r1,r2
+ 2f0: 10 01 11 d5 evdotpwsssiaa3 r0,r1,r2
+ 2f4: 10 01 11 d8 evdotpwaumiaa3 r0,r1,r2
+ 2f8: 10 01 11 d9 evdotpwasmiaa3 r0,r1,r2
+ 2fc: 10 01 11 da evdotpwasumiaa3 r0,r1,r2
+ 300: 10 01 11 dd evdotpwssmiaa3 r0,r1,r2
+ 304: 10 01 11 e0 evdotpwausia r0,r1,r2
+ 308: 10 01 11 e1 evdotpwassia r0,r1,r2
+ 30c: 10 01 11 e2 evdotpwasusia r0,r1,r2
+ 310: 10 01 11 e8 evdotpwaumia r0,r1,r2
+ 314: 10 01 11 e9 evdotpwasmia r0,r1,r2
+ 318: 10 01 11 ea evdotpwasumia r0,r1,r2
+ 31c: 10 01 11 ed evdotpwssmia r0,r1,r2
+ 320: 10 01 11 f0 evdotpwausiaa r0,r1,r2
+ 324: 10 01 11 f1 evdotpwassiaa r0,r1,r2
+ 328: 10 01 11 f2 evdotpwasusiaa r0,r1,r2
+ 32c: 10 01 11 f5 evdotpwsssiaa r0,r1,r2
+ 330: 10 01 11 f8 evdotpwaumiaa r0,r1,r2
+ 334: 10 01 11 f9 evdotpwasmiaa r0,r1,r2
+ 338: 10 01 11 fa evdotpwasumiaa r0,r1,r2
+ 33c: 10 01 11 fd evdotpwssmiaa r0,r1,r2
+ 340: 10 1f 12 03 evaddib r0,r2,31
+ 344: 10 1f 12 01 evaddih r0,r2,31
+ 348: 10 1f 12 05 evsubifh r0,31,r2
+ 34c: 10 1f 12 07 evsubifb r0,31,r2
+ 350: 10 01 12 08 evabsb r0,r1
+ 354: 10 01 22 08 evabsh r0,r1
+ 358: 10 01 32 08 evabsd r0,r1
+ 35c: 10 01 42 08 evabss r0,r1
+ 360: 10 01 52 08 evabsbs r0,r1
+ 364: 10 01 62 08 evabshs r0,r1
+ 368: 10 01 72 08 evabsds r0,r1
+ 36c: 10 01 0a 09 evnegwo r0,r1
+ 370: 10 01 12 09 evnegb r0,r1
+ 374: 10 01 1a 09 evnegbo r0,r1
+ 378: 10 01 22 09 evnegh r0,r1
+ 37c: 10 01 2a 09 evnegho r0,r1
+ 380: 10 01 32 09 evnegd r0,r1
+ 384: 10 01 42 09 evnegs r0,r1
+ 388: 10 01 4a 09 evnegwos r0,r1
+ 38c: 10 01 52 09 evnegbs r0,r1
+ 390: 10 01 5a 09 evnegbos r0,r1
+ 394: 10 01 62 09 evneghs r0,r1
+ 398: 10 01 6a 09 evneghos r0,r1
+ 39c: 10 01 72 09 evnegds r0,r1
+ 3a0: 10 01 0a 0a evextzb r0,r1
+ 3a4: 10 01 22 0a evextsbh r0,r1
+ 3a8: 10 01 32 0b evextsw r0,r1
+ 3ac: 10 01 02 0c evrndwh r0,r1
+ 3b0: 10 01 22 0c evrndhb r0,r1
+ 3b4: 10 01 32 0c evrnddw r0,r1
+ 3b8: 10 01 42 0c evrndwhus r0,r1
+ 3bc: 10 01 4a 0c evrndwhss r0,r1
+ 3c0: 10 01 62 0c evrndhbus r0,r1
+ 3c4: 10 01 6a 0c evrndhbss r0,r1
+ 3c8: 10 01 72 0c evrnddwus r0,r1
+ 3cc: 10 01 7a 0c evrnddwss r0,r1
+ 3d0: 10 01 82 0c evrndwnh r0,r1
+ 3d4: 10 01 a2 0c evrndhnb r0,r1
+ 3d8: 10 01 b2 0c evrnddnw r0,r1
+ 3dc: 10 01 c2 0c evrndwnhus r0,r1
+ 3e0: 10 01 ca 0c evrndwnhss r0,r1
+ 3e4: 10 01 e2 0c evrndhnbus r0,r1
+ 3e8: 10 01 ea 0c evrndhnbss r0,r1
+ 3ec: 10 01 f2 0c evrnddnwus r0,r1
+ 3f0: 10 01 fa 0c evrnddnwss r0,r1
+ 3f4: 10 01 22 0d evcntlzh r0,r1
+ 3f8: 10 01 22 0e evcntlsh r0,r1
+ 3fc: 10 01 d2 0e evpopcntb r0,r1
+ 400: 10 01 12 10 circinc r0,r1,r2
+ 404: 10 01 02 1c evunpkhibui r0,r1
+ 408: 10 01 0a 1c evunpkhibsi r0,r1
+ 40c: 10 01 12 1c evunpkhihui r0,r1
+ 410: 10 01 1a 1c evunpkhihsi r0,r1
+ 414: 10 01 22 1c evunpklobui r0,r1
+ 418: 10 01 2a 1c evunpklobsi r0,r1
+ 41c: 10 01 32 1c evunpklohui r0,r1
+ 420: 10 01 3a 1c evunpklohsi r0,r1
+ 424: 10 01 42 1c evunpklohf r0,r1
+ 428: 10 01 4a 1c evunpkhihf r0,r1
+ 42c: 10 01 62 1c evunpklowgsf r0,r1
+ 430: 10 01 6a 1c evunpkhiwgsf r0,r1
+ 434: 10 01 82 1c evsatsduw r0,r1
+ 438: 10 01 8a 1c evsatsdsw r0,r1
+ 43c: 10 01 92 1c evsatshub r0,r1
+ 440: 10 01 9a 1c evsatshsb r0,r1
+ 444: 10 01 a2 1c evsatuwuh r0,r1
+ 448: 10 01 aa 1c evsatswsh r0,r1
+ 44c: 10 01 b2 1c evsatswuh r0,r1
+ 450: 10 01 ba 1c evsatuhub r0,r1
+ 454: 10 01 c2 1c evsatuduw r0,r1
+ 458: 10 01 ca 1c evsatuwsw r0,r1
+ 45c: 10 01 d2 1c evsatshuh r0,r1
+ 460: 10 01 da 1c evsatuhsh r0,r1
+ 464: 10 01 e2 1c evsatswuw r0,r1
+ 468: 10 01 ea 1c evsatswgsdf r0,r1
+ 46c: 10 01 f2 1c evsatsbub r0,r1
+ 470: 10 01 fa 1c evsatubsb r0,r1
+ 474: 10 01 02 1d evmaxhpuw r0,r1
+ 478: 10 01 0a 1d evmaxhpsw r0,r1
+ 47c: 10 01 22 1d evmaxbpuh r0,r1
+ 480: 10 01 2a 1d evmaxbpsh r0,r1
+ 484: 10 01 32 1d evmaxwpud r0,r1
+ 488: 10 01 3a 1d evmaxwpsd r0,r1
+ 48c: 10 01 42 1d evminhpuw r0,r1
+ 490: 10 01 4a 1d evminhpsw r0,r1
+ 494: 10 01 62 1d evminbpuh r0,r1
+ 498: 10 01 6a 1d evminbpsh r0,r1
+ 49c: 10 01 72 1d evminwpud r0,r1
+ 4a0: 10 01 7a 1d evminwpsd r0,r1
+ 4a4: 10 01 12 1f evmaxmagws r0,r1,r2
+ 4a8: 10 01 12 25 evsl r0,r1,r2
+ 4ac: 10 01 fa 27 evsli r0,r1,31
+ 4b0: 10 10 0a 29 evsplatie r0,-16
+ 4b4: 10 10 12 29 evsplatib r0,-16
+ 4b8: 10 10 1a 29 evsplatibe r0,-16
+ 4bc: 10 10 22 29 evsplatih r0,-16
+ 4c0: 10 10 2a 29 evsplatihe r0,-16
+ 4c4: 10 10 32 29 evsplatid r0,-16
+ 4c8: 10 10 82 29 evsplatia r0,-16
+ 4cc: 10 10 8a 29 evsplatiea r0,-16
+ 4d0: 10 10 92 29 evsplatiba r0,-16
+ 4d4: 10 10 9a 29 evsplatibea r0,-16
+ 4d8: 10 10 a2 29 evsplatiha r0,-16
+ 4dc: 10 10 aa 29 evsplatihea r0,-16
+ 4e0: 10 10 b2 29 evsplatida r0,-16
+ 4e4: 10 10 0a 2b evsplatfio r0,-16
+ 4e8: 10 10 12 2b evsplatfib r0,-16
+ 4ec: 10 10 1a 2b evsplatfibo r0,-16
+ 4f0: 10 10 22 2b evsplatfih r0,-16
+ 4f4: 10 10 2a 2b evsplatfiho r0,-16
+ 4f8: 10 10 32 2b evsplatfid r0,-16
+ 4fc: 10 10 82 2b evsplatfia r0,-16
+ 500: 10 10 8a 2b evsplatfioa r0,-16
+ 504: 10 10 92 2b evsplatfiba r0,-16
+ 508: 10 10 9a 2b evsplatfiboa r0,-16
+ 50c: 10 10 a2 2b evsplatfiha r0,-16
+ 510: 10 10 aa 2b evsplatfihoa r0,-16
+ 514: 10 10 b2 2b evsplatfida r0,-16
+ 518: 10 21 12 30 evcmpgtdu cr0,r1,r2
+ 51c: 10 21 12 31 evcmpgtds cr0,r1,r2
+ 520: 10 21 12 32 evcmpltdu cr0,r1,r2
+ 524: 10 21 12 33 evcmpltds cr0,r1,r2
+ 528: 10 21 12 34 evcmpeqd cr0,r1,r2
+ 52c: 10 01 12 38 evswapbhilo r0,r1,r2
+ 530: 10 01 12 39 evswapblohi r0,r1,r2
+ 534: 10 01 12 3a evswaphhilo r0,r1,r2
+ 538: 10 01 12 3b evswaphlohi r0,r1,r2
+ 53c: 10 01 12 3c evswaphe r0,r1,r2
+ 540: 10 01 12 3d evswaphhi r0,r1,r2
+ 544: 10 01 12 3e evswaphlo r0,r1,r2
+ 548: 10 01 12 3f evswapho r0,r1,r2
+ 54c: 10 01 fa 49 evinsb r0,r1,7,7
+ 550: 10 01 fa 4b evxtrb r0,r1,7,7
+ 554: 10 01 62 4c evsplath r0,r1,3
+ 558: 10 01 f2 4c evsplatb r0,r1,7
+ 55c: 10 01 7a 4d evinsh r0,r1,3,3
+ 560: 10 01 7a 4e evclrbe r0,r1,15
+ 564: 10 01 fa 4e evclrbo r0,r1,15
+ 568: 10 01 fa 4f evclrh r0,r1,15
+ 56c: 10 01 7a 4f evxtrh r0,r1,3,3
+ 570: 10 01 12 50 evselbitm0 r0,r1,r2
+ 574: 10 01 12 51 evselbitm1 r0,r1,r2
+ 578: 10 01 12 52 evselbit r0,r1,r2
+ 57c: 10 01 12 54 evperm r0,r1,r2
+ 580: 10 01 12 55 evperm2 r0,r1,r2
+ 584: 10 01 12 56 evperm3 r0,r1,r2
+ 588: 10 01 12 5f evxtrd r0,r1,r2,7
+ 58c: 10 01 12 60 evsrbu r0,r1,r2
+ 590: 10 01 12 61 evsrbs r0,r1,r2
+ 594: 10 01 3a 62 evsrbiu r0,r1,7
+ 598: 10 01 3a 63 evsrbis r0,r1,7
+ 59c: 10 01 12 64 evslb r0,r1,r2
+ 5a0: 10 01 12 65 evrlb r0,r1,r2
+ 5a4: 10 01 3a 66 evslbi r0,r1,7
+ 5a8: 10 01 3a 67 evrlbi r0,r1,7
+ 5ac: 10 01 12 68 evsrhu r0,r1,r2
+ 5b0: 10 01 12 69 evsrhs r0,r1,r2
+ 5b4: 10 01 7a 6a evsrhiu r0,r1,15
+ 5b8: 10 01 7a 6b evsrhis r0,r1,15
+ 5bc: 10 01 12 6c evslh r0,r1,r2
+ 5c0: 10 01 12 6d evrlh r0,r1,r2
+ 5c4: 10 01 7a 6e evslhi r0,r1,15
+ 5c8: 10 01 7a 6f evrlhi r0,r1,15
+ 5cc: 10 01 12 70 evsru r0,r1,r2
+ 5d0: 10 01 12 71 evsrs r0,r1,r2
+ 5d4: 10 01 fa 72 evsriu r0,r1,31
+ 5d8: 10 01 fa 73 evsris r0,r1,31
+ 5dc: 10 01 12 74 evlvsl r0,r1,r2
+ 5e0: 10 01 12 75 evlvsr r0,r1,r2
+ 5e4: 10 01 3a 77 evsroiu r0,r1,7
+ 5e8: 10 01 7a 77 evsrois r0,r1,7
+ 5ec: 10 01 ba 77 evsloi r0,r1,7
+ 5f0: 10 01 02 87 evfssqrt r0,r1
+ 5f4: 10 04 12 91 evfscfh r0,r2
+ 5f8: 10 04 12 95 evfscth r0,r2
+ 5fc: 10 01 12 a0 evfsmax r0,r1,r2
+ 600: 10 01 12 a1 evfsmin r0,r1,r2
+ 604: 10 01 12 a2 evfsaddsub r0,r1,r2
+ 608: 10 01 12 a3 evfssubadd r0,r1,r2
+ 60c: 10 01 12 a4 evfssum r0,r1,r2
+ 610: 10 01 12 a5 evfsdiff r0,r1,r2
+ 614: 10 01 12 a6 evfssumdiff r0,r1,r2
+ 618: 10 01 12 a7 evfsdiffsum r0,r1,r2
+ 61c: 10 01 12 a8 evfsaddx r0,r1,r2
+ 620: 10 01 12 a9 evfssubx r0,r1,r2
+ 624: 10 01 12 aa evfsaddsubx r0,r1,r2
+ 628: 10 01 12 ab evfssubaddx r0,r1,r2
+ 62c: 10 01 12 ac evfsmulx r0,r1,r2
+ 630: 10 01 12 ae evfsmule r0,r1,r2
+ 634: 10 01 12 af evfsmulo r0,r1,r2
+ 638: 10 01 13 06 evldbx r0,r1,r2
+ 63c: 10 01 0b 07 evldb r0,8\(r1\)
+ 640: 10 01 13 0a evlhhsplathx r0,r1,r2
+ 644: 10 01 0b 0b evlhhsplath r0,2\(r1\)
+ 648: 10 01 13 12 evlwbsplatwx r0,r1,r2
+ 64c: 10 01 0b 13 evlwbsplatw r0,4\(r1\)
+ 650: 10 01 13 1a evlwhsplatwx r0,r1,r2
+ 654: 10 01 0b 1b evlwhsplatw r0,4\(r1\)
+ 658: 10 01 13 1e evlbbsplatbx r0,r1,r2
+ 65c: 10 01 0b 1f evlbbsplatb r0,1\(r1\)
+ 660: 10 01 13 26 evstdbx r0,r1,r2
+ 664: 10 01 0b 27 evstdb r0,8\(r1\)
+ 668: 10 01 13 2a evlwbex r0,r1,r2
+ 66c: 10 01 0b 2b evlwbe r0,4\(r1\)
+ 670: 10 01 13 2c evlwboux r0,r1,r2
+ 674: 10 01 0b 2d evlwbou r0,4\(r1\)
+ 678: 10 01 13 2e evlwbosx r0,r1,r2
+ 67c: 10 01 0b 2f evlwbos r0,4\(r1\)
+ 680: 10 01 13 32 evstwbex r0,r1,r2
+ 684: 10 01 0b 33 evstwbe r0,4\(r1\)
+ 688: 10 01 13 36 evstwbox r0,r1,r2
+ 68c: 10 01 0b 37 evstwbo r0,4\(r1\)
+ 690: 10 01 13 3a evstwbx r0,r1,r2
+ 694: 10 01 0b 3b evstwb r0,4\(r1\)
+ 698: 10 01 13 3e evsthbx r0,r1,r2
+ 69c: 10 01 0b 3f evsthb r0,2\(r1\)
+ 6a0: 10 01 13 40 evlddmx r0,r1,r2
+ 6a4: 10 01 0b 41 evlddu r0,8\(r1\)
+ 6a8: 10 01 13 42 evldwmx r0,r1,r2
+ 6ac: 10 01 0b 43 evldwu r0,8\(r1\)
+ 6b0: 10 01 13 44 evldhmx r0,r1,r2
+ 6b4: 10 01 0b 45 evldhu r0,8\(r1\)
+ 6b8: 10 01 13 46 evldbmx r0,r1,r2
+ 6bc: 10 01 0b 47 evldbu r0,8\(r1\)
+ 6c0: 10 01 13 48 evlhhesplatmx r0,r1,r2
+ 6c4: 10 01 0b 49 evlhhesplatu r0,2\(r1\)
+ 6c8: 10 01 13 4a evlhhsplathmx r0,r1,r2
+ 6cc: 10 01 0b 4b evlhhsplathu r0,2\(r1\)
+ 6d0: 10 01 13 4c evlhhousplatmx r0,r1,r2
+ 6d4: 10 01 0b 4d evlhhousplatu r0,2\(r1\)
+ 6d8: 10 01 13 4e evlhhossplatmx r0,r1,r2
+ 6dc: 10 01 0b 4f evlhhossplatu r0,2\(r1\)
+ 6e0: 10 01 13 50 evlwhemx r0,r1,r2
+ 6e4: 10 01 0b 51 evlwheu r0,4\(r1\)
+ 6e8: 10 01 13 52 evlwbsplatwmx r0,r1,r2
+ 6ec: 10 01 0b 53 evlwbsplatwu r0,4\(r1\)
+ 6f0: 10 01 13 54 evlwhoumx r0,r1,r2
+ 6f4: 10 01 0b 55 evlwhouu r0,4\(r1\)
+ 6f8: 10 01 13 56 evlwhosmx r0,r1,r2
+ 6fc: 10 01 0b 57 evlwhosu r0,4\(r1\)
+ 700: 10 01 13 58 evlwwsplatmx r0,r1,r2
+ 704: 10 01 0b 59 evlwwsplatu r0,4\(r1\)
+ 708: 10 01 13 5a evlwhsplatwmx r0,r1,r2
+ 70c: 10 01 0b 5b evlwhsplatwu r0,4\(r1\)
+ 710: 10 01 13 5c evlwhsplatmx r0,r1,r2
+ 714: 10 01 0b 5d evlwhsplatu r0,4\(r1\)
+ 718: 10 01 13 5e evlbbsplatbmx r0,r1,r2
+ 71c: 10 01 0b 5f evlbbsplatbu r0,1\(r1\)
+ 720: 10 01 13 60 evstddmx r0,r1,r2
+ 724: 10 01 0b 61 evstddu r0,8\(r1\)
+ 728: 10 01 13 62 evstdwmx r0,r1,r2
+ 72c: 10 01 0b 63 evstdwu r0,8\(r1\)
+ 730: 10 01 13 64 evstdhmx r0,r1,r2
+ 734: 10 01 0b 65 evstdhu r0,8\(r1\)
+ 738: 10 01 13 66 evstdbmx r0,r1,r2
+ 73c: 10 01 0b 67 evstdbu r0,8\(r1\)
+ 740: 10 01 13 6a evlwbemx r0,r1,r2
+ 744: 10 01 0b 6b evlwbeu r0,4\(r1\)
+ 748: 10 01 13 6c evlwboumx r0,r1,r2
+ 74c: 10 01 0b 6d evlwbouu r0,4\(r1\)
+ 750: 10 01 13 6e evlwbosmx r0,r1,r2
+ 754: 10 01 0b 6f evlwbosu r0,4\(r1\)
+ 758: 10 01 13 70 evstwhemx r0,r1,r2
+ 75c: 10 01 0b 71 evstwheu r0,4\(r1\)
+ 760: 10 01 13 72 evstwbemx r0,r1,r2
+ 764: 10 01 0b 73 evstwbeu r0,4\(r1\)
+ 768: 10 01 13 74 evstwhomx r0,r1,r2
+ 76c: 10 01 0b 75 evstwhou r0,4\(r1\)
+ 770: 10 01 13 76 evstwbomx r0,r1,r2
+ 774: 10 01 0b 77 evstwbou r0,4\(r1\)
+ 778: 10 01 13 78 evstwwemx r0,r1,r2
+ 77c: 10 01 0b 79 evstwweu r0,4\(r1\)
+ 780: 10 01 13 7a evstwbmx r0,r1,r2
+ 784: 10 01 0b 7b evstwbu r0,4\(r1\)
+ 788: 10 01 13 7c evstwwomx r0,r1,r2
+ 78c: 10 01 0b 7d evstwwou r0,4\(r1\)
+ 790: 10 01 13 7e evsthbmx r0,r1,r2
+ 794: 10 01 0b 7f evsthbu r0,2\(r1\)
+ 798: 10 01 14 00 evmhusi r0,r1,r2
+ 79c: 10 01 14 01 evmhssi r0,r1,r2
+ 7a0: 10 01 14 02 evmhsusi r0,r1,r2
+ 7a4: 10 01 14 04 evmhssf r0,r1,r2
+ 7a8: 10 01 14 05 evmhumi r0,r1,r2
+ 7ac: 10 01 14 06 evmhssfr r0,r1,r2
+ 7b0: 10 01 14 0a evmhesumi r0,r1,r2
+ 7b4: 10 01 14 0e evmhosumi r0,r1,r2
+ 7b8: 10 01 14 18 evmbeumi r0,r1,r2
+ 7bc: 10 01 14 19 evmbesmi r0,r1,r2
+ 7c0: 10 01 14 1a evmbesumi r0,r1,r2
+ 7c4: 10 01 14 1c evmboumi r0,r1,r2
+ 7c8: 10 01 14 1d evmbosmi r0,r1,r2
+ 7cc: 10 01 14 1e evmbosumi r0,r1,r2
+ 7d0: 10 01 14 2a evmhesumia r0,r1,r2
+ 7d4: 10 01 14 2e evmhosumia r0,r1,r2
+ 7d8: 10 01 14 38 evmbeumia r0,r1,r2
+ 7dc: 10 01 14 39 evmbesmia r0,r1,r2
+ 7e0: 10 01 14 3a evmbesumia r0,r1,r2
+ 7e4: 10 01 14 3c evmboumia r0,r1,r2
+ 7e8: 10 01 14 3d evmbosmia r0,r1,r2
+ 7ec: 10 01 14 3e evmbosumia r0,r1,r2
+ 7f0: 10 01 14 40 evmwusiw r0,r1,r2
+ 7f4: 10 01 14 41 evmwssiw r0,r1,r2
+ 7f8: 10 01 14 46 evmwhssfr r0,r1,r2
+ 7fc: 10 01 14 56 evmwehgsmfr r0,r1,r2
+ 800: 10 01 14 57 evmwehgsmf r0,r1,r2
+ 804: 10 01 14 5e evmwohgsmfr r0,r1,r2
+ 808: 10 01 14 5f evmwohgsmf r0,r1,r2
+ 80c: 10 01 14 66 evmwhssfra r0,r1,r2
+ 810: 10 01 14 76 evmwehgsmfra r0,r1,r2
+ 814: 10 01 14 77 evmwehgsmfa r0,r1,r2
+ 818: 10 01 14 7e evmwohgsmfra r0,r1,r2
+ 81c: 10 01 14 7f evmwohgsmfa r0,r1,r2
+ 820: 10 01 04 80 evaddusiaa r0,r1
+ 824: 10 01 04 81 evaddssiaa r0,r1
+ 828: 10 01 04 82 evsubfusiaa r0,r1
+ 82c: 10 01 04 83 evsubfssiaa r0,r1
+ 830: 10 01 04 84 evaddsmiaa r0,r1
+ 834: 10 01 04 86 evsubfsmiaa r0,r1
+ 838: 10 01 14 88 evaddh r0,r1,r2
+ 83c: 10 01 14 89 evaddhss r0,r1,r2
+ 840: 10 01 14 8a evsubfh r0,r1,r2
+ 844: 10 01 14 8b evsubfhss r0,r1,r2
+ 848: 10 01 14 8c evaddhx r0,r1,r2
+ 84c: 10 01 14 8d evaddhxss r0,r1,r2
+ 850: 10 01 14 8e evsubfhx r0,r1,r2
+ 854: 10 01 14 8f evsubfhxss r0,r1,r2
+ 858: 10 01 14 90 evaddd r0,r1,r2
+ 85c: 10 01 14 91 evadddss r0,r1,r2
+ 860: 10 01 14 92 evsubfd r0,r1,r2
+ 864: 10 01 14 93 evsubfdss r0,r1,r2
+ 868: 10 01 14 94 evaddb r0,r1,r2
+ 86c: 10 01 14 95 evaddbss r0,r1,r2
+ 870: 10 01 14 96 evsubfb r0,r1,r2
+ 874: 10 01 14 97 evsubfbss r0,r1,r2
+ 878: 10 01 14 98 evaddsubfh r0,r1,r2
+ 87c: 10 01 14 99 evaddsubfhss r0,r1,r2
+ 880: 10 01 14 9a evsubfaddh r0,r1,r2
+ 884: 10 01 14 9b evsubfaddhss r0,r1,r2
+ 888: 10 01 14 9c evaddsubfhx r0,r1,r2
+ 88c: 10 01 14 9d evaddsubfhxss r0,r1,r2
+ 890: 10 01 14 9e evsubfaddhx r0,r1,r2
+ 894: 10 01 14 9f evsubfaddhxss r0,r1,r2
+ 898: 10 01 14 a0 evadddus r0,r1,r2
+ 89c: 10 01 14 a1 evaddbus r0,r1,r2
+ 8a0: 10 01 14 a2 evsubfdus r0,r1,r2
+ 8a4: 10 01 14 a3 evsubfbus r0,r1,r2
+ 8a8: 10 01 14 a4 evaddwus r0,r1,r2
+ 8ac: 10 01 14 a5 evaddwxus r0,r1,r2
+ 8b0: 10 01 14 a6 evsubfwus r0,r1,r2
+ 8b4: 10 01 14 a7 evsubfwxus r0,r1,r2
+ 8b8: 10 01 14 a8 evadd2subf2h r0,r1,r2
+ 8bc: 10 01 14 a9 evadd2subf2hss r0,r1,r2
+ 8c0: 10 01 14 aa evsubf2add2h r0,r1,r2
+ 8c4: 10 01 14 ab evsubf2add2hss r0,r1,r2
+ 8c8: 10 01 14 ac evaddhus r0,r1,r2
+ 8cc: 10 01 14 ad evaddhxus r0,r1,r2
+ 8d0: 10 01 14 ae evsubfhus r0,r1,r2
+ 8d4: 10 01 14 af evsubfhxus r0,r1,r2
+ 8d8: 10 01 14 b1 evaddwss r0,r1,r2
+ 8dc: 10 01 14 b3 evsubfwss r0,r1,r2
+ 8e0: 10 01 14 b4 evaddwx r0,r1,r2
+ 8e4: 10 01 14 b5 evaddwxss r0,r1,r2
+ 8e8: 10 01 14 b6 evsubfwx r0,r1,r2
+ 8ec: 10 01 14 b7 evsubfwxss r0,r1,r2
+ 8f0: 10 01 14 b8 evaddsubfw r0,r1,r2
+ 8f4: 10 01 14 b9 evaddsubfwss r0,r1,r2
+ 8f8: 10 01 14 ba evsubfaddw r0,r1,r2
+ 8fc: 10 01 14 bb evsubfaddwss r0,r1,r2
+ 900: 10 01 14 bc evaddsubfwx r0,r1,r2
+ 904: 10 01 14 bd evaddsubfwxss r0,r1,r2
+ 908: 10 01 14 be evsubfaddwx r0,r1,r2
+ 90c: 10 01 14 bf evsubfaddwxss r0,r1,r2
+ 910: 10 00 0c c4 evmar r0
+ 914: 10 01 04 c5 evsumwu r0,r1
+ 918: 10 01 0c c5 evsumws r0,r1
+ 91c: 10 01 14 c5 evsum4bu r0,r1
+ 920: 10 01 1c c5 evsum4bs r0,r1
+ 924: 10 01 24 c5 evsum2hu r0,r1
+ 928: 10 01 2c c5 evsum2hs r0,r1
+ 92c: 10 01 34 c5 evdiff2his r0,r1
+ 930: 10 01 3c c5 evsum2his r0,r1
+ 934: 10 01 84 c5 evsumwua r0,r1
+ 938: 10 01 8c c5 evsumwsa r0,r1
+ 93c: 10 01 94 c5 evsum4bua r0,r1
+ 940: 10 01 9c c5 evsum4bsa r0,r1
+ 944: 10 01 a4 c5 evsum2hua r0,r1
+ 948: 10 01 ac c5 evsum2hsa r0,r1
+ 94c: 10 01 b4 c5 evdiff2hisa r0,r1
+ 950: 10 01 bc c5 evsum2hisa r0,r1
+ 954: 10 01 c4 c5 evsumwuaa r0,r1
+ 958: 10 01 cc c5 evsumwsaa r0,r1
+ 95c: 10 01 d4 c5 evsum4buaaw r0,r1
+ 960: 10 01 dc c5 evsum4bsaaw r0,r1
+ 964: 10 01 e4 c5 evsum2huaaw r0,r1
+ 968: 10 01 ec c5 evsum2hsaaw r0,r1
+ 96c: 10 01 f4 c5 evdiff2hisaaw r0,r1
+ 970: 10 01 fc c5 evsum2hisaaw r0,r1
+ 974: 10 01 14 cc evdivwsf r0,r1,r2
+ 978: 10 01 14 cd evdivwuf r0,r1,r2
+ 97c: 10 01 14 ce evdivs r0,r1,r2
+ 980: 10 01 14 cf evdivu r0,r1,r2
+ 984: 10 01 14 d0 evaddwegsi r0,r1,r2
+ 988: 10 01 14 d1 evaddwegsf r0,r1,r2
+ 98c: 10 01 14 d2 evsubfwegsi r0,r1,r2
+ 990: 10 01 14 d3 evsubfwegsf r0,r1,r2
+ 994: 10 01 14 d4 evaddwogsi r0,r1,r2
+ 998: 10 01 14 d5 evaddwogsf r0,r1,r2
+ 99c: 10 01 14 d6 evsubfwogsi r0,r1,r2
+ 9a0: 10 01 14 d7 evsubfwogsf r0,r1,r2
+ 9a4: 10 01 14 d8 evaddhhiuw r0,r1,r2
+ 9a8: 10 01 14 d9 evaddhhisw r0,r1,r2
+ 9ac: 10 01 14 da evsubfhhiuw r0,r1,r2
+ 9b0: 10 01 14 db evsubfhhisw r0,r1,r2
+ 9b4: 10 01 14 dc evaddhlouw r0,r1,r2
+ 9b8: 10 01 14 dd evaddhlosw r0,r1,r2
+ 9bc: 10 01 14 de evsubfhlouw r0,r1,r2
+ 9c0: 10 01 14 df evsubfhlosw r0,r1,r2
+ 9c4: 10 01 15 02 evmhesusiaaw r0,r1,r2
+ 9c8: 10 01 15 06 evmhosusiaaw r0,r1,r2
+ 9cc: 10 01 15 0a evmhesumiaaw r0,r1,r2
+ 9d0: 10 01 15 0e evmhosumiaaw r0,r1,r2
+ 9d4: 10 01 15 10 evmbeusiaah r0,r1,r2
+ 9d8: 10 01 15 11 evmbessiaah r0,r1,r2
+ 9dc: 10 01 15 12 evmbesusiaah r0,r1,r2
+ 9e0: 10 01 15 14 evmbousiaah r0,r1,r2
+ 9e4: 10 01 15 15 evmbossiaah r0,r1,r2
+ 9e8: 10 01 15 16 evmbosusiaah r0,r1,r2
+ 9ec: 10 01 15 18 evmbeumiaah r0,r1,r2
+ 9f0: 10 01 15 19 evmbesmiaah r0,r1,r2
+ 9f4: 10 01 15 1a evmbesumiaah r0,r1,r2
+ 9f8: 10 01 15 1c evmboumiaah r0,r1,r2
+ 9fc: 10 01 15 1d evmbosmiaah r0,r1,r2
+ a00: 10 01 15 1e evmbosumiaah r0,r1,r2
+ a04: 10 01 15 42 evmwlusiaaw3 r0,r1,r2
+ a08: 10 01 15 43 evmwlssiaaw3 r0,r1,r2
+ a0c: 10 01 15 44 evmwhssfraaw3 r0,r1,r2
+ a10: 10 01 15 45 evmwhssfaaw3 r0,r1,r2
+ a14: 10 01 15 46 evmwhssfraaw r0,r1,r2
+ a18: 10 01 15 47 evmwhssfaaw r0,r1,r2
+ a1c: 10 01 15 4a evmwlumiaaw3 r0,r1,r2
+ a20: 10 01 15 4b evmwlsmiaaw3 r0,r1,r2
+ a24: 10 01 15 50 evmwusiaa r0,r1,r2
+ a28: 10 01 15 51 evmwssiaa r0,r1,r2
+ a2c: 10 01 15 56 evmwehgsmfraa r0,r1,r2
+ a30: 10 01 15 57 evmwehgsmfaa r0,r1,r2
+ a34: 10 01 15 5e evmwohgsmfraa r0,r1,r2
+ a38: 10 01 15 5f evmwohgsmfaa r0,r1,r2
+ a3c: 10 01 15 82 evmhesusianw r0,r1,r2
+ a40: 10 01 15 86 evmhosusianw r0,r1,r2
+ a44: 10 01 15 8a evmhesumianw r0,r1,r2
+ a48: 10 01 15 8e evmhosumianw r0,r1,r2
+ a4c: 10 01 15 90 evmbeusianh r0,r1,r2
+ a50: 10 01 15 91 evmbessianh r0,r1,r2
+ a54: 10 01 15 92 evmbesusianh r0,r1,r2
+ a58: 10 01 15 94 evmbousianh r0,r1,r2
+ a5c: 10 01 15 95 evmbossianh r0,r1,r2
+ a60: 10 01 15 96 evmbosusianh r0,r1,r2
+ a64: 10 01 15 98 evmbeumianh r0,r1,r2
+ a68: 10 01 15 99 evmbesmianh r0,r1,r2
+ a6c: 10 01 15 9a evmbesumianh r0,r1,r2
+ a70: 10 01 15 9c evmboumianh r0,r1,r2
+ a74: 10 01 15 9d evmbosmianh r0,r1,r2
+ a78: 10 01 15 9e evmbosumianh r0,r1,r2
+ a7c: 10 01 15 c2 evmwlusianw3 r0,r1,r2
+ a80: 10 01 15 c3 evmwlssianw3 r0,r1,r2
+ a84: 10 01 15 c4 evmwhssfranw3 r0,r1,r2
+ a88: 10 01 15 c5 evmwhssfanw3 r0,r1,r2
+ a8c: 10 01 15 c6 evmwhssfranw r0,r1,r2
+ a90: 10 01 15 c7 evmwhssfanw r0,r1,r2
+ a94: 10 01 15 ca evmwlumianw3 r0,r1,r2
+ a98: 10 01 15 cb evmwlsmianw3 r0,r1,r2
+ a9c: 10 01 15 d0 evmwusian r0,r1,r2
+ aa0: 10 01 15 d1 evmwssian r0,r1,r2
+ aa4: 10 01 15 d6 evmwehgsmfran r0,r1,r2
+ aa8: 10 01 15 d7 evmwehgsmfan r0,r1,r2
+ aac: 10 01 15 de evmwohgsmfran r0,r1,r2
+ ab0: 10 01 15 df evmwohgsmfan r0,r1,r2
+ ab4: 10 01 16 00 evseteqb r0,r1,r2
+ ab8: 10 01 16 01 evseteqb. r0,r1,r2
+ abc: 10 01 16 02 evseteqh r0,r1,r2
+ ac0: 10 01 16 03 evseteqh. r0,r1,r2
+ ac4: 10 01 16 04 evseteqw r0,r1,r2
+ ac8: 10 01 16 05 evseteqw. r0,r1,r2
+ acc: 10 01 16 08 evsetgthu r0,r1,r2
+ ad0: 10 01 16 09 evsetgthu. r0,r1,r2
+ ad4: 10 01 16 0a evsetgths r0,r1,r2
+ ad8: 10 01 16 0b evsetgths. r0,r1,r2
+ adc: 10 01 16 0c evsetgtwu r0,r1,r2
+ ae0: 10 01 16 0d evsetgtwu. r0,r1,r2
+ ae4: 10 01 16 0e evsetgtws r0,r1,r2
+ ae8: 10 01 16 0f evsetgtws. r0,r1,r2
+ aec: 10 01 16 10 evsetgtbu r0,r1,r2
+ af0: 10 01 16 11 evsetgtbu. r0,r1,r2
+ af4: 10 01 16 12 evsetgtbs r0,r1,r2
+ af8: 10 01 16 13 evsetgtbs. r0,r1,r2
+ afc: 10 01 16 14 evsetltbu r0,r1,r2
+ b00: 10 01 16 15 evsetltbu. r0,r1,r2
+ b04: 10 01 16 16 evsetltbs r0,r1,r2
+ b08: 10 01 16 17 evsetltbs. r0,r1,r2
+ b0c: 10 01 16 18 evsetlthu r0,r1,r2
+ b10: 10 01 16 19 evsetlthu. r0,r1,r2
+ b14: 10 01 16 1a evsetlths r0,r1,r2
+ b18: 10 01 16 1b evsetlths. r0,r1,r2
+ b1c: 10 01 16 1c evsetltwu r0,r1,r2
+ b20: 10 01 16 1d evsetltwu. r0,r1,r2
+ b24: 10 01 16 1e evsetltws r0,r1,r2
+ b28: 10 01 16 1f evsetltws. r0,r1,r2
+ b2c: 10 01 16 20 evsaduw r0,r1,r2
+ b30: 10 01 16 21 evsadsw r0,r1,r2
+ b34: 10 01 16 22 evsad4ub r0,r1,r2
+ b38: 10 01 16 23 evsad4sb r0,r1,r2
+ b3c: 10 01 16 24 evsad2uh r0,r1,r2
+ b40: 10 01 16 25 evsad2sh r0,r1,r2
+ b44: 10 01 16 28 evsaduwa r0,r1,r2
+ b48: 10 01 16 29 evsadswa r0,r1,r2
+ b4c: 10 01 16 2a evsad4uba r0,r1,r2
+ b50: 10 01 16 2b evsad4sba r0,r1,r2
+ b54: 10 01 16 2c evsad2uha r0,r1,r2
+ b58: 10 01 16 2d evsad2sha r0,r1,r2
+ b5c: 10 01 16 30 evabsdifuw r0,r1,r2
+ b60: 10 01 16 31 evabsdifsw r0,r1,r2
+ b64: 10 01 16 32 evabsdifub r0,r1,r2
+ b68: 10 01 16 33 evabsdifsb r0,r1,r2
+ b6c: 10 01 16 34 evabsdifuh r0,r1,r2
+ b70: 10 01 16 35 evabsdifsh r0,r1,r2
+ b74: 10 01 16 38 evsaduwaa r0,r1,r2
+ b78: 10 01 16 39 evsadswaa r0,r1,r2
+ b7c: 10 01 16 3a evsad4ubaaw r0,r1,r2
+ b80: 10 01 16 3b evsad4sbaaw r0,r1,r2
+ b84: 10 01 16 3c evsad2uhaaw r0,r1,r2
+ b88: 10 01 16 3d evsad2shaaw r0,r1,r2
+ b8c: 10 01 16 40 evpkshubs r0,r1,r2
+ b90: 10 01 16 41 evpkshsbs r0,r1,r2
+ b94: 10 01 16 42 evpkswuhs r0,r1,r2
+ b98: 10 01 16 43 evpkswshs r0,r1,r2
+ b9c: 10 01 16 44 evpkuhubs r0,r1,r2
+ ba0: 10 01 16 45 evpkuwuhs r0,r1,r2
+ ba4: 10 01 16 46 evpkswshilvs r0,r1,r2
+ ba8: 10 01 16 47 evpkswgshefrs r0,r1,r2
+ bac: 10 01 16 48 evpkswshfrs r0,r1,r2
+ bb0: 10 01 16 49 evpkswshilvfrs r0,r1,r2
+ bb4: 10 01 16 4a evpksdswfrs r0,r1,r2
+ bb8: 10 01 16 4b evpksdshefrs r0,r1,r2
+ bbc: 10 01 16 4c evpkuduws r0,r1,r2
+ bc0: 10 01 16 4d evpksdsws r0,r1,r2
+ bc4: 10 01 16 4e evpkswgswfrs r0,r1,r2
+ bc8: 10 01 16 50 evilveh r0,r1,r2
+ bcc: 10 01 16 51 evilveoh r0,r1,r2
+ bd0: 10 01 16 52 evilvhih r0,r1,r2
+ bd4: 10 01 16 53 evilvhiloh r0,r1,r2
+ bd8: 10 01 16 54 evilvloh r0,r1,r2
+ bdc: 10 01 16 55 evilvlohih r0,r1,r2
+ be0: 10 01 16 56 evilvoeh r0,r1,r2
+ be4: 10 01 16 57 evilvoh r0,r1,r2
+ be8: 10 01 16 58 evdlveb r0,r1,r2
+ bec: 10 01 16 59 evdlveh r0,r1,r2
+ bf0: 10 01 16 5a evdlveob r0,r1,r2
+ bf4: 10 01 16 5b evdlveoh r0,r1,r2
+ bf8: 10 01 16 5c evdlvob r0,r1,r2
+ bfc: 10 01 16 5d evdlvoh r0,r1,r2
+ c00: 10 01 16 5e evdlvoeb r0,r1,r2
+ c04: 10 01 16 5f evdlvoeh r0,r1,r2
+ c08: 10 01 16 60 evmaxbu r0,r1,r2
+ c0c: 10 01 16 61 evmaxbs r0,r1,r2
+ c10: 10 01 16 62 evmaxhu r0,r1,r2
+ c14: 10 01 16 63 evmaxhs r0,r1,r2
+ c18: 10 01 16 64 evmaxwu r0,r1,r2
+ c1c: 10 01 16 65 evmaxws r0,r1,r2
+ c20: 10 01 16 66 evmaxdu r0,r1,r2
+ c24: 10 01 16 67 evmaxds r0,r1,r2
+ c28: 10 01 16 68 evminbu r0,r1,r2
+ c2c: 10 01 16 69 evminbs r0,r1,r2
+ c30: 10 01 16 6a evminhu r0,r1,r2
+ c34: 10 01 16 6b evminhs r0,r1,r2
+ c38: 10 01 16 6c evminwu r0,r1,r2
+ c3c: 10 01 16 6d evminws r0,r1,r2
+ c40: 10 01 16 6e evmindu r0,r1,r2
+ c44: 10 01 16 6f evminds r0,r1,r2
+ c48: 10 01 16 70 evavgwu r0,r1,r2
+ c4c: 10 01 16 71 evavgws r0,r1,r2
+ c50: 10 01 16 72 evavgbu r0,r1,r2
+ c54: 10 01 16 73 evavgbs r0,r1,r2
+ c58: 10 01 16 74 evavghu r0,r1,r2
+ c5c: 10 01 16 75 evavghs r0,r1,r2
+ c60: 10 01 16 76 evavgdu r0,r1,r2
+ c64: 10 01 16 77 evavgds r0,r1,r2
+ c68: 10 01 16 78 evavgwur r0,r1,r2
+ c6c: 10 01 16 79 evavgwsr r0,r1,r2
+ c70: 10 01 16 7a evavgbur r0,r1,r2
+ c74: 10 01 16 7b evavgbsr r0,r1,r2
+ c78: 10 01 16 7c evavghur r0,r1,r2
+ c7c: 10 01 16 7d evavghsr r0,r1,r2
+ c80: 10 01 16 7e evavgdur r0,r1,r2
+ c84: 10 01 16 7f evavgdsr r0,r1,r2
+ c88: 10 01 11 4d evdotphssmi r0,r1,r2
+ c8c: 10 01 11 6d evdotphssmia r0,r1,r2
+ c90: 10 01 11 cd evdotpwssmi r0,r1,r2
+ c94: 10 01 11 ed evdotpwssmia r0,r1,r2
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2.s binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2.s
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe2.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe2.s 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,838 @@
+# PA SPE2 instructions
+# Testcase for CMPE200GCC-5, CMPE200GCC-62
+
+ .section ".text"
+
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0
+ .equ rS,0
+ .equ UIMM, 31
+ .equ UIMM_LT8, 7
+ .equ UIMM_LT16, 15
+ .equ UIMM_1, 1
+ .equ UIMM_2, 2
+ .equ UIMM_4, 4
+ .equ UIMM_8, 8
+ .equ SIMM, -16
+ .equ crD, 0
+ .equ nnn, 7
+ .equ bbb, 7
+ .equ dd, 3
+ .equ Ddd, 7
+ .equ hh, 3
+ .equ mask, 15
+ .equ offset, 7
+
+ evdotpwcssi rD, rA, rB
+ evdotpwcsmi rD, rA, rB
+ evdotpwcssfr rD, rA, rB
+ evdotpwcssf rD, rA, rB
+ evdotpwgasmf rD, rA, rB
+ evdotpwxgasmf rD, rA, rB
+ evdotpwgasmfr rD, rA, rB
+ evdotpwxgasmfr rD, rA, rB
+ evdotpwgssmf rD, rA, rB
+ evdotpwxgssmf rD, rA, rB
+ evdotpwgssmfr rD, rA, rB
+ evdotpwxgssmfr rD, rA, rB
+ evdotpwcssiaaw3 rD, rA, rB
+ evdotpwcsmiaaw3 rD, rA, rB
+ evdotpwcssfraaw3 rD, rA, rB
+ evdotpwcssfaaw3 rD, rA, rB
+ evdotpwgasmfaa3 rD, rA, rB
+ evdotpwxgasmfaa3 rD, rA, rB
+ evdotpwgasmfraa3 rD, rA, rB
+ evdotpwxgasmfraa3 rD, rA, rB
+ evdotpwgssmfaa3 rD, rA, rB
+ evdotpwxgssmfaa3 rD, rA, rB
+ evdotpwgssmfraa3 rD, rA, rB
+ evdotpwxgssmfraa3 rD, rA, rB
+ evdotpwcssia rD, rA, rB
+ evdotpwcsmia rD, rA, rB
+ evdotpwcssfra rD, rA, rB
+ evdotpwcssfa rD, rA, rB
+ evdotpwgasmfa rD, rA, rB
+ evdotpwxgasmfa rD, rA, rB
+ evdotpwgasmfra rD, rA, rB
+ evdotpwxgasmfra rD, rA, rB
+ evdotpwgssmfa rD, rA, rB
+ evdotpwxgssmfa rD, rA, rB
+ evdotpwgssmfra rD, rA, rB
+ evdotpwxgssmfra rD, rA, rB
+ evdotpwcssiaaw rD, rA, rB
+ evdotpwcsmiaaw rD, rA, rB
+ evdotpwcssfraaw rD, rA, rB
+ evdotpwcssfaaw rD, rA, rB
+ evdotpwgasmfaa rD, rA, rB
+ evdotpwxgasmfaa rD, rA, rB
+ evdotpwgasmfraa rD, rA, rB
+ evdotpwxgasmfraa rD, rA, rB
+ evdotpwgssmfaa rD, rA, rB
+ evdotpwxgssmfaa rD, rA, rB
+ evdotpwgssmfraa rD, rA, rB
+ evdotpwxgssmfraa rD, rA, rB
+ evdotphihcssi rD, rA, rB
+ evdotplohcssi rD, rA, rB
+ evdotphihcssf rD, rA, rB
+ evdotplohcssf rD, rA, rB
+ evdotphihcsmi rD, rA, rB
+ evdotplohcsmi rD, rA, rB
+ evdotphihcssfr rD, rA, rB
+ evdotplohcssfr rD, rA, rB
+ evdotphihcssiaaw3 rD, rA, rB
+ evdotplohcssiaaw3 rD, rA, rB
+ evdotphihcssfaaw3 rD, rA, rB
+ evdotplohcssfaaw3 rD, rA, rB
+ evdotphihcsmiaaw3 rD, rA, rB
+ evdotplohcsmiaaw3 rD, rA, rB
+ evdotphihcssfraaw3 rD, rA, rB
+ evdotplohcssfraaw3 rD, rA, rB
+ evdotphihcssia rD, rA, rB
+ evdotplohcssia rD, rA, rB
+ evdotphihcssfa rD, rA, rB
+ evdotplohcssfa rD, rA, rB
+ evdotphihcsmia rD, rA, rB
+ evdotplohcsmia rD, rA, rB
+ evdotphihcssfra rD, rA, rB
+ evdotplohcssfra rD, rA, rB
+ evdotphihcssiaaw rD, rA, rB
+ evdotplohcssiaaw rD, rA, rB
+ evdotphihcssfaaw rD, rA, rB
+ evdotplohcssfaaw rD, rA, rB
+ evdotphihcsmiaaw rD, rA, rB
+ evdotplohcsmiaaw rD, rA, rB
+ evdotphihcssfraaw rD, rA, rB
+ evdotplohcssfraaw rD, rA, rB
+ evdotphausi rD, rA, rB
+ evdotphassi rD, rA, rB
+ evdotphasusi rD, rA, rB
+ evdotphassf rD, rA, rB
+ evdotphsssf rD, rA, rB
+ evdotphaumi rD, rA, rB
+ evdotphasmi rD, rA, rB
+ evdotphasumi rD, rA, rB
+ evdotphassfr rD, rA, rB
+ evdotphssmi rD, rA, rB
+ evdotphsssfr rD, rA, rB
+ evdotphausiaaw3 rD, rA, rB
+ evdotphassiaaw3 rD, rA, rB
+ evdotphasusiaaw3 rD, rA, rB
+ evdotphassfaaw3 rD, rA, rB
+ evdotphsssiaaw3 rD, rA, rB
+ evdotphsssfaaw3 rD, rA, rB
+ evdotphaumiaaw3 rD, rA, rB
+ evdotphasmiaaw3 rD, rA, rB
+ evdotphasumiaaw3 rD, rA, rB
+ evdotphassfraaw3 rD, rA, rB
+ evdotphssmiaaw3 rD, rA, rB
+ evdotphsssfraaw3 rD, rA, rB
+ evdotphausia rD, rA, rB
+ evdotphassia rD, rA, rB
+ evdotphasusia rD, rA, rB
+ evdotphassfa rD, rA, rB
+ evdotphsssfa rD, rA, rB
+ evdotphaumia rD, rA, rB
+ evdotphasmia rD, rA, rB
+ evdotphasumia rD, rA, rB
+ evdotphassfra rD, rA, rB
+ evdotphssmia rD, rA, rB
+ evdotphsssfra rD, rA, rB
+ evdotphausiaaw rD, rA, rB
+ evdotphassiaaw rD, rA, rB
+ evdotphasusiaaw rD, rA, rB
+ evdotphassfaaw rD, rA, rB
+ evdotphsssiaaw rD, rA, rB
+ evdotphsssfaaw rD, rA, rB
+ evdotphaumiaaw rD, rA, rB
+ evdotphasmiaaw rD, rA, rB
+ evdotphasumiaaw rD, rA, rB
+ evdotphassfraaw rD, rA, rB
+ evdotphssmiaaw rD, rA, rB
+ evdotphsssfraaw rD, rA, rB
+ evdotp4hgaumi rD, rA, rB
+ evdotp4hgasmi rD, rA, rB
+ evdotp4hgasumi rD, rA, rB
+ evdotp4hgasmf rD, rA, rB
+ evdotp4hgssmi rD, rA, rB
+ evdotp4hgssmf rD, rA, rB
+ evdotp4hxgasmi rD, rA, rB
+ evdotp4hxgasmf rD, rA, rB
+ evdotpbaumi rD, rA, rB
+ evdotpbasmi rD, rA, rB
+ evdotpbasumi rD, rA, rB
+ evdotp4hxgssmi rD, rA, rB
+ evdotp4hxgssmf rD, rA, rB
+ evdotp4hgaumiaa3 rD, rA, rB
+ evdotp4hgasmiaa3 rD, rA, rB
+ evdotp4hgasumiaa3 rD, rA, rB
+ evdotp4hgasmfaa3 rD, rA, rB
+ evdotp4hgssmiaa3 rD, rA, rB
+ evdotp4hgssmfaa3 rD, rA, rB
+ evdotp4hxgasmiaa3 rD, rA, rB
+ evdotp4hxgasmfaa3 rD, rA, rB
+ evdotpbaumiaaw3 rD, rA, rB
+ evdotpbasmiaaw3 rD, rA, rB
+ evdotpbasumiaaw3 rD, rA, rB
+ evdotp4hxgssmiaa3 rD, rA, rB
+ evdotp4hxgssmfaa3 rD, rA, rB
+ evdotp4hgaumia rD, rA, rB
+ evdotp4hgasmia rD, rA, rB
+ evdotp4hgasumia rD, rA, rB
+ evdotp4hgasmfa rD, rA, rB
+ evdotp4hgssmia rD, rA, rB
+ evdotp4hgssmfa rD, rA, rB
+ evdotp4hxgasmia rD, rA, rB
+ evdotp4hxgasmfa rD, rA, rB
+ evdotpbaumia rD, rA, rB
+ evdotpbasmia rD, rA, rB
+ evdotpbasumia rD, rA, rB
+ evdotp4hxgssmia rD, rA, rB
+ evdotp4hxgssmfa rD, rA, rB
+ evdotp4hgaumiaa rD, rA, rB
+ evdotp4hgasmiaa rD, rA, rB
+ evdotp4hgasumiaa rD, rA, rB
+ evdotp4hgasmfaa rD, rA, rB
+ evdotp4hgssmiaa rD, rA, rB
+ evdotp4hgssmfaa rD, rA, rB
+ evdotp4hxgasmiaa rD, rA, rB
+ evdotp4hxgasmfaa rD, rA, rB
+ evdotpbaumiaaw rD, rA, rB
+ evdotpbasmiaaw rD, rA, rB
+ evdotpbasumiaaw rD, rA, rB
+ evdotp4hxgssmiaa rD, rA, rB
+ evdotp4hxgssmfaa rD, rA, rB
+ evdotpwausi rD, rA, rB
+ evdotpwassi rD, rA, rB
+ evdotpwasusi rD, rA, rB
+ evdotpwaumi rD, rA, rB
+ evdotpwasmi rD, rA, rB
+ evdotpwasumi rD, rA, rB
+ evdotpwssmi rD, rA, rB
+ evdotpwausiaa3 rD, rA, rB
+ evdotpwassiaa3 rD, rA, rB
+ evdotpwasusiaa3 rD, rA, rB
+ evdotpwsssiaa3 rD, rA, rB
+ evdotpwaumiaa3 rD, rA, rB
+ evdotpwasmiaa3 rD, rA, rB
+ evdotpwasumiaa3 rD, rA, rB
+ evdotpwssmiaa3 rD, rA, rB
+ evdotpwausia rD, rA, rB
+ evdotpwassia rD, rA, rB
+ evdotpwasusia rD, rA, rB
+ evdotpwaumia rD, rA, rB
+ evdotpwasmia rD, rA, rB
+ evdotpwasumia rD, rA, rB
+ evdotpwssmia rD, rA, rB
+ evdotpwausiaa rD, rA, rB
+ evdotpwassiaa rD, rA, rB
+ evdotpwasusiaa rD, rA, rB
+ evdotpwsssiaa rD, rA, rB
+ evdotpwaumiaa rD, rA, rB
+ evdotpwasmiaa rD, rA, rB
+ evdotpwasumiaa rD, rA, rB
+ evdotpwssmiaa rD, rA, rB
+ evaddib rD, rB, UIMM
+ evaddih rD, rB, UIMM
+ evsubifh rD, UIMM, rB
+ evsubifb rD, UIMM, rB
+ evabsb rD, rA
+ evabsh rD, rA
+ evabsd rD, rA
+ evabss rD, rA
+ evabsbs rD, rA
+ evabshs rD, rA
+ evabsds rD, rA
+ evnegwo rD, rA
+ evnegb rD, rA
+ evnegbo rD, rA
+ evnegh rD, rA
+ evnegho rD, rA
+ evnegd rD, rA
+ evnegs rD, rA
+ evnegwos rD, rA
+ evnegbs rD, rA
+ evnegbos rD, rA
+ evneghs rD, rA
+ evneghos rD, rA
+ evnegds rD, rA
+ evextzb rD, rA
+ evextsbh rD, rA
+ evextsw rD, rA
+ evrndwh rD, rA
+ evrndhb rD, rA
+ evrnddw rD, rA
+ evrndwhus rD, rA
+ evrndwhss rD, rA
+ evrndhbus rD, rA
+ evrndhbss rD, rA
+ evrnddwus rD, rA
+ evrnddwss rD, rA
+ evrndwnh rD, rA
+ evrndhnb rD, rA
+ evrnddnw rD, rA
+ evrndwnhus rD, rA
+ evrndwnhss rD, rA
+ evrndhnbus rD, rA
+ evrndhnbss rD, rA
+ evrnddnwus rD, rA
+ evrnddnwss rD, rA
+ evcntlzh rD, rA
+ evcntlsh rD, rA
+ evpopcntb rD, rA
+ circinc rD, rA, rB
+ evunpkhibui rD, rA
+ evunpkhibsi rD, rA
+ evunpkhihui rD, rA
+ evunpkhihsi rD, rA
+ evunpklobui rD, rA
+ evunpklobsi rD, rA
+ evunpklohui rD, rA
+ evunpklohsi rD, rA
+ evunpklohf rD, rA
+ evunpkhihf rD, rA
+ evunpklowgsf rD, rA
+ evunpkhiwgsf rD, rA
+ evsatsduw rD, rA
+ evsatsdsw rD, rA
+ evsatshub rD, rA
+ evsatshsb rD, rA
+ evsatuwuh rD, rA
+ evsatswsh rD, rA
+ evsatswuh rD, rA
+ evsatuhub rD, rA
+ evsatuduw rD, rA
+ evsatuwsw rD, rA
+ evsatshuh rD, rA
+ evsatuhsh rD, rA
+ evsatswuw rD, rA
+ evsatswgsdf rD, rA
+ evsatsbub rD, rA
+ evsatubsb rD, rA
+ evmaxhpuw rD, rA
+ evmaxhpsw rD, rA
+ evmaxbpuh rD, rA
+ evmaxbpsh rD, rA
+ evmaxwpud rD, rA
+ evmaxwpsd rD, rA
+ evminhpuw rD, rA
+ evminhpsw rD, rA
+ evminbpuh rD, rA
+ evminbpsh rD, rA
+ evminwpud rD, rA
+ evminwpsd rD, rA
+ evmaxmagws rD, rA, rB
+ evsl rD, rA, rB
+ evsli rD, rA, UIMM
+ evsplatie rD, SIMM
+ evsplatib rD, SIMM
+ evsplatibe rD, SIMM
+ evsplatih rD, SIMM
+ evsplatihe rD, SIMM
+ evsplatid rD, SIMM
+ evsplatia rD, SIMM
+ evsplatiea rD, SIMM
+ evsplatiba rD, SIMM
+ evsplatibea rD, SIMM
+ evsplatiha rD, SIMM
+ evsplatihea rD, SIMM
+ evsplatida rD, SIMM
+ evsplatfio rD, SIMM
+ evsplatfib rD, SIMM
+ evsplatfibo rD, SIMM
+ evsplatfih rD, SIMM
+ evsplatfiho rD, SIMM
+ evsplatfid rD, SIMM
+ evsplatfia rD, SIMM
+ evsplatfioa rD, SIMM
+ evsplatfiba rD, SIMM
+ evsplatfiboa rD, SIMM
+ evsplatfiha rD, SIMM
+ evsplatfihoa rD, SIMM
+ evsplatfida rD, SIMM
+ evcmpgtdu crD, rA, rB
+ evcmpgtds crD, rA, rB
+ evcmpltdu crD, rA, rB
+ evcmpltds crD, rA, rB
+ evcmpeqd crD, rA, rB
+ evswapbhilo rD, rA, rB
+ evswapblohi rD, rA, rB
+ evswaphhilo rD, rA, rB
+ evswaphlohi rD, rA, rB
+ evswaphe rD, rA, rB
+ evswaphhi rD, rA, rB
+ evswaphlo rD, rA, rB
+ evswapho rD, rA, rB
+ evinsb rD, rA, Ddd, bbb
+ evxtrb rD, rA, Ddd, bbb
+ evsplath rD, rA, hh
+ evsplatb rD, rA, bbb
+ evinsh rD, rA, dd, hh
+ evclrbe rD, rA, mask
+ evclrbo rD, rA, mask
+ evclrh rD, rA, mask
+ evxtrh rD, rA, dd, hh
+ evselbitm0 rD, rA, rB
+ evselbitm1 rD, rA, rB
+ evselbit rD, rA, rB
+ evperm rD, rA, rB
+ evperm2 rD, rA, rB
+ evperm3 rD, rA, rB
+ evxtrd rD, rA, rB, offset
+ evsrbu rD, rA, rB
+ evsrbs rD, rA, rB
+ evsrbiu rD, rA, UIMM_LT8
+ evsrbis rD, rA, UIMM_LT8
+ evslb rD, rA, rB
+ evrlb rD, rA, rB
+ evslbi rD, rA, UIMM_LT8
+ evrlbi rD, rA, UIMM_LT8
+ evsrhu rD, rA, rB
+ evsrhs rD, rA, rB
+ evsrhiu rD, rA, UIMM_LT16
+ evsrhis rD, rA, UIMM_LT16
+ evslh rD, rA, rB
+ evrlh rD, rA, rB
+ evslhi rD, rA, UIMM_LT16
+ evrlhi rD, rA, UIMM_LT16
+ evsru rD, rA, rB
+ evsrs rD, rA, rB
+ evsriu rD, rA, UIMM
+ evsris rD, rA, UIMM
+ evlvsl rD, rA, rB
+ evlvsr rD, rA, rB
+ evsroiu rD, rA, nnn
+ evsrois rD, rA, nnn
+ evsloi rD, rA, nnn
+ evfssqrt rD, rA
+ evfscfh rD, rB
+ evfscth rD, rB
+ evfsmax rD, rA, rB
+ evfsmin rD, rA, rB
+ evfsaddsub rD, rA, rB
+ evfssubadd rD, rA, rB
+ evfssum rD, rA, rB
+ evfsdiff rD, rA, rB
+ evfssumdiff rD, rA, rB
+ evfsdiffsum rD, rA, rB
+ evfsaddx rD, rA, rB
+ evfssubx rD, rA, rB
+ evfsaddsubx rD, rA, rB
+ evfssubaddx rD, rA, rB
+ evfsmulx rD, rA, rB
+ evfsmule rD, rA, rB
+ evfsmulo rD, rA, rB
+ evldbx rD, rA, rB
+ evldb rD, UIMM_8 (rA)
+ evlhhsplathx rD, rA, rB
+ evlhhsplath rD, UIMM_2 (rA)
+ evlwbsplatwx rD, rA, rB
+ evlwbsplatw rD, UIMM_4 (rA)
+ evlwhsplatwx rD, rA, rB
+ evlwhsplatw rD, UIMM_4 (rA)
+ evlbbsplatbx rD, rA, rB
+ evlbbsplatb rD, UIMM_1 (rA)
+ evstdbx rS, rA, rB
+ evstdb rS, UIMM_8 (rA)
+ evlwbex rD, rA, rB
+ evlwbe rD, UIMM_4 (rA)
+ evlwboux rD, rA, rB
+ evlwbou rD, UIMM_4 (rA)
+ evlwbosx rD, rA, rB
+ evlwbos rD, UIMM_4 (rA)
+ evstwbex rS, rA, rB
+ evstwbe rS, UIMM_4 (rA)
+ evstwbox rS, rA, rB
+ evstwbo rS, UIMM_4 (rA)
+ evstwbx rS, rA, rB
+ evstwb rS, UIMM_4 (rA)
+ evsthbx rS, rA, rB
+ evsthb rS, UIMM_2 (rA)
+ evlddmx rD, rA, rB
+ evlddu rD, UIMM_8 (rA)
+ evldwmx rD, rA, rB
+ evldwu rD, UIMM_8 (rA)
+ evldhmx rD, rA, rB
+ evldhu rD, UIMM_8 (rA)
+ evldbmx rD, rA, rB
+ evldbu rD, UIMM_8 (rA)
+ evlhhesplatmx rD, rA, rB
+ evlhhesplatu rD, UIMM_2 (rA)
+ evlhhsplathmx rD, rA, rB
+ evlhhsplathu rD, UIMM_2 (rA)
+ evlhhousplatmx rD, rA, rB
+ evlhhousplatu rD, UIMM_2 (rA)
+ evlhhossplatmx rD, rA, rB
+ evlhhossplatu rD, UIMM_2 (rA)
+ evlwhemx rD, rA, rB
+ evlwheu rD, UIMM_4 (rA)
+ evlwbsplatwmx rD, rA, rB
+ evlwbsplatwu rD, UIMM_4 (rA)
+ evlwhoumx rD, rA, rB
+ evlwhouu rD, UIMM_4 (rA)
+ evlwhosmx rD, rA, rB
+ evlwhosu rD, UIMM_4 (rA)
+ evlwwsplatmx rD, rA, rB
+ evlwwsplatu rD, UIMM_4 (rA)
+ evlwhsplatwmx rD, rA, rB
+ evlwhsplatwu rD, UIMM_4 (rA)
+ evlwhsplatmx rD, rA, rB
+ evlwhsplatu rD, UIMM_4 (rA)
+ evlbbsplatbmx rD, rA, rB
+ evlbbsplatbu rD, UIMM_1 (rA)
+ evstddmx rS, rA, rB
+ evstddu rS, UIMM_8 (rA)
+ evstdwmx rS, rA, rB
+ evstdwu rS, UIMM_8 (rA)
+ evstdhmx rS, rA, rB
+ evstdhu rS, UIMM_8 (rA)
+ evstdbmx rS, rA, rB
+ evstdbu rS, UIMM_8 (rA)
+ evlwbemx rD, rA, rB
+ evlwbeu rD, UIMM_4 (rA)
+ evlwboumx rD, rA, rB
+ evlwbouu rD, UIMM_4 (rA)
+ evlwbosmx rD, rA, rB
+ evlwbosu rD, UIMM_4 (rA)
+ evstwhemx rS, rA, rB
+ evstwheu rS, UIMM_4 (rA)
+ evstwbemx rS, rA, rB
+ evstwbeu rS, UIMM_4 (rA)
+ evstwhomx rS, rA, rB
+ evstwhou rS, UIMM_4 (rA)
+ evstwbomx rS, rA, rB
+ evstwbou rS, UIMM_4 (rA)
+ evstwwemx rS, rA, rB
+ evstwweu rS, UIMM_4 (rA)
+ evstwbmx rS, rA, rB
+ evstwbu rS, UIMM_4 (rA)
+ evstwwomx rS, rA, rB
+ evstwwou rS, UIMM_4 (rA)
+ evsthbmx rS, rA, rB
+ evsthbu rS, UIMM_2 (rA)
+ evmhusi rD, rA, rB
+ evmhssi rD, rA, rB
+ evmhsusi rD, rA, rB
+ evmhssf rD, rA, rB
+ evmhumi rD, rA, rB
+ evmhssfr rD, rA, rB
+ evmhesumi rD, rA, rB
+ evmhosumi rD, rA, rB
+ evmbeumi rD, rA, rB
+ evmbesmi rD, rA, rB
+ evmbesumi rD, rA, rB
+ evmboumi rD, rA, rB
+ evmbosmi rD, rA, rB
+ evmbosumi rD, rA, rB
+ evmhesumia rD, rA, rB
+ evmhosumia rD, rA, rB
+ evmbeumia rD, rA, rB
+ evmbesmia rD, rA, rB
+ evmbesumia rD, rA, rB
+ evmboumia rD, rA, rB
+ evmbosmia rD, rA, rB
+ evmbosumia rD, rA, rB
+ evmwusiw rD, rA, rB
+ evmwssiw rD, rA, rB
+ evmwhssfr rD, rA, rB
+ evmwehgsmfr rD, rA, rB
+ evmwehgsmf rD, rA, rB
+ evmwohgsmfr rD, rA, rB
+ evmwohgsmf rD, rA, rB
+ evmwhssfra rD, rA, rB
+ evmwehgsmfra rD, rA, rB
+ evmwehgsmfa rD, rA, rB
+ evmwohgsmfra rD, rA, rB
+ evmwohgsmfa rD, rA, rB
+ evaddusiaa rD, rA
+ evaddssiaa rD, rA
+ evsubfusiaa rD, rA
+ evsubfssiaa rD, rA
+ evaddsmiaa rD, rA
+ evsubfsmiaa rD, rA
+ evaddh rD, rA, rB
+ evaddhss rD, rA, rB
+ evsubfh rD, rA, rB
+ evsubfhss rD, rA, rB
+ evaddhx rD, rA, rB
+ evaddhxss rD, rA, rB
+ evsubfhx rD, rA, rB
+ evsubfhxss rD, rA, rB
+ evaddd rD, rA, rB
+ evadddss rD, rA, rB
+ evsubfd rD, rA, rB
+ evsubfdss rD, rA, rB
+ evaddb rD, rA, rB
+ evaddbss rD, rA, rB
+ evsubfb rD, rA, rB
+ evsubfbss rD, rA, rB
+ evaddsubfh rD, rA, rB
+ evaddsubfhss rD, rA, rB
+ evsubfaddh rD, rA, rB
+ evsubfaddhss rD, rA, rB
+ evaddsubfhx rD, rA, rB
+ evaddsubfhxss rD, rA, rB
+ evsubfaddhx rD, rA, rB
+ evsubfaddhxss rD, rA, rB
+ evadddus rD, rA, rB
+ evaddbus rD, rA, rB
+ evsubfdus rD, rA, rB
+ evsubfbus rD, rA, rB
+ evaddwus rD, rA, rB
+ evaddwxus rD, rA, rB
+ evsubfwus rD, rA, rB
+ evsubfwxus rD, rA, rB
+ evadd2subf2h rD, rA, rB
+ evadd2subf2hss rD, rA, rB
+ evsubf2add2h rD, rA, rB
+ evsubf2add2hss rD, rA, rB
+ evaddhus rD, rA, rB
+ evaddhxus rD, rA, rB
+ evsubfhus rD, rA, rB
+ evsubfhxus rD, rA, rB
+ evaddwss rD, rA, rB
+ evsubfwss rD, rA, rB
+ evaddwx rD, rA, rB
+ evaddwxss rD, rA, rB
+ evsubfwx rD, rA, rB
+ evsubfwxss rD, rA, rB
+ evaddsubfw rD, rA, rB
+ evaddsubfwss rD, rA, rB
+ evsubfaddw rD, rA, rB
+ evsubfaddwss rD, rA, rB
+ evaddsubfwx rD, rA, rB
+ evaddsubfwxss rD, rA, rB
+ evsubfaddwx rD, rA, rB
+ evsubfaddwxss rD, rA, rB
+ evmar rD
+ evsumwu rD, rA
+ evsumws rD, rA
+ evsum4bu rD, rA
+ evsum4bs rD, rA
+ evsum2hu rD, rA
+ evsum2hs rD, rA
+ evdiff2his rD, rA
+ evsum2his rD, rA
+ evsumwua rD, rA
+ evsumwsa rD, rA
+ evsum4bua rD, rA
+ evsum4bsa rD, rA
+ evsum2hua rD, rA
+ evsum2hsa rD, rA
+ evdiff2hisa rD, rA
+ evsum2hisa rD, rA
+ evsumwuaa rD, rA
+ evsumwsaa rD, rA
+ evsum4buaaw rD, rA
+ evsum4bsaaw rD, rA
+ evsum2huaaw rD, rA
+ evsum2hsaaw rD, rA
+ evdiff2hisaaw rD, rA
+ evsum2hisaaw rD, rA
+ evdivwsf rD, rA, rB
+ evdivwuf rD, rA, rB
+ evdivs rD, rA, rB
+ evdivu rD, rA, rB
+ evaddwegsi rD, rA, rB
+ evaddwegsf rD, rA, rB
+ evsubfwegsi rD, rA, rB
+ evsubfwegsf rD, rA, rB
+ evaddwogsi rD, rA, rB
+ evaddwogsf rD, rA, rB
+ evsubfwogsi rD, rA, rB
+ evsubfwogsf rD, rA, rB
+ evaddhhiuw rD, rA, rB
+ evaddhhisw rD, rA, rB
+ evsubfhhiuw rD, rA, rB
+ evsubfhhisw rD, rA, rB
+ evaddhlouw rD, rA, rB
+ evaddhlosw rD, rA, rB
+ evsubfhlouw rD, rA, rB
+ evsubfhlosw rD, rA, rB
+ evmhesusiaaw rD, rA, rB
+ evmhosusiaaw rD, rA, rB
+ evmhesumiaaw rD, rA, rB
+ evmhosumiaaw rD, rA, rB
+ evmbeusiaah rD, rA, rB
+ evmbessiaah rD, rA, rB
+ evmbesusiaah rD, rA, rB
+ evmbousiaah rD, rA, rB
+ evmbossiaah rD, rA, rB
+ evmbosusiaah rD, rA, rB
+ evmbeumiaah rD, rA, rB
+ evmbesmiaah rD, rA, rB
+ evmbesumiaah rD, rA, rB
+ evmboumiaah rD, rA, rB
+ evmbosmiaah rD, rA, rB
+ evmbosumiaah rD, rA, rB
+ evmwlusiaaw3 rD, rA, rB
+ evmwlssiaaw3 rD, rA, rB
+ evmwhssfraaw3 rD, rA, rB
+ evmwhssfaaw3 rD, rA, rB
+ evmwhssfraaw rD, rA, rB
+ evmwhssfaaw rD, rA, rB
+ evmwlumiaaw3 rD, rA, rB
+ evmwlsmiaaw3 rD, rA, rB
+ evmwusiaa rD, rA, rB
+ evmwssiaa rD, rA, rB
+ evmwehgsmfraa rD, rA, rB
+ evmwehgsmfaa rD, rA, rB
+ evmwohgsmfraa rD, rA, rB
+ evmwohgsmfaa rD, rA, rB
+ evmhesusianw rD, rA, rB
+ evmhosusianw rD, rA, rB
+ evmhesumianw rD, rA, rB
+ evmhosumianw rD, rA, rB
+ evmbeusianh rD, rA, rB
+ evmbessianh rD, rA, rB
+ evmbesusianh rD, rA, rB
+ evmbousianh rD, rA, rB
+ evmbossianh rD, rA, rB
+ evmbosusianh rD, rA, rB
+ evmbeumianh rD, rA, rB
+ evmbesmianh rD, rA, rB
+ evmbesumianh rD, rA, rB
+ evmboumianh rD, rA, rB
+ evmbosmianh rD, rA, rB
+ evmbosumianh rD, rA, rB
+ evmwlusianw3 rD, rA, rB
+ evmwlssianw3 rD, rA, rB
+ evmwhssfranw3 rD, rA, rB
+ evmwhssfanw3 rD, rA, rB
+ evmwhssfranw rD, rA, rB
+ evmwhssfanw rD, rA, rB
+ evmwlumianw3 rD, rA, rB
+ evmwlsmianw3 rD, rA, rB
+ evmwusian rD, rA, rB
+ evmwssian rD, rA, rB
+ evmwehgsmfran rD, rA, rB
+ evmwehgsmfan rD, rA, rB
+ evmwohgsmfran rD, rA, rB
+ evmwohgsmfan rD, rA, rB
+ evseteqb rD, rA, rB
+ evseteqb. rD, rA, rB
+ evseteqh rD, rA, rB
+ evseteqh. rD, rA, rB
+ evseteqw rD, rA, rB
+ evseteqw. rD, rA, rB
+ evsetgthu rD, rA, rB
+ evsetgthu. rD, rA, rB
+ evsetgths rD, rA, rB
+ evsetgths. rD, rA, rB
+ evsetgtwu rD, rA, rB
+ evsetgtwu. rD, rA, rB
+ evsetgtws rD, rA, rB
+ evsetgtws. rD, rA, rB
+ evsetgtbu rD, rA, rB
+ evsetgtbu. rD, rA, rB
+ evsetgtbs rD, rA, rB
+ evsetgtbs. rD, rA, rB
+ evsetltbu rD, rA, rB
+ evsetltbu. rD, rA, rB
+ evsetltbs rD, rA, rB
+ evsetltbs. rD, rA, rB
+ evsetlthu rD, rA, rB
+ evsetlthu. rD, rA, rB
+ evsetlths rD, rA, rB
+ evsetlths. rD, rA, rB
+ evsetltwu rD, rA, rB
+ evsetltwu. rD, rA, rB
+ evsetltws rD, rA, rB
+ evsetltws. rD, rA, rB
+ evsaduw rD, rA, rB
+ evsadsw rD, rA, rB
+ evsad4ub rD, rA, rB
+ evsad4sb rD, rA, rB
+ evsad2uh rD, rA, rB
+ evsad2sh rD, rA, rB
+ evsaduwa rD, rA, rB
+ evsadswa rD, rA, rB
+ evsad4uba rD, rA, rB
+ evsad4sba rD, rA, rB
+ evsad2uha rD, rA, rB
+ evsad2sha rD, rA, rB
+ evabsdifuw rD, rA, rB
+ evabsdifsw rD, rA, rB
+ evabsdifub rD, rA, rB
+ evabsdifsb rD, rA, rB
+ evabsdifuh rD, rA, rB
+ evabsdifsh rD, rA, rB
+ evsaduwaa rD, rA, rB
+ evsadswaa rD, rA, rB
+ evsad4ubaaw rD, rA, rB
+ evsad4sbaaw rD, rA, rB
+ evsad2uhaaw rD, rA, rB
+ evsad2shaaw rD, rA, rB
+ evpkshubs rD, rA, rB
+ evpkshsbs rD, rA, rB
+ evpkswuhs rD, rA, rB
+ evpkswshs rD, rA, rB
+ evpkuhubs rD, rA, rB
+ evpkuwuhs rD, rA, rB
+ evpkswshilvs rD, rA, rB
+ evpkswgshefrs rD, rA, rB
+ evpkswshfrs rD, rA, rB
+ evpkswshilvfrs rD, rA, rB
+ evpksdswfrs rD, rA, rB
+ evpksdshefrs rD, rA, rB
+ evpkuduws rD, rA, rB
+ evpksdsws rD, rA, rB
+ evpkswgswfrs rD, rA, rB
+ evilveh rD, rA, rB
+ evilveoh rD, rA, rB
+ evilvhih rD, rA, rB
+ evilvhiloh rD, rA, rB
+ evilvloh rD, rA, rB
+ evilvlohih rD, rA, rB
+ evilvoeh rD, rA, rB
+ evilvoh rD, rA, rB
+ evdlveb rD, rA, rB
+ evdlveh rD, rA, rB
+ evdlveob rD, rA, rB
+ evdlveoh rD, rA, rB
+ evdlvob rD, rA, rB
+ evdlvoh rD, rA, rB
+ evdlvoeb rD, rA, rB
+ evdlvoeh rD, rA, rB
+ evmaxbu rD, rA, rB
+ evmaxbs rD, rA, rB
+ evmaxhu rD, rA, rB
+ evmaxhs rD, rA, rB
+ evmaxwu rD, rA, rB
+ evmaxws rD, rA, rB
+ evmaxdu rD, rA, rB
+ evmaxds rD, rA, rB
+ evminbu rD, rA, rB
+ evminbs rD, rA, rB
+ evminhu rD, rA, rB
+ evminhs rD, rA, rB
+ evminwu rD, rA, rB
+ evminws rD, rA, rB
+ evmindu rD, rA, rB
+ evminds rD, rA, rB
+ evavgwu rD, rA, rB
+ evavgws rD, rA, rB
+ evavgbu rD, rA, rB
+ evavgbs rD, rA, rB
+ evavghu rD, rA, rB
+ evavghs rD, rA, rB
+ evavgdu rD, rA, rB
+ evavgds rD, rA, rB
+ evavgwur rD, rA, rB
+ evavgwsr rD, rA, rB
+ evavgbur rD, rA, rB
+ evavgbsr rD, rA, rB
+ evavghur rD, rA, rB
+ evavghsr rD, rA, rB
+ evavgdur rD, rA, rB
+ evavgdsr rD, rA, rB
+
+;#SPE2 mapped by macro
+ evdotphsssi rD, rA, rB
+ evdotphsssia rD, rA, rB
+ evdotpwsssi rD, rA, rB
+ evdotpwsssia rD, rA, rB
+
+
+
+
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe_ambiguous.d binutils-2.28-spe2/gas/testsuite/gas/ppc/spe_ambiguous.d
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe_ambiguous.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe_ambiguous.d 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,15 @@
+#as: -mvle
+#objdump: -d -Mspe
+#name: Validate SPE instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 10 01 12 04 evsubfw r0,r1,r2
+ 4: 10 01 12 04 evsubw r0,r2,r1
+ 8: 10 1f 12 06 evsubifw r0,31,r2
+ c: 10 1f 12 06 evsubiw r0,r2,31
+ 10: 10 01 12 18 evnor r0,r1,r2
+ 14: 10 01 0a 18 evnot r0,r1
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe_ambiguous.s binutils-2.28-spe2/gas/testsuite/gas/ppc/spe_ambiguous.s
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe_ambiguous.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe_ambiguous.s 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,21 @@
+# PA SPE instructions
+ .section ".text"
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0
+ .equ rS,0
+ .equ rT,0
+ .equ UIMM, 31
+ .equ UIMM_2, 2
+ .equ UIMM_4, 4
+ .equ UIMM_8, 8
+ .equ SIMM, -16
+ .equ crD, 0
+ .equ crS, 0
+
+ evsubfw rS, rA, rB
+ evsubw rS, rB, rA
+ evsubifw rS, UIMM, rB
+ evsubiw rS, rB, UIMM
+ evnor rS, rA, rB
+ evnot rS, rA
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe.d binutils-2.28-spe2/gas/testsuite/gas/ppc/spe.d
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe.d 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,267 @@
+#as: -mvle
+#objdump: -d -Mspe
+#name: Validate SPE instructions
+
+.*: +file format elf.*-powerpc.*
+
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 10 01 12 00 evaddw r0,r1,r2
+ 4: 10 1f 12 02 evaddiw r0,r2,31
+ 8: 10 01 12 04 evsubfw r0,r1,r2
+ c: 10 01 12 04 evsubfw r0,r1,r2
+ 10: 10 1f 12 06 evsubifw r0,31,r2
+ 14: 10 1f 12 06 evsubifw r0,31,r2
+ 18: 10 01 02 08 evabs r0,r1
+ 1c: 10 01 02 09 evneg r0,r1
+ 20: 10 01 02 0a evextsb r0,r1
+ 24: 10 01 02 0b evextsh r0,r1
+ 28: 10 01 02 0c evrndw r0,r1
+ 2c: 10 01 02 0d evcntlzw r0,r1
+ 30: 10 01 02 0e evcntlsw r0,r1
+ 34: 10 01 12 0f brinc r0,r1,r2
+ 38: 10 01 12 11 evand r0,r1,r2
+ 3c: 10 01 12 12 evandc r0,r1,r2
+ 40: 10 01 12 16 evxor r0,r1,r2
+ 44: 10 01 0a 17 evmr r0,r1
+ 48: 10 01 12 17 evor r0,r1,r2
+ 4c: 10 01 12 18 evnor r0,r1,r2
+ 50: 10 01 0a 18 evnor r0,r1,r1
+ 54: 10 01 12 19 eveqv r0,r1,r2
+ 58: 10 01 12 1b evorc r0,r1,r2
+ 5c: 10 01 12 1e evnand r0,r1,r2
+ 60: 10 01 12 20 evsrwu r0,r1,r2
+ 64: 10 01 12 21 evsrws r0,r1,r2
+ 68: 10 01 fa 22 evsrwiu r0,r1,31
+ 6c: 10 01 fa 23 evsrwis r0,r1,31
+ 70: 10 01 12 24 evslw r0,r1,r2
+ 74: 10 01 fa 26 evslwi r0,r1,31
+ 78: 10 01 12 28 evrlw r0,r1,r2
+ 7c: 10 10 02 29 evsplati r0,-16
+ 80: 10 01 fa 2a evrlwi r0,r1,31
+ 84: 10 10 02 2b evsplatfi r0,-16
+ 88: 10 01 12 2c evmergehi r0,r1,r2
+ 8c: 10 01 12 2d evmergelo r0,r1,r2
+ 90: 10 01 12 2e evmergehilo r0,r1,r2
+ 94: 10 01 12 2f evmergelohi r0,r1,r2
+ 98: 10 01 12 30 evcmpgtu cr0,r1,r2
+ 9c: 10 01 12 31 evcmpgts cr0,r1,r2
+ a0: 10 01 12 32 evcmpltu cr0,r1,r2
+ a4: 10 01 12 33 evcmplts cr0,r1,r2
+ a8: 10 01 12 34 evcmpeq cr0,r1,r2
+ ac: 10 01 12 78 evsel r0,r1,r2,cr0
+ b0: 10 01 12 80 evfsadd r0,r1,r2
+ b4: 10 01 12 81 evfssub r0,r1,r2
+ b8: 10 01 12 82 evfsmadd r0,r1,r2
+ bc: 10 01 12 83 evfsmsub r0,r1,r2
+ c0: 10 01 02 84 evfsabs r0,r1
+ c4: 10 01 02 85 evfsnabs r0,r1
+ c8: 10 01 02 86 evfsneg r0,r1
+ cc: 10 01 12 88 evfsmul r0,r1,r2
+ d0: 10 01 12 89 evfsdiv r0,r1,r2
+ d4: 10 01 12 8a evfsnmadd r0,r1,r2
+ d8: 10 01 12 8b evfsnmsub r0,r1,r2
+ dc: 10 01 12 8c evfscmpgt cr0,r1,r2
+ e0: 10 01 12 8d evfscmplt cr0,r1,r2
+ e4: 10 01 12 8e evfscmpeq cr0,r1,r2
+ e8: 10 00 12 90 evfscfui r0,r2
+ ec: 10 00 12 91 evfscfsi r0,r2
+ f0: 10 00 12 92 evfscfuf r0,r2
+ f4: 10 00 12 93 evfscfsf r0,r2
+ f8: 10 00 12 94 evfsctui r0,r2
+ fc: 10 00 12 95 evfsctsi r0,r2
+ 100: 10 00 12 96 evfsctuf r0,r2
+ 104: 10 00 12 97 evfsctsf r0,r2
+ 108: 10 00 12 98 evfsctuiz r0,r2
+ 10c: 10 00 12 9a evfsctsiz r0,r2
+ 110: 10 01 12 9c evfststgt cr0,r1,r2
+ 114: 10 01 12 9d evfststlt cr0,r1,r2
+ 118: 10 01 12 9e evfststeq cr0,r1,r2
+ 11c: 10 01 13 00 evlddx r0,r1,r2
+ 120: 10 01 0b 01 evldd r0,8\(r1\)
+ 124: 10 01 13 02 evldwx r0,r1,r2
+ 128: 10 01 0b 03 evldw r0,8\(r1\)
+ 12c: 10 01 13 04 evldhx r0,r1,r2
+ 130: 10 01 0b 05 evldh r0,8\(r1\)
+ 134: 10 01 13 08 evlhhesplatx r0,r1,r2
+ 138: 10 01 0b 09 evlhhesplat r0,2\(r1\)
+ 13c: 10 01 13 0c evlhhousplatx r0,r1,r2
+ 140: 10 01 0b 0d evlhhousplat r0,2\(r1\)
+ 144: 10 01 13 0e evlhhossplatx r0,r1,r2
+ 148: 10 01 0b 0f evlhhossplat r0,2\(r1\)
+ 14c: 10 01 13 10 evlwhex r0,r1,r2
+ 150: 10 01 0b 11 evlwhe r0,4\(r1\)
+ 154: 10 01 13 14 evlwhoux r0,r1,r2
+ 158: 10 01 0b 15 evlwhou r0,4\(r1\)
+ 15c: 10 01 13 16 evlwhosx r0,r1,r2
+ 160: 10 01 0b 17 evlwhos r0,4\(r1\)
+ 164: 10 01 13 18 evlwwsplatx r0,r1,r2
+ 168: 10 01 0b 19 evlwwsplat r0,4\(r1\)
+ 16c: 10 01 13 1c evlwhsplatx r0,r1,r2
+ 170: 10 01 0b 1d evlwhsplat r0,4\(r1\)
+ 174: 10 01 13 20 evstddx r0,r1,r2
+ 178: 10 01 0b 21 evstdd r0,8\(r1\)
+ 17c: 10 01 13 22 evstdwx r0,r1,r2
+ 180: 10 01 0b 23 evstdw r0,8\(r1\)
+ 184: 10 01 13 24 evstdhx r0,r1,r2
+ 188: 10 01 0b 25 evstdh r0,8\(r1\)
+ 18c: 10 01 13 30 evstwhex r0,r1,r2
+ 190: 10 01 0b 31 evstwhe r0,4\(r1\)
+ 194: 10 01 13 34 evstwhox r0,r1,r2
+ 198: 10 01 0b 35 evstwho r0,4\(r1\)
+ 19c: 10 01 13 38 evstwwex r0,r1,r2
+ 1a0: 10 01 0b 39 evstwwe r0,4\(r1\)
+ 1a4: 10 01 13 3c evstwwox r0,r1,r2
+ 1a8: 10 01 0b 3d evstwwo r0,4\(r1\)
+ 1ac: 10 01 14 03 evmhessf r0,r1,r2
+ 1b0: 10 01 14 07 evmhossf r0,r1,r2
+ 1b4: 10 01 14 08 evmheumi r0,r1,r2
+ 1b8: 10 01 14 09 evmhesmi r0,r1,r2
+ 1bc: 10 01 14 0b evmhesmf r0,r1,r2
+ 1c0: 10 01 14 0c evmhoumi r0,r1,r2
+ 1c4: 10 01 14 0d evmhosmi r0,r1,r2
+ 1c8: 10 01 14 0f evmhosmf r0,r1,r2
+ 1cc: 10 01 14 23 evmhessfa r0,r1,r2
+ 1d0: 10 01 14 27 evmhossfa r0,r1,r2
+ 1d4: 10 01 14 28 evmheumia r0,r1,r2
+ 1d8: 10 01 14 29 evmhesmia r0,r1,r2
+ 1dc: 10 01 14 2b evmhesmfa r0,r1,r2
+ 1e0: 10 01 14 2c evmhoumia r0,r1,r2
+ 1e4: 10 01 14 2d evmhosmia r0,r1,r2
+ 1e8: 10 01 14 2f evmhosmfa r0,r1,r2
+ 1ec: 10 01 14 43 evmwlssf r0,r1,r2
+ 1f0: 10 01 14 47 evmwhssf r0,r1,r2
+ 1f4: 10 01 14 48 evmwlumi r0,r1,r2
+ 1f8: 10 01 14 4b evmwlsmf r0,r1,r2
+ 1fc: 10 01 14 4c evmwhumi r0,r1,r2
+ 200: 10 01 14 4d evmwhsmi r0,r1,r2
+ 204: 10 01 14 4f evmwhsmf r0,r1,r2
+ 208: 10 01 14 53 evmwssf r0,r1,r2
+ 20c: 10 01 14 58 evmwumi r0,r1,r2
+ 210: 10 01 14 59 evmwsmi r0,r1,r2
+ 214: 10 01 14 5b evmwsmf r0,r1,r2
+ 218: 10 01 14 63 evmwlssfa r0,r1,r2
+ 21c: 10 01 14 67 evmwhssfa r0,r1,r2
+ 220: 10 01 14 68 evmwlumia r0,r1,r2
+ 224: 10 01 14 6b evmwlsmfa r0,r1,r2
+ 228: 10 01 14 6c evmwhumia r0,r1,r2
+ 22c: 10 01 14 6d evmwhsmia r0,r1,r2
+ 230: 10 01 14 6f evmwhsmfa r0,r1,r2
+ 234: 10 01 14 73 evmwssfa r0,r1,r2
+ 238: 10 01 14 78 evmwumia r0,r1,r2
+ 23c: 10 01 14 79 evmwsmia r0,r1,r2
+ 240: 10 01 14 7b evmwsmfa r0,r1,r2
+ 244: 10 01 04 c0 evaddusiaaw r0,r1
+ 248: 10 01 04 c1 evaddssiaaw r0,r1
+ 24c: 10 01 04 c2 evsubfusiaaw r0,r1
+ 250: 10 01 04 c3 evsubfssiaaw r0,r1
+ 254: 10 01 04 c4 evmra r0,r1
+ 258: 10 01 14 c6 evdivws r0,r1,r2
+ 25c: 10 01 14 c7 evdivwu r0,r1,r2
+ 260: 10 01 04 c8 evaddumiaaw r0,r1
+ 264: 10 01 04 c9 evaddsmiaaw r0,r1
+ 268: 10 01 04 ca evsubfumiaaw r0,r1
+ 26c: 10 01 04 cb evsubfsmiaaw r0,r1
+ 270: 10 01 15 00 evmheusiaaw r0,r1,r2
+ 274: 10 01 15 01 evmhessiaaw r0,r1,r2
+ 278: 10 01 15 03 evmhessfaaw r0,r1,r2
+ 27c: 10 01 15 04 evmhousiaaw r0,r1,r2
+ 280: 10 01 15 05 evmhossiaaw r0,r1,r2
+ 284: 10 01 15 07 evmhossfaaw r0,r1,r2
+ 288: 10 01 15 08 evmheumiaaw r0,r1,r2
+ 28c: 10 01 15 09 evmhesmiaaw r0,r1,r2
+ 290: 10 01 15 0b evmhesmfaaw r0,r1,r2
+ 294: 10 01 15 0c evmhoumiaaw r0,r1,r2
+ 298: 10 01 15 0d evmhosmiaaw r0,r1,r2
+ 29c: 10 01 15 0f evmhosmfaaw r0,r1,r2
+ 2a0: 10 01 15 28 evmhegumiaa r0,r1,r2
+ 2a4: 10 01 15 29 evmhegsmiaa r0,r1,r2
+ 2a8: 10 01 15 2b evmhegsmfaa r0,r1,r2
+ 2ac: 10 01 15 2c evmhogumiaa r0,r1,r2
+ 2b0: 10 01 15 2d evmhogsmiaa r0,r1,r2
+ 2b4: 10 01 15 2f evmhogsmfaa r0,r1,r2
+ 2b8: 10 01 15 40 evmwlusiaaw r0,r1,r2
+ 2bc: 10 01 15 41 evmwlssiaaw r0,r1,r2
+ 2c0: 10 01 15 43 evmwlssfaaw r0,r1,r2
+ 2c4: 10 01 15 44 evmwhusiaa r0,r1,r2
+ 2c8: 10 01 15 45 evmwhssmaa r0,r1,r2
+ 2cc: 10 01 15 47 evmwhssfaa r0,r1,r2
+ 2d0: 10 01 15 48 evmwlumiaaw r0,r1,r2
+ 2d4: 10 01 15 49 evmwlsmiaaw r0,r1,r2
+ 2d8: 10 01 15 4b evmwlsmfaaw r0,r1,r2
+ 2dc: 10 01 15 4c evmwhumiaa r0,r1,r2
+ 2e0: 10 01 15 4d evmwhsmiaa r0,r1,r2
+ 2e4: 10 01 15 4f evmwhsmfaa r0,r1,r2
+ 2e8: 10 01 15 53 evmwssfaa r0,r1,r2
+ 2ec: 10 01 15 58 evmwumiaa r0,r1,r2
+ 2f0: 10 01 15 59 evmwsmiaa r0,r1,r2
+ 2f4: 10 01 15 5b evmwsmfaa r0,r1,r2
+ 2f8: 10 01 15 64 evmwhgumiaa r0,r1,r2
+ 2fc: 10 01 15 65 evmwhgsmiaa r0,r1,r2
+ 300: 10 01 15 67 evmwhgssfaa r0,r1,r2
+ 304: 10 01 15 6f evmwhgsmfaa r0,r1,r2
+ 308: 10 01 15 80 evmheusianw r0,r1,r2
+ 30c: 10 01 15 81 evmhessianw r0,r1,r2
+ 310: 10 01 15 83 evmhessfanw r0,r1,r2
+ 314: 10 01 15 84 evmhousianw r0,r1,r2
+ 318: 10 01 15 85 evmhossianw r0,r1,r2
+ 31c: 10 01 15 87 evmhossfanw r0,r1,r2
+ 320: 10 01 15 88 evmheumianw r0,r1,r2
+ 324: 10 01 15 89 evmhesmianw r0,r1,r2
+ 328: 10 01 15 8b evmhesmfanw r0,r1,r2
+ 32c: 10 01 15 8c evmhoumianw r0,r1,r2
+ 330: 10 01 15 8d evmhosmianw r0,r1,r2
+ 334: 10 01 15 8f evmhosmfanw r0,r1,r2
+ 338: 10 01 15 a8 evmhegumian r0,r1,r2
+ 33c: 10 01 15 a9 evmhegsmian r0,r1,r2
+ 340: 10 01 15 ab evmhegsmfan r0,r1,r2
+ 344: 10 01 15 ac evmhogumian r0,r1,r2
+ 348: 10 01 15 ad evmhogsmian r0,r1,r2
+ 34c: 10 01 15 af evmhogsmfan r0,r1,r2
+ 350: 10 01 15 c0 evmwlusianw r0,r1,r2
+ 354: 10 01 15 c1 evmwlssianw r0,r1,r2
+ 358: 10 01 15 c3 evmwlssfanw r0,r1,r2
+ 35c: 10 01 15 c4 evmwhusian r0,r1,r2
+ 360: 10 01 15 c5 evmwhssian r0,r1,r2
+ 364: 10 01 15 c7 evmwhssfan r0,r1,r2
+ 368: 10 01 15 c8 evmwlumianw r0,r1,r2
+ 36c: 10 01 15 c9 evmwlsmianw r0,r1,r2
+ 370: 10 01 15 cb evmwlsmfanw r0,r1,r2
+ 374: 10 01 15 cc evmwhumian r0,r1,r2
+ 378: 10 01 15 cd evmwhsmian r0,r1,r2
+ 37c: 10 01 15 cf evmwhsmfan r0,r1,r2
+ 380: 10 01 15 d3 evmwssfan r0,r1,r2
+ 384: 10 01 15 d8 evmwumian r0,r1,r2
+ 388: 10 01 15 d9 evmwsmian r0,r1,r2
+ 38c: 10 01 15 db evmwsmfan r0,r1,r2
+ 390: 10 01 15 e4 evmwhgumian r0,r1,r2
+ 394: 10 01 15 e5 evmwhgsmian r0,r1,r2
+ 398: 10 01 15 e7 evmwhgssfan r0,r1,r2
+ 39c: 10 01 15 ef evmwhgsmfan r0,r1,r2
+ 3a0: 7c 01 16 3e evlddepx r0,r1,r2
+ 3a4: 7c 01 17 3e evstddepx r0,r1,r2
+ 3a8: 10 01 12 c0 efsadd r0,r1,r2
+ 3ac: 10 01 12 c1 efssub r0,r1,r2
+ 3b0: 10 01 02 c4 efsabs r0,r1
+ 3b4: 10 01 02 c5 efsnabs r0,r1
+ 3b8: 10 01 02 c6 efsneg r0,r1
+ 3bc: 10 01 12 c8 efsmul r0,r1,r2
+ 3c0: 10 01 12 c9 efsdiv r0,r1,r2
+ 3c4: 10 01 12 cc efscmpgt cr0,r1,r2
+ 3c8: 10 01 12 cd efscmplt cr0,r1,r2
+ 3cc: 10 01 12 ce efscmpeq cr0,r1,r2
+ 3d0: 10 00 12 d0 efscfui r0,r2
+ 3d4: 10 00 12 d1 efscfsi r0,r2
+ 3d8: 10 00 12 d2 efscfuf r0,r2
+ 3dc: 10 00 12 d3 efscfsf r0,r2
+ 3e0: 10 00 12 d4 efsctui r0,r2
+ 3e4: 10 00 12 d5 efsctsi r0,r2
+ 3e8: 10 00 12 d6 efsctuf r0,r2
+ 3ec: 10 00 12 d7 efsctsf r0,r2
+ 3f0: 10 00 12 d8 efsctuiz r0,r2
+ 3f4: 10 00 12 da efsctsiz r0,r2
+ 3f8: 10 01 12 dc efststgt cr0,r1,r2
+ 3fc: 10 01 12 dd efststlt cr0,r1,r2
+ 400: 10 01 12 de efststeq cr0,r1,r2
diff -ruN binutils-2.28-lsp/gas/testsuite/gas/ppc/spe.s binutils-2.28-spe2/gas/testsuite/gas/ppc/spe.s
--- binutils-2.28-lsp/gas/testsuite/gas/ppc/spe.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-spe2/gas/testsuite/gas/ppc/spe.s 2017-06-23 17:44:50.951717000 +0300
@@ -0,0 +1,274 @@
+# PA SPE instructions
+ .section ".text"
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0
+ .equ rS,0
+ .equ rT,0
+ .equ UIMM, 31
+ .equ UIMM_2, 2
+ .equ UIMM_4, 4
+ .equ UIMM_8, 8
+ .equ SIMM, -16
+ .equ crD, 0
+ .equ crS, 0
+
+ evaddw rS, rA, rB
+ evaddiw rS, rB, UIMM
+ evsubfw rS, rA, rB
+ evsubw rS, rB, rA
+ evsubifw rS, UIMM, rB
+ evsubiw rS, rB, UIMM
+ evabs rS, rA
+ evneg rS, rA
+ evextsb rS, rA
+ evextsh rS, rA
+ evrndw rS, rA
+ evcntlzw rS, rA
+ evcntlsw rS, rA
+ brinc rS, rA, rB
+ evand rS, rA, rB
+ evandc rS, rA, rB
+ evxor rS, rA, rB
+ evmr rS, rA
+ evor rS, rA, rB
+ evnor rS, rA, rB
+ evnot rS, rA
+ eveqv rS, rA, rB
+ evorc rS, rA, rB
+ evnand rS, rA, rB
+ evsrwu rS, rA, rB
+ evsrws rS, rA, rB
+ evsrwiu rS, rA, UIMM
+ evsrwis rS, rA, UIMM
+ evslw rS, rA, rB
+ evslwi rS, rA, UIMM
+ evrlw rS, rA, rB
+ evsplati rS, SIMM
+ evrlwi rS, rA, UIMM
+ evsplatfi rS, SIMM
+ evmergehi rS, rA, rB
+ evmergelo rS, rA, rB
+ evmergehilo rS, rA, rB
+ evmergelohi rS, rA, rB
+ evcmpgtu crD, rA, rB
+ evcmpgts crD, rA, rB
+ evcmpltu crD, rA, rB
+ evcmplts crD, rA, rB
+ evcmpeq crD, rA, rB
+ evsel rS, rA, rB, crS
+ evfsadd rS, rA, rB
+ evfssub rS, rA, rB
+ evfsmadd rS, rA, rB
+ evfsmsub rS, rA, rB
+ evfsabs rS, rA
+ evfsnabs rS, rA
+ evfsneg rS, rA
+ evfsmul rS, rA, rB
+ evfsdiv rS, rA, rB
+ evfsnmadd rS, rA, rB
+ evfsnmsub rS, rA, rB
+ evfscmpgt crD, rA, rB
+ evfscmplt crD, rA, rB
+ evfscmpeq crD, rA, rB
+ evfscfui rS, rB
+ evfscfsi rS, rB
+ evfscfuf rS, rB
+ evfscfsf rS, rB
+ evfsctui rS, rB
+ evfsctsi rS, rB
+ evfsctuf rS, rB
+ evfsctsf rS, rB
+ evfsctuiz rS, rB
+ evfsctsiz rS, rB
+ evfststgt crD, rA, rB
+ evfststlt crD, rA, rB
+ evfststeq crD, rA, rB
+ evlddx rS, rA, rB
+ evldd rS, UIMM_8(rA)
+ evldwx rS, rA, rB
+ evldw rS, UIMM_8(rA)
+ evldhx rS, rA, rB
+ evldh rS, UIMM_8(rA)
+ evlhhesplatx rS, rA, rB
+ evlhhesplat rS, UIMM_2(rA)
+ evlhhousplatx rS, rA, rB
+ evlhhousplat rS, UIMM_2(rA)
+ evlhhossplatx rS, rA, rB
+ evlhhossplat rS, UIMM_2(rA)
+ evlwhex rS, rA, rB
+ evlwhe rS, UIMM_4(rA)
+ evlwhoux rS, rA, rB
+ evlwhou rS, UIMM_4(rA)
+ evlwhosx rS, rA, rB
+ evlwhos rS, UIMM_4(rA)
+ evlwwsplatx rS, rA, rB
+ evlwwsplat rS, UIMM_4(rA)
+ evlwhsplatx rS, rA, rB
+ evlwhsplat rS, UIMM_4(rA)
+ evstddx rS, rA, rB
+ evstdd rS, UIMM_8(rA)
+ evstdwx rS, rA, rB
+ evstdw rS, UIMM_8(rA)
+ evstdhx rS, rA, rB
+ evstdh rS, UIMM_8(rA)
+ evstwhex rS, rA, rB
+ evstwhe rS, UIMM_4(rA)
+ evstwhox rS, rA, rB
+ evstwho rS, UIMM_4(rA)
+ evstwwex rS, rA, rB
+ evstwwe rS, UIMM_4(rA)
+ evstwwox rS, rA, rB
+ evstwwo rS, UIMM_4(rA)
+ evmhessf rS, rA, rB
+ evmhossf rS, rA, rB
+ evmheumi rS, rA, rB
+ evmhesmi rS, rA, rB
+ evmhesmf rS, rA, rB
+ evmhoumi rS, rA, rB
+ evmhosmi rS, rA, rB
+ evmhosmf rS, rA, rB
+ evmhessfa rS, rA, rB
+ evmhossfa rS, rA, rB
+ evmheumia rS, rA, rB
+ evmhesmia rS, rA, rB
+ evmhesmfa rS, rA, rB
+ evmhoumia rS, rA, rB
+ evmhosmia rS, rA, rB
+ evmhosmfa rS, rA, rB
+ evmwlssf rD, rA, rB
+ evmwhssf rS, rA, rB
+ evmwlumi rS, rA, rB
+ evmwlsmf rD, rA, rB
+ evmwhumi rS, rA, rB
+ evmwhsmi rS, rA, rB
+ evmwhsmf rS, rA, rB
+ evmwssf rS, rA, rB
+ evmwumi rS, rA, rB
+ evmwsmi rS, rA, rB
+ evmwsmf rS, rA, rB
+ evmwlssfa rD, rA, rB
+ evmwhssfa rS, rA, rB
+ evmwlumia rS, rA, rB
+ evmwlsmfa rD, rA, rB
+ evmwhumia rS, rA, rB
+ evmwhsmia rS, rA, rB
+ evmwhsmfa rS, rA, rB
+ evmwssfa rS, rA, rB
+ evmwumia rS, rA, rB
+ evmwsmia rS, rA, rB
+ evmwsmfa rS, rA, rB
+ evaddusiaaw rS, rA
+ evaddssiaaw rS, rA
+ evsubfusiaaw rS, rA
+ evsubfssiaaw rS, rA
+ evmra rS, rA
+ evdivws rS, rA, rB
+ evdivwu rS, rA, rB
+ evaddumiaaw rS, rA
+ evaddsmiaaw rS, rA
+ evsubfumiaaw rS, rA
+ evsubfsmiaaw rS, rA
+ evmheusiaaw rS, rA, rB
+ evmhessiaaw rS, rA, rB
+ evmhessfaaw rS, rA, rB
+ evmhousiaaw rS, rA, rB
+ evmhossiaaw rS, rA, rB
+ evmhossfaaw rS, rA, rB
+ evmheumiaaw rS, rA, rB
+ evmhesmiaaw rS, rA, rB
+ evmhesmfaaw rS, rA, rB
+ evmhoumiaaw rS, rA, rB
+ evmhosmiaaw rS, rA, rB
+ evmhosmfaaw rS, rA, rB
+ evmhegumiaa rS, rA, rB
+ evmhegsmiaa rS, rA, rB
+ evmhegsmfaa rS, rA, rB
+ evmhogumiaa rS, rA, rB
+ evmhogsmiaa rS, rA, rB
+ evmhogsmfaa rS, rA, rB
+ evmwlusiaaw rS, rA, rB
+ evmwlssiaaw rS, rA, rB
+ evmwlssfaaw rD, rA, rB
+ evmwhusiaa rD, rA, rB
+ evmwhssmaa rD, rA, rB
+ evmwhssfaa rD, rA, rB
+ evmwlumiaaw rS, rA, rB
+ evmwlsmiaaw rS, rA, rB
+ evmwlsmfaaw rD, rA, rB
+ evmwhumiaa rD, rA, rB
+ evmwhsmiaa rD, rA, rB
+ evmwhsmfaa rD, rA, rB
+ evmwssfaa rS, rA, rB
+ evmwumiaa rS, rA, rB
+ evmwsmiaa rS, rA, rB
+ evmwsmfaa rS, rA, rB
+ evmwhgumiaa rD, rA, rB
+ evmwhgsmiaa rD, rA, rB
+ evmwhgssfaa rD, rA, rB
+ evmwhgsmfaa rD, rA, rB
+ evmheusianw rS, rA, rB
+ evmhessianw rS, rA, rB
+ evmhessfanw rS, rA, rB
+ evmhousianw rS, rA, rB
+ evmhossianw rS, rA, rB
+ evmhossfanw rS, rA, rB
+ evmheumianw rS, rA, rB
+ evmhesmianw rS, rA, rB
+ evmhesmfanw rS, rA, rB
+ evmhoumianw rS, rA, rB
+ evmhosmianw rS, rA, rB
+ evmhosmfanw rS, rA, rB
+ evmhegumian rS, rA, rB
+ evmhegsmian rS, rA, rB
+ evmhegsmfan rS, rA, rB
+ evmhogumian rS, rA, rB
+ evmhogsmian rS, rA, rB
+ evmhogsmfan rS, rA, rB
+ evmwlusianw rS, rA, rB
+ evmwlssianw rS, rA, rB
+ evmwlssfanw rD, rA, rB
+ evmwhusian rD, rA, rB
+ evmwhssian rD, rA, rB
+ evmwhssfan rD, rA, rB
+ evmwlumianw rS, rA, rB
+ evmwlsmianw rS, rA, rB
+ evmwlsmfanw rD, rA, rB
+ evmwhumian rD, rA, rB
+ evmwhsmian rD, rA, rB
+ evmwhsmfan rD, rA, rB
+ evmwssfan rS, rA, rB
+ evmwumian rS, rA, rB
+ evmwsmian rS, rA, rB
+ evmwsmfan rS, rA, rB
+ evmwhgumian rD, rA, rB
+ evmwhgsmian rD, rA, rB
+ evmwhgssfan rD, rA, rB
+ evmwhgsmfan rD, rA, rB
+ evlddepx rT, rA, rB
+ evstddepx rT, rA, rB
+
+;#SPE mapped by macro
+ evsadd rS, rA, rB
+ evssub rS, rA, rB
+ evsabs rS, rA
+ evsnabs rS, rA
+ evsneg rS, rA
+ evsmul rS, rA, rB
+ evsdiv rS, rA, rB
+ evscmpgt crD, rA, rB
+ evsgmplt crD, rA, rB
+ evsgmpeq crD, rA, rB
+ evscfui rS, rB
+ evscfsi rS, rB
+ evscfuf rS, rB
+ evscfsf rS, rB
+ evsctui rS, rB
+ evsctsi rS, rB
+ evsctuf rS, rB
+ evsctsf rS, rB
+ evsctuiz rS, rB
+ evsctsiz rS, rB
+ evststgt crD, rA, rB
+ evststlt crD, rA, rB
+ evststeq crD, rA, rB
diff -ruN binutils-2.28-lsp/include/opcode/ppc.h binutils-2.28-spe2/include/opcode/ppc.h
--- binutils-2.28-lsp/include/opcode/ppc.h 2017-06-23 17:38:44.083243055 +0300
+++ binutils-2.28-spe2/include/opcode/ppc.h 2017-06-23 17:55:36.864599055 +0300
@@ -70,6 +70,8 @@
extern const int powerpc_num_opcodes;
extern const struct powerpc_opcode vle_opcodes[];
extern const int vle_num_opcodes;
+extern const struct powerpc_opcode spe2_opcodes[];
+extern const int spe2_num_opcodes;
/* Values defined for the flags field of a struct powerpc_opcode. */
@@ -220,6 +222,9 @@
/* Opcode is supported by e200z4. */
#define PPC_OPCODE_E200Z4 0x80000000000ull
+/* Opcode is only supported by Freescale SPE2 APU. */
+#define PPC_OPCODE_SPE2 0x4000000000000000ull
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
@@ -231,6 +236,12 @@
/* A macro to convert a VLE opcode to a VLE opcode segment. */
#define VLE_OP_TO_SEG(i) ((i) >> 1)
+
+/* A macro to extract the extended opcode from a SPE2 instruction. */
+#define SPE2_XOP(i) ((i) & 0x7ff)
+
+/* A macro to convert a SPE2 extended opcode to a SPE2 xopcode segment. */
+#define SPE2_XOP_TO_SEG(i) ((i) >> 7)
\f
/* The operands table is an array of struct powerpc_operand. */
diff -ruN binutils-2.28-lsp/opcodes/ppc-dis.c binutils-2.28-spe2/opcodes/ppc-dis.c
--- binutils-2.28-lsp/opcodes/ppc-dis.c 2017-06-23 17:39:16.986783055 +0300
+++ binutils-2.28-spe2/opcodes/ppc-dis.c 2017-06-23 17:56:52.074975055 +0300
@@ -212,13 +212,15 @@
0 },
{ "spe", PPC_OPCODE_PPC | PPC_OPCODE_EFS,
PPC_OPCODE_SPE },
+ { "spe2", PPC_OPCODE_PPC | PPC_OPCODE_EFS | PPC_OPCODE_SPE,
+ PPC_OPCODE_SPE2 },
{ "titan", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_PMR
| PPC_OPCODE_RFMCI | PPC_OPCODE_TITAN),
0 },
{ "vle", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
| PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
- | PPC_OPCODE_E500 | PPC_OPCODE_LSP),
+ | PPC_OPCODE_LSP | PPC_OPCODE_SPE2),
PPC_OPCODE_VLE },
{ "vsx", PPC_OPCODE_PPC,
PPC_OPCODE_VSX | PPC_OPCODE_VSX3 },
@@ -358,6 +360,8 @@
static unsigned short powerpc_opcd_indices[PPC_OPCD_SEGS+1];
#define VLE_OPCD_SEGS 32
static unsigned short vle_opcd_indices[VLE_OPCD_SEGS+1];
+#define SPE2_OPCD_SEGS 13
+static unsigned short spe2_opcd_indices[SPE2_OPCD_SEGS+1];
/* Calculate opcode table indices to speed up disassembly,
and init dialect. */
@@ -405,6 +409,24 @@
}
}
+ /* SPE2 opcodes */
+ i = spe2_num_opcodes;
+ while (--i >= 0)
+ {
+ unsigned xop = SPE2_XOP (spe2_opcodes[i].opcode);
+ unsigned seg = SPE2_XOP_TO_SEG (xop);
+
+ spe2_opcd_indices[seg] = i;
+ }
+
+ last = spe2_num_opcodes;
+ for (i = SPE2_OPCD_SEGS; i > 1; --i)
+ {
+ if (spe2_opcd_indices[i] == 0)
+ spe2_opcd_indices[i] = last;
+ last = spe2_opcd_indices[i];
+ }
+
if (info->arch == bfd_arch_powerpc)
powerpc_init_dialect (info);
}
@@ -587,6 +609,61 @@
return NULL;
}
+/* Find a match for INSN in the SPE2 opcode table. */
+
+static const struct powerpc_opcode *
+lookup_spe2 (unsigned long insn)
+{
+ const struct powerpc_opcode *opcode;
+ const struct powerpc_opcode *opcode_end;
+ unsigned op, xop, seg;
+
+ op = PPC_OP (insn);
+ if (op != 0x4)
+ {
+ /* This is not SPE2 insn.
+ * All SPE2 instructions have OP=4 and differs by XOP */
+ return NULL;
+ }
+ xop = SPE2_XOP (insn);
+ seg = SPE2_XOP_TO_SEG (xop);
+
+
+ /* Find the first match in the opcode table for this major opcode. */
+ opcode_end = spe2_opcodes + spe2_opcd_indices[seg + 1];
+ for (opcode = spe2_opcodes + spe2_opcd_indices[seg];
+ opcode < opcode_end;
+ ++opcode)
+ {
+ unsigned long table_opcd = opcode->opcode;
+ unsigned long table_mask = opcode->mask;
+ unsigned long insn2;
+ const unsigned char *opindex;
+ const struct powerpc_operand *operand;
+ int invalid;
+
+ insn2 = insn;
+ if ((insn2 & table_mask) != table_opcd)
+ continue;
+
+ /* Check validity of operands. */
+ invalid = 0;
+ for (opindex = opcode->operands; *opindex != 0; ++opindex)
+ {
+ operand = powerpc_operands + *opindex;
+ if (operand->extract)
+ (*operand->extract) (insn, (ppc_cpu_t)0, &invalid);
+ }
+ if (invalid)
+ continue;
+
+ return opcode;
+ }
+
+ return NULL;
+}
+
+
/* Print a PowerPC or POWER instruction. */
static int
@@ -636,7 +713,11 @@
opcode = lookup_vle (insn);
if (opcode != NULL)
insn_is_short = PPC_OP_SE_VLE(opcode->mask);
+ else
+ opcode = lookup_spe2 (insn);
}
+ if (opcode == NULL && (dialect & PPC_OPCODE_SPE2) != 0)
+ opcode = lookup_spe2 (insn);
if (opcode == NULL)
opcode = lookup_powerpc (insn, dialect);
if (opcode == NULL && (dialect & PPC_OPCODE_ANY) != 0)
diff -ruN binutils-2.28-lsp/opcodes/ppc-opc.c binutils-2.28-spe2/opcodes/ppc-opc.c
--- binutils-2.28-lsp/opcodes/ppc-opc.c 2017-06-23 22:12:39.138198000 +0300
+++ binutils-2.28-spe2/opcodes/ppc-opc.c 2017-06-23 23:38:05.522746700 +0300
@@ -124,12 +124,17 @@
static long extract_vleui (unsigned long, ppc_cpu_t, int *);
static unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **);
static long extract_vleil (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_evuimm1_ex0 (unsigned long, long, ppc_cpu_t, const char **);
static unsigned long insert_evuimm2_ex0 (unsigned long, long, ppc_cpu_t, const char **);
static unsigned long insert_evuimm4_ex0 (unsigned long, long, ppc_cpu_t, const char **);
static unsigned long insert_evuimm8_ex0 (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_evuimm_lt8 (unsigned long, long, ppc_cpu_t, const char **);
static unsigned long insert_evuimm_lt16 (unsigned long, long, ppc_cpu_t, const char **);
static unsigned long insert_rD_rS_even (unsigned long, long, ppc_cpu_t, const char **);
static unsigned long insert_off_lsp (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_off_spe2 (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_Ddd (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_Ddd (unsigned long, ppc_cpu_t, int *);
\f
/* The operands table.
@@ -645,7 +650,10 @@
#define FC SH
{ 0x1f, 11, NULL, NULL, 0 },
-#define EVUIMM_LT16 SH + 1
+#define EVUIMM_LT8 SH + 1
+ { 0x1f, 11, insert_evuimm_lt8, NULL, 0 },
+
+#define EVUIMM_LT16 EVUIMM_LT8 + 1
{ 0x1f, 11, insert_evuimm_lt16, NULL, 0 },
/* The SI field in a HTM X form instruction. */
@@ -783,6 +791,8 @@
/* The SIX field in a VX form instruction. */
#define SIX UIM6 + 1
+ /* The MMMM field in a VX form instruction for SPE2 */
+#define MMMM SIX
{ 0xf, 11, NULL, NULL, 0 },
/* The PS field in a VX form instruction. */
@@ -794,7 +804,13 @@
{ 0xf, 6, NULL, NULL, 0 },
/* The other UIMM field in a half word EVX form instruction. */
-#define EVUIMM_2 SHB + 1
+#define EVUIMM_1 SHB + 1
+ { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
+
+#define EVUIMM_1_EX0 EVUIMM_1 + 1
+ { 0x1f, 11, insert_evuimm1_ex0, NULL, PPC_OPERAND_PARENS },
+
+#define EVUIMM_2 EVUIMM_1_EX0 + 1
{ 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
#define EVUIMM_2_EX0 EVUIMM_2 + 1
@@ -817,6 +833,8 @@
/* The WS or DRM field in an X form instruction. */
#define WS EVUIMM_8_EX0 + 1
#define DRM WS
+ /* The NNN field in a VX form instruction for SPE2 */
+#define NNN WS
{ 0x7, 11, NULL, NULL, 0 },
/* PowerPC paired singles extensions. */
@@ -985,6 +1003,22 @@
#define VX_OFF IMM8 + 1
{ 0x3, 0, insert_off_lsp, NULL, 0 },
+
+#define VX_OFF_SPE2 VX_OFF + 1
+ { 0x7, 0, insert_off_spe2, NULL, 0 },
+
+#define BBB VX_OFF_SPE2 + 1
+ { 0x7, 13, NULL, NULL, 0 },
+
+#define DDD BBB + 1
+#define VX_MASK_DDD (VX_MASK & ~0x1)
+ { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
+
+#define HH DDD + 1
+ { 0x3, 13, NULL, NULL, 0 },
+
+#define DD RM
+
};
const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
@@ -2326,6 +2360,21 @@
}
static unsigned long
+insert_evuimm1_ex0 (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value > 0 && value <= 0x1f)
+ return insn | ((value & 0x1f) << 11);
+ else
+ {
+ *errmsg = _("UIMM = 00000 is illegal");
+ return 0;
+ }
+}
+
+static unsigned long
insert_evuimm2_ex0 (unsigned long insn,
long value,
ppc_cpu_t dialect ATTRIBUTE_UNUSED,
@@ -2371,6 +2420,21 @@
}
static unsigned long
+insert_evuimm_lt8 (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value >= 0 && value <= 7)
+ return insn | ((value & 0x7) << 11);
+ else
+ {
+ *errmsg = _("UIMM values >7 are illegal");
+ return 0;
+ }
+}
+
+static unsigned long
insert_evuimm_lt16 (unsigned long insn,
long value,
ppc_cpu_t dialect ATTRIBUTE_UNUSED,
@@ -2414,6 +2478,44 @@
return 0;
}
}
+
+static unsigned long
+insert_off_spe2 (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value > 0 && value <= 0x7)
+ return insn | (value & 0x7);
+ else
+ {
+ *errmsg = _("invalid offset");
+ return 0;
+ }
+}
+
+static unsigned long
+insert_Ddd (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value >= 0 && value <= 0x7)
+ return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
+ else
+ {
+ *errmsg = _("invalid Ddd value");
+ return 0;
+ }
+}
+
+static long
+extract_Ddd (unsigned long insn,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ int *invalid ATTRIBUTE_UNUSED)
+{
+ return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
+}
\f
/* Macros used to form opcodes. */
@@ -2653,6 +2755,36 @@
#define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
#define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
+/* Additional format of VX SPE2 form instruction. */
+#define VX_RA_CONST(op, xop, bits11_15) (OP (op) | (((unsigned long)(bits11_15) & 0x1f) << 16) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
+
+#define VX_RB_CONST(op, xop, bits16_20) (OP (op) | (((unsigned long)(bits16_20) & 0x1f) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
+
+#define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
+
+#define VX_SPE_CRFD(op, xop, bits9_10) (OP (op) | (((unsigned long)(bits9_10) & 0x3) << 21) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
+
+#define VX_SPE2_CLR(op, xop, bit16) (OP (op) | (((unsigned long)(bit16) & 0x1) << 15) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
+
+#define VX_SPE2_SPLATB(op, xop, bits19_20) (OP (op) | (((unsigned long)(bits19_20) & 0x3) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
+
+#define VX_SPE2_OCTET(op, xop, bits16_17) (OP (op) | (((unsigned long)(bits16_17) & 0x3) << 14) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
+
+#define VX_SPE2_DDHH(op, xop, bit16) (OP (op) | (((unsigned long)(bit16) & 0x1) << 15) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
+
+#define VX_SPE2_HH(op, xop, bit16, bits19_20) (OP (op) |(((unsigned long)(bit16) & 0x1) << 15) | (((unsigned long)(bits19_20) & 0x3) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
+
+#define VX_SPE2_EVMAR(op, xop) (OP (op) | ((unsigned long)(0x1) << 11) | (((unsigned long)(xop)) & 0x7ff))
+#define VX_SPE2_EVMAR_MASK (VX_SPE2_EVMAR(0x3f, 0x7ff) | ((unsigned long)(0x1) << 11))
+
/* A VX_MASK with the VA field fixed. */
#define VXVA_MASK (VX_MASK | (0x1f << 16))
@@ -3117,6 +3249,7 @@
#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
#define PPCE300 PPC_OPCODE_E300
#define PPCSPE PPC_OPCODE_SPE
+#define PPCSPE2 PPC_OPCODE_SPE2
#define PPCISEL PPC_OPCODE_ISEL
#define PPCEFS PPC_OPCODE_EFS
#define PPCBRLK PPC_OPCODE_BRLOCK
@@ -3460,7 +3593,9 @@
{"evfsadd", VX (4, 640), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vadduws", VX (4, 640), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"evfssub", VX (4, 641), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
+{"evfsmadd", VX (4, 642), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vminuw", VX (4, 642), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
+{"evfsmsub", VX (4, 643), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evfsabs", VX (4, 644), VX_MASK, PPCSPE, 0, {RS, RA}},
{"vsrw", VX (4, 644), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}},
@@ -3469,7 +3604,9 @@
{"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
+{"evfsnmadd", VX (4, 650), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vrfip", VX (4, 650), VXVA_MASK, PPCVEC, 0, {VD, VB}},
+{"evfsnmsub", VX (4, 651), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
{"vspltw", VX (4, 652), VXUIMM2_MASK, PPCVEC, 0, {VD, VB, UIMM2}},
{"vextractuw", VX (4, 653), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
@@ -3677,6 +3814,7 @@
{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
{"vavguh", VX (4,1090), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
+{"evmwlssf", VX (4,1091), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
{"vandc", VX (4,1092), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
@@ -3687,6 +3825,7 @@
{"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vminfp", VX (4,1098), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
+{"evmwlsmf", VX (4,1099), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vsro", VX (4,1100), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
@@ -3702,8 +3841,10 @@
{"nmachhwo.", XO (4, 46,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
+{"evmwlssfa", VX (4,1123), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
+{"evmwlsmfa", VX (4,1131), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
@@ -3788,16 +3929,24 @@
{"bcdutrunc.", VX (4,1345), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vavgsh", VX (4,1346), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
+{"evmwlssfaaw", VX (4,1347), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhusiaa", VX (4,1348), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vorc", VX (4,1348), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
+{"evmwhssmaa", VX (4,1349), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
{"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
{"vcmpnezh.", VXR(4, 327,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
+{"evmwhssfaa", VX (4,1351), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vncipher", VX (4,1352), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
+{"evmwlsmfaaw", VX (4,1355), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhumiaa", VX (4,1356), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
+{"evmwhsmiaa", VX (4,1357), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
+{"evmwhsmfaa", VX (4,1359), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"macchwo", XO (4, 172,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
@@ -3806,6 +3955,10 @@
{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"nmacchwo", XO (4, 174,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"nmacchwo.", XO (4, 174,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
+{"evmwhgumiaa", VX (4,1380), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhgsmiaa", VX (4,1381), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhgssfaa", VX (4,1383), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhgsmfaa", VX (4,1391), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
@@ -3842,21 +3995,33 @@
{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"bcdsr.", VX (4,1473), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
+{"evmwlssfanw", VX (4,1475), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhusian", VX (4,1476), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vsld", VX (4,1476), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
+{"evmwhssian", VX (4,1477), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
{"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
{"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
+{"evmwhssfan", VX (4,1479), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, 0, {VD, VA}},
{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
+{"evmwlsmfanw", VX (4,1483), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhumian", VX (4,1484), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vbpermd", VX (4,1484), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
+{"evmwhsmian", VX (4,1485), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
+{"evmwhsmfan", VX (4,1487), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"macchwso", XO (4, 236,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"macchwso.", XO (4, 236,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
+{"evmwhgumian", VX (4,1508), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhgsmian", VX (4,1509), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhgssfan", VX (4,1511), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
+{"evmwhgsmfan", VX (4,1519), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
{"nmacchwso", XO (4, 238,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"nmacchwso.", XO (4, 238,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"vsububs", VX (4,1536), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
@@ -6185,6 +6350,7 @@
{"srad", XRC(31,794,0), X_MASK, PPC64, 0, {RA, RS, RB}},
{"srad.", XRC(31,794,1), X_MASK, PPC64, 0, {RA, RS, RB}},
+{"evlddepx", VX (31, 1598), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
{"lfddx", X(31,803), X_MASK, E500MC, 0, {FRT, RA, RB}},
{"lvtrxl", X(31,805), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
@@ -6303,6 +6469,7 @@
{"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
{"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
+{"evstddepx", VX (31, 1854), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
{"stfddx", X(31,931), X_MASK, E500MC, 0, {FRS, RA, RB}},
{"stvfrxl", X(31,933), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
@@ -8086,7 +8253,867 @@
{"e_clrlwi", 3, PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
{"e_clrrwi", 3, PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
{"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
+
+/* old SPE instructions have new names with the same opcodes */
+{"evsadd", 3, PPCSPE|PPCVLE, "efsadd %0,%1,%2"},
+{"evssub", 3, PPCSPE|PPCVLE, "efssub %0,%1,%2"},
+{"evsabs", 2, PPCSPE|PPCVLE, "efsabs %0,%1"},
+{"evsnabs", 2, PPCSPE|PPCVLE, "efsnabs %0,%1"},
+{"evsneg", 2, PPCSPE|PPCVLE, "efsneg %0,%1"},
+{"evsmul", 3, PPCSPE|PPCVLE, "efsmul %0,%1,%2"},
+{"evsdiv", 3, PPCSPE|PPCVLE, "efsdiv %0,%1,%2"},
+{"evscmpgt", 3, PPCSPE|PPCVLE, "efscmpgt %0,%1,%2"},
+{"evsgmplt", 3, PPCSPE|PPCVLE, "efscmplt %0,%1,%2"},
+{"evsgmpeq", 3, PPCSPE|PPCVLE, "efscmpeq %0,%1,%2"},
+{"evscfui", 2, PPCSPE|PPCVLE, "efscfui %0,%1"},
+{"evscfsi", 2, PPCSPE|PPCVLE, "efscfsi %0,%1"},
+{"evscfuf", 2, PPCSPE|PPCVLE, "efscfuf %0,%1"},
+{"evscfsf", 2, PPCSPE|PPCVLE, "efscfsf %0,%1"},
+{"evsctui", 2, PPCSPE|PPCVLE, "efsctui %0,%1"},
+{"evsctsi", 2, PPCSPE|PPCVLE, "efsctsi %0,%1"},
+{"evsctuf", 2, PPCSPE|PPCVLE, "efsctuf %0,%1"},
+{"evsctsf", 2, PPCSPE|PPCVLE, "efsctsf %0,%1"},
+{"evsctuiz", 2, PPCSPE|PPCVLE, "efsctuiz %0,%1"},
+{"evsctsiz", 2, PPCSPE|PPCVLE, "efsctsiz %0,%1"},
+{"evststgt", 3, PPCSPE|PPCVLE, "efststgt %0,%1,%2"},
+{"evststlt", 3, PPCSPE|PPCVLE, "efststlt %0,%1,%2"},
+{"evststeq", 3, PPCSPE|PPCVLE, "efststeq %0,%1,%2"},
+
+/* SPE2 instructions which just are mapped to SPE2 */
+{"evdotphsssi", 3, PPCSPE2, "evdotphssmi %0,%1,%2"},
+{"evdotphsssia", 3, PPCSPE2, "evdotphssmia %0,%1,%2"},
+{"evdotpwsssi", 3, PPCSPE2, "evdotpwssmi %0,%1,%2"},
+{"evdotpwsssia", 3, PPCSPE2, "evdotpwssmia %0,%1,%2"}
+
};
const int powerpc_num_macros =
sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
+
+/* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
+const struct powerpc_opcode spe2_opcodes[] = {
+{"evdotpwcssi", VX (4, 128), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmi", VX (4, 129), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfr", VX (4, 130), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssf", VX (4, 131), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmf", VX (4, 136), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmf", VX (4, 137), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfr", VX (4, 138), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfr", VX (4, 139), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmf", VX (4, 140), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmf", VX (4, 141), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfr", VX (4, 142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfr", VX (4, 143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssiaaw3", VX (4, 144), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmiaaw3", VX (4, 145), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfraaw3", VX (4, 146), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfaaw3", VX (4, 147), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfaa3", VX (4, 152), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfaa3", VX (4, 153), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfraa3", VX (4, 154), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfraa3", VX (4, 155), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfaa3", VX (4, 156), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfaa3", VX (4, 157), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfraa3", VX (4, 158), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfraa3", VX (4, 159), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssia", VX (4, 160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmia", VX (4, 161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfra", VX (4, 162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfa", VX (4, 163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfa", VX (4, 168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfa", VX (4, 169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfra", VX (4, 170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfra", VX (4, 171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfa", VX (4, 172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfa", VX (4, 173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfra", VX (4, 174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfra", VX (4, 175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssiaaw", VX (4, 176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcsmiaaw", VX (4, 177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfraaw", VX (4, 178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwcssfaaw", VX (4, 179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfaa", VX (4, 184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfaa", VX (4, 185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgasmfraa", VX (4, 186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgasmfraa", VX (4, 187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfaa", VX (4, 188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfaa", VX (4, 189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwgssmfraa", VX (4, 190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwxgssmfraa", VX (4, 191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssi", VX (4, 256), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssi", VX (4, 257), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssf", VX (4, 258), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssf", VX (4, 259), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmi", VX (4, 264), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmi", VX (4, 265), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfr", VX (4, 266), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfr", VX (4, 267), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssiaaw3", VX (4, 272), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssiaaw3", VX (4, 273), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfaaw3", VX (4, 274), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfaaw3", VX (4, 275), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmiaaw3", VX (4, 280), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmiaaw3", VX (4, 281), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfraaw3", VX (4, 282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfraaw3", VX (4, 283), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssia", VX (4, 288), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssia", VX (4, 289), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfa", VX (4, 290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfa", VX (4, 291), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmia", VX (4, 296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmia", VX (4, 297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfra", VX (4, 298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfra", VX (4, 299), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssiaaw", VX (4, 304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssiaaw", VX (4, 305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfaaw", VX (4, 306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfaaw", VX (4, 307), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcsmiaaw", VX (4, 312), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcsmiaaw", VX (4, 313), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphihcssfraaw", VX (4, 314), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotplohcssfraaw", VX (4, 315), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausi", VX (4, 320), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassi", VX (4, 321), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusi", VX (4, 322), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassf", VX (4, 323), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssf", VX (4, 327), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumi", VX (4, 328), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmi", VX (4, 329), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumi", VX (4, 330), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfr", VX (4, 331), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmi", VX (4, 333), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfr", VX (4, 335), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausiaaw3", VX (4, 336), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassiaaw3", VX (4, 337), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusiaaw3", VX (4, 338), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfaaw3", VX (4, 339), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssiaaw3", VX (4, 341), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfaaw3", VX (4, 343), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumiaaw3", VX (4, 344), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmiaaw3", VX (4, 345), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumiaaw3", VX (4, 346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfraaw3", VX (4, 347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmiaaw3", VX (4, 349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfraaw3", VX (4, 351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausia", VX (4, 352), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassia", VX (4, 353), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusia", VX (4, 354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfa", VX (4, 355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfa", VX (4, 359), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumia", VX (4, 360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmia", VX (4, 361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumia", VX (4, 362), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfra", VX (4, 363), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmia", VX (4, 365), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfra", VX (4, 367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphausiaaw", VX (4, 368), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassiaaw", VX (4, 369), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasusiaaw", VX (4, 370), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfaaw", VX (4, 371), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssiaaw", VX (4, 373), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfaaw", VX (4, 375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphaumiaaw", VX (4, 376), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasmiaaw", VX (4, 377), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphasumiaaw", VX (4, 378), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphassfraaw", VX (4, 379), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphssmiaaw", VX (4, 381), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotphsssfraaw", VX (4, 383), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumi", VX (4, 384), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmi", VX (4, 385), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumi", VX (4, 386), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmf", VX (4, 387), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmi", VX (4, 388), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmf", VX (4, 389), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmi", VX (4, 390), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmf", VX (4, 391), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumi", VX (4, 392), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmi", VX (4, 393), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumi", VX (4, 394), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmi", VX (4, 398), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmf", VX (4, 399), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumiaa3", VX (4, 400), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmiaa3", VX (4, 401), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumiaa3", VX (4, 402), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmfaa3", VX (4, 403), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmiaa3", VX (4, 404), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmfaa3", VX (4, 405), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmiaa3", VX (4, 406), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmfaa3", VX (4, 407), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumiaaw3", VX (4, 408), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmiaaw3", VX (4, 409), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumiaaw3", VX (4, 410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmiaa3", VX (4, 414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmfaa3", VX (4, 415), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumia", VX (4, 416), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmia", VX (4, 417), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumia", VX (4, 418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmfa", VX (4, 419), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmia", VX (4, 420), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmfa", VX (4, 421), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmia", VX (4, 422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmfa", VX (4, 423), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumia", VX (4, 424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmia", VX (4, 425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumia", VX (4, 426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmia", VX (4, 430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmfa", VX (4, 431), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgaumiaa", VX (4, 432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmiaa", VX (4, 433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasumiaa", VX (4, 434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgasmfaa", VX (4, 435), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmiaa", VX (4, 436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hgssmfaa", VX (4, 437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmiaa", VX (4, 438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgasmfaa", VX (4, 439), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbaumiaaw", VX (4, 440), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasmiaaw", VX (4, 441), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpbasumiaaw", VX (4, 442), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmiaa", VX (4, 446), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotp4hxgssmfaa", VX (4, 447), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausi", VX (4, 448), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassi", VX (4, 449), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusi", VX (4, 450), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumi", VX (4, 456), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmi", VX (4, 457), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumi", VX (4, 458), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmi", VX (4, 461), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausiaa3", VX (4, 464), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassiaa3", VX (4, 465), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusiaa3", VX (4, 466), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwsssiaa3", VX (4, 469), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumiaa3", VX (4, 472), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmiaa3", VX (4, 473), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumiaa3", VX (4, 474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmiaa3", VX (4, 477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausia", VX (4, 480), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassia", VX (4, 481), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusia", VX (4, 482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumia", VX (4, 488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmia", VX (4, 489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumia", VX (4, 490), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmia", VX (4, 493), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwausiaa", VX (4, 496), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwassiaa", VX (4, 497), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasusiaa", VX (4, 498), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwsssiaa", VX (4, 501), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwaumiaa", VX (4, 504), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasmiaa", VX (4, 505), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwasumiaa", VX (4, 506), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdotpwssmiaa", VX (4, 509), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddib", VX (4, 515), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
+{"evaddih", VX (4, 513), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
+{"evsubifh", VX (4, 517), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
+{"evsubifb", VX (4, 519), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
+{"evabsb", VX_RB_CONST(4, 520, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evabsh", VX_RB_CONST(4, 520, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evabsd", VX_RB_CONST(4, 520, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evabss", VX_RB_CONST(4, 520, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evabsbs", VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evabshs", VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evabsds", VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegwo", VX_RB_CONST(4, 521, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegb", VX_RB_CONST(4, 521, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegbo", VX_RB_CONST(4, 521, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegh", VX_RB_CONST(4, 521, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegho", VX_RB_CONST(4, 521, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegd", VX_RB_CONST(4, 521, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegs", VX_RB_CONST(4, 521, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegwos", VX_RB_CONST(4, 521, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegbs", VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegbos", VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evneghs", VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evneghos", VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evnegds", VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evextzb", VX_RB_CONST(4, 522, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evextsbh", VX_RB_CONST(4, 522, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evextsw", VX_RB_CONST(4, 523, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndwh", VX_RB_CONST(4, 524, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndhb", VX_RB_CONST(4, 524, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrnddw", VX_RB_CONST(4, 524, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndwhus", VX_RB_CONST(4, 524, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndwhss", VX_RB_CONST(4, 524, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndhbus", VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndhbss", VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrnddwus", VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrnddwss", VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndwnh", VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndhnb", VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrnddnw", VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndwnhus", VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndwnhss", VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndhnbus", VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrndhnbss", VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrnddnwus", VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evrnddnwss", VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evcntlzh", VX_RB_CONST(4, 525, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evcntlsh", VX_RB_CONST(4, 526, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evpopcntb", VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"circinc", VX (4, 528), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evunpkhibui", VX_RB_CONST(4, 540, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpkhibsi", VX_RB_CONST(4, 540, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpkhihui", VX_RB_CONST(4, 540, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpkhihsi", VX_RB_CONST(4, 540, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpklobui", VX_RB_CONST(4, 540, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpklobsi", VX_RB_CONST(4, 540, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpklohui", VX_RB_CONST(4, 540, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpklohsi", VX_RB_CONST(4, 540, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpklohf", VX_RB_CONST(4, 540, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpkhihf", VX_RB_CONST(4, 540, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpklowgsf", VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evunpkhiwgsf", VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatsduw", VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatsdsw", VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatshub", VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatshsb", VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatuwuh", VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatswsh", VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatswuh", VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatuhub", VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatuduw", VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatuwsw", VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatshuh", VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatuhsh", VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatswuw", VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatswgsdf", VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatsbub", VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsatubsb", VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evmaxhpuw", VX_RB_CONST(4, 541, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evmaxhpsw", VX_RB_CONST(4, 541, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evmaxbpuh", VX_RB_CONST(4, 541, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evmaxbpsh", VX_RB_CONST(4, 541, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evmaxwpud", VX_RB_CONST(4, 541, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evmaxwpsd", VX_RB_CONST(4, 541, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evminhpuw", VX_RB_CONST(4, 541, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evminhpsw", VX_RB_CONST(4, 541, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evminbpuh", VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evminbpsh", VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evminwpud", VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evminwpsd", VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evmaxmagws", VX (4, 543), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsl", VX (4, 549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsli", VX (4, 551), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
+{"evsplatie", VX_RB_CONST (4, 553, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatib", VX_RB_CONST (4, 553, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatibe", VX_RB_CONST (4, 553, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatih", VX_RB_CONST (4, 553, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatihe", VX_RB_CONST (4, 553, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatid", VX_RB_CONST (4, 553, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatia", VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatiea", VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatiba", VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatibea", VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatiha", VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatihea", VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatida", VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfio", VX_RB_CONST (4, 555, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfib", VX_RB_CONST (4, 555, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfibo", VX_RB_CONST (4, 555, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfih", VX_RB_CONST (4, 555, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiho", VX_RB_CONST (4, 555, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfid", VX_RB_CONST (4, 555, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfia", VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfioa", VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiba", VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiboa", VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfiha", VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfihoa", VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evsplatfida", VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
+{"evcmpgtdu", VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpgtds", VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpltdu", VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpltds", VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
+{"evcmpeqd", VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
+{"evswapbhilo", VX (4, 568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evswapblohi", VX (4, 569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphhilo", VX (4, 570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphlohi", VX (4, 571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphe", VX (4, 572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphhi", VX (4, 573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evswaphlo", VX (4, 574), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evswapho", VX (4, 575), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evinsb", VX (4, 584), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
+{"evxtrb", VX (4, 586), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
+{"evsplath", VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK, PPCSPE2, 0, {RD, RA, HH}},
+{"evsplatb", VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
+{"evinsh", VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
+{"evclrbe", VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
+{"evclrbo", VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
+{"evclrh", VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
+{"evxtrh", VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
+{"evselbitm0", VX (4, 592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evselbitm1", VX (4, 593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evselbit", VX (4, 594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evperm", VX (4, 596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evperm2", VX (4, 597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evperm3", VX (4, 598), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evxtrd", VX (4, 600), VX_OFF_SPE2_MASK, PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
+{"evsrbu", VX (4, 608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsrbs", VX (4, 609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsrbiu", VX (4, 610), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evsrbis", VX (4, 611), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evslb", VX (4, 612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evrlb", VX (4, 613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evslbi", VX (4, 614), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evrlbi", VX (4, 615), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
+{"evsrhu", VX (4, 616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsrhs", VX (4, 617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsrhiu", VX (4, 618), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evsrhis", VX (4, 619), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evslh", VX (4, 620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evrlh", VX (4, 621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evslhi", VX (4, 622), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evrlhi", VX (4, 623), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
+{"evsru", VX (4, 624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsrs", VX (4, 625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsriu", VX (4, 626), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
+{"evsris", VX (4, 627), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
+{"evlvsl", VX (4, 628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlvsr", VX (4, 629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsroiu", VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
+{"evsrois", VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
+{"evsloi", VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
+{"evfssqrt", VX_RB_CONST(4, 647, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evfscfh", VX_RA_CONST(4, 657, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
+{"evfscth", VX_RA_CONST(4, 661, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
+{"evfsmax", VX (4, 672), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsmin", VX (4, 673), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsaddsub", VX (4, 674), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfssubadd", VX (4, 675), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfssum", VX (4, 676), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsdiff", VX (4, 677), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfssumdiff", VX (4, 678), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsdiffsum", VX (4, 679), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsaddx", VX (4, 680), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfssubx", VX (4, 681), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsaddsubx", VX (4, 682), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfssubaddx", VX (4, 683), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsmulx", VX (4, 684), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsmule", VX (4, 686), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evfsmulo", VX (4, 687), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"efsmax", VX (4, 688), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"efsmin", VX (4, 689), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"efdmax", VX (4, 696), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"efdmin", VX (4, 697), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"efsmadd", VX (4, 706), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"efsmsub", VX (4, 707), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"efsnmadd", VX (4, 714), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"efsnmsub", VX (4, 715), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"efscfh", VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
+{"efscth", VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
+{"efdmadd", VX (4, 738), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
+{"efdmsub", VX (4, 739), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
+{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"efdnmadd", VX (4, 746), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
+{"efdnmsub", VX (4, 747), VX_MASK, PPCSPE2, E500|E500MC, {RD, RA, RB}},
+{"efdcfh", VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
+{"efdcth", VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCSPE2, 0, {RD, RB}},
+{"evldbx", VX (4, 774), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evldb", VX (4, 775), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8, RA}},
+{"evlhhsplathx", VX (4, 778), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhsplath", VX (4, 779), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2, RA}},
+{"evlwbsplatwx", VX (4, 786), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbsplatw", VX (4, 787), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlwhsplatwx", VX (4, 794), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhsplatw", VX (4, 795), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlbbsplatbx", VX (4, 798), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlbbsplatb", VX (4, 799), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1, RA}},
+{"evstdbx", VX (4, 806), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstdb", VX (4, 807), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8, RA}},
+{"evlwbex", VX (4, 810), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbe", VX (4, 811), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlwboux", VX (4, 812), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbou", VX (4, 813), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evlwbosx", VX (4, 814), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbos", VX (4, 815), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
+{"evstwbex", VX (4, 818), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbe", VX (4, 819), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
+{"evstwbox", VX (4, 822), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbo", VX (4, 823), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
+{"evstwbx", VX (4, 826), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwb", VX (4, 827), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
+{"evsthbx", VX (4, 830), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evsthb", VX (4, 831), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2, RA}},
+{"evlddmx", VX (4, 832), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlddu", VX (4, 833), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evldwmx", VX (4, 834), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evldwu", VX (4, 835), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evldhmx", VX (4, 836), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evldhu", VX (4, 837), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evldbmx", VX (4, 838), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evldbu", VX (4, 839), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
+{"evlhhesplatmx", VX (4, 840), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhesplatu", VX (4, 841), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlhhsplathmx", VX (4, 842), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhsplathu", VX (4, 843), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlhhousplatmx", VX (4, 844), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhousplatu", VX (4, 845), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlhhossplatmx", VX (4, 846), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlhhossplatu", VX (4, 847), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
+{"evlwhemx", VX (4, 848), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwheu", VX (4, 849), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwbsplatwmx", VX (4, 850), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbsplatwu", VX (4, 851), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhoumx", VX (4, 852), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhouu", VX (4, 853), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhosmx", VX (4, 854), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhosu", VX (4, 855), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwwsplatmx", VX (4, 856), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwwsplatu", VX (4, 857), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhsplatwmx", VX (4, 858), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhsplatwu", VX (4, 859), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwhsplatmx", VX (4, 860), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwhsplatu", VX (4, 861), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlbbsplatbmx", VX (4, 862), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlbbsplatbu", VX (4, 863), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
+{"evstddmx", VX (4, 864), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstddu", VX (4, 865), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evstdwmx", VX (4, 866), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstdwu", VX (4, 867), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evstdhmx", VX (4, 868), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstdhu", VX (4, 869), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evstdbmx", VX (4, 870), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstdbu", VX (4, 871), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
+{"evlwbemx", VX (4, 874), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbeu", VX (4, 875), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwboumx", VX (4, 876), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbouu", VX (4, 877), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evlwbosmx", VX (4, 878), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evlwbosu", VX (4, 879), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
+{"evstwhemx", VX (4, 880), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwheu", VX (4, 881), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwbemx", VX (4, 882), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbeu", VX (4, 883), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwhomx", VX (4, 884), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwhou", VX (4, 885), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwbomx", VX (4, 886), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbou", VX (4, 887), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwwemx", VX (4, 888), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwweu", VX (4, 889), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwbmx", VX (4, 890), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwbu", VX (4, 891), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evstwwomx", VX (4, 892), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evstwwou", VX (4, 893), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
+{"evsthbmx", VX (4, 894), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
+{"evsthbu", VX (4, 895), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
+{"evmhusi", VX (4, 1024), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhssi", VX (4, 1025), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhsusi", VX (4, 1026), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhssf", VX (4, 1028), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhumi", VX (4, 1029), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhssfr", VX (4, 1030), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumi", VX (4, 1034), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumi", VX (4, 1038), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumi", VX (4, 1048), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmi", VX (4, 1049), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumi", VX (4, 1050), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumi", VX (4, 1052), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmi", VX (4, 1053), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumi", VX (4, 1054), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumia", VX (4, 1066), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumia", VX (4, 1070), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumia", VX (4, 1080), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmia", VX (4, 1081), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumia", VX (4, 1082), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumia", VX (4, 1084), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmia", VX (4, 1085), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumia", VX (4, 1086), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwusiw", VX (4, 1088), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwssiw", VX (4, 1089), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfr", VX (4, 1094), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfr", VX (4, 1110), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmf", VX (4, 1111), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfr", VX (4, 1118), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmf", VX (4, 1119), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfra", VX (4, 1126), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfra", VX (4, 1142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfa", VX (4, 1143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfra", VX (4, 1150), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfa", VX (4, 1151), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddusiaa", VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evaddssiaa", VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsubfusiaa", VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsubfssiaa", VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evaddsmiaa", VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsubfsmiaa", VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evaddh", VX (4, 1160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhss", VX (4, 1161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfh", VX (4, 1162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhss", VX (4, 1163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhx", VX (4, 1164), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhxss", VX (4, 1165), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhx", VX (4, 1166), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhxss", VX (4, 1167), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddd", VX (4, 1168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evadddss", VX (4, 1169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfd", VX (4, 1170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfdss", VX (4, 1171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddb", VX (4, 1172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddbss", VX (4, 1173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfb", VX (4, 1174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfbss", VX (4, 1175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfh", VX (4, 1176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfhss", VX (4, 1177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddh", VX (4, 1178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddhss", VX (4, 1179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfhx", VX (4, 1180), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfhxss", VX (4, 1181), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddhx", VX (4, 1182), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddhxss", VX (4, 1183), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evadddus", VX (4, 1184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddbus", VX (4, 1185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfdus", VX (4, 1186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfbus", VX (4, 1187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwus", VX (4, 1188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwxus", VX (4, 1189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwus", VX (4, 1190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwxus", VX (4, 1191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evadd2subf2h", VX (4, 1192), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evadd2subf2hss", VX (4, 1193), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubf2add2h", VX (4, 1194), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubf2add2hss", VX (4, 1195), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhus", VX (4, 1196), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhxus", VX (4, 1197), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhus", VX (4, 1198), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhxus", VX (4, 1199), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwss", VX (4, 1201), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwss", VX (4, 1203), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwx", VX (4, 1204), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwxss", VX (4, 1205), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwx", VX (4, 1206), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwxss", VX (4, 1207), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfw", VX (4, 1208), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfwss", VX (4, 1209), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddw", VX (4, 1210), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddwss", VX (4, 1211), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfwx", VX (4, 1212), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddsubfwxss", VX (4, 1213), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddwx", VX (4, 1214), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfaddwxss", VX (4, 1215), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmar", VX_SPE2_EVMAR (4, 1220), VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
+{"evsumwu", VX_RB_CONST(4, 1221, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsumws", VX_RB_CONST(4, 1221, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum4bu", VX_RB_CONST(4, 1221, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum4bs", VX_RB_CONST(4, 1221, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2hu", VX_RB_CONST(4, 1221, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2hs", VX_RB_CONST(4, 1221, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evdiff2his", VX_RB_CONST(4, 1221, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2his", VX_RB_CONST(4, 1221, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsumwua", VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsumwsa", VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum4bua", VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum4bsa", VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2hua", VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2hsa", VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evdiff2hisa", VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2hisa", VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsumwuaa", VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsumwsaa", VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum4buaaw", VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum4bsaaw", VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2huaaw", VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2hsaaw", VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evdiff2hisaaw", VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evsum2hisaaw", VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
+{"evdivwsf", VX (4, 1228), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdivwuf", VX (4, 1229), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdivs", VX (4, 1230), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdivu", VX (4, 1231), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwegsi", VX (4, 1232), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwegsf", VX (4, 1233), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwegsi", VX (4, 1234), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwegsf", VX (4, 1235), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwogsi", VX (4, 1236), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddwogsf", VX (4, 1237), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwogsi", VX (4, 1238), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfwogsf", VX (4, 1239), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhhiuw", VX (4, 1240), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhhisw", VX (4, 1241), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhhiuw", VX (4, 1242), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhhisw", VX (4, 1243), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhlouw", VX (4, 1244), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evaddhlosw", VX (4, 1245), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhlouw", VX (4, 1246), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsubfhlosw", VX (4, 1247), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesusiaaw", VX (4, 1282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosusiaaw", VX (4, 1286), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumiaaw", VX (4, 1290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumiaaw", VX (4, 1294), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeusiaah", VX (4, 1296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbessiaah", VX (4, 1297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesusiaah", VX (4, 1298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbousiaah", VX (4, 1300), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbossiaah", VX (4, 1301), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosusiaah", VX (4, 1302), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumiaah", VX (4, 1304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmiaah", VX (4, 1305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumiaah", VX (4, 1306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumiaah", VX (4, 1308), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmiaah", VX (4, 1309), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumiaah", VX (4, 1310), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlusiaaw3", VX (4, 1346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlssiaaw3", VX (4, 1347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfraaw3", VX (4, 1348), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfaaw3", VX (4, 1349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfraaw", VX (4, 1350), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfaaw", VX (4, 1351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlumiaaw3", VX (4, 1354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlsmiaaw3", VX (4, 1355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwusiaa", VX (4, 1360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwssiaa", VX (4, 1361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfraa", VX (4, 1366), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfaa", VX (4, 1367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfraa", VX (4, 1374), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfaa", VX (4, 1375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesusianw", VX (4, 1410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosusianw", VX (4, 1414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhesumianw", VX (4, 1418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmhosumianw", VX (4, 1422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeusianh", VX (4, 1424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbessianh", VX (4, 1425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesusianh", VX (4, 1426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbousianh", VX (4, 1428), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbossianh", VX (4, 1429), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosusianh", VX (4, 1430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbeumianh", VX (4, 1432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesmianh", VX (4, 1433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbesumianh", VX (4, 1434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmboumianh", VX (4, 1436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosmianh", VX (4, 1437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmbosumianh", VX (4, 1438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlusianw3", VX (4, 1474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlssianw3", VX (4, 1475), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfranw3", VX (4, 1476), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfanw3", VX (4, 1477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfranw", VX (4, 1478), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwhssfanw", VX (4, 1479), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlumianw3", VX (4, 1482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwlsmianw3", VX (4, 1483), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwusian", VX (4, 1488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwssian", VX (4, 1489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfran", VX (4, 1494), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwehgsmfan", VX (4, 1495), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfran", VX (4, 1502), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmwohgsmfan", VX (4, 1503), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqb", VX (4, 1536), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqb.", VX (4, 1537), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqh", VX (4, 1538), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqh.", VX (4, 1539), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqw", VX (4, 1540), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evseteqw.", VX (4, 1541), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgthu", VX (4, 1544), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgthu.", VX (4, 1545), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgths", VX (4, 1546), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgths.", VX (4, 1547), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtwu", VX (4, 1548), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtwu.", VX (4, 1549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtws", VX (4, 1550), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtws.", VX (4, 1551), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbu", VX (4, 1552), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbu.", VX (4, 1553), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbs", VX (4, 1554), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetgtbs.", VX (4, 1555), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbu", VX (4, 1556), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbu.", VX (4, 1557), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbs", VX (4, 1558), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltbs.", VX (4, 1559), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlthu", VX (4, 1560), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlthu.", VX (4, 1561), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlths", VX (4, 1562), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetlths.", VX (4, 1563), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltwu", VX (4, 1564), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltwu.", VX (4, 1565), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltws", VX (4, 1566), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsetltws.", VX (4, 1567), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsaduw", VX (4, 1568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsadsw", VX (4, 1569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4ub", VX (4, 1570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4sb", VX (4, 1571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2uh", VX (4, 1572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2sh", VX (4, 1573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsaduwa", VX (4, 1576), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsadswa", VX (4, 1577), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4uba", VX (4, 1578), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4sba", VX (4, 1579), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2uha", VX (4, 1580), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2sha", VX (4, 1581), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifuw", VX (4, 1584), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifsw", VX (4, 1585), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifub", VX (4, 1586), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifsb", VX (4, 1587), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifuh", VX (4, 1588), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evabsdifsh", VX (4, 1589), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsaduwaa", VX (4, 1592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsadswaa", VX (4, 1593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4ubaaw", VX (4, 1594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad4sbaaw", VX (4, 1595), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2uhaaw", VX (4, 1596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evsad2shaaw", VX (4, 1597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkshubs", VX (4, 1600), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkshsbs", VX (4, 1601), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswuhs", VX (4, 1602), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshs", VX (4, 1603), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkuhubs", VX (4, 1604), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkuwuhs", VX (4, 1605), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshilvs", VX (4, 1606), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswgshefrs", VX (4, 1607), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshfrs", VX (4, 1608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswshilvfrs", VX (4, 1609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpksdswfrs", VX (4, 1610), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpksdshefrs", VX (4, 1611), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkuduws", VX (4, 1612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpksdsws", VX (4, 1613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evpkswgswfrs", VX (4, 1614), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilveh", VX (4, 1616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilveoh", VX (4, 1617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilvhih", VX (4, 1618), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilvhiloh", VX (4, 1619), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilvloh", VX (4, 1620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilvlohih", VX (4, 1621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilvoeh", VX (4, 1622), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evilvoh", VX (4, 1623), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveb", VX (4, 1624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveh", VX (4, 1625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveob", VX (4, 1626), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlveoh", VX (4, 1627), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvob", VX (4, 1628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvoh", VX (4, 1629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvoeb", VX (4, 1630), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evdlvoeh", VX (4, 1631), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxbu", VX (4, 1632), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxbs", VX (4, 1633), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxhu", VX (4, 1634), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxhs", VX (4, 1635), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxwu", VX (4, 1636), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxws", VX (4, 1637), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxdu", VX (4, 1638), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmaxds", VX (4, 1639), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evminbu", VX (4, 1640), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evminbs", VX (4, 1641), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evminhu", VX (4, 1642), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evminhs", VX (4, 1643), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evminwu", VX (4, 1644), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evminws", VX (4, 1645), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evmindu", VX (4, 1646), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evminds", VX (4, 1647), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgwu", VX (4, 1648), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgws", VX (4, 1649), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbu", VX (4, 1650), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbs", VX (4, 1651), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavghu", VX (4, 1652), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavghs", VX (4, 1653), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgdu", VX (4, 1654), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgds", VX (4, 1655), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgwur", VX (4, 1656), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgwsr", VX (4, 1657), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbur", VX (4, 1658), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgbsr", VX (4, 1659), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavghur", VX (4, 1660), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavghsr", VX (4, 1661), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgdur", VX (4, 1662), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+{"evavgdsr", VX (4, 1663), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
+
+};
+
+const int spe2_num_opcodes =
+ sizeof (spe2_opcodes) / sizeof (spe2_opcodes[0]);
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2017-06-23 20:52 Alexander Fedotov
@ 2017-06-23 20:55 ` Alexander Fedotov
2017-06-23 20:56 ` Alexander Fedotov
2017-06-24 13:18 ` Alan Modra
2017-06-24 13:11 ` Alan Modra
1 sibling, 2 replies; 20+ messages in thread
From: Alexander Fedotov @ 2017-06-23 20:55 UTC (permalink / raw)
To: Alan Modra, binutils; +Cc: Edmar Wienskoski
[-- Attachment #1: Type: text/plain, Size: 302 bytes --]
This patch for LSP instructions support
On Fri, Jun 23, 2017 at 11:51 PM, Alexander Fedotov <alfedotov@gmail.com> wrote:
> Hello Alan
>
> We want to upstream our changes for VLE, LSP, SPE2 and other stuff.
> All of them are based on 2.28 release.
>
> Best regards,
> Alexander
--
Best regards,
AF
[-- Attachment #2: 2.28-lsp.patch --]
[-- Type: text/x-patch, Size: 118355 bytes --]
diff -ruN binutils-2.28-vle/gas/testsuite/gas/ppc/lsp-checks.d binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp-checks.d
--- binutils-2.28-vle/gas/testsuite/gas/ppc/lsp-checks.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp-checks.d 2017-06-23 17:44:50.947719000 +0300
@@ -0,0 +1,3 @@
+#name: Test LSP operands checks
+#as: -mvle
+#error-output: lsp-checks.l
diff -ruN binutils-2.28-vle/gas/testsuite/gas/ppc/lsp-checks.l binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp-checks.l
--- binutils-2.28-vle/gas/testsuite/gas/ppc/lsp-checks.l 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp-checks.l 2017-06-23 17:44:50.947719000 +0300
@@ -0,0 +1,92 @@
+[^:]*: Assembler messages:
+[^:]*:22: Error: invalid offset
+[^:]*:23: Error: UIMM values >15 are illegal
+[^:]*:24: Error: UIMM values >15 are illegal
+[^:]*:25: Error: UIMM values >15 are illegal
+[^:]*:26: Error: UIMM values >15 are illegal
+[^:]*:27: Error: UIMM values >15 are illegal
+[^:]*:28: Error: UIMM values >15 are illegal
+[^:]*:29: Error: GPR odd is illegal
+[^:]*:30: Error: operand out of domain \(7 is not a multiple of 8\)
+[^:]*:31: Error: GPR odd is illegal
+[^:]*:32: Error: operand out of domain \(7 is not a multiple of 8\)
+[^:]*:33: Error: GPR odd is illegal
+[^:]*:34: Error: operand out of domain \(7 is not a multiple of 8\)
+[^:]*:35: Error: GPR odd is illegal
+[^:]*:36: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:37: Error: GPR odd is illegal
+[^:]*:38: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:39: Error: GPR odd is illegal
+[^:]*:40: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:41: Error: GPR odd is illegal
+[^:]*:42: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:43: Error: GPR odd is illegal
+[^:]*:44: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:45: Error: GPR odd is illegal
+[^:]*:46: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:47: Error: GPR odd is illegal
+[^:]*:48: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:49: Error: GPR odd is illegal
+[^:]*:50: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:51: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:52: Error: operand out of domain \(3 is not a multiple of 2\)
+[^:]*:53: Error: operand out of domain \(3 is not a multiple of 2\)
+[^:]*:54: Error: GPR odd is illegal
+[^:]*:55: Error: operand out of domain \(7 is not a multiple of 8\)
+[^:]*:56: Error: GPR odd is illegal
+[^:]*:57: Error: operand out of domain \(7 is not a multiple of 8\)
+[^:]*:58: Error: GPR odd is illegal
+[^:]*:59: Error: operand out of domain \(7 is not a multiple of 8\)
+[^:]*:60: Error: GPR odd is illegal
+[^:]*:61: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:62: Error: GPR odd is illegal
+[^:]*:63: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:64: Error: operand out of domain \(3 is not a multiple of 2\)
+[^:]*:65: Error: operand out of domain \(3 is not a multiple of 2\)
+[^:]*:66: Error: operand out of domain \(3 is not a multiple of 2\)
+[^:]*:67: Error: operand out of domain \(3 is not a multiple of 2\)
+[^:]*:68: Error: operand out of domain \(3 is not a multiple of 2\)
+[^:]*:69: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:70: Error: operand out of domain \(3 is not a multiple of 4\)
+[^:]*:71: Error: GPR odd is illegal
+[^:]*:72: Error: UIMM = 00000 is illegal
+[^:]*:73: Error: GPR odd is illegal
+[^:]*:74: Error: UIMM = 00000 is illegal
+[^:]*:75: Error: GPR odd is illegal
+[^:]*:76: Error: UIMM = 00000 is illegal
+[^:]*:77: Error: GPR odd is illegal
+[^:]*:78: Error: UIMM = 00000 is illegal
+[^:]*:79: Error: GPR odd is illegal
+[^:]*:80: Error: UIMM = 00000 is illegal
+[^:]*:81: Error: GPR odd is illegal
+[^:]*:82: Error: UIMM = 00000 is illegal
+[^:]*:83: Error: GPR odd is illegal
+[^:]*:84: Error: UIMM = 00000 is illegal
+[^:]*:85: Error: GPR odd is illegal
+[^:]*:86: Error: UIMM = 00000 is illegal
+[^:]*:87: Error: GPR odd is illegal
+[^:]*:88: Error: UIMM = 00000 is illegal
+[^:]*:89: Error: GPR odd is illegal
+[^:]*:90: Error: UIMM = 00000 is illegal
+[^:]*:91: Error: GPR odd is illegal
+[^:]*:92: Error: UIMM = 00000 is illegal
+[^:]*:93: Error: UIMM = 00000 is illegal
+[^:]*:94: Error: UIMM = 00000 is illegal
+[^:]*:95: Error: UIMM = 00000 is illegal
+[^:]*:96: Error: UIMM = 00000 is illegal
+[^:]*:97: Error: UIMM = 00000 is illegal
+[^:]*:98: Error: GPR odd is illegal
+[^:]*:99: Error: UIMM = 00000 is illegal
+[^:]*:100: Error: GPR odd is illegal
+[^:]*:101: Error: UIMM = 00000 is illegal
+[^:]*:102: Error: GPR odd is illegal
+[^:]*:103: Error: UIMM = 00000 is illegal
+[^:]*:104: Error: GPR odd is illegal
+[^:]*:105: Error: UIMM = 00000 is illegal
+[^:]*:106: Error: UIMM = 00000 is illegal
+[^:]*:107: Error: UIMM = 00000 is illegal
+[^:]*:108: Error: UIMM = 00000 is illegal
+[^:]*:109: Error: UIMM = 00000 is illegal
+[^:]*:110: Error: UIMM = 00000 is illegal
+[^:]*:111: Error: UIMM = 00000 is illegal
+[^:]*:112: Error: UIMM = 00000 is illegal
diff -ruN binutils-2.28-vle/gas/testsuite/gas/ppc/lsp-checks.s binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp-checks.s
--- binutils-2.28-vle/gas/testsuite/gas/ppc/lsp-checks.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp-checks.s 2017-06-23 17:44:50.947719000 +0300
@@ -0,0 +1,112 @@
+# Test PA LSP operands checks
+ .section ".text"
+
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0 ;# ok
+ .equ rD_odd, 1 ;# GPR odd is illegal
+ .equ rS,0 ;# ok
+ .equ rS_odd, 1 ;# GPR odd is illegal
+ .equ UIMM_GT15, 16 ;# UIMM values >15 are illegal
+ .equ UIMM_2, 2 ;# ok
+ .equ UIMM_2_ILL, 3 ;# 3 is not a multiple of 2
+ .equ UIMM_2_ZERO, 0 ;# UIMM = 00000 is illegal if U=1
+ .equ UIMM_4, 4 ;# ok
+ .equ UIMM_4_ILL, 3 ;# 3 is not a multiple of 4
+ .equ UIMM_4_ZERO, 0 ;# UIMM = 00000 is illegal if U=1
+ .equ UIMM_8, 8 ;# ok
+ .equ UIMM_8_ILL, 7 ;# 7 is not a multiple of 8
+ .equ UIMM_8_ZERO, 0 ;# UIMM = 00000 is illegal if U=1
+ .equ offset, 0 ;# invalid offset
+
+ zxtrw rD, rA, rB, offset
+ zvsrhiu rD, rA, UIMM_GT15
+ zvsrhis rD, rA, UIMM_GT15
+ zvslhi rD, rA, UIMM_GT15
+ zvrlhi rD, rA, UIMM_GT15
+ zvslhius rD, rA, UIMM_GT15
+ zvslhiss rD, rA, UIMM_GT15
+ zldd rD_odd, UIMM_8(rA)
+ zldd rD, UIMM_8_ILL(rA)
+ zldw rD_odd, UIMM_8(rA)
+ zldw rD, UIMM_8_ILL(rA)
+ zldh rD_odd, UIMM_8(rA)
+ zldh rD, UIMM_8_ILL(rA)
+ zlwgsfd rD_odd, UIMM_4(rA)
+ zlwgsfd rD, UIMM_4_ILL(rA)
+ zlwwosd rD_odd, UIMM_4(rA)
+ zlwwosd rD, UIMM_4_ILL(rA)
+ zlwhsplatwd rD_odd, UIMM_4(rA)
+ zlwhsplatwd rD, UIMM_4_ILL(rA)
+ zlwhsplatd rD_odd, UIMM_4(rA)
+ zlwhsplatd rD, UIMM_4_ILL(rA)
+ zlwhgwsfd rD_odd, UIMM_4(rA)
+ zlwhgwsfd rD, UIMM_4_ILL(rA)
+ zlwhed rD_odd, UIMM_4(rA)
+ zlwhed rD, UIMM_4_ILL(rA)
+ zlwhosd rD_odd, UIMM_4(rA)
+ zlwhosd rD, UIMM_4_ILL(rA)
+ zlwhoud rD_odd, UIMM_4(rA)
+ zlwh rD, UIMM_4_ILL(rA)
+ zlww rD, UIMM_4_ILL(rA)
+ zlhgwsf rD, UIMM_2_ILL(rA)
+ zlhhsplat rD, UIMM_2_ILL(rA)
+ zstdd rS_odd, UIMM_8(rA)
+ zstdd rS, UIMM_8_ILL(rA)
+ zstdw rS_odd, UIMM_8(rA)
+ zstdw rS, UIMM_8_ILL(rA)
+ zstdh rS_odd, UIMM_8(rA)
+ zstdh rS, UIMM_8_ILL(rA)
+ zstwhed rS_odd, UIMM_4(rA)
+ zstwhed rS, UIMM_4_ILL(rA)
+ zstwhod rS_odd, UIMM_4(rA)
+ zstwhod rS, UIMM_4_ILL(rA)
+ zlhhe rD, UIMM_2_ILL(rA)
+ zlhhos rD, UIMM_2_ILL(rA)
+ zlhhou rD, UIMM_2_ILL(rA)
+ zsthe rS, UIMM_2_ILL(rA)
+ zstho rS, UIMM_2_ILL(rA)
+ zstwh rS, UIMM_4_ILL(rA)
+ zstww rS, UIMM_4_ILL(rA)
+ zlddu rD_odd, UIMM_8(rA)
+ zlddu rD, UIMM_8_ZERO(rA)
+ zldwu rD_odd, UIMM_8(rA)
+ zldwu rD, UIMM_8_ZERO(rA)
+ zldhu rD_odd, UIMM_8(rA)
+ zldhu rD, UIMM_8_ZERO(rA)
+ zlwgsfdu rD_odd, UIMM_4(rA)
+ zlwgsfdu rD, UIMM_4_ZERO(rA)
+ zlwwosdu rD_odd, UIMM_4(rA)
+ zlwwosdu rD, UIMM_4_ZERO(rA)
+ zlwhsplatwdu rD_odd, UIMM_4(rA)
+ zlwhsplatwdu rD, UIMM_4_ZERO(rA)
+ zlwhsplatdu rD_odd, UIMM_4(rA)
+ zlwhsplatdu rD, UIMM_4_ZERO(rA)
+ zlwhgwsfdu rD_odd, UIMM_4(rA)
+ zlwhgwsfdu rD, UIMM_4_ZERO(rA)
+ zlwhedu rD_odd, UIMM_4(rA)
+ zlwhedu rD, UIMM_4_ZERO(rA)
+ zlwhosdu rD_odd, UIMM_4(rA)
+ zlwhosdu rD, UIMM_4_ZERO(rA)
+ zlwhoudu rD_odd, UIMM_4(rA)
+ zlwhoudu rD, UIMM_4_ZERO(rA)
+ zlwhu rD, UIMM_4_ZERO(rA)
+ zlwwu rD, UIMM_4_ZERO(rA)
+ zlhgwsfu rD, UIMM_2_ZERO(rA)
+ zlhhsplatu rD, UIMM_2_ZERO(rA)
+ zstddu rS, UIMM_8_ZERO(rA)
+ zstdwu rS_odd, UIMM_8(rA)
+ zstdwu rS, UIMM_8_ZERO(rA)
+ zstdhu rS_odd, UIMM_8(rA)
+ zstdhu rS, UIMM_8_ZERO(rA)
+ zstwhedu rS_odd, UIMM_4(rA)
+ zstwhedu rS, UIMM_4_ZERO(rA)
+ zstwhodu rS_odd, UIMM_4(rA)
+ zstwhodu rS, UIMM_4_ZERO(rA)
+ zlhheu rD, UIMM_2_ZERO(rA)
+ zlhhosu rD, UIMM_2_ZERO(rA)
+ zlhhouu rD, UIMM_2_ZERO(rA)
+ zstheu rS, UIMM_2_ZERO(rA)
+ zsthou rS, UIMM_2_ZERO(rA)
+ zstwhu rS, UIMM_4_ZERO(rA)
+ zstwwu rS, UIMM_4_ZERO(rA)
diff -ruN binutils-2.28-vle/gas/testsuite/gas/ppc/lsp.d binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp.d
--- binutils-2.28-vle/gas/testsuite/gas/ppc/lsp.d 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp.d 2017-06-23 17:44:50.947719000 +0300
@@ -0,0 +1,687 @@
+#as: -mvle
+#objdump: -d -Mvle
+#name: Validate LSP instructions
+
+.*: +file format elf.*-powerpc.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 10 01 7a 00 zvaddih r0,r1,15
+ 4: 10 01 7a 01 zvsubifh r0,r1,15
+ 8: 10 01 12 04 zvaddh r0,r1,r2
+ c: 10 01 12 05 zvsubfh r0,r1,r2
+ 10: 10 01 12 06 zvaddsubfh r0,r1,r2
+ 14: 10 01 12 07 zvsubfaddh r0,r1,r2
+ 18: 10 01 12 0c zvaddhx r0,r1,r2
+ 1c: 10 01 12 0d zvsubfhx r0,r1,r2
+ 20: 10 01 12 0e zvaddsubfhx r0,r1,r2
+ 24: 10 01 12 0f zvsubfaddhx r0,r1,r2
+ 28: 10 01 12 10 zaddwus r0,r1,r2
+ 2c: 10 01 12 11 zsubfwus r0,r1,r2
+ 30: 10 01 12 12 zaddwss r0,r1,r2
+ 34: 10 01 12 13 zsubfwss r0,r1,r2
+ 38: 10 01 12 14 zvaddhus r0,r1,r2
+ 3c: 10 01 12 15 zvsubfhus r0,r1,r2
+ 40: 10 01 12 16 zvaddhss r0,r1,r2
+ 44: 10 01 12 17 zvsubfhss r0,r1,r2
+ 48: 10 01 12 1a zvaddsubfhss r0,r1,r2
+ 4c: 10 01 12 1b zvsubfaddhss r0,r1,r2
+ 50: 10 01 12 1c zvaddhxss r0,r1,r2
+ 54: 10 01 12 1d zvsubfhxss r0,r1,r2
+ 58: 10 01 12 1e zvaddsubfhxss r0,r1,r2
+ 5c: 10 01 12 1f zvsubfaddhxss r0,r1,r2
+ 60: 10 01 12 20 zaddheuw r0,r1,r2
+ 64: 10 01 12 21 zsubfheuw r0,r1,r2
+ 68: 10 01 12 22 zaddhesw r0,r1,r2
+ 6c: 10 01 12 23 zsubfhesw r0,r1,r2
+ 70: 10 01 12 24 zaddhouw r0,r1,r2
+ 74: 10 01 12 25 zsubfhouw r0,r1,r2
+ 78: 10 01 12 26 zaddhosw r0,r1,r2
+ 7c: 10 01 12 27 zsubfhosw r0,r1,r2
+ 80: 10 01 12 2c zvmergehih r0,r1,r2
+ 84: 10 01 12 2d zvmergeloh r0,r1,r2
+ 88: 10 01 12 2e zvmergehiloh r0,r1,r2
+ 8c: 10 01 12 2f zvmergelohih r0,r1,r2
+ 90: 10 01 12 30 zvcmpgthu cr0,r1,r2
+ 94: 10 01 12 30 zvcmpgthu cr0,r1,r2
+ 98: 10 01 12 31 zvcmplthu cr0,r1,r2
+ 9c: 10 01 12 31 zvcmplthu cr0,r1,r2
+ a0: 10 01 12 32 zvcmpeqh cr0,r1,r2
+ a4: 10 01 12 38 zpkswgshfrs r0,r1,r2
+ a8: 10 01 12 39 zpkswgswfrs r0,r1,r2
+ ac: 10 01 12 3a zvpkshgwshfrs r0,r1,r2
+ b0: 10 01 12 3b zvpkswshfrs r0,r1,r2
+ b4: 10 01 12 3c zvpkswuhs r0,r1,r2
+ b8: 10 01 12 3d zvpkswshs r0,r1,r2
+ bc: 10 01 12 3e zvpkuwuhs r0,r1,r2
+ c0: 10 10 02 3f zvsplatih r0,-16
+ c4: 10 10 0a 3f zvsplatfih r0,-16
+ c8: 10 01 2a 3f zcntlsw r0,r1
+ cc: 10 01 32 3f zvcntlzh r0,r1
+ d0: 10 01 3a 3f zvcntlsh r0,r1
+ d4: 10 01 4a 3f znegws r0,r1
+ d8: 10 01 52 3f zvnegh r0,r1
+ dc: 10 01 5a 3f zvneghs r0,r1
+ e0: 10 01 62 3f zvnegho r0,r1
+ e4: 10 01 6a 3f zvneghos r0,r1
+ e8: 10 01 82 3f zrndwh r0,r1
+ ec: 10 01 8a 3f zrndwhss r0,r1
+ f0: 10 01 a2 3f zvabsh r0,r1
+ f4: 10 01 aa 3f zvabshs r0,r1
+ f8: 10 01 b2 3f zabsw r0,r1
+ fc: 10 01 ba 3f zabsws r0,r1
+ 100: 10 01 c2 3f zsatswuw r0,r1
+ 104: 10 01 ca 3f zsatuwsw r0,r1
+ 108: 10 01 d2 3f zsatswuh r0,r1
+ 10c: 10 01 da 3f zsatswsh r0,r1
+ 110: 10 01 e2 3f zvsatshuh r0,r1
+ 114: 10 01 ea 3f zvsatuhsh r0,r1
+ 118: 10 01 f2 3f zsatuwuh r0,r1
+ 11c: 10 01 fa 3f zsatuwsh r0,r1
+ 120: 10 01 12 60 zsatsduw r0,r1,r2
+ 124: 10 01 12 61 zsatsdsw r0,r1,r2
+ 128: 10 01 12 62 zsatuduw r0,r1,r2
+ 12c: 10 01 12 64 zvselh r0,r1,r2
+ 130: 10 01 12 65 zxtrw r0,r1,r2,1
+ 134: 10 01 12 68 zbrminc r0,r1,r2
+ 138: 10 01 12 69 zcircinc r0,r1,r2
+ 13c: 10 01 12 6b zdivwsf r0,r1,r2
+ 140: 10 01 12 70 zvsrhu r0,r1,r2
+ 144: 10 01 12 71 zvsrhs r0,r1,r2
+ 148: 10 01 7a 72 zvsrhiu r0,r1,15
+ 14c: 10 01 7a 73 zvsrhis r0,r1,15
+ 150: 10 01 12 74 zvslh r0,r1,r2
+ 154: 10 01 12 75 zvrlh r0,r1,r2
+ 158: 10 01 7a 76 zvslhi r0,r1,15
+ 15c: 10 01 7a 77 zvrlhi r0,r1,15
+ 160: 10 01 12 78 zvslhus r0,r1,r2
+ 164: 10 01 12 79 zvslhss r0,r1,r2
+ 168: 10 01 7a 7a zvslhius r0,r1,15
+ 16c: 10 01 7a 7b zvslhiss r0,r1,15
+ 170: 10 01 12 7c zslwus r0,r1,r2
+ 174: 10 01 12 7d zslwss r0,r1,r2
+ 178: 10 01 7a 7e zslwius r0,r1,15
+ 17c: 10 01 7a 7f zslwiss r0,r1,15
+ 180: 10 01 14 60 zaddwgui r0,r1,r2
+ 184: 10 01 14 61 zsubfwgui r0,r1,r2
+ 188: 10 01 14 62 zaddd r0,r1,r2
+ 18c: 10 01 14 63 zsubfd r0,r1,r2
+ 190: 10 01 14 64 zvaddsubfw r0,r1,r2
+ 194: 10 01 14 65 zvsubfaddw r0,r1,r2
+ 198: 10 01 14 66 zvaddw r0,r1,r2
+ 19c: 10 01 14 67 zvsubfw r0,r1,r2
+ 1a0: 10 01 14 68 zaddwgsi r0,r1,r2
+ 1a4: 10 01 14 69 zsubfwgsi r0,r1,r2
+ 1a8: 10 01 14 6a zadddss r0,r1,r2
+ 1ac: 10 01 14 6b zsubfdss r0,r1,r2
+ 1b0: 10 01 14 6c zvaddsubfwss r0,r1,r2
+ 1b4: 10 01 14 6d zvsubfaddwss r0,r1,r2
+ 1b8: 10 01 14 6e zvaddwss r0,r1,r2
+ 1bc: 10 01 14 6f zvsubfwss r0,r1,r2
+ 1c0: 10 01 14 70 zaddwgsf r0,r1,r2
+ 1c4: 10 01 14 71 zsubfwgsf r0,r1,r2
+ 1c8: 10 01 14 72 zadddus r0,r1,r2
+ 1cc: 10 01 14 73 zsubfdus r0,r1,r2
+ 1d0: 10 01 14 76 zvaddwus r0,r1,r2
+ 1d4: 10 01 14 77 zvsubfwus r0,r1,r2
+ 1d8: 10 01 04 78 zvunpkhgwsf r0,r1
+ 1dc: 10 01 0c 78 zvunpkhsf r0,r1
+ 1e0: 10 01 14 78 zvunpkhui r0,r1
+ 1e4: 10 01 1c 78 zvunpkhsi r0,r1
+ 1e8: 10 01 24 78 zunpkwgsf r0,r1
+ 1ec: 10 01 14 88 zvdotphgwasmf r0,r1,r2
+ 1f0: 10 01 14 89 zvdotphgwasmfr r0,r1,r2
+ 1f4: 10 01 14 8a zvdotphgwasmfaa r0,r1,r2
+ 1f8: 10 01 14 8b zvdotphgwasmfraa r0,r1,r2
+ 1fc: 10 01 14 8c zvdotphgwasmfan r0,r1,r2
+ 200: 10 01 14 8d zvdotphgwasmfran r0,r1,r2
+ 204: 10 01 14 90 zvmhulgwsmf r0,r1,r2
+ 208: 10 01 14 91 zvmhulgwsmfr r0,r1,r2
+ 20c: 10 01 14 92 zvmhulgwsmfaa r0,r1,r2
+ 210: 10 01 14 93 zvmhulgwsmfraa r0,r1,r2
+ 214: 10 01 14 94 zvmhulgwsmfan r0,r1,r2
+ 218: 10 01 14 95 zvmhulgwsmfran r0,r1,r2
+ 21c: 10 01 14 96 zvmhulgwsmfanp r0,r1,r2
+ 220: 10 01 14 97 zvmhulgwsmfranp r0,r1,r2
+ 224: 10 01 14 98 zmhegwsmf r0,r1,r2
+ 228: 10 01 14 99 zmhegwsmfr r0,r1,r2
+ 22c: 10 01 14 9a zmhegwsmfaa r0,r1,r2
+ 230: 10 01 14 9b zmhegwsmfraa r0,r1,r2
+ 234: 10 01 14 9c zmhegwsmfan r0,r1,r2
+ 238: 10 01 14 9d zmhegwsmfran r0,r1,r2
+ 23c: 10 01 14 a8 zvdotphxgwasmf r0,r1,r2
+ 240: 10 01 14 a9 zvdotphxgwasmfr r0,r1,r2
+ 244: 10 01 14 aa zvdotphxgwasmfaa r0,r1,r2
+ 248: 10 01 14 ab zvdotphxgwasmfraa r0,r1,r2
+ 24c: 10 01 14 ac zvdotphxgwasmfan r0,r1,r2
+ 250: 10 01 14 ad zvdotphxgwasmfran r0,r1,r2
+ 254: 10 01 14 b0 zvmhllgwsmf r0,r1,r2
+ 258: 10 01 14 b1 zvmhllgwsmfr r0,r1,r2
+ 25c: 10 01 14 b2 zvmhllgwsmfaa r0,r1,r2
+ 260: 10 01 14 b3 zvmhllgwsmfraa r0,r1,r2
+ 264: 10 01 14 b4 zvmhllgwsmfan r0,r1,r2
+ 268: 10 01 14 b5 zvmhllgwsmfran r0,r1,r2
+ 26c: 10 01 14 b6 zvmhllgwsmfanp r0,r1,r2
+ 270: 10 01 14 b7 zvmhllgwsmfranp r0,r1,r2
+ 274: 10 01 14 b8 zmheogwsmf r0,r1,r2
+ 278: 10 01 14 b9 zmheogwsmfr r0,r1,r2
+ 27c: 10 01 14 ba zmheogwsmfaa r0,r1,r2
+ 280: 10 01 14 bb zmheogwsmfraa r0,r1,r2
+ 284: 10 01 14 bc zmheogwsmfan r0,r1,r2
+ 288: 10 01 14 bd zmheogwsmfran r0,r1,r2
+ 28c: 10 01 14 c8 zvdotphgwssmf r0,r1,r2
+ 290: 10 01 14 c9 zvdotphgwssmfr r0,r1,r2
+ 294: 10 01 14 ca zvdotphgwssmfaa r0,r1,r2
+ 298: 10 01 14 cb zvdotphgwssmfraa r0,r1,r2
+ 29c: 10 01 14 cc zvdotphgwssmfan r0,r1,r2
+ 2a0: 10 01 14 cd zvdotphgwssmfran r0,r1,r2
+ 2a4: 10 01 14 d0 zvmhuugwsmf r0,r1,r2
+ 2a8: 10 01 14 d1 zvmhuugwsmfr r0,r1,r2
+ 2ac: 10 01 14 d2 zvmhuugwsmfaa r0,r1,r2
+ 2b0: 10 01 14 d3 zvmhuugwsmfraa r0,r1,r2
+ 2b4: 10 01 14 d4 zvmhuugwsmfan r0,r1,r2
+ 2b8: 10 01 14 d5 zvmhuugwsmfran r0,r1,r2
+ 2bc: 10 01 14 d6 zvmhuugwsmfanp r0,r1,r2
+ 2c0: 10 01 14 d7 zvmhuugwsmfranp r0,r1,r2
+ 2c4: 10 01 14 d8 zmhogwsmf r0,r1,r2
+ 2c8: 10 01 14 d9 zmhogwsmfr r0,r1,r2
+ 2cc: 10 01 14 da zmhogwsmfaa r0,r1,r2
+ 2d0: 10 01 14 db zmhogwsmfraa r0,r1,r2
+ 2d4: 10 01 14 dc zmhogwsmfan r0,r1,r2
+ 2d8: 10 01 14 dd zmhogwsmfran r0,r1,r2
+ 2dc: 10 01 14 f0 zvmhxlgwsmf r0,r1,r2
+ 2e0: 10 01 14 f1 zvmhxlgwsmfr r0,r1,r2
+ 2e4: 10 01 14 f2 zvmhxlgwsmfaa r0,r1,r2
+ 2e8: 10 01 14 f3 zvmhxlgwsmfraa r0,r1,r2
+ 2ec: 10 01 14 f4 zvmhxlgwsmfan r0,r1,r2
+ 2f0: 10 01 14 f5 zvmhxlgwsmfran r0,r1,r2
+ 2f4: 10 01 14 f6 zvmhxlgwsmfanp r0,r1,r2
+ 2f8: 10 01 14 f7 zvmhxlgwsmfranp r0,r1,r2
+ 2fc: 10 01 15 00 zmhegui r0,r1,r2
+ 300: 10 01 15 01 zvdotphgaui r0,r1,r2
+ 304: 10 01 15 02 zmheguiaa r0,r1,r2
+ 308: 10 01 15 03 zvdotphgauiaa r0,r1,r2
+ 30c: 10 01 15 04 zmheguian r0,r1,r2
+ 310: 10 01 15 05 zvdotphgauian r0,r1,r2
+ 314: 10 01 15 08 zmhegsi r0,r1,r2
+ 318: 10 01 15 09 zvdotphgasi r0,r1,r2
+ 31c: 10 01 15 0a zmhegsiaa r0,r1,r2
+ 320: 10 01 15 0b zvdotphgasiaa r0,r1,r2
+ 324: 10 01 15 0c zmhegsian r0,r1,r2
+ 328: 10 01 15 0d zvdotphgasian r0,r1,r2
+ 32c: 10 01 15 10 zmhegsui r0,r1,r2
+ 330: 10 01 15 11 zvdotphgasui r0,r1,r2
+ 334: 10 01 15 12 zmhegsuiaa r0,r1,r2
+ 338: 10 01 15 13 zvdotphgasuiaa r0,r1,r2
+ 33c: 10 01 15 14 zmhegsuian r0,r1,r2
+ 340: 10 01 15 15 zvdotphgasuian r0,r1,r2
+ 344: 10 01 15 18 zmhegsmf r0,r1,r2
+ 348: 10 01 15 19 zvdotphgasmf r0,r1,r2
+ 34c: 10 01 15 1a zmhegsmfaa r0,r1,r2
+ 350: 10 01 15 1b zvdotphgasmfaa r0,r1,r2
+ 354: 10 01 15 1c zmhegsmfan r0,r1,r2
+ 358: 10 01 15 1d zvdotphgasmfan r0,r1,r2
+ 35c: 10 01 15 20 zmheogui r0,r1,r2
+ 360: 10 01 15 21 zvdotphxgaui r0,r1,r2
+ 364: 10 01 15 22 zmheoguiaa r0,r1,r2
+ 368: 10 01 15 23 zvdotphxgauiaa r0,r1,r2
+ 36c: 10 01 15 24 zmheoguian r0,r1,r2
+ 370: 10 01 15 25 zvdotphxgauian r0,r1,r2
+ 374: 10 01 15 28 zmheogsi r0,r1,r2
+ 378: 10 01 15 29 zvdotphxgasi r0,r1,r2
+ 37c: 10 01 15 2a zmheogsiaa r0,r1,r2
+ 380: 10 01 15 2b zvdotphxgasiaa r0,r1,r2
+ 384: 10 01 15 2c zmheogsian r0,r1,r2
+ 388: 10 01 15 2d zvdotphxgasian r0,r1,r2
+ 38c: 10 01 15 30 zmheogsui r0,r1,r2
+ 390: 10 01 15 31 zvdotphxgasui r0,r1,r2
+ 394: 10 01 15 32 zmheogsuiaa r0,r1,r2
+ 398: 10 01 15 33 zvdotphxgasuiaa r0,r1,r2
+ 39c: 10 01 15 34 zmheogsuian r0,r1,r2
+ 3a0: 10 01 15 35 zvdotphxgasuian r0,r1,r2
+ 3a4: 10 01 15 38 zmheogsmf r0,r1,r2
+ 3a8: 10 01 15 39 zvdotphxgasmf r0,r1,r2
+ 3ac: 10 01 15 3a zmheogsmfaa r0,r1,r2
+ 3b0: 10 01 15 3b zvdotphxgasmfaa r0,r1,r2
+ 3b4: 10 01 15 3c zmheogsmfan r0,r1,r2
+ 3b8: 10 01 15 3d zvdotphxgasmfan r0,r1,r2
+ 3bc: 10 01 15 40 zmhogui r0,r1,r2
+ 3c0: 10 01 15 41 zvdotphgsui r0,r1,r2
+ 3c4: 10 01 15 42 zmhoguiaa r0,r1,r2
+ 3c8: 10 01 15 43 zvdotphgsuiaa r0,r1,r2
+ 3cc: 10 01 15 44 zmhoguian r0,r1,r2
+ 3d0: 10 01 15 45 zvdotphgsuian r0,r1,r2
+ 3d4: 10 01 15 48 zmhogsi r0,r1,r2
+ 3d8: 10 01 15 49 zvdotphgssi r0,r1,r2
+ 3dc: 10 01 15 4a zmhogsiaa r0,r1,r2
+ 3e0: 10 01 15 4b zvdotphgssiaa r0,r1,r2
+ 3e4: 10 01 15 4c zmhogsian r0,r1,r2
+ 3e8: 10 01 15 4d zvdotphgssian r0,r1,r2
+ 3ec: 10 01 15 50 zmhogsui r0,r1,r2
+ 3f0: 10 01 15 51 zvdotphgssui r0,r1,r2
+ 3f4: 10 01 15 52 zmhogsuiaa r0,r1,r2
+ 3f8: 10 01 15 53 zvdotphgssuiaa r0,r1,r2
+ 3fc: 10 01 15 54 zmhogsuian r0,r1,r2
+ 400: 10 01 15 55 zvdotphgssuian r0,r1,r2
+ 404: 10 01 15 58 zmhogsmf r0,r1,r2
+ 408: 10 01 15 59 zvdotphgssmf r0,r1,r2
+ 40c: 10 01 15 5a zmhogsmfaa r0,r1,r2
+ 410: 10 01 15 5b zvdotphgssmfaa r0,r1,r2
+ 414: 10 01 15 5c zmhogsmfan r0,r1,r2
+ 418: 10 01 15 5d zvdotphgssmfan r0,r1,r2
+ 41c: 10 01 15 60 zmwgui r0,r1,r2
+ 420: 10 01 15 62 zmwguiaa r0,r1,r2
+ 424: 10 01 15 63 zmwguiaas r0,r1,r2
+ 428: 10 01 15 64 zmwguian r0,r1,r2
+ 42c: 10 01 15 65 zmwguians r0,r1,r2
+ 430: 10 01 15 68 zmwgsi r0,r1,r2
+ 434: 10 01 15 6a zmwgsiaa r0,r1,r2
+ 438: 10 01 15 6b zmwgsiaas r0,r1,r2
+ 43c: 10 01 15 6c zmwgsian r0,r1,r2
+ 440: 10 01 15 6d zmwgsians r0,r1,r2
+ 444: 10 01 15 70 zmwgsui r0,r1,r2
+ 448: 10 01 15 72 zmwgsuiaa r0,r1,r2
+ 44c: 10 01 15 73 zmwgsuiaas r0,r1,r2
+ 450: 10 01 15 74 zmwgsuian r0,r1,r2
+ 454: 10 01 15 75 zmwgsuians r0,r1,r2
+ 458: 10 01 15 78 zmwgsmf r0,r1,r2
+ 45c: 10 01 15 79 zmwgsmfr r0,r1,r2
+ 460: 10 01 15 7a zmwgsmfaa r0,r1,r2
+ 464: 10 01 15 7b zmwgsmfraa r0,r1,r2
+ 468: 10 01 15 7c zmwgsmfan r0,r1,r2
+ 46c: 10 01 15 7d zmwgsmfran r0,r1,r2
+ 470: 10 01 15 80 zvmhului r0,r1,r2
+ 474: 10 01 15 82 zvmhuluiaa r0,r1,r2
+ 478: 10 01 15 83 zvmhuluiaas r0,r1,r2
+ 47c: 10 01 15 84 zvmhuluian r0,r1,r2
+ 480: 10 01 15 85 zvmhuluians r0,r1,r2
+ 484: 10 01 15 86 zvmhuluianp r0,r1,r2
+ 488: 10 01 15 87 zvmhuluianps r0,r1,r2
+ 48c: 10 01 15 88 zvmhulsi r0,r1,r2
+ 490: 10 01 15 8a zvmhulsiaa r0,r1,r2
+ 494: 10 01 15 8b zvmhulsiaas r0,r1,r2
+ 498: 10 01 15 8c zvmhulsian r0,r1,r2
+ 49c: 10 01 15 8d zvmhulsians r0,r1,r2
+ 4a0: 10 01 15 8e zvmhulsianp r0,r1,r2
+ 4a4: 10 01 15 8f zvmhulsianps r0,r1,r2
+ 4a8: 10 01 15 90 zvmhulsui r0,r1,r2
+ 4ac: 10 01 15 92 zvmhulsuiaa r0,r1,r2
+ 4b0: 10 01 15 93 zvmhulsuiaas r0,r1,r2
+ 4b4: 10 01 15 94 zvmhulsuian r0,r1,r2
+ 4b8: 10 01 15 95 zvmhulsuians r0,r1,r2
+ 4bc: 10 01 15 96 zvmhulsuianp r0,r1,r2
+ 4c0: 10 01 15 97 zvmhulsuianps r0,r1,r2
+ 4c4: 10 01 15 98 zvmhulsf r0,r1,r2
+ 4c8: 10 01 15 99 zvmhulsfr r0,r1,r2
+ 4cc: 10 01 15 9a zvmhulsfaas r0,r1,r2
+ 4d0: 10 01 15 9b zvmhulsfraas r0,r1,r2
+ 4d4: 10 01 15 9c zvmhulsfans r0,r1,r2
+ 4d8: 10 01 15 9d zvmhulsfrans r0,r1,r2
+ 4dc: 10 01 15 9e zvmhulsfanps r0,r1,r2
+ 4e0: 10 01 15 9f zvmhulsfranps r0,r1,r2
+ 4e4: 10 01 15 a0 zvmhllui r0,r1,r2
+ 4e8: 10 01 15 a2 zvmhlluiaa r0,r1,r2
+ 4ec: 10 01 15 a3 zvmhlluiaas r0,r1,r2
+ 4f0: 10 01 15 a4 zvmhlluian r0,r1,r2
+ 4f4: 10 01 15 a5 zvmhlluians r0,r1,r2
+ 4f8: 10 01 15 a6 zvmhlluianp r0,r1,r2
+ 4fc: 10 01 15 a7 zvmhlluianps r0,r1,r2
+ 500: 10 01 15 a8 zvmhllsi r0,r1,r2
+ 504: 10 01 15 aa zvmhllsiaa r0,r1,r2
+ 508: 10 01 15 ab zvmhllsiaas r0,r1,r2
+ 50c: 10 01 15 ac zvmhllsian r0,r1,r2
+ 510: 10 01 15 ad zvmhllsians r0,r1,r2
+ 514: 10 01 15 ae zvmhllsianp r0,r1,r2
+ 518: 10 01 15 af zvmhllsianps r0,r1,r2
+ 51c: 10 01 15 b0 zvmhllsui r0,r1,r2
+ 520: 10 01 15 b2 zvmhllsuiaa r0,r1,r2
+ 524: 10 01 15 b3 zvmhllsuiaas r0,r1,r2
+ 528: 10 01 15 b4 zvmhllsuian r0,r1,r2
+ 52c: 10 01 15 b5 zvmhllsuians r0,r1,r2
+ 530: 10 01 15 b6 zvmhllsuianp r0,r1,r2
+ 534: 10 01 15 b7 zvmhllsuianps r0,r1,r2
+ 538: 10 01 15 b8 zvmhllsf r0,r1,r2
+ 53c: 10 01 15 b9 zvmhllsfr r0,r1,r2
+ 540: 10 01 15 ba zvmhllsfaas r0,r1,r2
+ 544: 10 01 15 bb zvmhllsfraas r0,r1,r2
+ 548: 10 01 15 bc zvmhllsfans r0,r1,r2
+ 54c: 10 01 15 bd zvmhllsfrans r0,r1,r2
+ 550: 10 01 15 be zvmhllsfanps r0,r1,r2
+ 554: 10 01 15 bf zvmhllsfranps r0,r1,r2
+ 558: 10 01 15 c0 zvmhuuui r0,r1,r2
+ 55c: 10 01 15 c2 zvmhuuuiaa r0,r1,r2
+ 560: 10 01 15 c3 zvmhuuuiaas r0,r1,r2
+ 564: 10 01 15 c4 zvmhuuuian r0,r1,r2
+ 568: 10 01 15 c5 zvmhuuuians r0,r1,r2
+ 56c: 10 01 15 c6 zvmhuuuianp r0,r1,r2
+ 570: 10 01 15 c7 zvmhuuuianps r0,r1,r2
+ 574: 10 01 15 c8 zvmhuusi r0,r1,r2
+ 578: 10 01 15 ca zvmhuusiaa r0,r1,r2
+ 57c: 10 01 15 cb zvmhuusiaas r0,r1,r2
+ 580: 10 01 15 cc zvmhuusian r0,r1,r2
+ 584: 10 01 15 cd zvmhuusians r0,r1,r2
+ 588: 10 01 15 ce zvmhuusianp r0,r1,r2
+ 58c: 10 01 15 cf zvmhuusianps r0,r1,r2
+ 590: 10 01 15 d0 zvmhuusui r0,r1,r2
+ 594: 10 01 15 d2 zvmhuusuiaa r0,r1,r2
+ 598: 10 01 15 d3 zvmhuusuiaas r0,r1,r2
+ 59c: 10 01 15 d4 zvmhuusuian r0,r1,r2
+ 5a0: 10 01 15 d5 zvmhuusuians r0,r1,r2
+ 5a4: 10 01 15 d6 zvmhuusuianp r0,r1,r2
+ 5a8: 10 01 15 d7 zvmhuusuianps r0,r1,r2
+ 5ac: 10 01 15 d8 zvmhuusf r0,r1,r2
+ 5b0: 10 01 15 d9 zvmhuusfr r0,r1,r2
+ 5b4: 10 01 15 da zvmhuusfaas r0,r1,r2
+ 5b8: 10 01 15 db zvmhuusfraas r0,r1,r2
+ 5bc: 10 01 15 dc zvmhuusfans r0,r1,r2
+ 5c0: 10 01 15 dd zvmhuusfrans r0,r1,r2
+ 5c4: 10 01 15 de zvmhuusfanps r0,r1,r2
+ 5c8: 10 01 15 df zvmhuusfranps r0,r1,r2
+ 5cc: 10 01 15 e0 zvmhxlui r0,r1,r2
+ 5d0: 10 01 15 e2 zvmhxluiaa r0,r1,r2
+ 5d4: 10 01 15 e3 zvmhxluiaas r0,r1,r2
+ 5d8: 10 01 15 e4 zvmhxluian r0,r1,r2
+ 5dc: 10 01 15 e5 zvmhxluians r0,r1,r2
+ 5e0: 10 01 15 e6 zvmhxluianp r0,r1,r2
+ 5e4: 10 01 15 e7 zvmhxluianps r0,r1,r2
+ 5e8: 10 01 15 e8 zvmhxlsi r0,r1,r2
+ 5ec: 10 01 15 ea zvmhxlsiaa r0,r1,r2
+ 5f0: 10 01 15 eb zvmhxlsiaas r0,r1,r2
+ 5f4: 10 01 15 ec zvmhxlsian r0,r1,r2
+ 5f8: 10 01 15 ed zvmhxlsians r0,r1,r2
+ 5fc: 10 01 15 ee zvmhxlsianp r0,r1,r2
+ 600: 10 01 15 ef zvmhxlsianps r0,r1,r2
+ 604: 10 01 15 f0 zvmhxlsui r0,r1,r2
+ 608: 10 01 15 f2 zvmhxlsuiaa r0,r1,r2
+ 60c: 10 01 15 f3 zvmhxlsuiaas r0,r1,r2
+ 610: 10 01 15 f4 zvmhxlsuian r0,r1,r2
+ 614: 10 01 15 f5 zvmhxlsuians r0,r1,r2
+ 618: 10 01 15 f6 zvmhxlsuianp r0,r1,r2
+ 61c: 10 01 15 f7 zvmhxlsuianps r0,r1,r2
+ 620: 10 01 15 f8 zvmhxlsf r0,r1,r2
+ 624: 10 01 15 f9 zvmhxlsfr r0,r1,r2
+ 628: 10 01 15 fa zvmhxlsfaas r0,r1,r2
+ 62c: 10 01 15 fb zvmhxlsfraas r0,r1,r2
+ 630: 10 01 15 fc zvmhxlsfans r0,r1,r2
+ 634: 10 01 15 fd zvmhxlsfrans r0,r1,r2
+ 638: 10 01 15 fe zvmhxlsfanps r0,r1,r2
+ 63c: 10 01 15 ff zvmhxlsfranps r0,r1,r2
+ 640: 10 01 16 00 zmheui r0,r1,r2
+ 644: 10 01 16 02 zmheuiaa r0,r1,r2
+ 648: 10 01 16 03 zmheuiaas r0,r1,r2
+ 64c: 10 01 16 04 zmheuian r0,r1,r2
+ 650: 10 01 16 05 zmheuians r0,r1,r2
+ 654: 10 01 16 08 zmhesi r0,r1,r2
+ 658: 10 01 16 0a zmhesiaa r0,r1,r2
+ 65c: 10 01 16 0b zmhesiaas r0,r1,r2
+ 660: 10 01 16 0c zmhesian r0,r1,r2
+ 664: 10 01 16 0d zmhesians r0,r1,r2
+ 668: 10 01 16 10 zmhesui r0,r1,r2
+ 66c: 10 01 16 12 zmhesuiaa r0,r1,r2
+ 670: 10 01 16 13 zmhesuiaas r0,r1,r2
+ 674: 10 01 16 14 zmhesuian r0,r1,r2
+ 678: 10 01 16 15 zmhesuians r0,r1,r2
+ 67c: 10 01 16 18 zmhesf r0,r1,r2
+ 680: 10 01 16 19 zmhesfr r0,r1,r2
+ 684: 10 01 16 1a zmhesfaas r0,r1,r2
+ 688: 10 01 16 1b zmhesfraas r0,r1,r2
+ 68c: 10 01 16 1c zmhesfans r0,r1,r2
+ 690: 10 01 16 1d zmhesfrans r0,r1,r2
+ 694: 10 01 16 20 zmheoui r0,r1,r2
+ 698: 10 01 16 22 zmheouiaa r0,r1,r2
+ 69c: 10 01 16 23 zmheouiaas r0,r1,r2
+ 6a0: 10 01 16 24 zmheouian r0,r1,r2
+ 6a4: 10 01 16 25 zmheouians r0,r1,r2
+ 6a8: 10 01 16 28 zmheosi r0,r1,r2
+ 6ac: 10 01 16 2a zmheosiaa r0,r1,r2
+ 6b0: 10 01 16 2b zmheosiaas r0,r1,r2
+ 6b4: 10 01 16 2c zmheosian r0,r1,r2
+ 6b8: 10 01 16 2d zmheosians r0,r1,r2
+ 6bc: 10 01 16 30 zmheosui r0,r1,r2
+ 6c0: 10 01 16 32 zmheosuiaa r0,r1,r2
+ 6c4: 10 01 16 33 zmheosuiaas r0,r1,r2
+ 6c8: 10 01 16 34 zmheosuian r0,r1,r2
+ 6cc: 10 01 16 35 zmheosuians r0,r1,r2
+ 6d0: 10 01 16 38 zmheosf r0,r1,r2
+ 6d4: 10 01 16 39 zmheosfr r0,r1,r2
+ 6d8: 10 01 16 3a zmheosfaas r0,r1,r2
+ 6dc: 10 01 16 3b zmheosfraas r0,r1,r2
+ 6e0: 10 01 16 3c zmheosfans r0,r1,r2
+ 6e4: 10 01 16 3d zmheosfrans r0,r1,r2
+ 6e8: 10 01 16 40 zmhoui r0,r1,r2
+ 6ec: 10 01 16 42 zmhouiaa r0,r1,r2
+ 6f0: 10 01 16 43 zmhouiaas r0,r1,r2
+ 6f4: 10 01 16 44 zmhouian r0,r1,r2
+ 6f8: 10 01 16 45 zmhouians r0,r1,r2
+ 6fc: 10 01 16 48 zmhosi r0,r1,r2
+ 700: 10 01 16 4a zmhosiaa r0,r1,r2
+ 704: 10 01 16 4b zmhosiaas r0,r1,r2
+ 708: 10 01 16 4c zmhosian r0,r1,r2
+ 70c: 10 01 16 4d zmhosians r0,r1,r2
+ 710: 10 01 16 50 zmhosui r0,r1,r2
+ 714: 10 01 16 52 zmhosuiaa r0,r1,r2
+ 718: 10 01 16 53 zmhosuiaas r0,r1,r2
+ 71c: 10 01 16 54 zmhosuian r0,r1,r2
+ 720: 10 01 16 55 zmhosuians r0,r1,r2
+ 724: 10 01 16 58 zmhosf r0,r1,r2
+ 728: 10 01 16 59 zmhosfr r0,r1,r2
+ 72c: 10 01 16 5a zmhosfaas r0,r1,r2
+ 730: 10 01 16 5b zmhosfraas r0,r1,r2
+ 734: 10 01 16 5c zmhosfans r0,r1,r2
+ 738: 10 01 16 5d zmhosfrans r0,r1,r2
+ 73c: 10 01 16 60 zvmhuih r0,r1,r2
+ 740: 10 01 16 61 zvmhuihs r0,r1,r2
+ 744: 10 01 16 62 zvmhuiaah r0,r1,r2
+ 748: 10 01 16 63 zvmhuiaahs r0,r1,r2
+ 74c: 10 01 16 64 zvmhuianh r0,r1,r2
+ 750: 10 01 16 65 zvmhuianhs r0,r1,r2
+ 754: 10 01 16 69 zvmhsihs r0,r1,r2
+ 758: 10 01 16 6b zvmhsiaahs r0,r1,r2
+ 75c: 10 01 16 6d zvmhsianhs r0,r1,r2
+ 760: 10 01 16 71 zvmhsuihs r0,r1,r2
+ 764: 10 01 16 73 zvmhsuiaahs r0,r1,r2
+ 768: 10 01 16 75 zvmhsuianhs r0,r1,r2
+ 76c: 10 01 16 78 zvmhsfh r0,r1,r2
+ 770: 10 01 16 79 zvmhsfrh r0,r1,r2
+ 774: 10 01 16 7a zvmhsfaahs r0,r1,r2
+ 778: 10 01 16 7b zvmhsfraahs r0,r1,r2
+ 77c: 10 01 16 7c zvmhsfanhs r0,r1,r2
+ 780: 10 01 16 7d zvmhsfranhs r0,r1,r2
+ 784: 10 01 16 80 zvdotphaui r0,r1,r2
+ 788: 10 01 16 81 zvdotphauis r0,r1,r2
+ 78c: 10 01 16 82 zvdotphauiaa r0,r1,r2
+ 790: 10 01 16 83 zvdotphauiaas r0,r1,r2
+ 794: 10 01 16 84 zvdotphauian r0,r1,r2
+ 798: 10 01 16 85 zvdotphauians r0,r1,r2
+ 79c: 10 01 16 88 zvdotphasi r0,r1,r2
+ 7a0: 10 01 16 89 zvdotphasis r0,r1,r2
+ 7a4: 10 01 16 8a zvdotphasiaa r0,r1,r2
+ 7a8: 10 01 16 8b zvdotphasiaas r0,r1,r2
+ 7ac: 10 01 16 8c zvdotphasian r0,r1,r2
+ 7b0: 10 01 16 8d zvdotphasians r0,r1,r2
+ 7b4: 10 01 16 90 zvdotphasui r0,r1,r2
+ 7b8: 10 01 16 91 zvdotphasuis r0,r1,r2
+ 7bc: 10 01 16 92 zvdotphasuiaa r0,r1,r2
+ 7c0: 10 01 16 93 zvdotphasuiaas r0,r1,r2
+ 7c4: 10 01 16 94 zvdotphasuian r0,r1,r2
+ 7c8: 10 01 16 95 zvdotphasuians r0,r1,r2
+ 7cc: 10 01 16 98 zvdotphasfs r0,r1,r2
+ 7d0: 10 01 16 99 zvdotphasfrs r0,r1,r2
+ 7d4: 10 01 16 9a zvdotphasfaas r0,r1,r2
+ 7d8: 10 01 16 9b zvdotphasfraas r0,r1,r2
+ 7dc: 10 01 16 9c zvdotphasfans r0,r1,r2
+ 7e0: 10 01 16 9d zvdotphasfrans r0,r1,r2
+ 7e4: 10 01 16 a0 zvdotphxaui r0,r1,r2
+ 7e8: 10 01 16 a1 zvdotphxauis r0,r1,r2
+ 7ec: 10 01 16 a2 zvdotphxauiaa r0,r1,r2
+ 7f0: 10 01 16 a3 zvdotphxauiaas r0,r1,r2
+ 7f4: 10 01 16 a4 zvdotphxauian r0,r1,r2
+ 7f8: 10 01 16 a5 zvdotphxauians r0,r1,r2
+ 7fc: 10 01 16 a8 zvdotphxasi r0,r1,r2
+ 800: 10 01 16 a9 zvdotphxasis r0,r1,r2
+ 804: 10 01 16 aa zvdotphxasiaa r0,r1,r2
+ 808: 10 01 16 ab zvdotphxasiaas r0,r1,r2
+ 80c: 10 01 16 ac zvdotphxasian r0,r1,r2
+ 810: 10 01 16 ad zvdotphxasians r0,r1,r2
+ 814: 10 01 16 b0 zvdotphxasui r0,r1,r2
+ 818: 10 01 16 b1 zvdotphxasuis r0,r1,r2
+ 81c: 10 01 16 b2 zvdotphxasuiaa r0,r1,r2
+ 820: 10 01 16 b3 zvdotphxasuiaas r0,r1,r2
+ 824: 10 01 16 b4 zvdotphxasuian r0,r1,r2
+ 828: 10 01 16 b5 zvdotphxasuians r0,r1,r2
+ 82c: 10 01 16 b8 zvdotphxasfs r0,r1,r2
+ 830: 10 01 16 b9 zvdotphxasfrs r0,r1,r2
+ 834: 10 01 16 ba zvdotphxasfaas r0,r1,r2
+ 838: 10 01 16 bb zvdotphxasfraas r0,r1,r2
+ 83c: 10 01 16 bc zvdotphxasfans r0,r1,r2
+ 840: 10 01 16 bd zvdotphxasfrans r0,r1,r2
+ 844: 10 01 16 c0 zvdotphsui r0,r1,r2
+ 848: 10 01 16 c1 zvdotphsuis r0,r1,r2
+ 84c: 10 01 16 c2 zvdotphsuiaa r0,r1,r2
+ 850: 10 01 16 c3 zvdotphsuiaas r0,r1,r2
+ 854: 10 01 16 c4 zvdotphsuian r0,r1,r2
+ 858: 10 01 16 c5 zvdotphsuians r0,r1,r2
+ 85c: 10 01 16 c8 zvdotphssi r0,r1,r2
+ 860: 10 01 16 c9 zvdotphssis r0,r1,r2
+ 864: 10 01 16 ca zvdotphssiaa r0,r1,r2
+ 868: 10 01 16 cb zvdotphssiaas r0,r1,r2
+ 86c: 10 01 16 cc zvdotphssian r0,r1,r2
+ 870: 10 01 16 cd zvdotphssians r0,r1,r2
+ 874: 10 01 16 d0 zvdotphssui r0,r1,r2
+ 878: 10 01 16 d1 zvdotphssuis r0,r1,r2
+ 87c: 10 01 16 d2 zvdotphssuiaa r0,r1,r2
+ 880: 10 01 16 d3 zvdotphssuiaas r0,r1,r2
+ 884: 10 01 16 d4 zvdotphssuian r0,r1,r2
+ 888: 10 01 16 d5 zvdotphssuians r0,r1,r2
+ 88c: 10 01 16 d8 zvdotphssfs r0,r1,r2
+ 890: 10 01 16 d9 zvdotphssfrs r0,r1,r2
+ 894: 10 01 16 da zvdotphssfaas r0,r1,r2
+ 898: 10 01 16 db zvdotphssfraas r0,r1,r2
+ 89c: 10 01 16 dc zvdotphssfans r0,r1,r2
+ 8a0: 10 01 16 dd zvdotphssfrans r0,r1,r2
+ 8a4: 10 01 16 e1 zmwluis r0,r1,r2
+ 8a8: 10 01 16 e2 zmwluiaa r0,r1,r2
+ 8ac: 10 01 16 e3 zmwluiaas r0,r1,r2
+ 8b0: 10 01 16 e4 zmwluian r0,r1,r2
+ 8b4: 10 01 16 e5 zmwluians r0,r1,r2
+ 8b8: 10 01 16 e9 zmwlsis r0,r1,r2
+ 8bc: 10 01 16 eb zmwlsiaas r0,r1,r2
+ 8c0: 10 01 16 ed zmwlsians r0,r1,r2
+ 8c4: 10 01 16 f1 zmwlsuis r0,r1,r2
+ 8c8: 10 01 16 f3 zmwlsuiaas r0,r1,r2
+ 8cc: 10 01 16 f5 zmwlsuians r0,r1,r2
+ 8d0: 10 01 16 f8 zmwsf r0,r1,r2
+ 8d4: 10 01 16 f9 zmwsfr r0,r1,r2
+ 8d8: 10 01 16 fa zmwsfaas r0,r1,r2
+ 8dc: 10 01 16 fb zmwsfraas r0,r1,r2
+ 8e0: 10 01 16 fc zmwsfans r0,r1,r2
+ 8e4: 10 01 16 fd zmwsfrans r0,r1,r2
+ 8e8: 10 01 13 00 zlddx r0,r1,r2
+ 8ec: 10 01 13 01 zldd r0,16\(r1\)
+ 8f0: 10 01 13 02 zldwx r0,r1,r2
+ 8f4: 10 01 13 03 zldw r0,16\(r1\)
+ 8f8: 10 01 13 04 zldhx r0,r1,r2
+ 8fc: 10 01 13 05 zldh r0,16\(r1\)
+ 900: 10 01 13 08 zlwgsfdx r0,r1,r2
+ 904: 10 01 13 09 zlwgsfd r0,8\(r1\)
+ 908: 10 01 13 0a zlwwosdx r0,r1,r2
+ 90c: 10 01 13 0b zlwwosd r0,8\(r1\)
+ 910: 10 01 13 0c zlwhsplatwdx r0,r1,r2
+ 914: 10 01 13 0d zlwhsplatwd r0,8\(r1\)
+ 918: 10 01 13 0e zlwhsplatdx r0,r1,r2
+ 91c: 10 01 13 0f zlwhsplatd r0,8\(r1\)
+ 920: 10 01 13 10 zlwhgwsfdx r0,r1,r2
+ 924: 10 01 13 11 zlwhgwsfd r0,8\(r1\)
+ 928: 10 01 13 12 zlwhedx r0,r1,r2
+ 92c: 10 01 13 13 zlwhed r0,8\(r1\)
+ 930: 10 01 13 14 zlwhosdx r0,r1,r2
+ 934: 10 01 13 15 zlwhosd r0,8\(r1\)
+ 938: 10 01 13 16 zlwhoudx r0,r1,r2
+ 93c: 10 01 13 17 zlwhoud r0,8\(r1\)
+ 940: 10 01 13 18 zlwhx r0,r1,r2
+ 944: 10 01 13 19 zlwh r0,8\(r1\)
+ 948: 10 01 13 1a zlwwx r0,r1,r2
+ 94c: 10 01 13 1b zlww r0,8\(r1\)
+ 950: 10 01 13 1c zlhgwsfx r0,r1,r2
+ 954: 10 01 13 1d zlhgwsf r0,4\(r1\)
+ 958: 10 01 13 1e zlhhsplatx r0,r1,r2
+ 95c: 10 01 13 1f zlhhsplat r0,4\(r1\)
+ 960: 10 01 13 20 zstddx r0,r1,r2
+ 964: 10 01 13 21 zstdd r0,16\(r1\)
+ 968: 10 01 13 22 zstdwx r0,r1,r2
+ 96c: 10 01 13 23 zstdw r0,16\(r1\)
+ 970: 10 01 13 24 zstdhx r0,r1,r2
+ 974: 10 01 13 25 zstdh r0,16\(r1\)
+ 978: 10 01 13 28 zstwhedx r0,r1,r2
+ 97c: 10 01 13 29 zstwhed r0,8\(r1\)
+ 980: 10 01 13 2a zstwhodx r0,r1,r2
+ 984: 10 01 13 2b zstwhod r0,8\(r1\)
+ 988: 10 01 13 30 zlhhex r0,r1,r2
+ 98c: 10 01 13 31 zlhhe r0,4\(r1\)
+ 990: 10 01 13 32 zlhhosx r0,r1,r2
+ 994: 10 01 13 33 zlhhos r0,4\(r1\)
+ 998: 10 01 13 34 zlhhoux r0,r1,r2
+ 99c: 10 01 13 35 zlhhou r0,4\(r1\)
+ 9a0: 10 01 13 38 zsthex r0,r1,r2
+ 9a4: 10 01 13 39 zsthe r0,4\(r1\)
+ 9a8: 10 01 13 3a zsthox r0,r1,r2
+ 9ac: 10 01 13 3b zstho r0,4\(r1\)
+ 9b0: 10 01 13 3c zstwhx r0,r1,r2
+ 9b4: 10 01 13 3d zstwh r0,8\(r1\)
+ 9b8: 10 01 13 3e zstwwx r0,r1,r2
+ 9bc: 10 01 13 3f zstww r0,8\(r1\)
+ 9c0: 10 01 13 40 zlddmx r0,r1,r2
+ 9c4: 10 01 13 41 zlddu r0,16\(r1\)
+ 9c8: 10 01 13 42 zldwmx r0,r1,r2
+ 9cc: 10 01 13 43 zldwu r0,16\(r1\)
+ 9d0: 10 01 13 44 zldhmx r0,r1,r2
+ 9d4: 10 01 13 45 zldhu r0,16\(r1\)
+ 9d8: 10 01 13 48 zlwgsfdmx r0,r1,r2
+ 9dc: 10 01 13 49 zlwgsfdu r0,8\(r1\)
+ 9e0: 10 01 13 4a zlwwosdmx r0,r1,r2
+ 9e4: 10 01 13 4b zlwwosdu r0,8\(r1\)
+ 9e8: 10 01 13 4c zlwhsplatwdmx r0,r1,r2
+ 9ec: 10 01 13 4d zlwhsplatwdu r0,8\(r1\)
+ 9f0: 10 01 13 4e zlwhsplatdmx r0,r1,r2
+ 9f4: 10 01 13 4f zlwhsplatdu r0,8\(r1\)
+ 9f8: 10 01 13 50 zlwhgwsfdmx r0,r1,r2
+ 9fc: 10 01 13 51 zlwhgwsfdu r0,8\(r1\)
+ a00: 10 01 13 52 zlwhedmx r0,r1,r2
+ a04: 10 01 13 53 zlwhedu r0,8\(r1\)
+ a08: 10 01 13 54 zlwhosdmx r0,r1,r2
+ a0c: 10 01 13 55 zlwhosdu r0,8\(r1\)
+ a10: 10 01 13 56 zlwhoudmx r0,r1,r2
+ a14: 10 01 13 57 zlwhoudu r0,8\(r1\)
+ a18: 10 01 13 58 zlwhmx r0,r1,r2
+ a1c: 10 01 13 59 zlwhu r0,8\(r1\)
+ a20: 10 01 13 5a zlwwmx r0,r1,r2
+ a24: 10 01 13 5b zlwwu r0,8\(r1\)
+ a28: 10 01 13 5c zlhgwsfmx r0,r1,r2
+ a2c: 10 01 13 5d zlhgwsfu r0,4\(r1\)
+ a30: 10 01 13 5e zlhhsplatmx r0,r1,r2
+ a34: 10 01 13 5f zlhhsplatu r0,4\(r1\)
+ a38: 10 01 13 60 zstddmx r0,r1,r2
+ a3c: 10 01 13 61 zstddu r0,16\(r1\)
+ a40: 10 01 13 62 zstdwmx r0,r1,r2
+ a44: 10 01 13 63 zstdwu r0,16\(r1\)
+ a48: 10 01 13 64 zstdhmx r0,r1,r2
+ a4c: 10 01 13 65 zstdhu r0,16\(r1\)
+ a50: 10 01 13 68 zstwhedmx r0,r1,r2
+ a54: 10 01 13 69 zstwhedu r0,8\(r1\)
+ a58: 10 01 13 6a zstwhodmx r0,r1,r2
+ a5c: 10 01 13 6b zstwhodu r0,8\(r1\)
+ a60: 10 01 13 70 zlhhemx r0,r1,r2
+ a64: 10 01 13 71 zlhheu r0,4\(r1\)
+ a68: 10 01 13 72 zlhhosmx r0,r1,r2
+ a6c: 10 01 13 73 zlhhosu r0,4\(r1\)
+ a70: 10 01 13 74 zlhhoumx r0,r1,r2
+ a74: 10 01 13 75 zlhhouu r0,4\(r1\)
+ a78: 10 01 13 78 zsthemx r0,r1,r2
+ a7c: 10 01 13 79 zstheu r0,4\(r1\)
+ a80: 10 01 13 7a zsthomx r0,r1,r2
+ a84: 10 01 13 7b zsthou r0,4\(r1\)
+ a88: 10 01 13 7c zstwhmx r0,r1,r2
+ a8c: 10 01 13 7d zstwhu r0,8\(r1\)
+ a90: 10 01 13 7e zstwwmx r0,r1,r2
+ a94: 10 01 13 7f zstwwu r0,8\(r1\)
\ No newline at end of file
diff -ruN binutils-2.28-vle/gas/testsuite/gas/ppc/lsp.s binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp.s
--- binutils-2.28-vle/gas/testsuite/gas/ppc/lsp.s 1970-01-01 03:00:00.000000000 +0300
+++ binutils-2.28-lsp/gas/testsuite/gas/ppc/lsp.s 2017-06-23 17:44:50.947719000 +0300
@@ -0,0 +1,695 @@
+# PA LSP instructions
+# CMPE200GCC-62
+ .section ".text"
+
+ .equ rA,1
+ .equ rB,2
+ .equ rD,0
+ .equ rS,0
+ .equ UIMM, 15 ;#UIMM values >15 are illegal
+ .equ UIMM_2, 4
+ .equ UIMM_4, 8
+ .equ UIMM_8, 16
+ .equ SIMM, -16
+ .equ crD, 0
+ .equ offset, 1
+
+ zvaddih rD, rA, UIMM
+ zvsubifh rD, rA, UIMM
+ zvaddh rD, rA, rB
+ zvsubfh rD, rA, rB
+ zvaddsubfh rD, rA, rB
+ zvsubfaddh rD, rA, rB
+ zvaddhx rD, rA, rB
+ zvsubfhx rD, rA, rB
+ zvaddsubfhx rD, rA, rB
+ zvsubfaddhx rD, rA, rB
+ zaddwus rD, rA, rB
+ zsubfwus rD, rA, rB
+ zaddwss rD, rA, rB
+ zsubfwss rD, rA, rB
+ zvaddhus rD, rA, rB
+ zvsubfhus rD, rA, rB
+ zvaddhss rD, rA, rB
+ zvsubfhss rD, rA, rB
+ zvaddsubfhss rD, rA, rB
+ zvsubfaddhss rD, rA, rB
+ zvaddhxss rD, rA, rB
+ zvsubfhxss rD, rA, rB
+ zvaddsubfhxss rD, rA, rB
+ zvsubfaddhxss rD, rA, rB
+ zaddheuw rD, rA, rB
+ zsubfheuw rD, rA, rB
+ zaddhesw rD, rA, rB
+ zsubfhesw rD, rA, rB
+ zaddhouw rD, rA, rB
+ zsubfhouw rD, rA, rB
+ zaddhosw rD, rA, rB
+ zsubfhosw rD, rA, rB
+ zvmergehih rD, rA, rB
+ zvmergeloh rD, rA, rB
+ zvmergehiloh rD, rA, rB
+ zvmergelohih rD, rA, rB
+ zvcmpgthu crD, rA, rB
+ zvcmpgths crD, rA, rB
+ zvcmplthu crD, rA, rB
+ zvcmplths crD, rA, rB
+ zvcmpeqh crD, rA, rB
+ zpkswgshfrs rD, rA, rB
+ zpkswgswfrs rD, rA, rB
+ zvpkshgwshfrs rD, rA, rB
+ zvpkswshfrs rD, rA, rB
+ zvpkswuhs rD, rA, rB
+ zvpkswshs rD, rA, rB
+ zvpkuwuhs rD, rA, rB
+ zvsplatih rD, SIMM
+ zvsplatfih rD, SIMM
+ zcntlsw rD, rA
+ zvcntlzh rD, rA
+ zvcntlsh rD, rA
+ znegws rD, rA
+ zvnegh rD, rA
+ zvneghs rD, rA
+ zvnegho rD, rA
+ zvneghos rD, rA
+ zrndwh rD, rA
+ zrndwhss rD, rA
+ zvabsh rD, rA
+ zvabshs rD, rA
+ zabsw rD, rA
+ zabsws rD, rA
+ zsatswuw rD, rA
+ zsatuwsw rD, rA
+ zsatswuh rD, rA
+ zsatswsh rD, rA
+ zvsatshuh rD, rA
+ zvsatuhsh rD, rA
+ zsatuwuh rD, rA
+ zsatuwsh rD, rA
+ zsatsduw rD, rA, rB
+ zsatsdsw rD, rA, rB
+ zsatuduw rD, rA, rB
+ zvselh rD, rA, rB
+ zxtrw rD, rA, rB, offset
+ zbrminc rD, rA, rB
+ zcircinc rD, rA, rB
+ zdivwsf rD, rA, rB
+ zvsrhu rD, rA, rB
+ zvsrhs rD, rA, rB
+ zvsrhiu rD, rA, UIMM
+ zvsrhis rD, rA, UIMM
+ zvslh rD, rA, rB
+ zvrlh rD, rA, rB
+ zvslhi rD, rA, UIMM
+ zvrlhi rD, rA, UIMM
+ zvslhus rD, rA, rB
+ zvslhss rD, rA, rB
+ zvslhius rD, rA, UIMM
+ zvslhiss rD, rA, UIMM
+ zslwus rD, rA, rB
+ zslwss rD, rA, rB
+ zslwius rD, rA, UIMM
+ zslwiss rD, rA, UIMM
+ zaddwgui rD, rA, rB
+ zsubfwgui rD, rA, rB
+ zaddd rD, rA, rB
+ zsubfd rD, rA, rB
+ zvaddsubfw rD, rA, rB
+ zvsubfaddw rD, rA, rB
+ zvaddw rD, rA, rB
+ zvsubfw rD, rA, rB
+ zaddwgsi rD, rA, rB
+ zsubfwgsi rD, rA, rB
+ zadddss rD, rA, rB
+ zsubfdss rD, rA, rB
+ zvaddsubfwss rD, rA, rB
+ zvsubfaddwss rD, rA, rB
+ zvaddwss rD, rA, rB
+ zvsubfwss rD, rA, rB
+ zaddwgsf rD, rA, rB
+ zsubfwgsf rD, rA, rB
+ zadddus rD, rA, rB
+ zsubfdus rD, rA, rB
+ zvaddwus rD, rA, rB
+ zvsubfwus rD, rA, rB
+ zvunpkhgwsf rD, rA
+ zvunpkhsf rD, rA
+ zvunpkhui rD, rA
+ zvunpkhsi rD, rA
+ zunpkwgsf rD, rA
+ zvdotphgwasmf rD, rA, rB
+ zvdotphgwasmfr rD, rA, rB
+ zvdotphgwasmfaa rD, rA, rB
+ zvdotphgwasmfraa rD, rA, rB
+ zvdotphgwasmfan rD, rA, rB
+ zvdotphgwasmfran rD, rA, rB
+ zvmhulgwsmf rD, rA, rB
+ zvmhulgwsmfr rD, rA, rB
+ zvmhulgwsmfaa rD, rA, rB
+ zvmhulgwsmfraa rD, rA, rB
+ zvmhulgwsmfan rD, rA, rB
+ zvmhulgwsmfran rD, rA, rB
+ zvmhulgwsmfanp rD, rA, rB
+ zvmhulgwsmfranp rD, rA, rB
+ zmhegwsmf rD, rA, rB
+ zmhegwsmfr rD, rA, rB
+ zmhegwsmfaa rD, rA, rB
+ zmhegwsmfraa rD, rA, rB
+ zmhegwsmfan rD, rA, rB
+ zmhegwsmfran rD, rA, rB
+ zvdotphxgwasmf rD, rA, rB
+ zvdotphxgwasmfr rD, rA, rB
+ zvdotphxgwasmfaa rD, rA, rB
+ zvdotphxgwasmfraa rD, rA, rB
+ zvdotphxgwasmfan rD, rA, rB
+ zvdotphxgwasmfran rD, rA, rB
+ zvmhllgwsmf rD, rA, rB
+ zvmhllgwsmfr rD, rA, rB
+ zvmhllgwsmfaa rD, rA, rB
+ zvmhllgwsmfraa rD, rA, rB
+ zvmhllgwsmfan rD, rA, rB
+ zvmhllgwsmfran rD, rA, rB
+ zvmhllgwsmfanp rD, rA, rB
+ zvmhllgwsmfranp rD, rA, rB
+ zmheogwsmf rD, rA, rB
+ zmheogwsmfr rD, rA, rB
+ zmheogwsmfaa rD, rA, rB
+ zmheogwsmfraa rD, rA, rB
+ zmheogwsmfan rD, rA, rB
+ zmheogwsmfran rD, rA, rB
+ zvdotphgwssmf rD, rA, rB
+ zvdotphgwssmfr rD, rA, rB
+ zvdotphgwssmfaa rD, rA, rB
+ zvdotphgwssmfraa rD, rA, rB
+ zvdotphgwssmfan rD, rA, rB
+ zvdotphgwssmfran rD, rA, rB
+ zvmhuugwsmf rD, rA, rB
+ zvmhuugwsmfr rD, rA, rB
+ zvmhuugwsmfaa rD, rA, rB
+ zvmhuugwsmfraa rD, rA, rB
+ zvmhuugwsmfan rD, rA, rB
+ zvmhuugwsmfran rD, rA, rB
+ zvmhuugwsmfanp rD, rA, rB
+ zvmhuugwsmfranp rD, rA, rB
+ zmhogwsmf rD, rA, rB
+ zmhogwsmfr rD, rA, rB
+ zmhogwsmfaa rD, rA, rB
+ zmhogwsmfraa rD, rA, rB
+ zmhogwsmfan rD, rA, rB
+ zmhogwsmfran rD, rA, rB
+ zvmhxlgwsmf rD, rA, rB
+ zvmhxlgwsmfr rD, rA, rB
+ zvmhxlgwsmfaa rD, rA, rB
+ zvmhxlgwsmfraa rD, rA, rB
+ zvmhxlgwsmfan rD, rA, rB
+ zvmhxlgwsmfran rD, rA, rB
+ zvmhxlgwsmfanp rD, rA, rB
+ zvmhxlgwsmfranp rD, rA, rB
+ zmhegui rD, rA, rB
+ zvdotphgaui rD, rA, rB
+ zmheguiaa rD, rA, rB
+ zvdotphgauiaa rD, rA, rB
+ zmheguian rD, rA, rB
+ zvdotphgauian rD, rA, rB
+ zmhegsi rD, rA, rB
+ zvdotphgasi rD, rA, rB
+ zmhegsiaa rD, rA, rB
+ zvdotphgasiaa rD, rA, rB
+ zmhegsian rD, rA, rB
+ zvdotphgasian rD, rA, rB
+ zmhegsui rD, rA, rB
+ zvdotphgasui rD, rA, rB
+ zmhegsuiaa rD, rA, rB
+ zvdotphgasuiaa rD, rA, rB
+ zmhegsuian rD, rA, rB
+ zvdotphgasuian rD, rA, rB
+ zmhegsmf rD, rA, rB
+ zvdotphgasmf rD, rA, rB
+ zmhegsmfaa rD, rA, rB
+ zvdotphgasmfaa rD, rA, rB
+ zmhegsmfan rD, rA, rB
+ zvdotphgasmfan rD, rA, rB
+ zmheogui rD, rA, rB
+ zvdotphxgaui rD, rA, rB
+ zmheoguiaa rD, rA, rB
+ zvdotphxgauiaa rD, rA, rB
+ zmheoguian rD, rA, rB
+ zvdotphxgauian rD, rA, rB
+ zmheogsi rD, rA, rB
+ zvdotphxgasi rD, rA, rB
+ zmheogsiaa rD, rA, rB
+ zvdotphxgasiaa rD, rA, rB
+ zmheogsian rD, rA, rB
+ zvdotphxgasian rD, rA, rB
+ zmheogsui rD, rA, rB
+ zvdotphxgasui rD, rA, rB
+ zmheogsuiaa rD, rA, rB
+ zvdotphxgasuiaa rD, rA, rB
+ zmheogsuian rD, rA, rB
+ zvdotphxgasuian rD, rA, rB
+ zmheogsmf rD, rA, rB
+ zvdotphxgasmf rD, rA, rB
+ zmheogsmfaa rD, rA, rB
+ zvdotphxgasmfaa rD, rA, rB
+ zmheogsmfan rD, rA, rB
+ zvdotphxgasmfan rD, rA, rB
+ zmhogui rD, rA, rB
+ zvdotphgsui rD, rA, rB
+ zmhoguiaa rD, rA, rB
+ zvdotphgsuiaa rD, rA, rB
+ zmhoguian rD, rA, rB
+ zvdotphgsuian rD, rA, rB
+ zmhogsi rD, rA, rB
+ zvdotphgssi rD, rA, rB
+ zmhogsiaa rD, rA, rB
+ zvdotphgssiaa rD, rA, rB
+ zmhogsian rD, rA, rB
+ zvdotphgssian rD, rA, rB
+ zmhogsui rD, rA, rB
+ zvdotphgssui rD, rA, rB
+ zmhogsuiaa rD, rA, rB
+ zvdotphgssuiaa rD, rA, rB
+ zmhogsuian rD, rA, rB
+ zvdotphgssuian rD, rA, rB
+ zmhogsmf rD, rA, rB
+ zvdotphgssmf rD, rA, rB
+ zmhogsmfaa rD, rA, rB
+ zvdotphgssmfaa rD, rA, rB
+ zmhogsmfan rD, rA, rB
+ zvdotphgssmfan rD, rA, rB
+ zmwgui rD, rA, rB
+ zmwguiaa rD, rA, rB
+ zmwguiaas rD, rA, rB
+ zmwguian rD, rA, rB
+ zmwguians rD, rA, rB
+ zmwgsi rD, rA, rB
+ zmwgsiaa rD, rA, rB
+ zmwgsiaas rD, rA, rB
+ zmwgsian rD, rA, rB
+ zmwgsians rD, rA, rB
+ zmwgsui rD, rA, rB
+ zmwgsuiaa rD, rA, rB
+ zmwgsuiaas rD, rA, rB
+ zmwgsuian rD, rA, rB
+ zmwgsuians rD, rA, rB
+ zmwgsmf rD, rA, rB
+ zmwgsmfr rD, rA, rB
+ zmwgsmfaa rD, rA, rB
+ zmwgsmfraa rD, rA, rB
+ zmwgsmfan rD, rA, rB
+ zmwgsmfran rD, rA, rB
+ zvmhului rD, rA, rB
+ zvmhuluiaa rD, rA, rB
+ zvmhuluiaas rD, rA, rB
+ zvmhuluian rD, rA, rB
+ zvmhuluians rD, rA, rB
+ zvmhuluianp rD, rA, rB
+ zvmhuluianps rD, rA, rB
+ zvmhulsi rD, rA, rB
+ zvmhulsiaa rD, rA, rB
+ zvmhulsiaas rD, rA, rB
+ zvmhulsian rD, rA, rB
+ zvmhulsians rD, rA, rB
+ zvmhulsianp rD, rA, rB
+ zvmhulsianps rD, rA, rB
+ zvmhulsui rD, rA, rB
+ zvmhulsuiaa rD, rA, rB
+ zvmhulsuiaas rD, rA, rB
+ zvmhulsuian rD, rA, rB
+ zvmhulsuians rD, rA, rB
+ zvmhulsuianp rD, rA, rB
+ zvmhulsuianps rD, rA, rB
+ zvmhulsf rD, rA, rB
+ zvmhulsfr rD, rA, rB
+ zvmhulsfaas rD, rA, rB
+ zvmhulsfraas rD, rA, rB
+ zvmhulsfans rD, rA, rB
+ zvmhulsfrans rD, rA, rB
+ zvmhulsfanps rD, rA, rB
+ zvmhulsfranps rD, rA, rB
+ zvmhllui rD, rA, rB
+ zvmhlluiaa rD, rA, rB
+ zvmhlluiaas rD, rA, rB
+ zvmhlluian rD, rA, rB
+ zvmhlluians rD, rA, rB
+ zvmhlluianp rD, rA, rB
+ zvmhlluianps rD, rA, rB
+ zvmhllsi rD, rA, rB
+ zvmhllsiaa rD, rA, rB
+ zvmhllsiaas rD, rA, rB
+ zvmhllsian rD, rA, rB
+ zvmhllsians rD, rA, rB
+ zvmhllsianp rD, rA, rB
+ zvmhllsianps rD, rA, rB
+ zvmhllsui rD, rA, rB
+ zvmhllsuiaa rD, rA, rB
+ zvmhllsuiaas rD, rA, rB
+ zvmhllsuian rD, rA, rB
+ zvmhllsuians rD, rA, rB
+ zvmhllsuianp rD, rA, rB
+ zvmhllsuianps rD, rA, rB
+ zvmhllsf rD, rA, rB
+ zvmhllsfr rD, rA, rB
+ zvmhllsfaas rD, rA, rB
+ zvmhllsfraas rD, rA, rB
+ zvmhllsfans rD, rA, rB
+ zvmhllsfrans rD, rA, rB
+ zvmhllsfanps rD, rA, rB
+ zvmhllsfranps rD, rA, rB
+ zvmhuuui rD, rA, rB
+ zvmhuuuiaa rD, rA, rB
+ zvmhuuuiaas rD, rA, rB
+ zvmhuuuian rD, rA, rB
+ zvmhuuuians rD, rA, rB
+ zvmhuuuianp rD, rA, rB
+ zvmhuuuianps rD, rA, rB
+ zvmhuusi rD, rA, rB
+ zvmhuusiaa rD, rA, rB
+ zvmhuusiaas rD, rA, rB
+ zvmhuusian rD, rA, rB
+ zvmhuusians rD, rA, rB
+ zvmhuusianp rD, rA, rB
+ zvmhuusianps rD, rA, rB
+ zvmhuusui rD, rA, rB
+ zvmhuusuiaa rD, rA, rB
+ zvmhuusuiaas rD, rA, rB
+ zvmhuusuian rD, rA, rB
+ zvmhuusuians rD, rA, rB
+ zvmhuusuianp rD, rA, rB
+ zvmhuusuianps rD, rA, rB
+ zvmhuusf rD, rA, rB
+ zvmhuusfr rD, rA, rB
+ zvmhuusfaas rD, rA, rB
+ zvmhuusfraas rD, rA, rB
+ zvmhuusfans rD, rA, rB
+ zvmhuusfrans rD, rA, rB
+ zvmhuusfanps rD, rA, rB
+ zvmhuusfranps rD, rA, rB
+ zvmhxlui rD, rA, rB
+ zvmhxluiaa rD, rA, rB
+ zvmhxluiaas rD, rA, rB
+ zvmhxluian rD, rA, rB
+ zvmhxluians rD, rA, rB
+ zvmhxluianp rD, rA, rB
+ zvmhxluianps rD, rA, rB
+ zvmhxlsi rD, rA, rB
+ zvmhxlsiaa rD, rA, rB
+ zvmhxlsiaas rD, rA, rB
+ zvmhxlsian rD, rA, rB
+ zvmhxlsians rD, rA, rB
+ zvmhxlsianp rD, rA, rB
+ zvmhxlsianps rD, rA, rB
+ zvmhxlsui rD, rA, rB
+ zvmhxlsuiaa rD, rA, rB
+ zvmhxlsuiaas rD, rA, rB
+ zvmhxlsuian rD, rA, rB
+ zvmhxlsuians rD, rA, rB
+ zvmhxlsuianp rD, rA, rB
+ zvmhxlsuianps rD, rA, rB
+ zvmhxlsf rD, rA, rB
+ zvmhxlsfr rD, rA, rB
+ zvmhxlsfaas rD, rA, rB
+ zvmhxlsfraas rD, rA, rB
+ zvmhxlsfans rD, rA, rB
+ zvmhxlsfrans rD, rA, rB
+ zvmhxlsfanps rD, rA, rB
+ zvmhxlsfranps rD, rA, rB
+ zmheui rD, rA, rB
+ zmheuiaa rD, rA, rB
+ zmheuiaas rD, rA, rB
+ zmheuian rD, rA, rB
+ zmheuians rD, rA, rB
+ zmhesi rD, rA, rB
+ zmhesiaa rD, rA, rB
+ zmhesiaas rD, rA, rB
+ zmhesian rD, rA, rB
+ zmhesians rD, rA, rB
+ zmhesui rD, rA, rB
+ zmhesuiaa rD, rA, rB
+ zmhesuiaas rD, rA, rB
+ zmhesuian rD, rA, rB
+ zmhesuians rD, rA, rB
+ zmhesf rD, rA, rB
+ zmhesfr rD, rA, rB
+ zmhesfaas rD, rA, rB
+ zmhesfraas rD, rA, rB
+ zmhesfans rD, rA, rB
+ zmhesfrans rD, rA, rB
+ zmheoui rD, rA, rB
+ zmheouiaa rD, rA, rB
+ zmheouiaas rD, rA, rB
+ zmheouian rD, rA, rB
+ zmheouians rD, rA, rB
+ zmheosi rD, rA, rB
+ zmheosiaa rD, rA, rB
+ zmheosiaas rD, rA, rB
+ zmheosian rD, rA, rB
+ zmheosians rD, rA, rB
+ zmheosui rD, rA, rB
+ zmheosuiaa rD, rA, rB
+ zmheosuiaas rD, rA, rB
+ zmheosuian rD, rA, rB
+ zmheosuians rD, rA, rB
+ zmheosf rD, rA, rB
+ zmheosfr rD, rA, rB
+ zmheosfaas rD, rA, rB
+ zmheosfraas rD, rA, rB
+ zmheosfans rD, rA, rB
+ zmheosfrans rD, rA, rB
+ zmhoui rD, rA, rB
+ zmhouiaa rD, rA, rB
+ zmhouiaas rD, rA, rB
+ zmhouian rD, rA, rB
+ zmhouians rD, rA, rB
+ zmhosi rD, rA, rB
+ zmhosiaa rD, rA, rB
+ zmhosiaas rD, rA, rB
+ zmhosian rD, rA, rB
+ zmhosians rD, rA, rB
+ zmhosui rD, rA, rB
+ zmhosuiaa rD, rA, rB
+ zmhosuiaas rD, rA, rB
+ zmhosuian rD, rA, rB
+ zmhosuians rD, rA, rB
+ zmhosf rD, rA, rB
+ zmhosfr rD, rA, rB
+ zmhosfaas rD, rA, rB
+ zmhosfraas rD, rA, rB
+ zmhosfans rD, rA, rB
+ zmhosfrans rD, rA, rB
+ zvmhuih rD, rA, rB
+ zvmhuihs rD, rA, rB
+ zvmhuiaah rD, rA, rB
+ zvmhuiaahs rD, rA, rB
+ zvmhuianh rD, rA, rB
+ zvmhuianhs rD, rA, rB
+ zvmhsihs rD, rA, rB
+ zvmhsiaahs rD, rA, rB
+ zvmhsianhs rD, rA, rB
+ zvmhsuihs rD, rA, rB
+ zvmhsuiaahs rD, rA, rB
+ zvmhsuianhs rD, rA, rB
+ zvmhsfh rD, rA, rB
+ zvmhsfrh rD, rA, rB
+ zvmhsfaahs rD, rA, rB
+ zvmhsfraahs rD, rA, rB
+ zvmhsfanhs rD, rA, rB
+ zvmhsfranhs rD, rA, rB
+ zvdotphaui rD, rA, rB
+ zvdotphauis rD, rA, rB
+ zvdotphauiaa rD, rA, rB
+ zvdotphauiaas rD, rA, rB
+ zvdotphauian rD, rA, rB
+ zvdotphauians rD, rA, rB
+ zvdotphasi rD, rA, rB
+ zvdotphasis rD, rA, rB
+ zvdotphasiaa rD, rA, rB
+ zvdotphasiaas rD, rA, rB
+ zvdotphasian rD, rA, rB
+ zvdotphasians rD, rA, rB
+ zvdotphasui rD, rA, rB
+ zvdotphasuis rD, rA, rB
+ zvdotphasuiaa rD, rA, rB
+ zvdotphasuiaas rD, rA, rB
+ zvdotphasuian rD, rA, rB
+ zvdotphasuians rD, rA, rB
+ zvdotphasfs rD, rA, rB
+ zvdotphasfrs rD, rA, rB
+ zvdotphasfaas rD, rA, rB
+ zvdotphasfraas rD, rA, rB
+ zvdotphasfans rD, rA, rB
+ zvdotphasfrans rD, rA, rB
+ zvdotphxaui rD, rA, rB
+ zvdotphxauis rD, rA, rB
+ zvdotphxauiaa rD, rA, rB
+ zvdotphxauiaas rD, rA, rB
+ zvdotphxauian rD, rA, rB
+ zvdotphxauians rD, rA, rB
+ zvdotphxasi rD, rA, rB
+ zvdotphxasis rD, rA, rB
+ zvdotphxasiaa rD, rA, rB
+ zvdotphxasiaas rD, rA, rB
+ zvdotphxasian rD, rA, rB
+ zvdotphxasians rD, rA, rB
+ zvdotphxasui rD, rA, rB
+ zvdotphxasuis rD, rA, rB
+ zvdotphxasuiaa rD, rA, rB
+ zvdotphxasuiaas rD, rA, rB
+ zvdotphxasuian rD, rA, rB
+ zvdotphxasuians rD, rA, rB
+ zvdotphxasfs rD, rA, rB
+ zvdotphxasfrs rD, rA, rB
+ zvdotphxasfaas rD, rA, rB
+ zvdotphxasfraas rD, rA, rB
+ zvdotphxasfans rD, rA, rB
+ zvdotphxasfrans rD, rA, rB
+ zvdotphsui rD, rA, rB
+ zvdotphsuis rD, rA, rB
+ zvdotphsuiaa rD, rA, rB
+ zvdotphsuiaas rD, rA, rB
+ zvdotphsuian rD, rA, rB
+ zvdotphsuians rD, rA, rB
+ zvdotphssi rD, rA, rB
+ zvdotphssis rD, rA, rB
+ zvdotphssiaa rD, rA, rB
+ zvdotphssiaas rD, rA, rB
+ zvdotphssian rD, rA, rB
+ zvdotphssians rD, rA, rB
+ zvdotphssui rD, rA, rB
+ zvdotphssuis rD, rA, rB
+ zvdotphssuiaa rD, rA, rB
+ zvdotphssuiaas rD, rA, rB
+ zvdotphssuian rD, rA, rB
+ zvdotphssuians rD, rA, rB
+ zvdotphssfs rD, rA, rB
+ zvdotphssfrs rD, rA, rB
+ zvdotphssfaas rD, rA, rB
+ zvdotphssfraas rD, rA, rB
+ zvdotphssfans rD, rA, rB
+ zvdotphssfrans rD, rA, rB
+ zmwluis rD, rA, rB
+ zmwluiaa rD, rA, rB
+ zmwluiaas rD, rA, rB
+ zmwluian rD, rA, rB
+ zmwluians rD, rA, rB
+ zmwlsis rD, rA, rB
+ zmwlsiaas rD, rA, rB
+ zmwlsians rD, rA, rB
+ zmwlsuis rD, rA, rB
+ zmwlsuiaas rD, rA, rB
+ zmwlsuians rD, rA, rB
+ zmwsf rD, rA, rB
+ zmwsfr rD, rA, rB
+ zmwsfaas rD, rA, rB
+ zmwsfraas rD, rA, rB
+ zmwsfans rD, rA, rB
+ zmwsfrans rD, rA, rB
+ zlddx rD, rA, rB
+ zldd rD, UIMM_8(rA)
+ zldwx rD, rA, rB
+ zldw rD, UIMM_8(rA)
+ zldhx rD, rA, rB
+ zldh rD, UIMM_8(rA)
+ zlwgsfdx rD, rA, rB
+ zlwgsfd rD, UIMM_4(rA)
+ zlwwosdx rD, rA, rB
+ zlwwosd rD, UIMM_4(rA)
+ zlwhsplatwdx rD, rA, rB
+ zlwhsplatwd rD, UIMM_4(rA)
+ zlwhsplatdx rD, rA, rB
+ zlwhsplatd rD, UIMM_4(rA)
+ zlwhgwsfdx rD, rA, rB
+ zlwhgwsfd rD, UIMM_4(rA)
+ zlwhedx rD, rA, rB
+ zlwhed rD, UIMM_4(rA)
+ zlwhosdx rD, rA, rB
+ zlwhosd rD, UIMM_4(rA)
+ zlwhoudx rD, rA, rB
+ zlwhoud rD, UIMM_4(rA)
+ zlwhx rD, rA, rB
+ zlwh rD, UIMM_4(rA)
+ zlwwx rD, rA, rB
+ zlww rD, UIMM_4(rA)
+ zlhgwsfx rD, rA, rB
+ zlhgwsf rD, UIMM_2(rA)
+ zlhhsplatx rD, rA, rB
+ zlhhsplat rD, UIMM_2(rA)
+ zstddx rS, rA, rB
+ zstdd rS, UIMM_8(rA)
+ zstdwx rS, rA, rB
+ zstdw rS, UIMM_8(rA)
+ zstdhx rS, rA, rB
+ zstdh rS, UIMM_8(rA)
+ zstwhedx rS, rA, rB
+ zstwhed rS, UIMM_4(rA)
+ zstwhodx rS, rA, rB
+ zstwhod rS, UIMM_4(rA)
+ zlhhex rS, rA, rB
+ zlhhe rD, UIMM_2(rA)
+ zlhhosx rS, rA, rB
+ zlhhos rD, UIMM_2(rA)
+ zlhhoux rS, rA, rB
+ zlhhou rD, UIMM_2(rA)
+ zsthex rS, rA, rB
+ zsthe rS, UIMM_2(rA)
+ zsthox rS, rA, rB
+ zstho rS, UIMM_2(rA)
+ zstwhx rS, rA, rB
+ zstwh rS, UIMM_4(rA)
+ zstwwx rS, rA, rB
+ zstww rS, UIMM_4(rA)
+ zlddmx rD, rA, rB
+ zlddu rD, UIMM_8(rA)
+ zldwmx rD, rA, rB
+ zldwu rD, UIMM_8(rA)
+ zldhmx rD, rA, rB
+ zldhu rD, UIMM_8(rA)
+ zlwgsfdmx rD, rA, rB
+ zlwgsfdu rD, UIMM_4(rA)
+ zlwwosdmx rD, rA, rB
+ zlwwosdu rD, UIMM_4(rA)
+ zlwhsplatwdmx rD, rA, rB
+ zlwhsplatwdu rD, UIMM_4(rA)
+ zlwhsplatdmx rD, rA, rB
+ zlwhsplatdu rD, UIMM_4(rA)
+ zlwhgwsfdmx rD, rA, rB
+ zlwhgwsfdu rD, UIMM_4(rA)
+ zlwhedmx rD, rA, rB
+ zlwhedu rD, UIMM_4(rA)
+ zlwhosdmx rD, rA, rB
+ zlwhosdu rD, UIMM_4(rA)
+ zlwhoudmx rD, rA, rB
+ zlwhoudu rD, UIMM_4(rA)
+ zlwhmx rD, rA, rB
+ zlwhu rD, UIMM_4(rA)
+ zlwwmx rD, rA, rB
+ zlwwu rD, UIMM_4(rA)
+ zlhgwsfmx rD, rA, rB
+ zlhgwsfu rD, UIMM_2(rA)
+ zlhhsplatmx rD, rA, rB
+ zlhhsplatu rD, UIMM_2(rA)
+ zstddmx rS, rA, rB
+ zstddu rS, UIMM_8(rA)
+ zstdwmx rS, rA, rB
+ zstdwu rS, UIMM_8(rA)
+ zstdhmx rS, rA, rB
+ zstdhu rS, UIMM_8(rA)
+ zstwhedmx rS, rA, rB
+ zstwhedu rS, UIMM_4(rA)
+ zstwhodmx rD, rA, rB
+ zstwhodu rS, UIMM_4(rA)
+ zlhhemx rD, rA, rB
+ zlhheu rD, UIMM_2(rA)
+ zlhhosmx rD, rA, rB
+ zlhhosu rD, UIMM_2(rA)
+ zlhhoumx rD, rA, rB
+ zlhhouu rD, UIMM_2(rA)
+ zsthemx rS, rA, rB
+ zstheu rS, UIMM_2(rA)
+ zsthomx rS, rA, rB
+ zsthou rS, UIMM_2(rA)
+ zstwhmx rS, rA, rB
+ zstwhu rS, UIMM_4(rA)
+ zstwwmx rS, rA, rB
+ zstwwu rS, UIMM_4(rA)
+
diff -ruN binutils-2.28-vle/gas/testsuite/gas/ppc/ppc.exp binutils-2.28-lsp/gas/testsuite/gas/ppc/ppc.exp
--- binutils-2.28-vle/gas/testsuite/gas/ppc/ppc.exp 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-lsp/gas/testsuite/gas/ppc/ppc.exp 2017-06-23 17:46:07.285531055 +0300
@@ -59,6 +59,8 @@
run_dump_test "vle-simple-4"
run_dump_test "vle-simple-5"
run_dump_test "vle-simple-6"
+ run_dump_test "lsp"
+ run_dump_test "lsp-checks"
}
}
diff -ruN binutils-2.28-vle/include/opcode/ppc.h binutils-2.28-lsp/include/opcode/ppc.h
--- binutils-2.28-vle/include/opcode/ppc.h 2017-06-23 17:06:46.227871056 +0300
+++ binutils-2.28-lsp/include/opcode/ppc.h 2017-06-23 17:38:44.083243055 +0300
@@ -194,6 +194,9 @@
/* Opcode is only supported by Power8 architecture. */
#define PPC_OPCODE_POWER8 0x2000000000ull
+/* Opcode is supported by PowerPC LSP */
+#define PPC_OPCODE_LSP 0x8000000000000000ull
+
/* Opcode which is supported by the Hardware Transactional Memory extension. */
/* Currently, this is the same as the POWER8 mask. If another cpu comes out
that isn't a superset of POWER8, we can define this to its own mask. */
diff -ruN binutils-2.28-vle/opcodes/ppc-dis.c binutils-2.28-lsp/opcodes/ppc-dis.c
--- binutils-2.28-vle/opcodes/ppc-dis.c 2017-06-23 17:16:54.219715056 +0300
+++ binutils-2.28-lsp/opcodes/ppc-dis.c 2017-06-23 17:39:16.986783055 +0300
@@ -218,7 +218,7 @@
{ "vle", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
| PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
- | PPC_OPCODE_E500),
+ | PPC_OPCODE_E500 | PPC_OPCODE_LSP),
PPC_OPCODE_VLE },
{ "vsx", PPC_OPCODE_PPC,
PPC_OPCODE_VSX | PPC_OPCODE_VSX3 },
diff -ruN binutils-2.28-vle/opcodes/ppc-opc.c binutils-2.28-lsp/opcodes/ppc-opc.c
--- binutils-2.28-vle/opcodes/ppc-opc.c 2017-06-23 22:12:03.648462000 +0300
+++ binutils-2.28-lsp/opcodes/ppc-opc.c 2017-06-23 22:12:39.138198000 +0300
@@ -124,6 +124,12 @@
static long extract_vleui (unsigned long, ppc_cpu_t, int *);
static unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **);
static long extract_vleil (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_evuimm2_ex0 (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_evuimm4_ex0 (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_evuimm8_ex0 (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_evuimm_lt16 (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_rD_rS_even (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_off_lsp (unsigned long, long, ppc_cpu_t, const char **);
\f
/* The operands table.
@@ -576,9 +582,13 @@
#define RD RS
{ 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
+#define RD_EVEN RS + 1
+#define RS_EVEN RD_EVEN
+ { 0x1f, 21, insert_rD_rS_even, NULL, PPC_OPERAND_GPR },
+
/* The RS and RT fields of the DS form stq and DQ form lq instructions,
which have special value restrictions. */
-#define RSQ RS + 1
+#define RSQ RS_EVEN + 1
#define RTQ RSQ
{ 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
@@ -635,8 +645,11 @@
#define FC SH
{ 0x1f, 11, NULL, NULL, 0 },
+#define EVUIMM_LT16 SH + 1
+ { 0x1f, 11, insert_evuimm_lt16, NULL, 0 },
+
/* The SI field in a HTM X form instruction. */
-#define HTM_SI SH + 1
+#define HTM_SI EVUIMM_LT16 + 1
{ 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
/* The SH field in an MD form instruction. This is split. */
@@ -784,16 +797,25 @@
#define EVUIMM_2 SHB + 1
{ 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
+#define EVUIMM_2_EX0 EVUIMM_2 + 1
+ { 0x3e, 10, insert_evuimm2_ex0, NULL, PPC_OPERAND_PARENS },
+
/* The other UIMM field in a word EVX form instruction. */
-#define EVUIMM_4 EVUIMM_2 + 1
+#define EVUIMM_4 EVUIMM_2_EX0 + 1
{ 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
+#define EVUIMM_4_EX0 EVUIMM_4 + 1
+ { 0x7c, 9, insert_evuimm4_ex0, NULL, PPC_OPERAND_PARENS },
+
/* The other UIMM field in a double EVX form instruction. */
-#define EVUIMM_8 EVUIMM_4 + 1
+#define EVUIMM_8 EVUIMM_4_EX0 + 1
{ 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
+#define EVUIMM_8_EX0 EVUIMM_8 + 1
+ { 0xf8, 8, insert_evuimm8_ex0, NULL, PPC_OPERAND_PARENS },
+
/* The WS or DRM field in an X form instruction. */
-#define WS EVUIMM_8 + 1
+#define WS EVUIMM_8_EX0 + 1
#define DRM WS
{ 0x7, 11, NULL, NULL, 0 },
@@ -960,6 +982,9 @@
/* The 8-bit IMM8 field in a XX1 form instruction. */
#define IMM8 IH + 1
{ 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
+
+#define VX_OFF IMM8 + 1
+ { 0x3, 0, insert_off_lsp, NULL, 0 },
};
const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
@@ -2300,6 +2325,95 @@
return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
}
+static unsigned long
+insert_evuimm2_ex0 (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value > 0 && value <= 0x3e)
+ return insn | ((value & 0x3e) << 10);
+ else
+ {
+ *errmsg = _("UIMM = 00000 is illegal");
+ return 0;
+ }
+}
+
+static unsigned long
+insert_evuimm4_ex0 (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value > 0 && value <= 0x7c)
+ return insn | ((value & 0x7c) << 9);
+ else
+ {
+ *errmsg = _("UIMM = 00000 is illegal");
+ return 0;
+ }
+}
+
+static unsigned long
+insert_evuimm8_ex0 (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value > 0 && value <= 0xf8)
+ return insn | ((value & 0xf8) << 8);
+ else
+ {
+ *errmsg = _("UIMM = 00000 is illegal");
+ return 0;
+ }
+}
+
+static unsigned long
+insert_evuimm_lt16 (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value >= 0 && value <= 15)
+ return insn | ((value & 0xf) << 11);
+ else
+ {
+ *errmsg = _("UIMM values >15 are illegal");
+ return 0;
+ }
+}
+
+static unsigned long
+insert_rD_rS_even (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if ((value & 0x1) == 0)
+ return insn | ((value & 0x1e) << 21);
+ else
+ {
+ *errmsg = _("GPR odd is illegal");
+ return 0;
+ }
+}
+
+static unsigned long
+insert_off_lsp (unsigned long insn,
+ long value,
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
+ const char **errmsg)
+{
+ if (value > 0 && value <= 0x3)
+ return insn | (value & 0x3);
+ else
+ {
+ *errmsg = _("invalid offset");
+ return 0;
+ }
+}
\f
/* Macros used to form opcodes. */
@@ -2532,6 +2646,13 @@
/* The mask for an VX form instruction. */
#define VX_MASK VX(0x3f, 0x7ff)
+/* A VX LSP form instruction. */
+#define VX_LSP(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xffff))
+
+/* The mask for an VX LSP form instruction. */
+#define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
+#define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
+
/* A VX_MASK with the VA field fixed. */
#define VXVA_MASK (VX_MASK | (0x1f << 16))
@@ -3010,6 +3131,7 @@
#define E500 PPC_OPCODE_E500
#define E6500 PPC_OPCODE_E6500
#define PPCVLE PPC_OPCODE_VLE
+#define PPCLSP PPC_OPCODE_LSP
#define PPCHTM PPC_OPCODE_HTM
#define E200Z4 PPC_OPCODE_E200Z4
/* The list of embedded processors that use the embedded operand ordering
@@ -7019,6 +7141,686 @@
{"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
{"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
+/* by major opcode */
+{"zvaddih", VX(4, 0x200), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
+{"zvsubifh", VX(4, 0x201), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
+{"zvaddh", VX(4, 0x204), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfh", VX(4, 0x205), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddsubfh", VX(4, 0x206), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfaddh", VX(4, 0x207), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddhx", VX(4, 0x20C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfhx", VX(4, 0x20D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddsubfhx", VX(4, 0x20E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfaddhx", VX(4, 0x20F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zaddwus", VX(4, 0x210), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsubfwus", VX(4, 0x211), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zaddwss", VX(4, 0x212), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsubfwss", VX(4, 0x213), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddhus", VX(4, 0x214), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfhus", VX(4, 0x215), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddhss", VX(4, 0x216), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfhss", VX(4, 0x217), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddsubfhss", VX(4, 0x21A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfaddhss", VX(4, 0x21B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddhxss", VX(4, 0x21C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfhxss", VX(4, 0x21D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvaddsubfhxss", VX(4, 0x21E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfaddhxss", VX(4, 0x21F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zaddheuw", VX(4, 0x220), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsubfheuw", VX(4, 0x221), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zaddhesw", VX(4, 0x222), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsubfhesw", VX(4, 0x223), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zaddhouw", VX(4, 0x224), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsubfhouw", VX(4, 0x225), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zaddhosw", VX(4, 0x226), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsubfhosw", VX(4, 0x227), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmergehih", VX(4, 0x22C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmergeloh", VX(4, 0x22D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmergehiloh", VX(4, 0x22E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmergelohih", VX(4, 0x22F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvcmpgthu", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
+{"zvcmpgths", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
+{"zvcmplthu", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
+{"zvcmplths", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
+{"zvcmpeqh", VX(4, 0x232), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
+{"zpkswgshfrs", VX(4, 0x238), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zpkswgswfrs", VX(4, 0x239), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvpkshgwshfrs", VX(4, 0x23A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvpkswshfrs", VX(4, 0x23B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvpkswuhs", VX(4, 0x23C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvpkswshs", VX(4, 0x23D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvpkuwuhs", VX(4, 0x23E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsplatih", VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
+{"zvsplatfih", VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
+{"zcntlsw", VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvcntlzh", VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvcntlsh", VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"znegws", VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvnegh", VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvneghs", VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvnegho", VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvneghos", VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zrndwh", VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zrndwhss", VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvabsh", VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvabshs", VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zabsw", VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zabsws", VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zsatswuw", VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zsatuwsw", VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zsatswuh", VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zsatswsh", VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvsatshuh", VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zvsatuhsh", VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zsatuwuh", VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zsatuwsh", VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
+{"zsatsduw", VX(4, 0x260), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsatsdsw", VX(4, 0x261), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zsatuduw", VX(4, 0x262), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvselh", VX(4, 0x264), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zxtrw", VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0, {RD, RA, RB, VX_OFF}},
+{"zbrminc", VX(4, 0x268), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zcircinc", VX(4, 0x269), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zdivwsf", VX(4, 0x26B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsrhu", VX(4, 0x270), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsrhs", VX(4, 0x271), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsrhiu", VX(4, 0x272), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
+{"zvsrhis", VX(4, 0x273), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
+{"zvslh", VX(4, 0x274), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvrlh", VX(4, 0x275), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvslhi", VX(4, 0x276), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
+{"zvrlhi", VX(4, 0x277), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
+{"zvslhus", VX(4, 0x278), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvslhss", VX(4, 0x279), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvslhius", VX(4, 0x27A), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
+{"zvslhiss", VX(4, 0x27B), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
+{"zslwus", VX(4, 0x27C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zslwss", VX(4, 0x27D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zslwius", VX(4, 0x27E), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
+{"zslwiss", VX(4, 0x27F), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
+{"zaddwgui", VX(4, 0x460), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zsubfwgui", VX(4, 0x461), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zaddd", VX(4, 0x462), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zsubfd", VX(4, 0x463), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvaddsubfw", VX(4, 0x464), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvsubfaddw", VX(4, 0x465), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvaddw", VX(4, 0x466), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvsubfw", VX(4, 0x467), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zaddwgsi", VX(4, 0x468), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zsubfwgsi", VX(4, 0x469), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zadddss", VX(4, 0x46A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zsubfdss", VX(4, 0x46B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvaddsubfwss", VX(4, 0x46C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvsubfaddwss", VX(4, 0x46D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvaddwss", VX(4, 0x46E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvsubfwss", VX(4, 0x46F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zaddwgsf", VX(4, 0x470), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zsubfwgsf", VX(4, 0x471), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zadddus", VX(4, 0x472), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zsubfdus", VX(4, 0x473), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvaddwus", VX(4, 0x476), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvsubfwus", VX(4, 0x477), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvunpkhgwsf", VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
+{"zvunpkhsf", VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
+{"zvunpkhui", VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
+{"zvunpkhsi", VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
+{"zunpkwgsf", VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
+{"zvdotphgwasmf", VX(4, 0x488), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwasmfr", VX(4, 0x489), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwasmfaa", VX(4, 0x48A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwasmfraa", VX(4, 0x48B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwasmfan", VX(4, 0x48C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwasmfran", VX(4, 0x48D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhulgwsmf", VX(4, 0x490), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulgwsmfr", VX(4, 0x491), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulgwsmfaa", VX(4, 0x492), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulgwsmfraa", VX(4, 0x493), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulgwsmfan", VX(4, 0x494), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulgwsmfran", VX(4, 0x495), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulgwsmfanp", VX(4, 0x496), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulgwsmfranp", VX(4, 0x497), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegwsmf", VX(4, 0x498), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhegwsmfr", VX(4, 0x499), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhegwsmfaa", VX(4, 0x49A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhegwsmfraa", VX(4, 0x49B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhegwsmfan", VX(4, 0x49C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhegwsmfran", VX(4, 0x49D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxgwasmf", VX(4, 0x4A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxgwasmfr", VX(4, 0x4A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxgwasmfaa", VX(4, 0x4AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxgwasmfan", VX(4, 0x4AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhllgwsmf", VX(4, 0x4B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllgwsmfr", VX(4, 0x4B1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllgwsmfaa", VX(4, 0x4B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllgwsmfraa", VX(4, 0x4B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllgwsmfan", VX(4, 0x4B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllgwsmfran", VX(4, 0x4B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllgwsmfanp", VX(4, 0x4B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllgwsmfranp", VX(4, 0x4B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogwsmf", VX(4, 0x4B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheogwsmfr", VX(4, 0x4B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheogwsmfaa", VX(4, 0x4BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheogwsmfraa", VX(4, 0x4BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheogwsmfan", VX(4, 0x4BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheogwsmfran", VX(4, 0x4BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwssmf", VX(4, 0x4C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwssmfr", VX(4, 0x4C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwssmfaa", VX(4, 0x4CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwssmfraa", VX(4, 0x4CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwssmfan", VX(4, 0x4CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphgwssmfran", VX(4, 0x4CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhuugwsmf", VX(4, 0x4D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuugwsmfr", VX(4, 0x4D1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuugwsmfaa", VX(4, 0x4D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuugwsmfraa", VX(4, 0x4D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuugwsmfan", VX(4, 0x4D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuugwsmfran", VX(4, 0x4D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuugwsmfanp", VX(4, 0x4D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuugwsmfranp", VX(4, 0x4D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogwsmf", VX(4, 0x4D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhogwsmfr", VX(4, 0x4D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhogwsmfaa", VX(4, 0x4DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhogwsmfraa", VX(4, 0x4DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhogwsmfan", VX(4, 0x4DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhogwsmfran", VX(4, 0x4DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhxlgwsmf", VX(4, 0x4F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlgwsmfr", VX(4, 0x4F1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlgwsmfaa", VX(4, 0x4F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlgwsmfraa", VX(4, 0x4F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlgwsmfan", VX(4, 0x4F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlgwsmfran", VX(4, 0x4F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlgwsmfanp", VX(4, 0x4F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlgwsmfranp", VX(4, 0x4F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegui", VX(4, 0x500), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgaui", VX(4, 0x501), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheguiaa", VX(4, 0x502), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgauiaa", VX(4, 0x503), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheguian", VX(4, 0x504), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgauian", VX(4, 0x505), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsi", VX(4, 0x508), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasi", VX(4, 0x509), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsiaa", VX(4, 0x50A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasiaa", VX(4, 0x50B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsian", VX(4, 0x50C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasian", VX(4, 0x50D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsui", VX(4, 0x510), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasui", VX(4, 0x511), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsuiaa", VX(4, 0x512), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasuiaa", VX(4, 0x513), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsuian", VX(4, 0x514), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasuian", VX(4, 0x515), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsmf", VX(4, 0x518), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasmf", VX(4, 0x519), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsmfaa", VX(4, 0x51A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasmfaa", VX(4, 0x51B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhegsmfan", VX(4, 0x51C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgasmfan", VX(4, 0x51D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogui", VX(4, 0x520), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgaui", VX(4, 0x521), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheoguiaa", VX(4, 0x522), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgauiaa", VX(4, 0x523), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheoguian", VX(4, 0x524), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgauian", VX(4, 0x525), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsi", VX(4, 0x528), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasi", VX(4, 0x529), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsiaa", VX(4, 0x52A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasiaa", VX(4, 0x52B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsian", VX(4, 0x52C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasian", VX(4, 0x52D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsui", VX(4, 0x530), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasui", VX(4, 0x531), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsuiaa", VX(4, 0x532), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasuiaa", VX(4, 0x533), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsuian", VX(4, 0x534), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasuian", VX(4, 0x535), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsmf", VX(4, 0x538), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasmf", VX(4, 0x539), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsmfaa", VX(4, 0x53A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasmfaa", VX(4, 0x53B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheogsmfan", VX(4, 0x53C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphxgasmfan", VX(4, 0x53D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogui", VX(4, 0x540), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgsui", VX(4, 0x541), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhoguiaa", VX(4, 0x542), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgsuiaa", VX(4, 0x543), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhoguian", VX(4, 0x544), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgsuian", VX(4, 0x545), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsi", VX(4, 0x548), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssi", VX(4, 0x549), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsiaa", VX(4, 0x54A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssiaa", VX(4, 0x54B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsian", VX(4, 0x54C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssian", VX(4, 0x54D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsui", VX(4, 0x550), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssui", VX(4, 0x551), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsuiaa", VX(4, 0x552), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssuiaa", VX(4, 0x553), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsuian", VX(4, 0x554), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssuian", VX(4, 0x555), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsmf", VX(4, 0x558), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssmf", VX(4, 0x559), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsmfaa", VX(4, 0x55A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssmfaa", VX(4, 0x55B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmhogsmfan", VX(4, 0x55C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvdotphgssmfan", VX(4, 0x55D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgui", VX(4, 0x560), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwguiaa", VX(4, 0x562), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwguiaas", VX(4, 0x563), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwguian", VX(4, 0x564), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwguians", VX(4, 0x565), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsi", VX(4, 0x568), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsiaa", VX(4, 0x56A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsiaas", VX(4, 0x56B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsian", VX(4, 0x56C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsians", VX(4, 0x56D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsui", VX(4, 0x570), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsuiaa", VX(4, 0x572), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsuiaas", VX(4, 0x573), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsuian", VX(4, 0x574), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsuians", VX(4, 0x575), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsmf", VX(4, 0x578), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsmfr", VX(4, 0x579), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsmfaa", VX(4, 0x57A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsmfraa", VX(4, 0x57B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsmfan", VX(4, 0x57C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmwgsmfran", VX(4, 0x57D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhului", VX(4, 0x580), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuluiaa", VX(4, 0x582), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuluiaas", VX(4, 0x583), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuluian", VX(4, 0x584), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuluians", VX(4, 0x585), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuluianp", VX(4, 0x586), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuluianps", VX(4, 0x587), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsi", VX(4, 0x588), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsiaa", VX(4, 0x58A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsiaas", VX(4, 0x58B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsian", VX(4, 0x58C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsians", VX(4, 0x58D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsianp", VX(4, 0x58E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsianps", VX(4, 0x58F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsui", VX(4, 0x590), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsuiaa", VX(4, 0x592), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsuiaas", VX(4, 0x593), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsuian", VX(4, 0x594), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsuians", VX(4, 0x595), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsuianp", VX(4, 0x596), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsuianps", VX(4, 0x597), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsf", VX(4, 0x598), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsfr", VX(4, 0x599), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsfaas", VX(4, 0x59A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsfraas", VX(4, 0x59B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsfans", VX(4, 0x59C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsfrans", VX(4, 0x59D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsfanps", VX(4, 0x59E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhulsfranps", VX(4, 0x59F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllui", VX(4, 0x5A0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhlluiaa", VX(4, 0x5A2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhlluiaas", VX(4, 0x5A3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhlluian", VX(4, 0x5A4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhlluians", VX(4, 0x5A5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhlluianp", VX(4, 0x5A6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhlluianps", VX(4, 0x5A7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsi", VX(4, 0x5A8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsiaa", VX(4, 0x5AA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsiaas", VX(4, 0x5AB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsian", VX(4, 0x5AC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsians", VX(4, 0x5AD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsianp", VX(4, 0x5AE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsianps", VX(4, 0x5AF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsui", VX(4, 0x5B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsuiaa", VX(4, 0x5B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsuiaas", VX(4, 0x5B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsuian", VX(4, 0x5B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsuians", VX(4, 0x5B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsuianp", VX(4, 0x5B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsuianps", VX(4, 0x5B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsf", VX(4, 0x5B8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsfr", VX(4, 0x5B9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsfaas", VX(4, 0x5BA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsfraas", VX(4, 0x5BB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsfans", VX(4, 0x5BC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsfrans", VX(4, 0x5BD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsfanps", VX(4, 0x5BE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhllsfranps", VX(4, 0x5BF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuuui", VX(4, 0x5C0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuuuiaa", VX(4, 0x5C2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuuuiaas", VX(4, 0x5C3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuuuian", VX(4, 0x5C4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuuuians", VX(4, 0x5C5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuuuianp", VX(4, 0x5C6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuuuianps", VX(4, 0x5C7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusi", VX(4, 0x5C8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusiaa", VX(4, 0x5CA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusiaas", VX(4, 0x5CB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusian", VX(4, 0x5CC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusians", VX(4, 0x5CD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusianp", VX(4, 0x5CE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusianps", VX(4, 0x5CF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusui", VX(4, 0x5D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusuiaa", VX(4, 0x5D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusuiaas", VX(4, 0x5D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusuian", VX(4, 0x5D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusuians", VX(4, 0x5D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusuianp", VX(4, 0x5D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusuianps", VX(4, 0x5D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusf", VX(4, 0x5D8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusfr", VX(4, 0x5D9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusfaas", VX(4, 0x5DA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusfraas", VX(4, 0x5DB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusfans", VX(4, 0x5DC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusfrans", VX(4, 0x5DD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusfanps", VX(4, 0x5DE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhuusfranps", VX(4, 0x5DF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlui", VX(4, 0x5E0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxluiaa", VX(4, 0x5E2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxluiaas", VX(4, 0x5E3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxluian", VX(4, 0x5E4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxluians", VX(4, 0x5E5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxluianp", VX(4, 0x5E6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxluianps", VX(4, 0x5E7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsi", VX(4, 0x5E8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsiaa", VX(4, 0x5EA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsiaas", VX(4, 0x5EB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsian", VX(4, 0x5EC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsians", VX(4, 0x5ED), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsianp", VX(4, 0x5EE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsianps", VX(4, 0x5EF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsui", VX(4, 0x5F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsuiaa", VX(4, 0x5F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsuiaas", VX(4, 0x5F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsuian", VX(4, 0x5F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsuians", VX(4, 0x5F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsuianp", VX(4, 0x5F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsuianps", VX(4, 0x5F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsf", VX(4, 0x5F8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsfr", VX(4, 0x5F9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsfaas", VX(4, 0x5FA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsfraas", VX(4, 0x5FB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsfans", VX(4, 0x5FC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsfrans", VX(4, 0x5FD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsfanps", VX(4, 0x5FE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zvmhxlsfranps", VX(4, 0x5FF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zmheui", VX(4, 0x600), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheuiaa", VX(4, 0x602), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheuiaas", VX(4, 0x603), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheuian", VX(4, 0x604), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheuians", VX(4, 0x605), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesi", VX(4, 0x608), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesiaa", VX(4, 0x60A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesiaas", VX(4, 0x60B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesian", VX(4, 0x60C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesians", VX(4, 0x60D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesui", VX(4, 0x610), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesuiaa", VX(4, 0x612), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesuiaas", VX(4, 0x613), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesuian", VX(4, 0x614), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesuians", VX(4, 0x615), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesf", VX(4, 0x618), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesfr", VX(4, 0x619), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesfaas", VX(4, 0x61A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesfraas", VX(4, 0x61B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesfans", VX(4, 0x61C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhesfrans", VX(4, 0x61D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheoui", VX(4, 0x620), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheouiaa", VX(4, 0x622), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheouiaas", VX(4, 0x623), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheouian", VX(4, 0x624), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheouians", VX(4, 0x625), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosi", VX(4, 0x628), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosiaa", VX(4, 0x62A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosiaas", VX(4, 0x62B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosian", VX(4, 0x62C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosians", VX(4, 0x62D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosui", VX(4, 0x630), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosuiaa", VX(4, 0x632), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosuiaas", VX(4, 0x633), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosuian", VX(4, 0x634), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosuians", VX(4, 0x635), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosf", VX(4, 0x638), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosfr", VX(4, 0x639), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosfaas", VX(4, 0x63A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosfraas", VX(4, 0x63B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosfans", VX(4, 0x63C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmheosfrans", VX(4, 0x63D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhoui", VX(4, 0x640), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhouiaa", VX(4, 0x642), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhouiaas", VX(4, 0x643), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhouian", VX(4, 0x644), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhouians", VX(4, 0x645), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosi", VX(4, 0x648), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosiaa", VX(4, 0x64A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosiaas", VX(4, 0x64B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosian", VX(4, 0x64C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosians", VX(4, 0x64D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosui", VX(4, 0x650), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosuiaa", VX(4, 0x652), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosuiaas", VX(4, 0x653), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosuian", VX(4, 0x654), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosuians", VX(4, 0x655), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosf", VX(4, 0x658), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosfr", VX(4, 0x659), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosfaas", VX(4, 0x65A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosfraas", VX(4, 0x65B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosfans", VX(4, 0x65C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmhosfrans", VX(4, 0x65D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhuih", VX(4, 0x660), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhuihs", VX(4, 0x661), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhuiaah", VX(4, 0x662), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhuiaahs", VX(4, 0x663), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhuianh", VX(4, 0x664), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhuianhs", VX(4, 0x665), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsihs", VX(4, 0x669), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsiaahs", VX(4, 0x66B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsianhs", VX(4, 0x66D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsuihs", VX(4, 0x671), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsuiaahs", VX(4, 0x673), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsuianhs", VX(4, 0x675), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsfh", VX(4, 0x678), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsfrh", VX(4, 0x679), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsfaahs", VX(4, 0x67A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsfraahs", VX(4, 0x67B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsfanhs", VX(4, 0x67C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvmhsfranhs", VX(4, 0x67D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphaui", VX(4, 0x680), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphauis", VX(4, 0x681), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphauiaa", VX(4, 0x682), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphauiaas", VX(4, 0x683), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphauian", VX(4, 0x684), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphauians", VX(4, 0x685), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasi", VX(4, 0x688), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasis", VX(4, 0x689), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasiaa", VX(4, 0x68A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasiaas", VX(4, 0x68B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasian", VX(4, 0x68C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasians", VX(4, 0x68D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasui", VX(4, 0x690), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasuis", VX(4, 0x691), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasuiaa", VX(4, 0x692), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasuiaas", VX(4, 0x693), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasuian", VX(4, 0x694), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasuians", VX(4, 0x695), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasfs", VX(4, 0x698), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasfrs", VX(4, 0x699), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasfaas", VX(4, 0x69A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasfraas", VX(4, 0x69B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasfans", VX(4, 0x69C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphasfrans", VX(4, 0x69D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxaui", VX(4, 0x6A0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxauis", VX(4, 0x6A1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxauiaa", VX(4, 0x6A2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxauiaas", VX(4, 0x6A3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxauian", VX(4, 0x6A4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxauians", VX(4, 0x6A5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasi", VX(4, 0x6A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasis", VX(4, 0x6A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasiaa", VX(4, 0x6AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasiaas", VX(4, 0x6AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasian", VX(4, 0x6AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasians", VX(4, 0x6AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasui", VX(4, 0x6B0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasuis", VX(4, 0x6B1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasuiaa", VX(4, 0x6B2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasuiaas", VX(4, 0x6B3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasuian", VX(4, 0x6B4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasuians", VX(4, 0x6B5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasfs", VX(4, 0x6B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasfrs", VX(4, 0x6B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasfaas", VX(4, 0x6BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasfraas", VX(4, 0x6BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasfans", VX(4, 0x6BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphxasfrans", VX(4, 0x6BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphsui", VX(4, 0x6C0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphsuis", VX(4, 0x6C1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphsuiaa", VX(4, 0x6C2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphsuiaas", VX(4, 0x6C3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphsuian", VX(4, 0x6C4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphsuians", VX(4, 0x6C5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssi", VX(4, 0x6C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssis", VX(4, 0x6C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssiaa", VX(4, 0x6CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssiaas", VX(4, 0x6CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssian", VX(4, 0x6CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssians", VX(4, 0x6CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssui", VX(4, 0x6D0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssuis", VX(4, 0x6D1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssuiaa", VX(4, 0x6D2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssuiaas", VX(4, 0x6D3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssuian", VX(4, 0x6D4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssuians", VX(4, 0x6D5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssfs", VX(4, 0x6D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssfrs", VX(4, 0x6D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssfaas", VX(4, 0x6DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssfraas", VX(4, 0x6DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssfans", VX(4, 0x6DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zvdotphssfrans", VX(4, 0x6DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwluis", VX(4, 0x6E1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwluiaa", VX(4, 0x6E2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwluiaas", VX(4, 0x6E3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwluian", VX(4, 0x6E4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwluians", VX(4, 0x6E5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwlsis", VX(4, 0x6E9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwlsiaas", VX(4, 0x6EB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwlsians", VX(4, 0x6ED), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwlsuis", VX(4, 0x6F1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwlsuiaas", VX(4, 0x6F3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwlsuians", VX(4, 0x6F5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwsf", VX(4, 0x6F8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwsfr", VX(4, 0x6F9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwsfaas", VX(4, 0x6FA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwsfraas", VX(4, 0x6FB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwsfans", VX(4, 0x6FC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zmwsfrans", VX(4, 0x6FD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlddx", VX(4, 0x300), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zldd", VX(4, 0x301), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
+{"zldwx", VX(4, 0x302), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zldw", VX(4, 0x303), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
+{"zldhx", VX(4, 0x304), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zldh", VX(4, 0x305), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
+{"zlwgsfdx", VX(4, 0x308), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwgsfd", VX(4, 0x309), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwwosdx", VX(4, 0x30A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwwosd", VX(4, 0x30B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwhsplatwdx", VX(4, 0x30C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhsplatwd", VX(4, 0x30D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwhsplatdx", VX(4, 0x30E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhsplatd", VX(4, 0x30F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwhgwsfdx", VX(4, 0x310), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhgwsfd", VX(4, 0x311), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwhedx", VX(4, 0x312), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhed", VX(4, 0x313), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwhosdx", VX(4, 0x314), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhosd", VX(4, 0x315), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwhoudx", VX(4, 0x316), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhoud", VX(4, 0x317), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
+{"zlwhx", VX(4, 0x318), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlwh", VX(4, 0x319), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
+{"zlwwx", VX(4, 0x31A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlww", VX(4, 0x31B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
+{"zlhgwsfx", VX(4, 0x31C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhgwsf", VX(4, 0x31D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
+{"zlhhsplatx", VX(4, 0x31E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhhsplat", VX(4, 0x31F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
+{"zstddx", VX(4, 0x320), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstdd", VX(4, 0x321), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
+{"zstdwx", VX(4, 0x322), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstdw", VX(4, 0x323), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
+{"zstdhx", VX(4, 0x324), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstdh", VX(4, 0x325), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
+{"zstwhedx", VX(4, 0x328), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstwhed", VX(4, 0x329), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
+{"zstwhodx", VX(4, 0x32A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstwhod", VX(4, 0x32B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
+{"zlhhex", VX(4, 0x330), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhhe", VX(4, 0x331), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
+{"zlhhosx", VX(4, 0x332), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhhos", VX(4, 0x333), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
+{"zlhhoux", VX(4, 0x334), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhhou", VX(4, 0x335), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
+{"zsthex", VX(4, 0x338), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zsthe", VX(4, 0x339), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
+{"zsthox", VX(4, 0x33A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zstho", VX(4, 0x33B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
+{"zstwhx", VX(4, 0x33C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zstwh", VX(4, 0x33D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
+{"zstwwx", VX(4, 0x33E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zstww", VX(4, 0x33F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
+{"zlddmx", VX(4, 0x340), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlddu", VX(4, 0x341), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
+{"zldwmx", VX(4, 0x342), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zldwu", VX(4, 0x343), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
+{"zldhmx", VX(4, 0x344), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zldhu", VX(4, 0x345), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
+{"zlwgsfdmx", VX(4, 0x348), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwgsfdu", VX(4, 0x349), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwwosdmx", VX(4, 0x34A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwwosdu", VX(4, 0x34B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwhsplatwdmx", VX(4, 0x34C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhsplatwdu", VX(4, 0x34D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwhsplatdmx", VX(4, 0x34E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhsplatdu", VX(4, 0x34F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwhgwsfdmx", VX(4, 0x350), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhgwsfdu", VX(4, 0x351), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwhedmx", VX(4, 0x352), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhedu", VX(4, 0x353), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwhosdmx", VX(4, 0x354), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhosdu", VX(4, 0x355), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwhoudmx", VX(4, 0x356), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
+{"zlwhoudu", VX(4, 0x357), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
+{"zlwhmx", VX(4, 0x358), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlwhu", VX(4, 0x359), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
+{"zlwwmx", VX(4, 0x35A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlwwu", VX(4, 0x35B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
+{"zlhgwsfmx", VX(4, 0x35C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhgwsfu", VX(4, 0x35D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
+{"zlhhsplatmx", VX(4, 0x35E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhhsplatu", VX(4, 0x35F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
+{"zstddmx", VX(4, 0x360), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstddu", VX(4, 0x361), VX_MASK, PPCLSP, 0, {RS, EVUIMM_8_EX0, RA}},
+{"zstdwmx", VX(4, 0x362), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstdwu", VX(4, 0x363), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
+{"zstdhmx", VX(4, 0x364), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstdhu", VX(4, 0x365), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
+{"zstwhedmx", VX(4, 0x368), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstwhedu", VX(4, 0x369), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
+{"zstwhodmx", VX(4, 0x36A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
+{"zstwhodu", VX(4, 0x36B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
+{"zlhhemx", VX(4, 0x370), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhheu", VX(4, 0x371), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
+{"zlhhosmx", VX(4, 0x372), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhhosu", VX(4, 0x373), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
+{"zlhhoumx", VX(4, 0x374), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
+{"zlhhouu", VX(4, 0x375), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
+{"zsthemx", VX(4, 0x378), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zstheu", VX(4, 0x379), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
+{"zsthomx", VX(4, 0x37A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zsthou", VX(4, 0x37B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
+{"zstwhmx", VX(4, 0x37C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zstwhu", VX(4, 0x37D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
+{"zstwwmx", VX(4, 0x37E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
+{"zstwwu", VX(4, 0x37F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
+
{"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
@ 2017-06-23 20:52 Alexander Fedotov
2017-06-23 20:55 ` Alexander Fedotov
2017-06-24 13:11 ` Alan Modra
0 siblings, 2 replies; 20+ messages in thread
From: Alexander Fedotov @ 2017-06-23 20:52 UTC (permalink / raw)
To: Alan Modra, binutils; +Cc: Edmar Wienskoski
[-- Attachment #1: Type: text/plain, Size: 144 bytes --]
Hello Alan
We want to upstream our changes for VLE, LSP, SPE2 and other stuff.
All of them are based on 2.28 release.
Best regards,
Alexander
[-- Attachment #2: 2.28-vle.patch --]
[-- Type: text/x-patch, Size: 18120 bytes --]
diff -ruN binutils-2.28/bfd/elf32-ppc.c binutils-2.28-vle/bfd/elf32-ppc.c
--- binutils-2.28/bfd/elf32-ppc.c 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-vle/bfd/elf32-ppc.c 2017-06-23 22:01:57.953766000 +0300
@@ -171,6 +171,9 @@
#define NOP 0x60000000
#define SUB_11_11_12 0x7d6c5850
+/* VLE some instructions */
+#define E_B 0x78000000
+
/* Offset of tp and dtp pointers from start of TLS block. */
#define TP_OFFSET 0x7000
#define DTP_OFFSET 0x8000
@@ -1444,6 +1447,21 @@
0x1fffffe, /* dst_mask */
TRUE), /* pcrel_offset */
+ /* A relative 24 bit branch. */
+ HOWTO (R_PPC_VLE_PLTREL24, /* type */
+ 1, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 24, /* bitsize */
+ TRUE, /* pc_relative */
+ 1, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ ppc_elf_unhandled_reloc, /* special_function */
+ "R_PPC_VLE_PLTREL24", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0x1fffffe, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
/* The 16 LSBS in split16a format. */
HOWTO (R_PPC_VLE_LO16A, /* type */
0, /* rightshift */
@@ -1656,6 +1674,21 @@
0x3e007ff, /* dst_mask */
FALSE), /* pcrel_offset */
+ /* e_li split20 format. */
+ HOWTO (R_PPC_VLE_ADDR20, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 20, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_PPC_VLE_ADDR20", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0x1f07ff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
HOWTO (R_PPC_IRELATIVE, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -2463,6 +2496,14 @@
return 0;
}
+static bfd_boolean
+ppc_elf_section_flags (flagword *flags, const Elf_Internal_Shdr * hdr)
+{
+ if (hdr->sh_flags & SHF_PPC_VLE)
+ *flags |= SEC_PPC_VLE;
+ return TRUE;
+}
+
/* Return address for Ith PLT stub in section PLT, for relocation REL
or (bfd_vma) -1 if it should not be included. */
@@ -2511,6 +2552,8 @@
{
if ((asect->flags & SEC_SORT_ENTRIES) != 0)
shdr->sh_type = SHT_ORDERED;
+ if ((asect->flags & SEC_PPC_VLE) != 0)
+ shdr->sh_flags |= SHF_PPC_VLE;
return TRUE;
}
@@ -4247,6 +4290,7 @@
case R_PPC_VLE_HI16D:
case R_PPC_VLE_HA16A:
case R_PPC_VLE_HA16D:
+ case R_PPC_VLE_ADDR20:
break;
case R_PPC_EMB_SDA2REL:
@@ -4294,6 +4338,7 @@
break;
case R_PPC_PLTREL24:
+ case R_PPC_VLE_PLTREL24:
if (h == NULL)
break;
/* Fall through */
@@ -4365,6 +4410,7 @@
case R_PPC_NONE:
case R_PPC_max:
case R_PPC_RELAX:
+ case R_PPC_VLE_RELAX:
case R_PPC_RELAX_PLT:
case R_PPC_RELAX_PLTREL24:
case R_PPC_16DX_HA:
@@ -4965,6 +5011,23 @@
insn |= value & 0x7ff;
bfd_put_32 (input_bfd, insn, loc);
}
+
+static void
+ppc_elf_vle_split20 (bfd *output_bfd, bfd_byte *loc, bfd_vma value)
+{
+ unsigned int insn;
+
+ insn = bfd_get_32 (output_bfd, loc);
+ /* We have an li20 field, bits 17..20, 11..15, 21..31. */
+ /* Top 4 bits of value to 17..20. */
+ insn |= (value & 0xf0000) >> 5;
+ /* Next 5 bits of the value to 11..15. */
+ insn |= (value & 0xf800) << 5;
+ /* And the final 11 bits of the value to bits 21 to 31. */
+ insn |= value & 0x7ff;
+ bfd_put_32 (output_bfd, insn, loc);
+}
+
\f
/* Choose which PLT scheme to use, and set .plt flags appropriately.
Returns -1 on error, 0 for old PLT, 1 for new PLT. */
@@ -6907,6 +6970,13 @@
0x4e800420, /* bctr */
};
+typedef enum ppc_target_stub_entry_type
+ {
+ stub_entry_type_ppc = 0,
+ stub_entry_type_vle
+ }
+ppc_target_stub_entry_type;
+
static const int stub_entry[] =
{
0x3d800000, /* lis 12,xxx@ha */
@@ -6915,6 +6985,15 @@
0x4e800420, /* bctr */
};
+/* Keep the same size as stub_entry */
+static const int stub_entry_vle[] =
+ {
+ 0x7180e000, /* e_lis 12,xxx@ha */
+ 0x1d8c0000, /* e_add16i 12,12,xxx@l */
+ 0x7d8903a6, /* mtctr 12 */
+ 0x00064400, /* se_bctr, se_nop (size padding) */
+ };
+
struct ppc_elf_relax_info
{
unsigned int workaround_size;
@@ -6955,6 +7034,7 @@
bfd_size_type trampbase, trampoff, newsize, picfixup_size;
asection *got2;
bfd_boolean maybe_pasted;
+ ppc_target_stub_entry_type target_stub_type = 0;
*again = FALSE;
@@ -7035,21 +7115,43 @@
struct elf_link_hash_entry *h;
struct plt_entry **plist;
unsigned char sym_type;
+ reloc_howto_type *current_howto;
+ current_howto = NULL;
switch (r_type)
{
case R_PPC_REL24:
case R_PPC_LOCAL24PC:
case R_PPC_PLTREL24:
+ target_stub_type = stub_entry_type_ppc;
max_branch_offset = 1 << 25;
break;
case R_PPC_REL14:
case R_PPC_REL14_BRTAKEN:
case R_PPC_REL14_BRNTAKEN:
+ target_stub_type = stub_entry_type_ppc;
max_branch_offset = 1 << 15;
break;
+ case R_PPC_VLE_REL24:
+ target_stub_type = stub_entry_type_vle;
+ max_branch_offset = 1 << 25;
+ current_howto = ppc_elf_howto_table[r_type];
+ break;
+
+ case R_PPC_VLE_REL15:
+ target_stub_type = stub_entry_type_vle;
+ max_branch_offset = 1 << 16;
+ current_howto = ppc_elf_howto_table[r_type];
+ break;
+
+ case R_PPC_VLE_REL8:
+ target_stub_type = stub_entry_type_vle;
+ max_branch_offset = 1 << 9;
+ current_howto = ppc_elf_howto_table[r_type];
+ break;
+
case R_PPC_ADDR16_HA:
if (htab->params->pic_fixup > 0)
break;
@@ -7297,9 +7399,25 @@
symaddr = tsec->output_section->vma + tsec->output_offset + toff;
reladdr = isec->output_section->vma + isec->output_offset + roff;
- if (symaddr - reladdr + max_branch_offset
- < 2 * max_branch_offset)
- continue;
+
+ /* I don't trust the relocation check using ' ... < (2 * max_branch_offset)'
+ * Check for overflow using the bfd API first.
+ */
+ if (current_howto) /* current_howto is not necessarily defined for
+ all reloc types above, but use it if it is defined */
+ {
+ if (bfd_check_overflow (current_howto->complain_on_overflow,
+ current_howto->bitsize,
+ current_howto->rightshift,
+ bfd_arch_bits_per_address(abfd),
+ (symaddr-reladdr)) == bfd_reloc_ok )
+ continue;
+ }
+ else
+ {
+ if (((symaddr - reladdr) + max_branch_offset) < (2 * max_branch_offset))
+ continue;
+ }
}
/* Look for an existing fixup to this address. */
@@ -7328,7 +7446,7 @@
size = 4 * ARRAY_SIZE (stub_entry);
insn_offset = 0;
}
- stub_rtype = R_PPC_RELAX;
+ stub_rtype = (target_stub_type == stub_entry_type_vle) ? R_PPC_VLE_RELAX : R_PPC_RELAX;
if (tsec == htab->elf.splt
|| tsec == htab->glink)
{
@@ -7385,10 +7503,21 @@
case R_PPC_REL24:
case R_PPC_LOCAL24PC:
case R_PPC_PLTREL24:
- t0 = bfd_get_32 (abfd, hit_addr);
- t0 &= ~0x3fffffc;
- t0 |= val & 0x3fffffc;
- bfd_put_32 (abfd, t0, hit_addr);
+ if (r_type == R_PPC_PLTREL24
+ && (elf_section_flags (isec) & SHF_PPC_VLE) != 0)
+ {
+ t0 = bfd_get_32 (abfd, hit_addr);
+ t0 &= ~0x01fffffe;
+ t0 |= val & 0x01fffffe;
+ bfd_put_32 (abfd, t0, hit_addr);
+ }
+ else
+ {
+ t0 = bfd_get_32 (abfd, hit_addr);
+ t0 &= ~0x3fffffc;
+ t0 |= val & 0x3fffffc;
+ bfd_put_32 (abfd, t0, hit_addr);
+ }
break;
case R_PPC_REL14:
@@ -7399,6 +7528,27 @@
t0 |= val & 0xfffc;
bfd_put_32 (abfd, t0, hit_addr);
break;
+
+ case R_PPC_VLE_REL24:
+ t0 = bfd_get_32 (abfd, hit_addr);
+ t0 &= ~0x01fffffe;
+ t0 |= val & 0x01fffffe;
+ bfd_put_32 (abfd, t0, hit_addr);
+ break;
+
+ case R_PPC_VLE_REL15:
+ t0 = bfd_get_32 (abfd, hit_addr);
+ t0 &= ~0xfffe;
+ t0 |= val & 0xfffe;
+ bfd_put_32 (abfd, t0, hit_addr);
+ break;
+
+ case R_PPC_VLE_REL8:
+ t0 = bfd_get_32 (abfd, hit_addr);
+ t0 &= ~0xff;
+ t0 |= val & 0xff;
+ bfd_put_32 (abfd, t0, hit_addr);
+ break;
}
}
@@ -9043,6 +9193,7 @@
/* Fall through. */
case R_PPC_RELAX:
+ case R_PPC_VLE_RELAX:
{
const int *stub;
size_t size;
@@ -9063,8 +9214,8 @@
}
else
{
- stub = stub_entry;
- size = ARRAY_SIZE (stub_entry);
+ stub = (r_type == R_PPC_VLE_RELAX) ? stub_entry_vle : stub_entry;
+ size = ARRAY_SIZE (stub_entry); /* stub_entry and stub_entry_vle must be same size */
}
relocation += addend;
@@ -9072,10 +9223,23 @@
relocation = 0;
/* First insn is HA, second is LO. */
- insn = *stub++;
- insn |= ((relocation + 0x8000) >> 16) & 0xffff;
- bfd_put_32 (input_bfd, insn, contents + insn_offset);
- insn_offset += 4;
+ if (r_type == R_PPC_VLE_RELAX)
+ {
+ /* Write e_lis insn is @ha type relocation */
+ unsigned ha_val;
+ insn = *stub++;
+ ha_val = ((relocation + 0x8000) >> 16) & 0xffff;
+ insn |= (((ha_val & 0xf800) << 5) | (ha_val&0x7ff));
+ bfd_put_32 (input_bfd, insn, contents + insn_offset);
+ insn_offset += 4;
+ }
+ else
+ {
+ insn = *stub++;
+ insn |= ((relocation + 0x8000) >> 16) & 0xffff;
+ bfd_put_32 (input_bfd, insn, contents + insn_offset);
+ insn_offset += 4;
+ }
insn = *stub++;
insn |= relocation & 0xffff;
@@ -9482,6 +9646,10 @@
}
goto copy_reloc;
+ case R_PPC_VLE_ADDR20:
+ ppc_elf_vle_split20 (output_bfd, contents + rel->r_offset, relocation);
+ continue;
+
/* Relocate against the beginning of the section. */
case R_PPC_SECTOFF:
case R_PPC_SECTOFF_LO:
@@ -9759,8 +9927,15 @@
&& (strcmp (input_section->output_section->name, ".init") == 0
|| strcmp (input_section->output_section->name, ".fini") == 0))
{
+ unsigned int insn;
+
+ if ((elf_section_flags (input_section) & SHF_PPC_VLE) == 0)
+ insn = B;
+ else
+ insn = E_B;
+
/* Branch around the trampolines. */
- unsigned int insn = B + input_section->size - input_section->rawsize;
+ insn += input_section->size - input_section->rawsize;
bfd_put_32 (input_bfd, insn, contents + input_section->rawsize);
}
@@ -10949,6 +11124,7 @@
#define elf_backend_action_discarded ppc_elf_action_discarded
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_lookup_section_flags_hook ppc_elf_lookup_section_flags
+#define elf_backend_section_flags ppc_elf_section_flags
#include "elf32-target.h"
diff -ruN binutils-2.28/binutils/objdump.c binutils-2.28-vle/binutils/objdump.c
--- binutils-2.28/binutils/objdump.c 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-vle/binutils/objdump.c 2017-06-23 17:25:21.641299056 +0300
@@ -481,6 +481,10 @@
PF (SEC_NEVER_LOAD, "NEVER_LOAD");
PF (SEC_EXCLUDE, "EXCLUDE");
PF (SEC_SORT_ENTRIES, "SORT_ENTRIES");
+ if (bfd_get_arch(abfd) == bfd_arch_powerpc || bfd_get_arch (abfd) == bfd_mach_ppc_vle)
+ {
+ PF (SEC_TIC54X_BLOCK, "VLE"); /* hack, would have to include ppc.h */
+ }
if (bfd_get_arch (abfd) == bfd_arch_tic54x)
{
PF (SEC_TIC54X_BLOCK, "BLOCK");
diff -ruN binutils-2.28/binutils/readelf.c binutils-2.28-vle/binutils/readelf.c
--- binutils-2.28/binutils/readelf.c 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-vle/binutils/readelf.c 2017-06-23 21:51:24.753324000 +0300
@@ -5491,7 +5491,9 @@
/* ARM specific. */
/* 21 */ { STRING_COMMA_LEN ("ENTRYSECT") },
/* 22 */ { STRING_COMMA_LEN ("ARM_PURECODE") },
- /* 23 */ { STRING_COMMA_LEN ("COMDEF") }
+ /* 23 */ { STRING_COMMA_LEN ("COMDEF") },
+ /* VLE specific. */
+ /* 24 */ { STRING_COMMA_LEN ("VLE") }
};
if (do_section_details)
@@ -5524,6 +5526,7 @@
case SHF_TLS: sindex = 9; break;
case SHF_EXCLUDE: sindex = 18; break;
case SHF_COMPRESSED: sindex = 20; break;
+ case SHF_PPC_VLE: sindex = 24; break;
default:
sindex = -1;
@@ -5617,6 +5620,7 @@
case SHF_TLS: *p = 'T'; break;
case SHF_EXCLUDE: *p = 'E'; break;
case SHF_COMPRESSED: *p = 'C'; break;
+ case SHF_PPC_VLE: *p = 'V'; break;
default:
if ((elf_header.e_machine == EM_X86_64
@@ -6333,6 +6337,8 @@
printf (_("l (large), "));
else if (elf_header.e_machine == EM_ARM)
printf (_("y (purecode), "));
+ else if (elf_header.e_machine == EM_PPC)
+ printf (_("V (VLE), "));
printf ("p (processor specific)\n");
}
diff -ruN binutils-2.28/gas/config/obj-elf.c binutils-2.28-vle/gas/config/obj-elf.c
--- binutils-2.28/gas/config/obj-elf.c 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-vle/gas/config/obj-elf.c 2017-06-23 17:26:08.784859055 +0300
@@ -677,6 +677,11 @@
/* RX init/fini arrays can and should have the "awx" attributes set. */
;
#endif
+#ifdef TC_PPC
+ /* A section on powerpc-vle may have SHF_PPC_VLE. */
+ else if ((attr & ~ssect->attr) == SHF_PPC_VLE)
+ override = TRUE;
+#endif
else
{
if (group_name == NULL)
diff -ruN binutils-2.28/gas/config/tc-ppc.c binutils-2.28-vle/gas/config/tc-ppc.c
--- binutils-2.28/gas/config/tc-ppc.c 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-vle/gas/config/tc-ppc.c 2017-06-23 17:48:51.463401055 +0300
@@ -1153,6 +1153,16 @@
}
}
+ else if (strcmp (arg, "no-vle") == 0)
+ {
+ sticky &= ~PPC_OPCODE_VLE;
+
+ new_cpu = ppc_parse_cpu (ppc_cpu, &sticky, "booke");
+ new_cpu &= ~PPC_OPCODE_VLE;
+
+ ppc_cpu = new_cpu;
+ }
+
else if (strcmp (arg, "regnames") == 0)
reg_names_p = TRUE;
@@ -3562,13 +3572,26 @@
}
int
-ppc_section_flags (flagword flags, bfd_vma attr ATTRIBUTE_UNUSED, int type)
+ppc_section_flags (flagword flags, bfd_vma attr, int type)
{
if (type == SHT_ORDERED)
flags |= SEC_ALLOC | SEC_LOAD | SEC_SORT_ENTRIES;
+ if (attr == SHF_PPC_VLE)
+ flags |= SEC_PPC_VLE;
+
return flags;
}
+
+bfd_vma
+ppc_elf_section_letter (int letter, const char **ptrmsg)
+{
+ if (letter == 'v')
+ return SHF_PPC_VLE;
+
+ *ptrmsg = _("bad .section directive: want a,e,v,w,x,M,S,G,T in string");
+ return -1;
+}
#endif /* OBJ_ELF */
\f
diff -ruN binutils-2.28/gas/config/tc-ppc.h binutils-2.28-vle/gas/config/tc-ppc.h
--- binutils-2.28/gas/config/tc-ppc.h 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-vle/gas/config/tc-ppc.h 2017-06-23 17:28:07.396135056 +0300
@@ -226,6 +226,9 @@
#define tc_comment_chars ppc_comment_chars
extern const char *ppc_comment_chars;
+#define md_elf_section_letter ppc_elf_section_letter
+extern bfd_vma ppc_elf_section_letter (int, const char **);
+
/* Keep relocations relative to the GOT, or non-PC relative. */
#define tc_fix_adjustable(FIX) ppc_fix_adjustable (FIX)
extern int ppc_fix_adjustable (struct fix *);
diff -ruN binutils-2.28/gas/doc/as.texinfo binutils-2.28-vle/gas/doc/as.texinfo
--- binutils-2.28/gas/doc/as.texinfo 2017-03-02 11:23:53.000000000 +0300
+++ binutils-2.28-vle/gas/doc/as.texinfo 2017-06-23 17:29:31.519652342 +0300
@@ -6495,6 +6495,8 @@
section is allocatable
@item e
section is excluded from executable and shared library.
+@item v
+section contains PowerPC VLE code (sets the SHF_PPC_VLE flag bit)
@item w
section is writable
@item x
diff -ruN binutils-2.28/include/elf/ppc.h binutils-2.28-vle/include/elf/ppc.h
--- binutils-2.28/include/elf/ppc.h 2017-03-02 11:23:54.000000000 +0300
+++ binutils-2.28-vle/include/elf/ppc.h 2017-06-23 17:34:20.838930833 +0300
@@ -79,8 +79,10 @@
RELOC_NUMBER (R_PPC_RELAX, 48)
RELOC_NUMBER (R_PPC_RELAX_PLT, 49)
RELOC_NUMBER (R_PPC_RELAX_PLTREL24, 50)
+ RELOC_NUMBER (R_PPC_VLE_RELAX, 51)
/* Reloc only used internally by gas. As above, value is unimportant. */
- RELOC_NUMBER (R_PPC_16DX_HA, 51)
+ RELOC_NUMBER (R_PPC_16DX_HA, 52)
+ RELOC_NUMBER (R_PPC_VLE_PLTREL24, 53)
#endif
/* Relocs added to support TLS. */
@@ -152,6 +154,7 @@
RELOC_NUMBER (R_PPC_VLE_SDAREL_HI16D, 230)
RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16A, 231)
RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16D, 232)
+ RELOC_NUMBER (R_PPC_VLE_ADDR20, 233)
/* Power9 split rel16 for addpcis. */
RELOC_NUMBER (R_PPC_REL16DX_HA, 246)
@@ -198,6 +201,9 @@
/* Processor specific section headers, sh_flags field. */
#define SHF_PPC_VLE 0x10000000 /* PowerPC VLE text section. */
+/* BFD section headers flag. */
+#define SEC_PPC_VLE SEC_TIC54X_BLOCK
+
/* Processor specific section headers, sh_type field. */
#define SHT_ORDERED SHT_HIPROC /* Link editor is to sort the \
diff -ruN binutils-2.28/opcodes/ppc-dis.c binutils-2.28-vle/opcodes/ppc-dis.c
--- binutils-2.28/opcodes/ppc-dis.c 2017-03-02 11:23:54.000000000 +0300
+++ binutils-2.28-vle/opcodes/ppc-dis.c 2017-06-23 17:16:54.219715056 +0300
@@ -108,8 +108,8 @@
{ "e200z4", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
| PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
- | PPC_OPCODE_E500 | PPC_OPCODE_E200Z4),
- PPC_OPCODE_VLE },
+ | PPC_OPCODE_E500 | PPC_OPCODE_E200Z4 | PPC_OPCODE_VLE),
+ 0 },
{ "e300", PPC_OPCODE_PPC | PPC_OPCODE_E300,
0 },
{ "e500", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_SPE
@@ -235,12 +235,13 @@
dialect = POWERPC_DIALECT (info);
/* Disassemble according to the section headers flags for VLE-mode. */
- if (dialect & PPC_OPCODE_VLE
- && info->section != NULL && info->section->owner != NULL
+ if (dialect & PPC_OPCODE_VLE)
+ return dialect;
+ else if (info->section != NULL && info->section->owner != NULL
&& bfd_get_flavour (info->section->owner) == bfd_target_elf_flavour
&& elf_object_id (info->section->owner) == PPC32_ELF_DATA
&& (elf_section_flags (info->section) & SHF_PPC_VLE) != 0)
- return dialect;
+ return PPC_OPCODE_VLE;
else
return dialect & ~ PPC_OPCODE_VLE;
}
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2016-07-26 23:26 ` Alan Modra
@ 2016-08-01 16:43 ` Andrew Jenner
0 siblings, 0 replies; 20+ messages in thread
From: Andrew Jenner @ 2016-08-01 16:43 UTC (permalink / raw)
To: Alan Modra; +Cc: binutils, Kwok Cheung Yeung
On 27/07/2016 00:26, Alan Modra wrote:
> You missed an include/ChangeLog entry, and that last line of
> opcodes/ChangeLog is a little terse. Please expand it a little.
> I'd say minimal requirement is:
> (powerpc_opcodes): Add E200Z4 insns.
> (vle_opcodes): Add context save/restore insns.
>
> OK with that fixed.
Committed and pushed with those changes. Thanks!
Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] PowerPC VLE changes
2016-07-26 16:41 Andrew Jenner
@ 2016-07-26 23:26 ` Alan Modra
2016-08-01 16:43 ` Andrew Jenner
0 siblings, 1 reply; 20+ messages in thread
From: Alan Modra @ 2016-07-26 23:26 UTC (permalink / raw)
To: Andrew Jenner; +Cc: binutils, Kwok Cheung Yeung
On Tue, Jul 26, 2016 at 05:42:01PM +0100, Andrew Jenner wrote:
> bfd/ChangeLog:
>
> * elf32-ppc.c (is_branch_reloc): Recognise VLE branch relocations.
> (ppc_elf_howto_raw): Fix dst_mask of R_PPC_VLE_REL15.
> (ppc_elf_vle_split16): Clear field before inserting.
>
> opcodes/ChangeLog:
>
> * ppc-opc.c (vle_opcodes): Alias 'e_cmpwi' to 'e_cmpi' and
> 'e_cmplwi' to 'e_cmpli' instead.
> (OPVUPRT, OPVUPRT_MASK): Define.
> (powerpc_opcodes, vle_opcodes): Add entries.
You missed an include/ChangeLog entry, and that last line of
opcodes/ChangeLog is a little terse. Please expand it a little.
I'd say minimal requirement is:
(powerpc_opcodes): Add E200Z4 insns.
(vle_opcodes): Add context save/restore insns.
OK with that fixed.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH] PowerPC VLE changes
@ 2016-07-26 16:41 Andrew Jenner
2016-07-26 23:26 ` Alan Modra
0 siblings, 1 reply; 20+ messages in thread
From: Andrew Jenner @ 2016-07-26 16:41 UTC (permalink / raw)
To: binutils, Kwok Cheung Yeung
[-- Attachment #1: Type: text/plain, Size: 880 bytes --]
I'm in the process of preparing patches to add PowerPC VLE support to
GCC. This patch is a prerequisite for that, fixing some BFD issues and
adding some instructions:
* Volatile Context Save/Restore APU instructions as documented in
http://www.nxp.com/files/32bit/doc/ref_manual/e200z3RM.pdf .
* E200z4 decorated load and store instructions as documented in
http://www.nxp.com/files/32bit/doc/ref_manual/MPC5748GRM.pdf .
Okay to commit?
Thanks,
Andrew
---
bfd/ChangeLog:
* elf32-ppc.c (is_branch_reloc): Recognise VLE branch relocations.
(ppc_elf_howto_raw): Fix dst_mask of R_PPC_VLE_REL15.
(ppc_elf_vle_split16): Clear field before inserting.
opcodes/ChangeLog:
* ppc-opc.c (vle_opcodes): Alias 'e_cmpwi' to 'e_cmpi' and
'e_cmplwi' to 'e_cmpli' instead.
(OPVUPRT, OPVUPRT_MASK): Define.
(powerpc_opcodes, vle_opcodes): Add entries.
[-- Attachment #2: binutils_vle.patch --]
[-- Type: text/x-patch, Size: 8003 bytes --]
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 81b3d84..8d5131a 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -1425,7 +1425,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = {
"R_PPC_VLE_REL15", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
- 0xfe, /* dst_mask */
+ 0xfffe, /* dst_mask */
TRUE), /* pcrel_offset */
/* A relative 24 bit branch. */
@@ -3948,7 +3948,8 @@ is_branch_reloc (enum elf_ppc_reloc_type r_type)
|| r_type == R_PPC_ADDR24
|| r_type == R_PPC_ADDR14
|| r_type == R_PPC_ADDR14_BRTAKEN
- || r_type == R_PPC_ADDR14_BRNTAKEN);
+ || r_type == R_PPC_ADDR14_BRNTAKEN
+ || r_type == R_PPC_VLE_REL24);
}
static void
@@ -4899,6 +4900,7 @@ ppc_elf_vle_split16 (bfd *output_bfd, bfd_byte *loc,
insn = bfd_get_32 (output_bfd, loc);
top5 = value & 0xf800;
top5 = top5 << (split16_format == split16a_type ? 9 : 5);
+ insn &= (split16_format == split16a_type ? ~0x1f007ff : ~0x1f07ff);
insn |= top5;
insn |= value & 0x7ff;
bfd_put_32 (output_bfd, insn, loc);
diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h
index 628a7a1..d9f973d 100644
--- a/include/opcode/ppc.h
+++ b/include/opcode/ppc.h
@@ -214,6 +214,9 @@ extern const int vle_num_opcodes;
/* Opcode is supported by Vector-Scalar (VSX) Unit from ISA 2.08. */
#define PPC_OPCODE_VSX3 0x40000000000ull
+ /* Opcode is supported by e200z4. */
+#define PPC_OPCODE_E200Z4 0x80000000000ull
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
index 77a2a60..da1301e 100644
--- a/opcodes/ppc-dis.c
+++ b/opcodes/ppc-dis.c
@@ -105,6 +105,11 @@ struct ppc_mopt ppc_opts[] = {
0 },
{ "com", PPC_OPCODE_COMMON,
0 },
+ { "e200z4", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
+ | PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
+ | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
+ | PPC_OPCODE_E500 | PPC_OPCODE_E200Z4),
+ PPC_OPCODE_VLE },
{ "e300", PPC_OPCODE_PPC | PPC_OPCODE_E300,
0 },
{ "e500", (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_SPE
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 8106ab7..d4fc7c0 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -2374,6 +2374,12 @@ extract_vleil (unsigned long insn,
#define OPVUP(x,vup) (OP (x) | ((((unsigned long)(vup)) & 0xff) << 8))
#define OPVUP_MASK OPVUP (0x3f, 0xff)
+/* The main opcode combined with an update code and the RT fields specified in
+ D form instruction. Used for VLE volatile context save/restore
+ instructions. */
+#define OPVUPRT(x,vup,rt) (OPVUP (x, vup) | ((((unsigned long)(rt)) & 0x1f) << 21))
+#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
+
/* An A form instruction. */
#define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
#define A_MASK A (0x3f, 0x1f, 1)
@@ -3055,6 +3061,7 @@ extract_vleil (unsigned long insn,
#define E6500 PPC_OPCODE_E6500
#define PPCVLE PPC_OPCODE_VLE
#define PPCHTM PPC_OPCODE_HTM
+#define E200Z4 PPC_OPCODE_E200Z4
/* The list of embedded processors that use the embedded operand ordering
for the 3 operand dcbt and dcbtst instructions. */
#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
@@ -5815,6 +5822,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
+{"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
{"lbdx", X(31,515), X_MASK, E500MC, 0, {RT, RA, RB}},
{"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
@@ -5865,6 +5873,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"maskir", XRC(31,541,0), X_MASK, M601, 0, {RA, RS, RB}},
{"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}},
+{"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
{"lhdx", X(31,547), X_MASK, E500MC, 0, {RT, RA, RB}},
{"lvtrx", X(31,549), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
@@ -5888,6 +5897,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
+{"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
{"lwdx", X(31,579), X_MASK, E500MC, 0, {RT, RA, RB}},
{"lvtlx", X(31,581), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
@@ -5938,6 +5948,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
+{"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
{"stbdx", X(31,643), X_MASK, E500MC, 0, {RS, RA, RB}},
{"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
@@ -5975,6 +5986,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"sre", XRC(31,665,0), X_MASK, M601, 0, {RA, RS, RB}},
{"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
+{"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
{"sthdx", X(31,675), X_MASK, E500MC, 0, {RS, RA, RB}},
{"stvfrx", X(31,677), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
@@ -5992,6 +6004,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"sriq", XRC(31,696,0), X_MASK, M601, 0, {RA, RS, SH}},
{"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}},
+{"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}},
{"stwdx", X(31,707), X_MASK, E500MC, 0, {RS, RA, RB}},
{"stvflx", X(31,709), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
@@ -7070,7 +7083,9 @@ const struct powerpc_opcode vle_opcodes[] = {
{"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
{"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
+{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
+{"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
{"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
{"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
{"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
@@ -7097,6 +7112,16 @@ const struct powerpc_opcode vle_opcodes[] = {
{"e_sthu", OPVUP(6,5), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
{"e_stwu", OPVUP(6,6), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
{"e_stmw", OPVUP(6,9), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
+{"e_ldmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_stmvgprw", OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_ldmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_stmvsprw", OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_ldmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_stmvsrrw", OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
+{"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
{"e_add16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, SI}},
{"e_la", OP(7), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
{"e_sub16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, NSI}},
@@ -7144,10 +7169,8 @@ const struct powerpc_opcode vle_opcodes[] = {
{"e_cmphl16i", IA16(28,23), IA16_MASK, PPCVLE, 0, {RA, VLEUIMM}},
{"e_cmph16i", IA16(28,22), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
{"e_cmpl16i", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLEUIMM}},
-{"e_cmplwi", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
{"e_mull2i", I16A(28,20), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
{"e_cmp16i", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
-{"e_cmpwi", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
{"e_sub2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
{"e_add2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
{"e_sub2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2017-06-24 13:22 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-24 15:32 [PATCH] PowerPC VLE changes Александр Федотов
2017-03-27 14:32 ` Andrew Jenner
2017-03-28 14:14 ` Александр Федотов
2017-03-28 23:33 ` Alan Modra
2017-03-29 19:36 ` Alexander Fedotov
2017-04-04 1:29 ` Alan Modra
2017-04-04 10:23 ` Alexander Fedotov
2017-04-04 10:33 ` Alexander Fedotov
2017-04-22 8:51 ` Alan Modra
-- strict thread matches above, loose matches on Subject: below --
2017-06-23 20:52 Alexander Fedotov
2017-06-23 20:55 ` Alexander Fedotov
2017-06-23 20:56 ` Alexander Fedotov
2017-06-23 21:34 ` Alexander Fedotov
2017-06-24 13:22 ` Alan Modra
2017-06-24 13:21 ` Alan Modra
2017-06-24 13:18 ` Alan Modra
2017-06-24 13:11 ` Alan Modra
2016-07-26 16:41 Andrew Jenner
2016-07-26 23:26 ` Alan Modra
2016-08-01 16:43 ` Andrew Jenner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).