From 066be9f7bd8ea9121322608fcba256ac5e33093c Mon Sep 17 00:00:00 2001 From: Peter Bergner Date: Thu, 26 Feb 2009 22:07:33 +0000 Subject: gas/ * config/tc-ppc.c (pre_defined_registers): Add "f32" to "f63", "f.32" to "f.63", "vs0" to "vs63" and "vs.0" to "vs.63". (parse_cpu): Extend -mpower7 to accept power7 and isel instructions. gas/testsuite/ * gas/ppc/e500mc.d ("wait", "waitsrv", "waitimpl"): Add tests. * gas/ppc/e500mc.s: Likewise. * gas/ppc/power6.d ("cdtbcd", "cbcdtd", "addg6s"): Add tests. * gas/ppc/power6.s: Likewise. * gas/ppc/power7.d ("lfdpx", "mffgpr", "mftgpr"): Remove invalid tests. ("wait", "waitsrv", "waitimpl", "divwe", "divwe.", "divweo", "divweo.", "divweu", "divweu.", "divweuo", "divweuo.", "bpermd", "popcntw", "popcntd", "ldbrx", "stdbrx", "lfiwzx", "lfiwzx", "fcfids", "fcfids.", "fcfidus", "fcfidus.", "fctiwu", "fctiwu.", "fctiwuz", "fctiwuz.", "fctidu", "fctidu.", "fctiduz", "fctiduz.", "fcfidu", "fcfidu.", "ftdiv", "ftdiv", "ftsqrt", "ftsqrt", "dcbtt", "dcbtstt", "dcffix", "dcffix.", "lbarx", "lbarx", "lbarx", "lharx", "lharx", "lharx", "stbcx.", "sthcx.", "fre", "fre.", "fres", "fres.", "frsqrte", "frsqrte.", "frsqrtes", "frsqrtes.", "isel"): Add tests. * gas/ppc/power7.s: Likewise. * gas/ppc/vsx.d: New test. * gas/ppc/vsx.s: Likewise. * gas/ppc/ppc.exp: Run it. include/opcode/ * ppc.h (PPC_OPCODE_POWER7): New. opcodes/ * ppc-dis.c (powerpc_init_dialect): Extend -Mpower7 to disassemble the power7 and the isel instructions. * ppc-opc.c (insert_xc6, extract_xc6): New static functions. (insert_dm, extract_dm): Likewise. (XB6): Update comment to include XX2 form. (WC, XC6, SHW, DMEX, UIM, XX2, XX3RC, XX4, XX2_MASK, XX2UIM_MASK, XX2BF_MASK, XX3BF_MASK, XX3SHW_MASK, XX4_MASK, XWC_MASK, POWER7): New. (RemoveXX3DM): Delete. (powerpc_opcodes): <"lfdp", "lfdpx", "mcrxr", "mftb", "mffgpr", "mftgpr">: Deprecate for POWER7. <"fres", "fres.", "frsqrtes", "frsqrtes.", "fre", "fre.", "frsqrte", "frsqrte.">: Deprecate the three operand form and enable the two operand form for POWER7 and later. <"wait">: Extend to accept optional parameter. Enable for POWER7. <"waitsrv", "waitimpl">: Add extended opcodes. <"ldbrx", "stdbrx">: Enable for POWER7. <"cdtbcd", "cbcdtd", "addg6s">: Add POWER6 opcodes. <"bpermd", "dcbtstt", "dcbtt", "dcffix.", "dcffix", "divde.", "divde", "divdeo.", "divdeo", "divdeu.", "divdeu", "divdeuo.", "divdeuo", "divwe.", "divwe", "divweo.", "divweo", "divweu.", "divweu", "divweuo.", "divweuo", "fcfids.", "fcfids", "fcfidu.", "fcfidu", "fcfidus.", "fcfidus", "fctidu.", "fctidu", "fctiduz.", "fctiduz", "fctiwu.", "fctiwu", "fctiwuz.", "fctiwuz", "ftdiv", "ftsqrt", "lbarx", "lfiwzx", "lharx", "popcntd", "popcntw", "stbcx.", "sthcx.">: Add POWER7 opcodes. <"lxsdux", "lxsdx", "lxvdsx", "lxvw4ux", "lxvw4x", "stxsdux", "stxsdx", "stxvw4ux", "stxvw4x", "xsabsdp", "xsadddp", "xscmpodp", "xscmpudp", "xscpsgndp", "xscvdpsp", "xscvdpsxds", "xscvdpsxws", "xscvdpuxds", "xscvdpuxws", "xscvspdp", "xscvsxddp", "xscvuxddp", "xsdivdp", "xsmaddadp", "xsmaddmdp", "xsmaxdp", "xsmindp", "xsmsubadp", "xsmsubmdp", "xsmuldp", "xsnabsdp", "xsnegdp", "xsnmaddadp", "xsnmaddmdp", "xsnmsubadp", "xsnmsubmdp", "xsrdpi", "xsrdpic", "xsrdpim", "xsrdpip", "xsrdpiz", "xsredp", "xsrsqrtedp", "xssqrtdp", "xssubdp", "xstdivdp", "xstsqrtdp", "xvabsdp", "xvabssp", "xvadddp", "xvaddsp", "xvcmpeqdp.", "xvcmpeqdp", "xvcmpeqsp.", "xvcmpeqsp", "xvcmpgedp.", "xvcmpgedp", "xvcmpgesp.", "xvcmpgesp", "xvcmpgtdp.", "xvcmpgtdp", "xvcmpgtsp.", "xvcmpgtsp", "xvcpsgnsp", "xvcvdpsp", "xvcvdpsxds", "xvcvdpsxws", "xvcvdpuxds", "xvcvdpuxws", "xvcvspdp", "xvcvspsxds", "xvcvspsxws", "xvcvspuxds", "xvcvspuxws", "xvcvsxddp", "xvcvsxdsp", "xvcvsxwdp", "xvcvsxwsp", "xvcvuxddp", "xvcvuxdsp", "xvcvuxwdp", "xvcvuxwsp", "xvdivdp", "xvdivsp", "xvmaddadp", "xvmaddasp", "xvmaddmdp", "xvmaddmsp", "xvmaxdp", "xvmaxsp", "xvmindp", "xvminsp", "xvmovsp", "xvmsubadp", "xvmsubasp", "xvmsubmdp", "xvmsubmsp", "xvmuldp", "xvmulsp", "xvnabsdp", "xvnabssp", "xvnegdp", "xvnegsp", "xvnmaddadp", "xvnmaddasp", "xvnmaddmdp", "xvnmaddmsp", "xvnmsubadp", "xvnmsubasp", "xvnmsubmdp", "xvnmsubmsp", "xvrdpi", "xvrdpic", "xvrdpim", "xvrdpip", "xvrdpiz", "xvredp", "xvresp", "xvrspi", "xvrspic", "xvrspim", "xvrspip", "xvrspiz", "xvrsqrtedp", "xvrsqrtesp", "xvsqrtdp", "xvsqrtsp", "xvsubdp", "xvsubsp", "xvtdivdp", "xvtdivsp", "xvtsqrtdp", "xvtsqrtsp", "xxland", "xxlandc", "xxlnor", "xxlor", "xxlxor", "xxmrghw", "xxmrglw", "xxsel", "xxsldwi", "xxspltd", "xxspltw", "xxswapd">: Add VSX opcodes. --- gas/testsuite/ChangeLog | 21 +++++ gas/testsuite/gas/ppc/e500mc.d | 77 +++++++++--------- gas/testsuite/gas/ppc/e500mc.s | 5 ++ gas/testsuite/gas/ppc/power6.d | 3 + gas/testsuite/gas/ppc/power6.s | 3 + gas/testsuite/gas/ppc/power7.d | 104 ++++++++++++++++++------ gas/testsuite/gas/ppc/power7.s | 72 ++++++++++++++--- gas/testsuite/gas/ppc/ppc.exp | 1 + gas/testsuite/gas/ppc/vsx.d | 174 +++++++++++++++++++++++++++++++++++++++++ gas/testsuite/gas/ppc/vsx.s | 166 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 554 insertions(+), 72 deletions(-) create mode 100644 gas/testsuite/gas/ppc/vsx.d create mode 100644 gas/testsuite/gas/ppc/vsx.s (limited to 'gas/testsuite') diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index b1b23c2..31c1dd0 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,24 @@ +2009-02-26 Peter Bergner + + * gas/ppc/e500mc.d ("wait", "waitsrv", "waitimpl"): Add tests. + * gas/ppc/e500mc.s: Likewise. + * gas/ppc/power6.d ("cdtbcd", "cbcdtd", "addg6s"): Add tests. + * gas/ppc/power6.s: Likewise. + * gas/ppc/power7.d ("lfdpx", "mffgpr", "mftgpr"): Remove invalid tests. + ("wait", "waitsrv", "waitimpl", "divwe", "divwe.", "divweo", "divweo.", + "divweu", "divweu.", "divweuo", "divweuo.", "bpermd", "popcntw", + "popcntd", "ldbrx", "stdbrx", "lfiwzx", "lfiwzx", "fcfids", "fcfids.", + "fcfidus", "fcfidus.", "fctiwu", "fctiwu.", "fctiwuz", "fctiwuz.", + "fctidu", "fctidu.", "fctiduz", "fctiduz.", "fcfidu", "fcfidu.", + "ftdiv", "ftdiv", "ftsqrt", "ftsqrt", "dcbtt", "dcbtstt", "dcffix", + "dcffix.", "lbarx", "lbarx", "lbarx", "lharx", "lharx", "lharx", + "stbcx.", "sthcx.", "fre", "fre.", "fres", "fres.", "frsqrte", + "frsqrte.", "frsqrtes", "frsqrtes.", "isel"): Add tests. + * gas/ppc/power7.s: Likewise. + * gas/ppc/vsx.d: New test. + * gas/ppc/vsx.s: Likewise. + * gas/ppc/ppc.exp: Run it. + 2009-02-23 Mark Mitchell * gas/arm/thumb2_bad_reg.s: Update to allow R13 as second argument diff --git a/gas/testsuite/gas/ppc/e500mc.d b/gas/testsuite/gas/ppc/e500mc.d index aeee31d..7d10f12 100644 --- a/gas/testsuite/gas/ppc/e500mc.d +++ b/gas/testsuite/gas/ppc/e500mc.d @@ -6,7 +6,7 @@ Disassembly of section \.text: -0+0000000 : +0+00 : 0: 4c 00 00 4e rfdi 4: 4c 00 00 cc rfgi 8: 4c 1f f9 8c dnh 0,1023 @@ -14,38 +14,43 @@ Disassembly of section \.text: 10: 7c 09 57 be icbiep r9,r10 14: 7c 00 69 dc msgclr r13 18: 7c 00 71 9c msgsnd r14 - 1c: 7c 00 00 7c wait - 20: 7f 9c e3 78 mdors - 24: 7c 00 02 1c ehpriv - 28: 7c 18 cb c6 dsn r24,r25 - 2c: 7c 22 18 be lbepx r1,r2,r3 - 30: 7c 85 32 3e lhepx r4,r5,r6 - 34: 7c e8 48 3e lwepx r7,r8,r9 - 38: 7d 4b 60 3a ldepx r10,r11,r12 - 3c: 7d ae 7c be lfdepx f13,r14,r15 - 40: 7e 11 91 be stbepx r16,r17,r18 - 44: 7e 74 ab 3e sthepx r19,r20,r21 - 48: 7e d7 c1 3e stwepx r22,r23,r24 - 4c: 7f 3a d9 3a stdepx r25,r26,r27 - 50: 7f 9d f5 be stfdepx f28,r29,r30 - 54: 7c 01 14 06 lbdx r0,r1,r2 - 58: 7d 8d 74 46 lhdx r12,r13,r14 - 5c: 7c 64 2c 86 lwdx r3,r4,r5 - 60: 7f 5b e6 46 lfddx f26,r27,r28 - 64: 7d f0 8c c6 lddx r15,r16,r17 - 68: 7c c7 45 06 stbdx r6,r7,r8 - 6c: 7e 53 a5 46 sthdx r18,r19,r20 - 70: 7d 2a 5d 86 stwdx r9,r10,r11 - 74: 7f be ff 46 stfddx f29,r30,r31 - 78: 7e b6 bd c6 stddx r21,r22,r23 - 7c: 7c 20 0d ec dcbal r0,r1 - 80: 7c 26 3f ec dcbzl r6,r7 - 84: 7c 1f 00 7e dcbstep r31,r0 - 88: 7c 01 10 fe dcbfep r1,r2 - 8c: 7c 64 29 fe dcbtstep r3,r4,r5 - 90: 7c c7 42 7e dcbtep r6,r7,r8 - 94: 7c 0b 67 fe dcbzep r11,r12 - 98: 7c 00 06 26 tlbilx 0,0,r0 - 9c: 7c 20 06 26 tlbilx 1,0,r0 - a0: 7c 62 1e 26 tlbilx 3,r2,r3 - a4: 7c 64 2e 26 tlbilx 3,r4,r5 + 1c: 7c 00 00 7c wait + 20: 7c 00 00 7c wait + 24: 7c 20 00 7c waitrsv + 28: 7c 20 00 7c waitrsv + 2c: 7c 40 00 7c waitimpl + 30: 7c 40 00 7c waitimpl + 34: 7f 9c e3 78 mdors + 38: 7c 00 02 1c ehpriv + 3c: 7c 18 cb c6 dsn r24,r25 + 40: 7c 22 18 be lbepx r1,r2,r3 + 44: 7c 85 32 3e lhepx r4,r5,r6 + 48: 7c e8 48 3e lwepx r7,r8,r9 + 4c: 7d 4b 60 3a ldepx r10,r11,r12 + 50: 7d ae 7c be lfdepx f13,r14,r15 + 54: 7e 11 91 be stbepx r16,r17,r18 + 58: 7e 74 ab 3e sthepx r19,r20,r21 + 5c: 7e d7 c1 3e stwepx r22,r23,r24 + 60: 7f 3a d9 3a stdepx r25,r26,r27 + 64: 7f 9d f5 be stfdepx f28,r29,r30 + 68: 7c 01 14 06 lbdx r0,r1,r2 + 6c: 7d 8d 74 46 lhdx r12,r13,r14 + 70: 7c 64 2c 86 lwdx r3,r4,r5 + 74: 7f 5b e6 46 lfddx f26,r27,r28 + 78: 7d f0 8c c6 lddx r15,r16,r17 + 7c: 7c c7 45 06 stbdx r6,r7,r8 + 80: 7e 53 a5 46 sthdx r18,r19,r20 + 84: 7d 2a 5d 86 stwdx r9,r10,r11 + 88: 7f be ff 46 stfddx f29,r30,r31 + 8c: 7e b6 bd c6 stddx r21,r22,r23 + 90: 7c 20 0d ec dcbal r0,r1 + 94: 7c 26 3f ec dcbzl r6,r7 + 98: 7c 1f 00 7e dcbstep r31,r0 + 9c: 7c 01 10 fe dcbfep r1,r2 + a0: 7c 64 29 fe dcbtstep r3,r4,r5 + a4: 7c c7 42 7e dcbtep r6,r7,r8 + a8: 7c 0b 67 fe dcbzep r11,r12 + ac: 7c 00 06 26 tlbilx 0,0,r0 + b0: 7c 20 06 26 tlbilx 1,0,r0 + b4: 7c 62 1e 26 tlbilx 3,r2,r3 + b8: 7c 64 2e 26 tlbilx 3,r4,r5 diff --git a/gas/testsuite/gas/ppc/e500mc.s b/gas/testsuite/gas/ppc/e500mc.s index 4b20c94..8d1cec7 100644 --- a/gas/testsuite/gas/ppc/e500mc.s +++ b/gas/testsuite/gas/ppc/e500mc.s @@ -9,6 +9,11 @@ start: msgclr 13 msgsnd 14 wait + wait 0 + waitrsv + wait 1 + waitimpl + wait 2 mdors ehpriv dsn 24, 25 diff --git a/gas/testsuite/gas/ppc/power6.d b/gas/testsuite/gas/ppc/power6.d index 3fef44d..c4d1ff0 100644 --- a/gas/testsuite/gas/ppc/power6.d +++ b/gas/testsuite/gas/ppc/power6.d @@ -66,3 +66,6 @@ Disassembly of section \.text: e0: ff 00 f1 0d mtfsfi. 6,15 e4: ff 01 01 0c mtfsfi 6,0,1 e8: ff 01 f1 0d mtfsfi. 6,15,1 + ec: 7d 6a 02 74 cbcdtd r10,r11 + f0: 7d 6a 02 34 cdtbcd r10,r11 + f4: 7d 4b 60 94 addg6s r10,r11,r12 diff --git a/gas/testsuite/gas/ppc/power6.s b/gas/testsuite/gas/ppc/power6.s index 9b3444a..9f5cde1 100644 --- a/gas/testsuite/gas/ppc/power6.s +++ b/gas/testsuite/gas/ppc/power6.s @@ -61,3 +61,6 @@ start: mtfsfi. 6,15,0 mtfsfi 6,0,1 mtfsfi. 6,15,1 + cbcdtd 10,11 + cdtbcd 10,11 + addg6s 10,11,12 diff --git a/gas/testsuite/gas/ppc/power7.d b/gas/testsuite/gas/ppc/power7.d index 0401343..b8dae90 100644 --- a/gas/testsuite/gas/ppc/power7.d +++ b/gas/testsuite/gas/ppc/power7.d @@ -1,8 +1,8 @@ -#as: -a32 -mpower7 +#as: -mpower7 #objdump: -dr -Mpower7 #name: POWER7 tests (includes DFP, Altivec and VSX) -.*: +file format elf32-powerpc.* +.*: +file format elf(32)?(64)?-powerpc.* Disassembly of section \.text: @@ -33,25 +33,81 @@ Disassembly of section \.text: 5c: f1 6c 67 87 xvmovdp vs43,vs44 60: f0 64 2f 80 xvcpsgndp vs3,vs4,vs5 64: f1 6c 6f 87 xvcpsgndp vs43,vs44,vs45 - 68: 4c 00 03 24 doze - 6c: 4c 00 03 64 nap - 70: 4c 00 03 a4 sleep - 74: 4c 00 03 e4 rvwinkle - 78: 7c 83 01 34 prtyw r3,r4 - 7c: 7d cd 01 74 prtyd r13,r14 - 80: 7d 5c 02 a6 mfcfar r10 - 84: 7d 7c 03 a6 mtcfar r11 - 88: 7c 83 2b f8 cmpb r3,r4,r5 - 8c: 7c c0 3c be mffgpr f6,r7 - 90: 7d 00 4d be mftgpr r8,f9 - 94: 7d 4b 66 2a lwzcix r10,r11,r12 - 98: 7d ae 7e 2e lfdpx f13,r14,r15 - 9c: ee 11 90 04 dadd f16,f17,f18 - a0: fe 96 c0 04 daddq f20,f22,f24 - a4: 7c 60 06 6c dss 3 - a8: 7e 00 06 6c dssall - ac: 7c 25 22 ac dst r5,r4,1 - b0: 7e 08 3a ac dstt r8,r7,0 - b4: 7c 65 32 ec dstst r5,r6,3 - b8: 7e 44 2a ec dststt r4,r5,2 - bc: 4e 80 00 20 blr + 68: 7c 00 00 7c wait + 6c: 7c 00 00 7c wait + 70: 7c 20 00 7c waitrsv + 74: 7c 20 00 7c waitrsv + 78: 7c 40 00 7c waitimpl + 7c: 7c 40 00 7c waitimpl + 80: 4c 00 03 24 doze + 84: 4c 00 03 64 nap + 88: 4c 00 03 a4 sleep + 8c: 4c 00 03 e4 rvwinkle + 90: 7c 83 01 34 prtyw r3,r4 + 94: 7d cd 01 74 prtyd r13,r14 + 98: 7d 5c 02 a6 mfcfar r10 + 9c: 7d 7c 03 a6 mtcfar r11 + a0: 7c 83 2b f8 cmpb r3,r4,r5 + a4: 7d 4b 66 2a lwzcix r10,r11,r12 + a8: ee 11 90 04 dadd f16,f17,f18 + ac: fe 96 c0 04 daddq f20,f22,f24 + b0: 7c 60 06 6c dss 3 + b4: 7e 00 06 6c dssall + b8: 7c 25 22 ac dst r5,r4,1 + bc: 7e 08 3a ac dstt r8,r7,0 + c0: 7c 65 32 ec dstst r5,r6,3 + c4: 7e 44 2a ec dststt r4,r5,2 + c8: 7d 4b 63 56 divwe r10,r11,r12 + cc: 7d 6c 6b 57 divwe\. r11,r12,r13 + d0: 7d 8d 77 56 divweo r12,r13,r14 + d4: 7d ae 7f 57 divweo\. r13,r14,r15 + d8: 7d 4b 63 16 divweu r10,r11,r12 + dc: 7d 6c 6b 17 divweu\. r11,r12,r13 + e0: 7d 8d 77 16 divweuo r12,r13,r14 + e4: 7d ae 7f 17 divweuo\. r13,r14,r15 + e8: 7e 27 d9 f8 bpermd r7,r17,r27 + ec: 7e 8a 02 f4 popcntw r10,r20 + f0: 7e 8a 03 f4 popcntd r10,r20 + f4: 7e 95 b4 28 ldbrx r20,r21,r22 + f8: 7e 95 b5 28 stdbrx r20,r21,r22 + fc: 7d 40 56 ee lfiwzx f10,0,r10 + 100: 7d 49 56 ee lfiwzx f10,r9,r10 + 104: ec 80 2e 9c fcfids f4,f5 + 108: ec 80 2e 9d fcfids\. f4,f5 + 10c: ec 80 2f 9c fcfidus f4,f5 + 110: ec 80 2f 9d fcfidus\. f4,f5 + 114: fc 80 29 1c fctiwu f4,f5 + 118: fc 80 29 1d fctiwu\. f4,f5 + 11c: fc 80 29 1e fctiwuz f4,f5 + 120: fc 80 29 1f fctiwuz\. f4,f5 + 124: fc 80 2f 5c fctidu f4,f5 + 128: fc 80 2f 5d fctidu\. f4,f5 + 12c: fc 80 2f 5e fctiduz f4,f5 + 130: fc 80 2f 5f fctiduz\. f4,f5 + 134: fc 80 2f 9c fcfidu f4,f5 + 138: fc 80 2f 9d fcfidu\. f4,f5 + 13c: fc 0a 59 00 ftdiv cr0,f10,f11 + 140: ff 8a 59 00 ftdiv cr7,f10,f11 + 144: fc 00 51 40 ftsqrt cr0,f10 + 148: ff 80 51 40 ftsqrt cr7,f10 + 14c: 7e 08 4a 2c dcbtt r8,r9 + 150: 7e 08 49 ec dcbtstt r8,r9 + 154: ed 40 66 44 dcffix f10,f12 + 158: ee 80 b6 45 dcffix\. f20,f22 + 15c: 7d 4b 60 68 lbarx r10,r11,r12 + 160: 7d 4b 60 68 lbarx r10,r11,r12 + 164: 7d 4b 60 69 lbarx r10,r11,r12,1 + 168: 7e 95 b0 e8 lharx r20,r21,r22 + 16c: 7e 95 b0 e8 lharx r20,r21,r22 + 170: 7e 95 b0 e9 lharx r20,r21,r22,1 + 174: 7d 4b 65 6d stbcx\. r10,r11,r12 + 178: 7d 4b 65 ad sthcx\. r10,r11,r12 + 17c: fd c0 78 30 fre f14,f15 + 180: fd c0 78 31 fre\. f14,f15 + 184: ed c0 78 30 fres f14,f15 + 188: ed c0 78 31 fres\. f14,f15 + 18c: fd c0 78 34 frsqrte f14,f15 + 190: fd c0 78 35 frsqrte\. f14,f15 + 194: ed c0 78 34 frsqrtes f14,f15 + 198: ed c0 78 35 frsqrtes\. f14,f15 + 19c: 7c 43 27 1e isel r2,r3,r4,28 diff --git a/gas/testsuite/gas/ppc/power7.s b/gas/testsuite/gas/ppc/power7.s index 56fe0dc..2e2448a 100644 --- a/gas/testsuite/gas/ppc/power7.s +++ b/gas/testsuite/gas/ppc/power7.s @@ -1,9 +1,4 @@ - .file "power7.c" .section ".text" - .align 2 - .p2align 4,,15 - .globl power7 - .type power7, @function power7: lxvd2x 3,4,5 lxvd2ux 3,4,5 @@ -31,6 +26,12 @@ power7: xvcpsgndp 43,44,44 xvcpsgndp 3,4,5 xvcpsgndp 43,44,45 + wait + wait 0 + waitrsv + wait 1 + waitimpl + wait 2 doze nap sleep @@ -40,10 +41,7 @@ power7: mfcfar 10 mtcfar 11 cmpb 3,4,5 - mffgpr 6,7 - mftgpr 8,9 lwzcix 10,11,12 - lfdpx 13,14,15 dadd 16,17,18 daddq 20,22,24 dss 3 @@ -52,7 +50,57 @@ power7: dstt 8,7,0 dstst 5,6,3 dststt 4,5,2 - blr - .size power7,.-power7 - .ident "GCC: (GNU) 4.1.2 20070115 (prerelease) (SUSE Linux)" - .section .note.GNU-stack,"",@progbits + divwe 10,11,12 + divwe. 11,12,13 + divweo 12,13,14 + divweo. 13,14,15 + divweu 10,11,12 + divweu. 11,12,13 + divweuo 12,13,14 + divweuo. 13,14,15 + bpermd 7,17,27 + popcntw 10,20 + popcntd 10,20 + ldbrx 20,21,22 + stdbrx 20,21,22 + lfiwzx 10,0,10 + lfiwzx 10,9,10 + fcfids 4,5 + fcfids. 4,5 + fcfidus 4,5 + fcfidus. 4,5 + fctiwu 4,5 + fctiwu. 4,5 + fctiwuz 4,5 + fctiwuz. 4,5 + fctidu 4,5 + fctidu. 4,5 + fctiduz 4,5 + fctiduz. 4,5 + fcfidu 4,5 + fcfidu. 4,5 + ftdiv 0,10,11 + ftdiv 7,10,11 + ftsqrt 0,10 + ftsqrt 7,10 + dcbtt 8,9 + dcbtstt 8,9 + dcffix 10,12 + dcffix. 20,22 + lbarx 10,11,12 + lbarx 10,11,12,0 + lbarx 10,11,12,1 + lharx 20,21,22 + lharx 20,21,22,0 + lharx 20,21,22,1 + stbcx. 10,11,12 + sthcx. 10,11,12 + fre 14,15 + fre. 14,15 + fres 14,15 + fres. 14,15 + frsqrte 14,15 + frsqrte. 14,15 + frsqrtes 14,15 + frsqrtes. 14,15 + isel 2,3,4,28 diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp index 47057ee..a00d258 100644 --- a/gas/testsuite/gas/ppc/ppc.exp +++ b/gas/testsuite/gas/ppc/ppc.exp @@ -47,5 +47,6 @@ if { [istarget powerpc*-*-*] } then { run_dump_test "power4_32" run_dump_test "power6" run_dump_test "power7" + run_dump_test "vsx" } } diff --git a/gas/testsuite/gas/ppc/vsx.d b/gas/testsuite/gas/ppc/vsx.d new file mode 100644 index 0000000..b73f47a --- /dev/null +++ b/gas/testsuite/gas/ppc/vsx.d @@ -0,0 +1,174 @@ +#as: -mvsx +#objdump: -d -Mvsx +#name: VSX tests + +.*: +file format elf(32)?(64)?-powerpc.* + + +Disassembly of section \.text: + +0+00 : + 0: 7d 0a a4 99 lxsdx vs40,r10,r20 + 4: 7d 0a a4 d9 lxsdux vs40,r10,r20 + 8: 7d 0a a6 99 lxvd2x vs40,r10,r20 + c: 7d 0a a6 d9 lxvd2ux vs40,r10,r20 + 10: 7d 0a a2 99 lxvdsx vs40,r10,r20 + 14: 7d 0a a6 19 lxvw4x vs40,r10,r20 + 18: 7d 0a a6 59 lxvw4ux vs40,r10,r20 + 1c: 7d 0a a5 99 stxsdx vs40,r10,r20 + 20: 7d 0a a5 d9 stxsdux vs40,r10,r20 + 24: 7d 0a a7 99 stxvd2x vs40,r10,r20 + 28: 7d 0a a7 d9 stxvd2ux vs40,r10,r20 + 2c: 7d 0a a7 19 stxvw4x vs40,r10,r20 + 30: 7d 0a a7 59 stxvw4ux vs40,r10,r20 + 34: f1 00 e5 67 xsabsdp vs40,vs60 + 38: f1 12 e1 07 xsadddp vs40,vs50,vs60 + 3c: f0 92 e1 5e xscmpodp cr1,vs50,vs60 + 40: f0 92 e1 1e xscmpudp cr1,vs50,vs60 + 44: f1 12 e5 87 xscpsgndp vs40,vs50,vs60 + 48: f1 00 e4 27 xscvdpsp vs40,vs60 + 4c: f1 00 e5 63 xscvdpsxds vs40,vs60 + 50: f1 00 e1 63 xscvdpsxws vs40,vs60 + 54: f1 00 e5 23 xscvdpuxds vs40,vs60 + 58: f1 00 e1 23 xscvdpuxws vs40,vs60 + 5c: f1 00 e5 27 xscvspdp vs40,vs60 + 60: f1 00 e5 e3 xscvsxddp vs40,vs60 + 64: f1 00 e5 a3 xscvuxddp vs40,vs60 + 68: f1 12 e1 c7 xsdivdp vs40,vs50,vs60 + 6c: f1 12 e1 0f xsmaddadp vs40,vs50,vs60 + 70: f1 12 e1 4f xsmaddmdp vs40,vs50,vs60 + 74: f1 12 e5 07 xsmaxdp vs40,vs50,vs60 + 78: f1 12 e5 47 xsmindp vs40,vs50,vs60 + 7c: f1 12 e1 8f xsmsubadp vs40,vs50,vs60 + 80: f1 12 e1 cf xsmsubmdp vs40,vs50,vs60 + 84: f1 12 e1 87 xsmuldp vs40,vs50,vs60 + 88: f1 00 e5 a7 xsnabsdp vs40,vs60 + 8c: f1 00 e5 e7 xsnegdp vs40,vs60 + 90: f1 12 e5 0f xsnmaddadp vs40,vs50,vs60 + 94: f1 12 e5 4f xsnmaddmdp vs40,vs50,vs60 + 98: f1 12 e5 8f xsnmsubadp vs40,vs50,vs60 + 9c: f1 12 e5 cf xsnmsubmdp vs40,vs50,vs60 + a0: f1 00 e1 27 xsrdpi vs40,vs60 + a4: f1 00 e1 af xsrdpic vs40,vs60 + a8: f1 00 e1 e7 xsrdpim vs40,vs60 + ac: f1 00 e1 a7 xsrdpip vs40,vs60 + b0: f1 00 e1 67 xsrdpiz vs40,vs60 + b4: f1 00 e1 6b xsredp vs40,vs60 + b8: f1 00 e1 2b xsrsqrtedp vs40,vs60 + bc: f1 00 e1 2f xssqrtdp vs40,vs60 + c0: f1 12 e1 47 xssubdp vs40,vs50,vs60 + c4: f0 92 e1 ee xstdivdp cr1,vs50,vs60 + c8: f0 80 e1 aa xstsqrtdp cr1,vs60 + cc: f1 00 e7 67 xvabsdp vs40,vs60 + d0: f1 00 e6 67 xvabssp vs40,vs60 + d4: f1 12 e3 07 xvadddp vs40,vs50,vs60 + d8: f1 12 e2 07 xvaddsp vs40,vs50,vs60 + dc: f1 12 e3 1f xvcmpeqdp vs40,vs50,vs60 + e0: f1 12 e7 1f xvcmpeqdp. vs40,vs50,vs60 + e4: f1 12 e2 1f xvcmpeqsp vs40,vs50,vs60 + e8: f1 12 e6 1f xvcmpeqsp. vs40,vs50,vs60 + ec: f1 12 e3 9f xvcmpgedp vs40,vs50,vs60 + f0: f1 12 e7 9f xvcmpgedp. vs40,vs50,vs60 + f4: f1 12 e2 9f xvcmpgesp vs40,vs50,vs60 + f8: f1 12 e6 9f xvcmpgesp. vs40,vs50,vs60 + fc: f1 12 e3 5f xvcmpgtdp vs40,vs50,vs60 + 100: f1 12 e7 5f xvcmpgtdp. vs40,vs50,vs60 + 104: f1 12 e2 5f xvcmpgtsp vs40,vs50,vs60 + 108: f1 12 e6 5f xvcmpgtsp. vs40,vs50,vs60 + 10c: f1 12 e7 87 xvcpsgndp vs40,vs50,vs60 + 110: f1 1c e7 87 xvmovdp vs40,vs60 + 114: f1 1c e7 87 xvmovdp vs40,vs60 + 118: f1 12 e6 87 xvcpsgnsp vs40,vs50,vs60 + 11c: f1 1c e6 87 xvmovsp vs40,vs60 + 120: f1 1c e6 87 xvmovsp vs40,vs60 + 124: f1 00 e6 27 xvcvdpsp vs40,vs60 + 128: f1 00 e7 63 xvcvdpsxds vs40,vs60 + 12c: f1 00 e3 63 xvcvdpsxws vs40,vs60 + 130: f1 00 e7 23 xvcvdpuxds vs40,vs60 + 134: f1 00 e3 23 xvcvdpuxws vs40,vs60 + 138: f1 00 e7 27 xvcvspdp vs40,vs60 + 13c: f1 00 e6 63 xvcvspsxds vs40,vs60 + 140: f1 00 e2 63 xvcvspsxws vs40,vs60 + 144: f1 00 e6 23 xvcvspuxds vs40,vs60 + 148: f1 00 e2 23 xvcvspuxws vs40,vs60 + 14c: f1 00 e7 e3 xvcvsxddp vs40,vs60 + 150: f1 00 e6 e3 xvcvsxdsp vs40,vs60 + 154: f1 00 e3 e3 xvcvsxwdp vs40,vs60 + 158: f1 00 e2 e3 xvcvsxwsp vs40,vs60 + 15c: f1 00 e7 a3 xvcvuxddp vs40,vs60 + 160: f1 00 e6 a3 xvcvuxdsp vs40,vs60 + 164: f1 00 e3 a3 xvcvuxwdp vs40,vs60 + 168: f1 00 e2 a3 xvcvuxwsp vs40,vs60 + 16c: f1 12 e3 c7 xvdivdp vs40,vs50,vs60 + 170: f1 12 e2 c7 xvdivsp vs40,vs50,vs60 + 174: f1 12 e3 0f xvmaddadp vs40,vs50,vs60 + 178: f1 12 e3 4f xvmaddmdp vs40,vs50,vs60 + 17c: f1 12 e2 0f xvmaddasp vs40,vs50,vs60 + 180: f1 12 e2 4f xvmaddmsp vs40,vs50,vs60 + 184: f1 12 e7 07 xvmaxdp vs40,vs50,vs60 + 188: f1 12 e6 07 xvmaxsp vs40,vs50,vs60 + 18c: f1 12 e7 47 xvmindp vs40,vs50,vs60 + 190: f1 12 e6 47 xvminsp vs40,vs50,vs60 + 194: f1 12 e3 8f xvmsubadp vs40,vs50,vs60 + 198: f1 12 e3 cf xvmsubmdp vs40,vs50,vs60 + 19c: f1 12 e2 8f xvmsubasp vs40,vs50,vs60 + 1a0: f1 12 e2 cf xvmsubmsp vs40,vs50,vs60 + 1a4: f1 12 e3 87 xvmuldp vs40,vs50,vs60 + 1a8: f1 12 e2 87 xvmulsp vs40,vs50,vs60 + 1ac: f1 00 e7 a7 xvnabsdp vs40,vs60 + 1b0: f1 00 e6 a7 xvnabssp vs40,vs60 + 1b4: f1 00 e7 e7 xvnegdp vs40,vs60 + 1b8: f1 00 e6 e7 xvnegsp vs40,vs60 + 1bc: f1 12 e7 0f xvnmaddadp vs40,vs50,vs60 + 1c0: f1 12 e7 4f xvnmaddmdp vs40,vs50,vs60 + 1c4: f1 12 e6 0f xvnmaddasp vs40,vs50,vs60 + 1c8: f1 12 e6 4f xvnmaddmsp vs40,vs50,vs60 + 1cc: f1 12 e7 8f xvnmsubadp vs40,vs50,vs60 + 1d0: f1 12 e7 cf xvnmsubmdp vs40,vs50,vs60 + 1d4: f1 12 e6 8f xvnmsubasp vs40,vs50,vs60 + 1d8: f1 12 e6 cf xvnmsubmsp vs40,vs50,vs60 + 1dc: f1 00 e3 27 xvrdpi vs40,vs60 + 1e0: f1 00 e3 af xvrdpic vs40,vs60 + 1e4: f1 00 e3 e7 xvrdpim vs40,vs60 + 1e8: f1 00 e3 a7 xvrdpip vs40,vs60 + 1ec: f1 00 e3 67 xvrdpiz vs40,vs60 + 1f0: f1 00 e3 6b xvredp vs40,vs60 + 1f4: f1 00 e2 6b xvresp vs40,vs60 + 1f8: f1 00 e2 27 xvrspi vs40,vs60 + 1fc: f1 00 e2 af xvrspic vs40,vs60 + 200: f1 00 e2 e7 xvrspim vs40,vs60 + 204: f1 00 e2 a7 xvrspip vs40,vs60 + 208: f1 00 e2 67 xvrspiz vs40,vs60 + 20c: f1 00 e3 2b xvrsqrtedp vs40,vs60 + 210: f1 00 e2 2b xvrsqrtesp vs40,vs60 + 214: f1 00 e3 2f xvsqrtdp vs40,vs60 + 218: f1 00 e2 2f xvsqrtsp vs40,vs60 + 21c: f1 12 e3 47 xvsubdp vs40,vs50,vs60 + 220: f1 12 e2 47 xvsubsp vs40,vs50,vs60 + 224: f0 92 e3 ee xvtdivdp cr1,vs50,vs60 + 228: f0 92 e2 ee xvtdivsp cr1,vs50,vs60 + 22c: f0 80 e3 aa xvtsqrtdp cr1,vs60 + 230: f0 80 e2 aa xvtsqrtsp cr1,vs60 + 234: f1 12 e4 17 xxland vs40,vs50,vs60 + 238: f1 12 e4 57 xxlandc vs40,vs50,vs60 + 23c: f1 12 e5 17 xxlnor vs40,vs50,vs60 + 240: f1 12 e4 97 xxlor vs40,vs50,vs60 + 244: f1 12 e4 d7 xxlxor vs40,vs50,vs60 + 248: f1 12 e0 97 xxmrghw vs40,vs50,vs60 + 24c: f1 12 e1 97 xxmrglw vs40,vs50,vs60 + 250: f1 12 e0 57 xxmrghd vs40,vs50,vs60 + 254: f1 12 e1 57 xxpermdi vs40,vs50,vs60,1 + 258: f1 12 e2 57 xxpermdi vs40,vs50,vs60,2 + 25c: f1 12 e3 57 xxmrgld vs40,vs50,vs60 + 260: f1 12 90 57 xxspltd vs40,vs50,0 + 264: f1 12 90 57 xxspltd vs40,vs50,0 + 268: f1 12 93 57 xxspltd vs40,vs50,1 + 26c: f1 12 93 57 xxspltd vs40,vs50,1 + 270: f1 12 e0 57 xxmrghd vs40,vs50,vs60 + 274: f1 12 e0 57 xxmrghd vs40,vs50,vs60 + 278: f1 12 e3 57 xxmrgld vs40,vs50,vs60 + 27c: f1 12 92 57 xxswapd vs40,vs50 + 280: f1 12 92 57 xxswapd vs40,vs50 + 284: f1 12 e7 bf xxsel vs40,vs50,vs60,vs62 + 288: f1 12 e2 17 xxsldwi vs40,vs50,vs60,2 + 28c: f1 02 e2 93 xxspltw vs40,vs60,2 diff --git a/gas/testsuite/gas/ppc/vsx.s b/gas/testsuite/gas/ppc/vsx.s new file mode 100644 index 0000000..c3c3f3a --- /dev/null +++ b/gas/testsuite/gas/ppc/vsx.s @@ -0,0 +1,166 @@ + .section ".text" +start: + lxsdx 40,10,20 + lxsdux 40,10,20 + lxvd2x 40,10,20 + lxvd2ux 40,10,20 + lxvdsx 40,10,20 + lxvw4x 40,10,20 + lxvw4ux 40,10,20 + stxsdx 40,10,20 + stxsdux 40,10,20 + stxvd2x 40,10,20 + stxvd2ux 40,10,20 + stxvw4x 40,10,20 + stxvw4ux 40,10,20 + xsabsdp 40,60 + xsadddp 40,50,60 + xscmpodp 1,50,60 + xscmpudp 1,50,60 + xscpsgndp 40,50,60 + xscvdpsp 40,60 + xscvdpsxds 40,60 + xscvdpsxws 40,60 + xscvdpuxds 40,60 + xscvdpuxws 40,60 + xscvspdp 40,60 + xscvsxddp 40,60 + xscvuxddp 40,60 + xsdivdp 40,50,60 + xsmaddadp 40,50,60 + xsmaddmdp 40,50,60 + xsmaxdp 40,50,60 + xsmindp 40,50,60 + xsmsubadp 40,50,60 + xsmsubmdp 40,50,60 + xsmuldp 40,50,60 + xsnabsdp 40,60 + xsnegdp 40,60 + xsnmaddadp 40,50,60 + xsnmaddmdp 40,50,60 + xsnmsubadp 40,50,60 + xsnmsubmdp 40,50,60 + xsrdpi 40,60 + xsrdpic 40,60 + xsrdpim 40,60 + xsrdpip 40,60 + xsrdpiz 40,60 + xsredp 40,60 + xsrsqrtedp 40,60 + xssqrtdp 40,60 + xssubdp 40,50,60 + xstdivdp 1,50,60 + xstsqrtdp 1,60 + xvabsdp 40,60 + xvabssp 40,60 + xvadddp 40,50,60 + xvaddsp 40,50,60 + xvcmpeqdp 40,50,60 + xvcmpeqdp. 40,50,60 + xvcmpeqsp 40,50,60 + xvcmpeqsp. 40,50,60 + xvcmpgedp 40,50,60 + xvcmpgedp. 40,50,60 + xvcmpgesp 40,50,60 + xvcmpgesp. 40,50,60 + xvcmpgtdp 40,50,60 + xvcmpgtdp. 40,50,60 + xvcmpgtsp 40,50,60 + xvcmpgtsp. 40,50,60 + xvcpsgndp 40,50,60 + xvmovdp 40,60 + xvcpsgndp 40,60,60 + xvcpsgnsp 40,50,60 + xvmovsp 40,60 + xvcpsgnsp 40,60,60 + xvcvdpsp 40,60 + xvcvdpsxds 40,60 + xvcvdpsxws 40,60 + xvcvdpuxds 40,60 + xvcvdpuxws 40,60 + xvcvspdp 40,60 + xvcvspsxds 40,60 + xvcvspsxws 40,60 + xvcvspuxds 40,60 + xvcvspuxws 40,60 + xvcvsxddp 40,60 + xvcvsxdsp 40,60 + xvcvsxwdp 40,60 + xvcvsxwsp 40,60 + xvcvuxddp 40,60 + xvcvuxdsp 40,60 + xvcvuxwdp 40,60 + xvcvuxwsp 40,60 + xvdivdp 40,50,60 + xvdivsp 40,50,60 + xvmaddadp 40,50,60 + xvmaddmdp 40,50,60 + xvmaddasp 40,50,60 + xvmaddmsp 40,50,60 + xvmaxdp 40,50,60 + xvmaxsp 40,50,60 + xvmindp 40,50,60 + xvminsp 40,50,60 + xvmsubadp 40,50,60 + xvmsubmdp 40,50,60 + xvmsubasp 40,50,60 + xvmsubmsp 40,50,60 + xvmuldp 40,50,60 + xvmulsp 40,50,60 + xvnabsdp 40,60 + xvnabssp 40,60 + xvnegdp 40,60 + xvnegsp 40,60 + xvnmaddadp 40,50,60 + xvnmaddmdp 40,50,60 + xvnmaddasp 40,50,60 + xvnmaddmsp 40,50,60 + xvnmsubadp 40,50,60 + xvnmsubmdp 40,50,60 + xvnmsubasp 40,50,60 + xvnmsubmsp 40,50,60 + xvrdpi 40,60 + xvrdpic 40,60 + xvrdpim 40,60 + xvrdpip 40,60 + xvrdpiz 40,60 + xvredp 40,60 + xvresp 40,60 + xvrspi 40,60 + xvrspic 40,60 + xvrspim 40,60 + xvrspip 40,60 + xvrspiz 40,60 + xvrsqrtedp 40,60 + xvrsqrtesp 40,60 + xvsqrtdp 40,60 + xvsqrtsp 40,60 + xvsubdp 40,50,60 + xvsubsp 40,50,60 + xvtdivdp 1,50,60 + xvtdivsp 1,50,60 + xvtsqrtdp 1,60 + xvtsqrtsp 1,60 + xxland 40,50,60 + xxlandc 40,50,60 + xxlnor 40,50,60 + xxlor 40,50,60 + xxlxor 40,50,60 + xxmrghw 40,50,60 + xxmrglw 40,50,60 + xxpermdi 40,50,60,0b00 + xxpermdi 40,50,60,0b01 + xxpermdi 40,50,60,0b10 + xxpermdi 40,50,60,0b11 + xxspltd 40,50,0 + xxpermdi 40,50,50,0b00 + xxspltd 40,50,1 + xxpermdi 40,50,50,0b11 + xxmrghd 40,50,60 + xxpermdi 40,50,60,0b00 + xxmrgld 40,50,60 + xxpermdi 40,50,50,0b10 + xxswapd 40,50 + xxsel 40,50,60,62 + xxsldwi 40,50,60,2 + xxspltw 40,60,2 -- cgit v1.1