diff options
author | Peter Bergner <bergner@vnet.ibm.com> | 2013-05-21 01:36:46 +0000 |
---|---|---|
committer | Peter Bergner <bergner@vnet.ibm.com> | 2013-05-21 01:36:46 +0000 |
commit | c0637f3af6866ed35039406e564a6743f373cd67 (patch) | |
tree | 2d44799a266e4da6f1af4eed4ff8a16606158322 /gas | |
parent | a825696a06dada821220d8ef53d681a1f55dccb8 (diff) | |
download | gdb-c0637f3af6866ed35039406e564a6743f373cd67.zip gdb-c0637f3af6866ed35039406e564a6743f373cd67.tar.gz gdb-c0637f3af6866ed35039406e564a6743f373cd67.tar.bz2 |
opcodes/
* ppc-dis.c (powerpc_init_dialect): Set default dialect to power8.
* ppc-opc.c (BHRBE, ST, SIX, PS, SXL, VXPS_MASK, XX1RB_MASK,
XLS_MASK, PPCVSX2): New defines.
(powerpc_opcodes) <bcdadd., bcdsub., bctar, bctar, bctarl, clrbhrb,
fmrgew, fmrgow, lqarx, lxsiwax, lxsiwzx, lxsspx, mfbhrbe,
mffprd, mffprwz, mfvrd, mfvrwz, mfvsrd, mfvsrwz, msgclrp, msgsndp,
mtfprd, mtfprwa, mtfprwz, mtsle, mtvrd, mtvrwa, mtvrwz, mtvsrd,
mtvsrwa, mtvsrwz, pbt., rfebb, stqcx., stxsiwx, stxsspx,
vaddcuq, vaddecuq, vaddeuqm, vaddudm, vadduqm, vbpermq, vcipher,
vcipherlast, vclzb, vclzd, vclzh, vclzw, vcmpequd, vcmpequd.,
vcmpgtsd, vcmpgtsd., vcmpgtud, vcmpgtud., veqv, vgbbd, vmaxsd,
vmaxud, vminsd, vminud, vmrgew, vmrgow, vmulesw, vmuleuw, vmulosw,
vmulouw, vmuluwm, vnand, vncipher, vncipherlast, vorc, vpermxor,
vpksdss, vpksdus, vpkudum, vpkudus, vpmsumb, vpmsumd, vpmsumh,
vpmsumw, vpopcntb, vpopcntd, vpopcnth, vpopcntw, vrld, vsbox,
vshasigmad, vshasigmaw, vsld, vsrad, vsrd, vsubcuq, vsubecuq,
vsubeuqm, vsubudm, vsubuqm, vupkhsw, vupklsw, waitasec, xsaddsp,
xscvdpspn, xscvspdpn, xscvsxdsp, xscvuxdsp, xsdivsp, xsmaddasp,
xsmaddmsp, xsmsubasp, xsmsubmsp, xsmulsp, xsnmaddasp, xsnmaddmsp,
xsnmsubasp, xsnmsubmsp, xsresp, xsrsp, xsrsqrtesp, xssqrtsp,
xssubsp, xxleqv, xxlnand, xxlorc>: New instructions.
<lxvx, stxvx>: New extended mnemonics.
gas/
* config/tc-ppc.c (ppc_setup_opcodes): Use new_seg to fix error
and clean up warning when using PRINT_OPCODE_TABLE.
gas/testsuite/
* gas/ppc/altivec2.d <bcdadd., bcdadd., vaddcuq, vaddecuq, vaddeuqm,
vaddudm, vadduqm, vbpermq, vcipher, vcipherlast, vclzb, vclzd, vclzh,
vclzw, vcmpequd, vcmpequd., vcmpgtsd, vcmpgtsd., vcmpgtud, vcmpgtud.,
veqv, vgbbd, vmaxsd, vmaxud, vminsd, vminud, vmrgew, vmrgow, vmulesw,
vmuleuw, vmulosw, vmulouw, vmuluwm, vnand, vncipher, vncipherlast,
vorc, vpermxor, vpksdss, vpksdus, vpkudum, vpkudus, vpmsumb, vpmsumd,
vpmsumh, vpmsumw, vpopcntb, vpopcntd, vpopcnth, vpopcntw, vrld, vsbox,
vshasigmad, vshasigmaw, vsld, vsrad, vsrd, vsubcuq, vsubecuq, vsubeuqm,
vsubudm, vsubuqm, vupkhsw, vupklsw>: Add new tests.
* gas/ppc/altivec2.s: Likewise.
* gas/ppc/power8.d <bcdadd., bcdsub., bctar, bctarl, clrbhrb, fmrgew,
fmrgow, lqarx, lxsiwax, lxsiwzx, lxsspx, mfbhrbe, mfvsrd, mfvsrwz,
msgclrp, msgsndp, mtsle, mtvsrd, mtvsrwa, mtvsrwz, pbt., rfebb,
stqcx., stxsiwx, stxsspx, vaddcuq, vaddecuq, vaddeuqm, vaddudm,
vadduqm, vbpermq, vcipher, vcipherlast, vclzb, vclzd, vclzh, vclzw,
vcmpequd, vcmpequd., vcmpgtsd, vcmpgtsd., vcmpgtud, vcmpgtud., veqv,
vgbbd, vmaxsd, vmaxud, vminsd, vminud, vmrgow, vmulesw, vmuleuw,
vmulosw, vmulouw, vmuluwm, vnand, vncipher, vncipherlast, vorc,
vpermxor, vpksdss, vpksdus, vpkudum, vpkudus, vpmsumb, vpmsumd,
vpmsumh, vpmsumw, vpopcntb, vpopcntd, vpopcnth, vpopcntw, vrld, vsbox,
vshasigmad, vshasigmaw, vsld, vsrad, vsrd, vsubcuq, vsubecuq, vsubeuqm,
vsubuqm, vupkhsw, vupklsw, waitasec, xsaddsp, xscvdpspn, xscvspdpn,
xscvsxdsp, xscvuxdsp, xsdivsp, xsmaddasp, xsmaddmsp, xsmsubasp,
xsmsubmsp, xsmulsp, xsnmaddasp, xsnmaddmsp, xsnmsubasp, xsnmsubmsp,
xsresp, xsrsp, xsrsqrtesp, xssqrtsp, xssubsp, xxleqv, xxlnand,
xxlorc>: Add new tests.
* gas/ppc/power8.s Likewise.
* gas/ppc/vsx.d <lxvd2x, stxvd2x>: Add new tests.
* gas/ppc/vsx.s Likewise.
* gas/ppc/vsx2.d: New test file.
* gas/ppc/vsx2.s: Likewise.
* gas/ppc/ppc.exp: Run it.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-ppc.c | 16 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 35 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/altivec2.d | 64 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/altivec2.s | 65 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/power8.d | 124 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/power8.s | 123 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/ppc.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/vsx.d | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/vsx.s | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/vsx2.d | 64 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/vsx2.s | 57 |
12 files changed, 555 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index a6440a8..265ea22 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2013-05-20 Peter Bergner <bergner@vnet.ibm.com> + + * config/tc-ppc.c (ppc_setup_opcodes): Use new_seg to fix error + and clean up warning when using PRINT_OPCODE_TABLE. + 2013-05-20 Alan Modra <amodra@gmail.com> * config/tc-ppc.c (md_apply_fix): Hoist code common to insn diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index c9a7732..d4f6b71 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -1526,10 +1526,10 @@ ppc_setup_opcodes (void) int new_opcode = PPC_OP (op[0].opcode); #ifdef PRINT_OPCODE_TABLE - printf ("%-14s\t#%04d\tmajor op: 0x%x\top: 0x%x\tmask: 0x%x\tflags: 0x%llx\n", - op->name, op - powerpc_opcodes, (unsigned int) new_opcode, - (unsigned int) op->opcode, (unsigned int) op->mask, - (unsigned long long) op->flags); + printf ("%-14s\t#%04u\tmajor op: 0x%x\top: 0x%x\tmask: 0x%x\tflags: 0x%llx\n", + op->name, (unsigned int) (op - powerpc_opcodes), + (unsigned int) new_opcode, (unsigned int) op->opcode, + (unsigned int) op->mask, (unsigned long long) op->flags); #endif /* The major opcodes had better be sorted. Code in the @@ -1579,10 +1579,10 @@ ppc_setup_opcodes (void) new_seg = VLE_OP_TO_SEG (new_seg); #ifdef PRINT_OPCODE_TABLE - printf ("%-14s\t#%04d\tmajor op: 0x%x\top: 0x%x\tmask: 0x%x\tflags: 0x%llx\n", - op->name, op - powerpc_opcodes, (unsigned int) new_opcode, - (unsigned int) op->opcode, (unsigned int) op->mask, - (unsigned long long) op->flags); + printf ("%-14s\t#%04u\tmajor op: 0x%x\top: 0x%x\tmask: 0x%x\tflags: 0x%llx\n", + op->name, (unsigned int) (op - powerpc_opcodes), + (unsigned int) new_seg, (unsigned int) op->opcode, + (unsigned int) op->mask, (unsigned long long) op->flags); #endif /* The major opcodes had better be sorted. Code in the disassembler assumes the insns are sorted according to diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index ee5c16e..5c6ef0f 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,38 @@ +2013-05-20 Peter Bergner <bergner@vnet.ibm.com> + + * gas/ppc/altivec2.d <bcdadd., bcdadd., vaddcuq, vaddecuq, vaddeuqm, + vaddudm, vadduqm, vbpermq, vcipher, vcipherlast, vclzb, vclzd, vclzh, + vclzw, vcmpequd, vcmpequd., vcmpgtsd, vcmpgtsd., vcmpgtud, vcmpgtud., + veqv, vgbbd, vmaxsd, vmaxud, vminsd, vminud, vmrgew, vmrgow, vmulesw, + vmuleuw, vmulosw, vmulouw, vmuluwm, vnand, vncipher, vncipherlast, + vorc, vpermxor, vpksdss, vpksdus, vpkudum, vpkudus, vpmsumb, vpmsumd, + vpmsumh, vpmsumw, vpopcntb, vpopcntd, vpopcnth, vpopcntw, vrld, vsbox, + vshasigmad, vshasigmaw, vsld, vsrad, vsrd, vsubcuq, vsubecuq, vsubeuqm, + vsubudm, vsubuqm, vupkhsw, vupklsw>: Add new tests. + * gas/ppc/altivec2.s: Likewise. + * gas/ppc/power8.d <bcdadd., bcdsub., bctar, bctarl, clrbhrb, fmrgew, + fmrgow, lqarx, lxsiwax, lxsiwzx, lxsspx, mfbhrbe, mfvsrd, mfvsrwz, + msgclrp, msgsndp, mtsle, mtvsrd, mtvsrwa, mtvsrwz, pbt., rfebb, + stqcx., stxsiwx, stxsspx, vaddcuq, vaddecuq, vaddeuqm, vaddudm, + vadduqm, vbpermq, vcipher, vcipherlast, vclzb, vclzd, vclzh, vclzw, + vcmpequd, vcmpequd., vcmpgtsd, vcmpgtsd., vcmpgtud, vcmpgtud., veqv, + vgbbd, vmaxsd, vmaxud, vminsd, vminud, vmrgow, vmulesw, vmuleuw, + vmulosw, vmulouw, vmuluwm, vnand, vncipher, vncipherlast, vorc, + vpermxor, vpksdss, vpksdus, vpkudum, vpkudus, vpmsumb, vpmsumd, + vpmsumh, vpmsumw, vpopcntb, vpopcntd, vpopcnth, vpopcntw, vrld, vsbox, + vshasigmad, vshasigmaw, vsld, vsrad, vsrd, vsubcuq, vsubecuq, vsubeuqm, + vsubuqm, vupkhsw, vupklsw, waitasec, xsaddsp, xscvdpspn, xscvspdpn, + xscvsxdsp, xscvuxdsp, xsdivsp, xsmaddasp, xsmaddmsp, xsmsubasp, + xsmsubmsp, xsmulsp, xsnmaddasp, xsnmaddmsp, xsnmsubasp, xsnmsubmsp, + xsresp, xsrsp, xsrsqrtesp, xssqrtsp, xssubsp, xxleqv, xxlnand, + xxlorc>: Add new tests. + * gas/ppc/power8.s Likewise. + * gas/ppc/vsx.d <lxvd2x, stxvd2x>: Add new tests. + * gas/ppc/vsx.s Likewise. + * gas/ppc/vsx2.d: New test file. + * gas/ppc/vsx2.s: Likewise. + * gas/ppc/ppc.exp: Run it. + 2013-05-16 Tristan Gingold <gingold@adacore.com> * gas/ppc/ppc.exp: Do not run simpshft on aix. diff --git a/gas/testsuite/gas/ppc/altivec2.d b/gas/testsuite/gas/ppc/altivec2.d index 90a4b10..fc10fb5 100644 --- a/gas/testsuite/gas/ppc/altivec2.d +++ b/gas/testsuite/gas/ppc/altivec2.d @@ -58,4 +58,68 @@ Disassembly of section \.text: c0: (10 d1 84 03|03 84 d1 10) vabsdub v6,v17,v16 c4: (12 b2 24 43|43 24 b2 12) vabsduh v21,v18,v4 c8: (13 34 4c 83|83 4c 34 13) vabsduw v25,v20,v9 + cc: (10 d1 a6 ad|ad a6 d1 10) vpermxor v6,v17,v20,v26 + d0: (13 ba 7f 3c|3c 7f ba 13) vaddeuqm v29,v26,v15,v28 + d4: (11 e8 3e 3d|3d 3e e8 11) vaddecuq v15,v8,v7,v24 + d8: (10 46 a8 7e|7e a8 46 10) vsubeuqm v2,v6,v21,v1 + dc: (13 a6 01 3f|3f 01 a6 13) vsubecuq v29,v6,v0,v4 + e0: (11 c9 18 88|88 18 c9 11) vmulouw v14,v9,v3 + e4: (13 10 90 89|89 90 10 13) vmuluwm v24,v16,v18 + e8: (11 51 88 c0|c0 88 51 11) vaddudm v10,v17,v17 + ec: (13 d9 20 c2|c2 20 d9 13) vmaxud v30,v25,v4 + f0: (11 46 e0 c4|c4 e0 46 11) vrld v10,v6,v28 + f4: (13 67 38 c7|c7 38 67 13) vcmpequd v27,v7,v7 + f8: (12 d0 c9 00|00 c9 d0 12) vadduqm v22,v16,v25 + fc: (10 35 e9 40|40 e9 35 10) vaddcuq v1,v21,v29 + 100: (12 8b 99 88|88 99 8b 12) vmulosw v20,v11,v19 + 104: (13 13 09 c2|c2 09 13 13) vmaxsd v24,v19,v1 + 108: (11 bb f2 88|88 f2 bb 11) vmuleuw v13,v27,v30 + 10c: (11 38 8a c2|c2 8a 38 11) vminud v9,v24,v17 + 110: (11 52 e2 c7|c7 e2 52 11) vcmpgtud v10,v18,v28 + 114: (10 1d b3 88|88 b3 1d 10) vmulesw v0,v29,v22 + 118: (11 bc 0b c2|c2 0b bc 11) vminsd v13,v28,v1 + 11c: (11 54 2b c4|c4 2b 54 11) vsrad v10,v20,v5 + 120: (13 75 2b c7|c7 2b 75 13) vcmpgtsd v27,v21,v5 + 124: (10 17 f6 01|01 f6 17 10) bcdadd\. v0,v23,v30,1 + 128: (13 38 d4 08|08 d4 38 13) vpmsumb v25,v24,v26 + 12c: (11 04 26 41|41 26 04 11) bcdsub\. v8,v4,v4,1 + 130: (12 0e d4 48|48 d4 0e 12) vpmsumh v16,v14,v26 + 134: (13 62 d4 4e|4e d4 62 13) vpkudum v27,v2,v26 + 138: (10 d7 8c 88|88 8c d7 10) vpmsumw v6,v23,v17 + 13c: (12 86 cc c8|c8 cc 86 12) vpmsumd v20,v6,v25 + 140: (13 76 84 ce|ce 84 76 13) vpkudus v27,v22,v16 + 144: (12 b4 94 c0|c0 94 b4 12) vsubudm v21,v20,v18 + 148: (12 b4 95 00|00 95 b4 12) vsubuqm v21,v20,v18 + 14c: (13 bd 35 08|08 35 bd 13) vcipher v29,v29,v6 + 150: (10 4d a5 09|09 a5 4d 10) vcipherlast v2,v13,v20 + 154: (12 80 95 0c|0c 95 80 12) vgbbd v20,v18 + 158: (12 68 cd 40|40 cd 68 12) vsubcuq v19,v8,v25 + 15c: (11 3a ed 44|44 ed 3a 11) vorc v9,v26,v29 + 160: (12 94 6d 48|48 6d 94 12) vncipher v20,v20,v13 + 164: (11 e5 dd 49|49 dd e5 11) vncipherlast v15,v5,v27 + 168: (10 73 35 4c|4c 35 73 10) vbpermq v3,v19,v6 + 16c: (13 c4 e5 4e|4e e5 c4 13) vpksdus v30,v4,v28 + 170: (10 04 75 84|84 75 04 10) vnand v0,v4,v14 + 174: (12 28 ed c4|c4 ed 28 12) vsld v17,v8,v29 + 178: (13 b4 05 c8|c8 05 b4 13) vsbox v29,v20 + 17c: (11 67 5d ce|ce 5d 67 11) vpksdss v11,v7,v11 + 180: (10 73 84 c7|c7 84 73 10) vcmpequd\. v3,v19,v16 + 184: (12 40 8e 4e|4e 8e 40 12) vupkhsw v18,v17 + 188: (13 a8 6e 82|82 6e a8 13) vshasigmaw v29,v8,0,13 + 18c: (12 fc d6 84|84 d6 fc 12) veqv v23,v28,v26 + 190: (13 a0 17 8c|8c 17 a0 13) vmrgew v29,v0,v2 + 194: (13 a0 16 8c|8c 16 a0 13) vmrgow v29,v0,v2 + 198: (13 73 06 c2|c2 06 73 13) vshasigmad v27,v19,0,0 + 19c: (12 9c e6 c4|c4 e6 9c 12) vsrd v20,v28,v28 + 1a0: (12 40 ae ce|ce ae 40 12) vupklsw v18,v21 + 1a4: (13 c0 3f 02|02 3f c0 13) vclzb v30,v7 + 1a8: (13 a0 af 03|03 af a0 13) vpopcntb v29,v21 + 1ac: (13 20 af 42|42 af 20 13) vclzh v25,v21 + 1b0: (12 00 f7 43|43 f7 00 12) vpopcnth v16,v30 + 1b4: (13 80 1f 82|82 1f 80 13) vclzw v28,v3 + 1b8: (11 40 4f 83|83 4f 40 11) vpopcntw v10,v9 + 1bc: (12 c0 4f c2|c2 4f c0 12) vclzd v22,v9 + 1c0: (11 e0 f7 c3|c3 f7 e0 11) vpopcntd v15,v30 + 1c4: (10 5f 36 c7|c7 36 5f 10) vcmpgtud\. v2,v31,v6 + 1c8: (12 8f 17 c7|c7 17 8f 12) vcmpgtsd\. v20,v15,v2 #pass diff --git a/gas/testsuite/gas/ppc/altivec2.s b/gas/testsuite/gas/ppc/altivec2.s index 9f11a8b..6233c0e 100644 --- a/gas/testsuite/gas/ppc/altivec2.s +++ b/gas/testsuite/gas/ppc/altivec2.s @@ -1,3 +1,4 @@ + .text start: lvepxl 3,0,28 lvepxl 19,4,18 @@ -50,3 +51,67 @@ start: vabsdub 6,17,16 vabsduh 21,18,4 vabsduw 25,20,9 + vpermxor 6,17,20,26 + vaddeuqm 29,26,15,28 + vaddecuq 15,8,7,24 + vsubeuqm 2,6,21,1 + vsubecuq 29,6,0,4 + vmulouw 14,9,3 + vmuluwm 24,16,18 + vaddudm 10,17,17 + vmaxud 30,25,4 + vrld 10,6,28 + vcmpequd 27,7,7 + vadduqm 22,16,25 + vaddcuq 1,21,29 + vmulosw 20,11,19 + vmaxsd 24,19,1 + vmuleuw 13,27,30 + vminud 9,24,17 + vcmpgtud 10,18,28 + vmulesw 0,29,22 + vminsd 13,28,1 + vsrad 10,20,5 + vcmpgtsd 27,21,5 + bcdadd. 0,23,30,1 + vpmsumb 25,24,26 + bcdsub. 8,4,4,1 + vpmsumh 16,14,26 + vpkudum 27,2,26 + vpmsumw 6,23,17 + vpmsumd 20,6,25 + vpkudus 27,22,16 + vsubudm 21,20,18 + vsubuqm 21,20,18 + vcipher 29,29,6 + vcipherlast 2,13,20 + vgbbd 20,18 + vsubcuq 19,8,25 + vorc 9,26,29 + vncipher 20,20,13 + vncipherlast 15,5,27 + vbpermq 3,19,6 + vpksdus 30,4,28 + vnand 0,4,14 + vsld 17,8,29 + vsbox 29,20 + vpksdss 11,7,11 + vcmpequd. 3,19,16 + vupkhsw 18,17 + vshasigmaw 29,8,0,13 + veqv 23,28,26 + vmrgew 29,0,2 + vmrgow 29,0,2 + vshasigmad 27,19,0,0 + vsrd 20,28,28 + vupklsw 18,21 + vclzb 30,7 + vpopcntb 29,21 + vclzh 25,21 + vpopcnth 16,30 + vclzw 28,3 + vpopcntw 10,9 + vclzd 22,9 + vpopcntd 15,30 + vcmpgtud. 2,31,6 + vcmpgtsd. 20,15,2 diff --git a/gas/testsuite/gas/ppc/power8.d b/gas/testsuite/gas/ppc/power8.d index 1eb7fa9..2d576e6 100644 --- a/gas/testsuite/gas/ppc/power8.d +++ b/gas/testsuite/gas/ppc/power8.d @@ -27,3 +27,127 @@ Disassembly of section \.text: 44: (60 42 00 00|00 00 42 60) ori r2,r2,0 48: (60 00 00 00|00 00 00 60) nop 4c: (60 42 00 00|00 00 42 60) ori r2,r2,0 + 50: (4c 00 01 24|24 01 00 4c) rfebb + 54: (4c 00 01 24|24 01 00 4c) rfebb + 58: (4c 00 09 24|24 09 00 4c) rfebb 1 + 5c: (4d 95 04 60|60 04 95 4d) bctar- 12,4\*cr5\+gt + 60: (4c 87 04 61|61 04 87 4c) bctarl- 4,4\*cr1\+so + 64: (4d ac 04 60|60 04 ac 4d) bctar\+ 12,4\*cr3\+lt + 68: (4c a2 04 61|61 04 a2 4c) bctarl\+ 4,eq + 6c: (4c 88 0c 60|60 0c 88 4c) bctar 4,4\*cr2\+lt,1 + 70: (4c 87 14 61|61 14 87 4c) bctarl 4,4\*cr1\+so,2 + 74: (7c 00 00 3c|3c 00 00 7c) waitasec + 78: (7c 00 41 1c|1c 41 00 7c) msgsndp r8 + 7c: (7c 20 01 26|26 01 20 7c) mtsle 1 + 80: (7c 00 d9 5c|5c d9 00 7c) msgclrp r27 + 84: (7d 4a 61 6d|6d 61 4a 7d) stqcx\. r10,r10,r12 + 88: (7f 80 39 6d|6d 39 80 7f) stqcx\. r28,0,r7 + 8c: (7f 13 5a 28|28 5a 13 7f) lqarx r24,r19,r11 + 90: (7e c0 5a 28|28 5a c0 7e) lqarx r22,0,r11 + 94: (7e 80 32 5c|5c 32 80 7e) mfbhrbe r20,6 + 98: (7f b1 83 29|29 83 b1 7f) pbt\. r29,r17,r16 + 9c: (7d c0 3b 29|29 3b c0 7d) pbt\. r14,0,r7 + a0: (7c 00 03 5c|5c 03 00 7c) clrbhrb + a4: (11 6a 05 ed|ed 05 6a 11) vpermxor v11,v10,v0,v23 + a8: (13 02 39 3c|3c 39 02 13) vaddeuqm v24,v2,v7,v4 + ac: (11 4a 40 bd|bd 40 4a 11) vaddecuq v10,v10,v8,v2 + b0: (10 af 44 fe|fe 44 af 10) vsubeuqm v5,v15,v8,v19 + b4: (11 9f 87 7f|7f 87 9f 11) vsubecuq v12,v31,v16,v29 + b8: (12 9d 68 88|88 68 9d 12) vmulouw v20,v29,v13 + bc: (13 a0 d0 89|89 d0 a0 13) vmuluwm v29,v0,v26 + c0: (11 15 e0 c0|c0 e0 15 11) vaddudm v8,v21,v28 + c4: (10 3a 08 c2|c2 08 3a 10) vmaxud v1,v26,v1 + c8: (12 83 08 c4|c4 08 83 12) vrld v20,v3,v1 + cc: (10 93 58 c7|c7 58 93 10) vcmpequd v4,v19,v11 + d0: (12 ee f1 00|00 f1 ee 12) vadduqm v23,v14,v30 + d4: (11 08 69 40|40 69 08 11) vaddcuq v8,v8,v13 + d8: (13 9b 21 88|88 21 9b 13) vmulosw v28,v27,v4 + dc: (10 64 21 c2|c2 21 64 10) vmaxsd v3,v4,v4 + e0: (10 13 aa 88|88 aa 13 10) vmuleuw v0,v19,v21 + e4: (13 14 9a c2|c2 9a 14 13) vminud v24,v20,v19 + e8: (10 1c 7a c7|c7 7a 1c 10) vcmpgtud v0,v28,v15 + ec: (12 a0 13 88|88 13 a0 12) vmulesw v21,v0,v2 + f0: (11 3a 4b c2|c2 4b 3a 11) vminsd v9,v26,v9 + f4: (13 3d 5b c4|c4 5b 3d 13) vsrad v25,v29,v11 + f8: (11 7c 5b c7|c7 5b 7c 11) vcmpgtsd v11,v28,v11 + fc: (10 a8 d6 01|01 d6 a8 10) bcdadd\. v5,v8,v26,1 + 100: (10 83 64 08|08 64 83 10) vpmsumb v4,v3,v12 + 104: (13 5f ae 41|41 ae 5f 13) bcdsub\. v26,v31,v21,1 + 108: (10 b1 84 48|48 84 b1 10) vpmsumh v5,v17,v16 + 10c: (12 f1 a4 4e|4e a4 f1 12) vpkudum v23,v17,v20 + 110: (13 15 ec 88|88 ec 15 13) vpmsumw v24,v21,v29 + 114: (11 36 6c c8|c8 6c 36 11) vpmsumd v9,v22,v13 + 118: (12 53 94 ce|ce 94 53 12) vpkudus v18,v19,v18 + 11c: (13 d0 b5 00|00 b5 d0 13) vsubuqm v30,v16,v22 + 120: (11 cb 3d 08|08 3d cb 11) vcipher v14,v11,v7 + 124: (11 42 b5 09|09 b5 42 11) vcipherlast v10,v2,v22 + 128: (12 e0 6d 0c|0c 6d e0 12) vgbbd v23,v13 + 12c: (12 19 85 40|40 85 19 12) vsubcuq v16,v25,v16 + 130: (13 e1 2d 44|44 2d e1 13) vorc v31,v1,v5 + 134: (10 91 fd 48|48 fd 91 10) vncipher v4,v17,v31 + 138: (13 02 dd 49|49 dd 02 13) vncipherlast v24,v2,v27 + 13c: (12 f5 bd 4c|4c bd f5 12) vbpermq v23,v21,v23 + 140: (13 72 4d 4e|4e 4d 72 13) vpksdus v27,v18,v9 + 144: (13 7d dd 84|84 dd 7d 13) vnand v27,v29,v27 + 148: (12 73 c5 c4|c4 c5 73 12) vsld v19,v19,v24 + 14c: (10 ad 05 c8|c8 05 ad 10) vsbox v5,v13 + 150: (13 23 3d ce|ce 3d 23 13) vpksdss v25,v3,v7 + 154: (13 88 04 c7|c7 04 88 13) vcmpequd\. v28,v8,v0 + 158: (13 40 d6 4e|4e d6 40 13) vupkhsw v26,v26 + 15c: (10 a7 36 82|82 36 a7 10) vshasigmaw v5,v7,0,6 + 160: (13 95 76 84|84 76 95 13) veqv v28,v21,v14 + 164: (10 28 9e 8c|8c 9e 28 10) vmrgow v1,v8,v19 + 168: (10 0a 56 c2|c2 56 0a 10) vshasigmad v0,v10,0,10 + 16c: (10 bb 76 c4|c4 76 bb 10) vsrd v5,v27,v14 + 170: (11 60 6e ce|ce 6e 60 11) vupklsw v11,v13 + 174: (11 c0 87 02|02 87 c0 11) vclzb v14,v16 + 178: (12 80 df 03|03 df 80 12) vpopcntb v20,v27 + 17c: (13 80 5f 42|42 5f 80 13) vclzh v28,v11 + 180: (13 00 4f 43|43 4f 00 13) vpopcnth v24,v9 + 184: (13 60 ff 82|82 ff 60 13) vclzw v27,v31 + 188: (12 20 9f 83|83 9f 20 12) vpopcntw v17,v19 + 18c: (11 80 ef c2|c2 ef 80 11) vclzd v12,v29 + 190: (12 e0 b7 c3|c3 b7 e0 12) vpopcntd v23,v22 + 194: (13 14 ee c7|c7 ee 14 13) vcmpgtud\. v24,v20,v29 + 198: (11 26 df c7|c7 df 26 11) vcmpgtsd\. v9,v6,v27 + 19c: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26 + 1a0: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25 + 1a4: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26 + 1a8: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3 + 1ac: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62 + 1b0: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12 + 1b4: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14 + 1b8: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8 + 1bc: (7e 0b 01 67|67 01 0b 7e) mtvsrd vs48,r11 + 1c0: (7f f7 01 a7|a7 01 f7 7f) mtvrwa v31,r23 + 1c4: (7e 1a 01 e6|e6 01 1a 7e) mtfprwz f16,r26 + 1c8: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13 + 1cc: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13 + 1d0: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4 + 1d4: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11 + 1d8: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25 + 1dc: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1 + 1e0: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42 + 1e4: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52 + 1e8: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59 + 1ec: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41 + 1f0: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32 + 1f4: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26 + 1f8: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6 + 1fc: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55 + 200: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8 + 204: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33 + 208: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30 + 20c: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31 + 210: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58 + 214: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44 + 218: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29 + 21c: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30 + 220: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54 + 224: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45 + 228: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59 + 22c: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49 + 230: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26 + 234: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2 + 238: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5 +#pass diff --git a/gas/testsuite/gas/ppc/power8.s b/gas/testsuite/gas/ppc/power8.s index 7b4a28e..8df4f6b 100644 --- a/gas/testsuite/gas/ppc/power8.s +++ b/gas/testsuite/gas/ppc/power8.s @@ -19,3 +19,126 @@ power8: tresume. ori 2,2,0 .p2align 4,,15 + rfebb 0 + rfebb + rfebb 1 + bctar- 12,21 + bctarl- 4,7 + bctar+ 12,12 + bctarl+ 4,2 + bctar 4,8,1 + bctarl 4,7,2 + waitasec + msgsndp 8 + mtsle 1 + msgclrp 27 + stqcx. 10,10,12 + stqcx. 28,0,7 + lqarx 24,19,11,0 + lqarx 22,0,11,0 + mfbhrbe 20,6 + pbt. 29,17,16 + pbt. 14,0,7 + clrbhrb + vpermxor 11,10,0,23 + vaddeuqm 24,2,7,4 + vaddecuq 10,10,8,2 + vsubeuqm 5,15,8,19 + vsubecuq 12,31,16,29 + vmulouw 20,29,13 + vmuluwm 29,0,26 + vaddudm 8,21,28 + vmaxud 1,26,1 + vrld 20,3,1 + vcmpequd 4,19,11 + vadduqm 23,14,30 + vaddcuq 8,8,13 + vmulosw 28,27,4 + vmaxsd 3,4,4 + vmuleuw 0,19,21 + vminud 24,20,19 + vcmpgtud 0,28,15 + vmulesw 21,0,2 + vminsd 9,26,9 + vsrad 25,29,11 + vcmpgtsd 11,28,11 + bcdadd. 5,8,26,1 + vpmsumb 4,3,12 + bcdsub. 26,31,21,1 + vpmsumh 5,17,16 + vpkudum 23,17,20 + vpmsumw 24,21,29 + vpmsumd 9,22,13 + vpkudus 18,19,18 + vsubuqm 30,16,22 + vcipher 14,11,7 + vcipherlast 10,2,22 + vgbbd 23,13 + vsubcuq 16,25,16 + vorc 31,1,5 + vncipher 4,17,31 + vncipherlast 24,2,27 + vbpermq 23,21,23 + vpksdus 27,18,9 + vnand 27,29,27 + vsld 19,19,24 + vsbox 5,13 + vpksdss 25,3,7 + vcmpequd. 28,8,0 + vupkhsw 26,26 + vshasigmaw 5,7,0,6 + veqv 28,21,14 + vmrgow 1,8,19 + vshasigmad 0,10,0,10 + vsrd 5,27,14 + vupklsw 11,13 + vclzb 14,16 + vpopcntb 20,27 + vclzh 28,11 + vpopcnth 24,9 + vclzw 27,31 + vpopcntw 17,19 + vclzd 12,29 + vpopcntd 23,22 + vcmpgtud. 24,20,29 + vcmpgtsd. 9,6,27 + lxsiwzx 62,14,26 + lxsiwzx 40,0,25 + lxsiwax 25,0,26 + lxsiwax 3,0,3 + mfvsrd 12,62 + mfvsrwz 20,12 + stxsiwx 14,9,14 + stxsiwx 21,0,8 + mtvsrd 48,11 + mtvsrwa 63,23 + mtvsrwz 16,26 + lxsspx 13,19,13 + lxsspx 18,0,13 + stxsspx 43,2,4 + stxsspx 55,0,11 + xsaddsp 54,48,25 + xsmaddasp 14,50,1 + xssubsp 26,22,42 + xsmaddmsp 27,53,52 + xsrsqrtesp 8,59 + xssqrtsp 12,41 + xsmulsp 57,11,32 + xsmsubasp 38,20,26 + xsdivsp 26,19,6 + xsmsubmsp 35,37,55 + xsresp 59,8 + xsnmaddasp 44,33,33 + xsnmaddmsp 17,62,30 + xsnmsubasp 54,52,31 + xsnmsubmsp 37,5,58 + xxlorc 30,54,44 + xxlnand 49,14,29 + xxleqv 62,22,30 + xscvdpspn 60,54 + xsrsp 22,45 + xscvuxdsp 26,59 + xscvsxdsp 38,49 + xscvspdpn 59,26 + fmrgow 24,14,2 + fmrgew 22,7,5 diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp index 9b43a3c..fec714c 100644 --- a/gas/testsuite/gas/ppc/ppc.exp +++ b/gas/testsuite/gas/ppc/ppc.exp @@ -85,6 +85,7 @@ if { [istarget powerpc*-*-*] } then { run_dump_test "power7" run_dump_test "power8" run_dump_test "vsx" + run_dump_test "vsx2" run_dump_test "htm" run_dump_test "titan" } diff --git a/gas/testsuite/gas/ppc/vsx.d b/gas/testsuite/gas/ppc/vsx.d index 7ce57da..f5a6a14 100644 --- a/gas/testsuite/gas/ppc/vsx.d +++ b/gas/testsuite/gas/ppc/vsx.d @@ -166,3 +166,8 @@ Disassembly of section \.text: 26c: (f1 12 e7 bf|bf e7 12 f1) xxsel vs40,vs50,vs60,vs62 270: (f1 12 e2 17|17 e2 12 f1) xxsldwi vs40,vs50,vs60,2 274: (f1 02 e2 93|93 e2 02 f1) xxspltw vs40,vs60,2 + 278: (7d 00 a6 99|99 a6 00 7d) lxvd2x vs40,0,r20 + 27c: (7d 0a a6 99|99 a6 0a 7d) lxvd2x vs40,r10,r20 + 280: (7d 00 a7 99|99 a7 00 7d) stxvd2x vs40,0,r20 + 284: (7d 0a a7 99|99 a7 0a 7d) stxvd2x vs40,r10,r20 +#pass diff --git a/gas/testsuite/gas/ppc/vsx.s b/gas/testsuite/gas/ppc/vsx.s index 6927ee1..bcc9c2d 100644 --- a/gas/testsuite/gas/ppc/vsx.s +++ b/gas/testsuite/gas/ppc/vsx.s @@ -158,3 +158,7 @@ start: xxsel 40,50,60,62 xxsldwi 40,50,60,2 xxspltw 40,60,2 + lxvx 40,0,20 + lxvx 40,10,20 + stxvx 40,0,20 + stxvx 40,10,20 diff --git a/gas/testsuite/gas/ppc/vsx2.d b/gas/testsuite/gas/ppc/vsx2.d new file mode 100644 index 0000000..b7f22cf --- /dev/null +++ b/gas/testsuite/gas/ppc/vsx2.d @@ -0,0 +1,64 @@ +#as: -mvsx +#objdump: -dr -Mvsx +#name: VSX ISA 2.07 instructions + +.* + +Disassembly of section \.text: + +0+00 <vsx2>: + 0: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26 + 4: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25 + 8: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26 + c: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3 + 10: (7f cc 00 66|66 00 cc 7f) mfvsrd r12,vs30 + 14: (7f cc 00 66|66 00 cc 7f) mfvsrd r12,vs30 + 18: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62 + 1c: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62 + 20: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12 + 24: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12 + 28: (7d 95 00 e7|e7 00 95 7d) mfvrwz r21,v12 + 2c: (7d 95 00 e7|e7 00 95 7d) mfvrwz r21,v12 + 30: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14 + 34: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8 + 38: (7d 7c 01 66|66 01 7c 7d) mtvsrd vs11,r28 + 3c: (7d 7c 01 66|66 01 7c 7d) mtvsrd vs11,r28 + 40: (7d 7d 01 67|67 01 7d 7d) mtvsrd vs43,r29 + 44: (7d 7d 01 67|67 01 7d 7d) mtvsrd vs43,r29 + 48: (7f 16 01 a6|a6 01 16 7f) mtfprwa f24,r22 + 4c: (7f 16 01 a6|a6 01 16 7f) mtfprwa f24,r22 + 50: (7f 37 01 a7|a7 01 37 7f) mtvrwa v25,r23 + 54: (7f 37 01 a7|a7 01 37 7f) mtvrwa v25,r23 + 58: (7f 5b 01 e6|e6 01 5b 7f) mtfprwz f26,r27 + 5c: (7f 5b 01 e6|e6 01 5b 7f) mtfprwz f26,r27 + 60: (7f 7c 01 e7|e7 01 7c 7f) mtvrwz v27,r28 + 64: (7f 7c 01 e7|e7 01 7c 7f) mtvrwz v27,r28 + 68: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13 + 6c: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13 + 70: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4 + 74: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11 + 78: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25 + 7c: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1 + 80: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42 + 84: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52 + 88: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59 + 8c: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41 + 90: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32 + 94: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26 + 98: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6 + 9c: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55 + a0: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8 + a4: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33 + a8: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30 + ac: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31 + b0: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58 + b4: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44 + b8: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29 + bc: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30 + c0: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54 + c4: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45 + c8: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59 + cc: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49 + d0: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26 + d4: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2 + d8: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5 diff --git a/gas/testsuite/gas/ppc/vsx2.s b/gas/testsuite/gas/ppc/vsx2.s new file mode 100644 index 0000000..624614d --- /dev/null +++ b/gas/testsuite/gas/ppc/vsx2.s @@ -0,0 +1,57 @@ + .text +vsx2: + lxsiwzx 62,14,26 + lxsiwzx 40,0,25 + lxsiwax 25,0,26 + lxsiwax 3,0,3 + mfvsrd 12,30 + mffprd 12,30 + mfvsrd 12,62 + mfvrd 12,30 + mfvsrwz 20,12 + mffprwz 20,12 + mfvsrwz 21,44 + mfvrwz 21,12 + stxsiwx 14,9,14 + stxsiwx 21,0,8 + mtvsrd 11,28 + mtfprd 11,28 + mtvsrd 43,29 + mtvrd 11,29 + mtvsrwa 24,22 + mtfprwa 24,22 + mtvsrwa 57,23 + mtvrwa 25,23 + mtvsrwz 26,27 + mtfprwz 26,27 + mtvsrwz 59,28 + mtvrwz 27,28 + lxsspx 13,19,13 + lxsspx 18,0,13 + stxsspx 43,2,4 + stxsspx 55,0,11 + xsaddsp 54,48,25 + xsmaddasp 14,50,1 + xssubsp 26,22,42 + xsmaddmsp 27,53,52 + xsrsqrtesp 8,59 + xssqrtsp 12,41 + xsmulsp 57,11,32 + xsmsubasp 38,20,26 + xsdivsp 26,19,6 + xsmsubmsp 35,37,55 + xsresp 59,8 + xsnmaddasp 44,33,33 + xsnmaddmsp 17,62,30 + xsnmsubasp 54,52,31 + xsnmsubmsp 37,5,58 + xxlorc 30,54,44 + xxlnand 49,14,29 + xxleqv 62,22,30 + xscvdpspn 60,54 + xsrsp 22,45 + xscvuxdsp 26,59 + xscvsxdsp 38,49 + xscvspdpn 59,26 + fmrgow 24,14,2 + fmrgew 22,7,5 |