From ac7c37a5eec4299bfae164839a04b03eae27b962 Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Tue, 10 Mar 2015 12:44:54 +0100 Subject: [PATCH 3/5] S/390: Add more IBM z13 instructions opcodes/ 2015-03-10 Andreas Krebbel * s390-opc.c: Add new IBM z13 instructions. * s390-opc.txt: Likewise. gas/testsuite/ 2015-03-10 Andreas Krebbel * gas/s390/zarch-z13.d: Add more z13 instructions. * gas/s390/zarch-z13.s: Likewise. # Conflicts: # gas/testsuite/ChangeLog # opcodes/ChangeLog --- gas/testsuite/gas/s390/zarch-z13.d | 134 +++++++++++++++++++++++++++++++++++++ gas/testsuite/gas/s390/zarch-z13.s | 134 +++++++++++++++++++++++++++++++++++++ opcodes/s390-opc.c | 2 + opcodes/s390-opc.txt | 23 +++++++ 4 files changed, 293 insertions(+) diff --git a/gas/testsuite/gas/s390/zarch-z13.d b/gas/testsuite/gas/s390/zarch-z13.d index f74b9f8..b2e010d 100644 --- a/gas/testsuite/gas/s390/zarch-z13.d +++ b/gas/testsuite/gas/s390/zarch-z13.d @@ -546,3 +546,137 @@ Disassembly of section .text: .*: e7 f1 ff db c4 4a [ ]*vftci %v15,%v17,4093,12,11 .*: e7 f1 ff d0 34 4a [ ]*vftcidb %v15,%v17,4093 .*: e7 f1 ff d8 34 4a [ ]*wftcidb %v15,%v17,4093 +.*: ed fa 6f a0 3c ae [ ]*cdpt %f3,4000\(251,%r6\),12 +.*: ed fa 6f a0 1c af [ ]*cxpt %f1,4000\(251,%r6\),12 +.*: ed fa 6f a0 3c ac [ ]*cpdt %f3,4000\(251,%r6\),12 +.*: ed fa 6f a0 1c ad [ ]*cpxt %f1,4000\(251,%r6\),12 +.*: b9 e0 d0 69 [ ]*locfhrnh %r6,%r9 +.*: b9 e0 10 69 [ ]*locfhro %r6,%r9 +.*: b9 e0 20 69 [ ]*locfhrh %r6,%r9 +.*: b9 e0 20 69 [ ]*locfhrh %r6,%r9 +.*: b9 e0 30 69 [ ]*locfhrnle %r6,%r9 +.*: b9 e0 40 69 [ ]*locfhrl %r6,%r9 +.*: b9 e0 40 69 [ ]*locfhrl %r6,%r9 +.*: b9 e0 50 69 [ ]*locfhrnhe %r6,%r9 +.*: b9 e0 60 69 [ ]*locfhrlh %r6,%r9 +.*: b9 e0 70 69 [ ]*locfhrne %r6,%r9 +.*: b9 e0 70 69 [ ]*locfhrne %r6,%r9 +.*: b9 e0 80 69 [ ]*locfhre %r6,%r9 +.*: b9 e0 80 69 [ ]*locfhre %r6,%r9 +.*: b9 e0 90 69 [ ]*locfhrnlh %r6,%r9 +.*: b9 e0 a0 69 [ ]*locfhrhe %r6,%r9 +.*: b9 e0 b0 69 [ ]*locfhrnl %r6,%r9 +.*: b9 e0 b0 69 [ ]*locfhrnl %r6,%r9 +.*: b9 e0 c0 69 [ ]*locfhrle %r6,%r9 +.*: b9 e0 d0 69 [ ]*locfhrnh %r6,%r9 +.*: b9 e0 d0 69 [ ]*locfhrnh %r6,%r9 +.*: b9 e0 e0 69 [ ]*locfhrno %r6,%r9 +.*: eb 6d 98 f0 fd e0 [ ]*locfhnh %r6,-10000\(%r9\) +.*: eb 61 98 f0 fd e0 [ ]*locfho %r6,-10000\(%r9\) +.*: eb 62 98 f0 fd e0 [ ]*locfhh %r6,-10000\(%r9\) +.*: eb 62 98 f0 fd e0 [ ]*locfhh %r6,-10000\(%r9\) +.*: eb 63 98 f0 fd e0 [ ]*locfhnle %r6,-10000\(%r9\) +.*: eb 64 98 f0 fd e0 [ ]*locfhl %r6,-10000\(%r9\) +.*: eb 64 98 f0 fd e0 [ ]*locfhl %r6,-10000\(%r9\) +.*: eb 65 98 f0 fd e0 [ ]*locfhnhe %r6,-10000\(%r9\) +.*: eb 66 98 f0 fd e0 [ ]*locfhlh %r6,-10000\(%r9\) +.*: eb 67 98 f0 fd e0 [ ]*locfhne %r6,-10000\(%r9\) +.*: eb 67 98 f0 fd e0 [ ]*locfhne %r6,-10000\(%r9\) +.*: eb 68 98 f0 fd e0 [ ]*locfhe %r6,-10000\(%r9\) +.*: eb 68 98 f0 fd e0 [ ]*locfhe %r6,-10000\(%r9\) +.*: eb 69 98 f0 fd e0 [ ]*locfhnlh %r6,-10000\(%r9\) +.*: eb 6a 98 f0 fd e0 [ ]*locfhhe %r6,-10000\(%r9\) +.*: eb 6b 98 f0 fd e0 [ ]*locfhnl %r6,-10000\(%r9\) +.*: eb 6b 98 f0 fd e0 [ ]*locfhnl %r6,-10000\(%r9\) +.*: eb 6c 98 f0 fd e0 [ ]*locfhle %r6,-10000\(%r9\) +.*: eb 6d 98 f0 fd e0 [ ]*locfhnh %r6,-10000\(%r9\) +.*: eb 6d 98 f0 fd e0 [ ]*locfhnh %r6,-10000\(%r9\) +.*: eb 6e 98 f0 fd e0 [ ]*locfhno %r6,-10000\(%r9\) +.*: ec 6c 80 03 00 42 [ ]*lochile %r6,-32765 +.*: ec 61 80 03 00 42 [ ]*lochio %r6,-32765 +.*: ec 62 80 03 00 42 [ ]*lochih %r6,-32765 +.*: ec 62 80 03 00 42 [ ]*lochih %r6,-32765 +.*: ec 63 80 03 00 42 [ ]*lochinle %r6,-32765 +.*: ec 64 80 03 00 42 [ ]*lochil %r6,-32765 +.*: ec 64 80 03 00 42 [ ]*lochil %r6,-32765 +.*: ec 65 80 03 00 42 [ ]*lochinhe %r6,-32765 +.*: ec 66 80 03 00 42 [ ]*lochilh %r6,-32765 +.*: ec 67 80 03 00 42 [ ]*lochine %r6,-32765 +.*: ec 67 80 03 00 42 [ ]*lochine %r6,-32765 +.*: ec 68 80 03 00 42 [ ]*lochie %r6,-32765 +.*: ec 68 80 03 00 42 [ ]*lochie %r6,-32765 +.*: ec 69 80 03 00 42 [ ]*lochinlh %r6,-32765 +.*: ec 6a 80 03 00 42 [ ]*lochihe %r6,-32765 +.*: ec 6b 80 03 00 42 [ ]*lochinl %r6,-32765 +.*: ec 6b 80 03 00 42 [ ]*lochinl %r6,-32765 +.*: ec 6c 80 03 00 42 [ ]*lochile %r6,-32765 +.*: ec 6d 80 03 00 42 [ ]*lochinh %r6,-32765 +.*: ec 6d 80 03 00 42 [ ]*lochinh %r6,-32765 +.*: ec 6e 80 03 00 42 [ ]*lochino %r6,-32765 +.*: ec 6c 80 03 00 46 [ ]*locghile %r6,-32765 +.*: ec 61 80 03 00 46 [ ]*locghio %r6,-32765 +.*: ec 62 80 03 00 46 [ ]*locghih %r6,-32765 +.*: ec 62 80 03 00 46 [ ]*locghih %r6,-32765 +.*: ec 63 80 03 00 46 [ ]*locghinle %r6,-32765 +.*: ec 64 80 03 00 46 [ ]*locghil %r6,-32765 +.*: ec 64 80 03 00 46 [ ]*locghil %r6,-32765 +.*: ec 65 80 03 00 46 [ ]*locghinhe %r6,-32765 +.*: ec 66 80 03 00 46 [ ]*locghilh %r6,-32765 +.*: ec 67 80 03 00 46 [ ]*locghine %r6,-32765 +.*: ec 67 80 03 00 46 [ ]*locghine %r6,-32765 +.*: ec 68 80 03 00 46 [ ]*locghie %r6,-32765 +.*: ec 68 80 03 00 46 [ ]*locghie %r6,-32765 +.*: ec 69 80 03 00 46 [ ]*locghinlh %r6,-32765 +.*: ec 6a 80 03 00 46 [ ]*locghihe %r6,-32765 +.*: ec 6b 80 03 00 46 [ ]*locghinl %r6,-32765 +.*: ec 6b 80 03 00 46 [ ]*locghinl %r6,-32765 +.*: ec 6c 80 03 00 46 [ ]*locghile %r6,-32765 +.*: ec 6d 80 03 00 46 [ ]*locghinh %r6,-32765 +.*: ec 6d 80 03 00 46 [ ]*locghinh %r6,-32765 +.*: ec 6e 80 03 00 46 [ ]*locghino %r6,-32765 +.*: ec 6c 80 03 00 4e [ ]*lochhile %r6,-32765 +.*: ec 61 80 03 00 4e [ ]*lochhio %r6,-32765 +.*: ec 62 80 03 00 4e [ ]*lochhih %r6,-32765 +.*: ec 62 80 03 00 4e [ ]*lochhih %r6,-32765 +.*: ec 63 80 03 00 4e [ ]*lochhinle %r6,-32765 +.*: ec 64 80 03 00 4e [ ]*lochhil %r6,-32765 +.*: ec 64 80 03 00 4e [ ]*lochhil %r6,-32765 +.*: ec 65 80 03 00 4e [ ]*lochhinhe %r6,-32765 +.*: ec 66 80 03 00 4e [ ]*lochhilh %r6,-32765 +.*: ec 67 80 03 00 4e [ ]*lochhine %r6,-32765 +.*: ec 67 80 03 00 4e [ ]*lochhine %r6,-32765 +.*: ec 68 80 03 00 4e [ ]*lochhie %r6,-32765 +.*: ec 68 80 03 00 4e [ ]*lochhie %r6,-32765 +.*: ec 69 80 03 00 4e [ ]*lochhinlh %r6,-32765 +.*: ec 6a 80 03 00 4e [ ]*lochhihe %r6,-32765 +.*: ec 6b 80 03 00 4e [ ]*lochhinl %r6,-32765 +.*: ec 6b 80 03 00 4e [ ]*lochhinl %r6,-32765 +.*: ec 6c 80 03 00 4e [ ]*lochhile %r6,-32765 +.*: ec 6d 80 03 00 4e [ ]*lochhinh %r6,-32765 +.*: ec 6d 80 03 00 4e [ ]*lochhinh %r6,-32765 +.*: ec 6e 80 03 00 4e [ ]*lochhino %r6,-32765 +.*: eb 6d 98 f0 fd e1 [ ]*stocfhnh %r6,-10000\(%r9\) +.*: eb 61 98 f0 fd e1 [ ]*stocfho %r6,-10000\(%r9\) +.*: eb 62 98 f0 fd e1 [ ]*stocfhh %r6,-10000\(%r9\) +.*: eb 62 98 f0 fd e1 [ ]*stocfhh %r6,-10000\(%r9\) +.*: eb 63 98 f0 fd e1 [ ]*stocfhnle %r6,-10000\(%r9\) +.*: eb 64 98 f0 fd e1 [ ]*stocfhl %r6,-10000\(%r9\) +.*: eb 64 98 f0 fd e1 [ ]*stocfhl %r6,-10000\(%r9\) +.*: eb 65 98 f0 fd e1 [ ]*stocfhnhe %r6,-10000\(%r9\) +.*: eb 66 98 f0 fd e1 [ ]*stocfhlh %r6,-10000\(%r9\) +.*: eb 67 98 f0 fd e1 [ ]*stocfhne %r6,-10000\(%r9\) +.*: eb 67 98 f0 fd e1 [ ]*stocfhne %r6,-10000\(%r9\) +.*: eb 68 98 f0 fd e1 [ ]*stocfhe %r6,-10000\(%r9\) +.*: eb 68 98 f0 fd e1 [ ]*stocfhe %r6,-10000\(%r9\) +.*: eb 69 98 f0 fd e1 [ ]*stocfhnlh %r6,-10000\(%r9\) +.*: eb 6a 98 f0 fd e1 [ ]*stocfhhe %r6,-10000\(%r9\) +.*: eb 6b 98 f0 fd e1 [ ]*stocfhnl %r6,-10000\(%r9\) +.*: eb 6b 98 f0 fd e1 [ ]*stocfhnl %r6,-10000\(%r9\) +.*: eb 6c 98 f0 fd e1 [ ]*stocfhle %r6,-10000\(%r9\) +.*: eb 6d 98 f0 fd e1 [ ]*stocfhnh %r6,-10000\(%r9\) +.*: eb 6d 98 f0 fd e1 [ ]*stocfhnh %r6,-10000\(%r9\) +.*: eb 6e 98 f0 fd e1 [ ]*stocfhno %r6,-10000\(%r9\) +.*: e3 69 b8 f0 fd 3a [ ]*llzrgf %r6,-10000\(%r9,%r11\) +.*: e3 69 b8 f0 fd 3b [ ]*lzrf %r6,-10000\(%r9,%r11\) +.*: e3 69 b8 f0 fd 2a [ ]*lzrg %r6,-10000\(%r9,%r11\) +.*: b9 ec 00 69 [ ]*ppno %r6,%r9 diff --git a/gas/testsuite/gas/s390/zarch-z13.s b/gas/testsuite/gas/s390/zarch-z13.s index 812e3e8..688020d 100644 --- a/gas/testsuite/gas/s390/zarch-z13.s +++ b/gas/testsuite/gas/s390/zarch-z13.s @@ -540,3 +540,137 @@ foo: vftci %v15,%v17,4093,12,11 vftcidb %v15,%v17,4093 wftcidb %v15,%v17,4093 + cdpt %f3,4000(251,%r6),12 + cxpt %f1,4000(251,%r6),12 + cpdt %f3,4000(251,%r6),12 + cpxt %f1,4000(251,%r6),12 + locfhr %r6,%r9,13 + locfhro %r6,%r9 + locfhrh %r6,%r9 + locfhrp %r6,%r9 + locfhrnle %r6,%r9 + locfhrl %r6,%r9 + locfhrm %r6,%r9 + locfhrnhe %r6,%r9 + locfhrlh %r6,%r9 + locfhrne %r6,%r9 + locfhrnz %r6,%r9 + locfhre %r6,%r9 + locfhrz %r6,%r9 + locfhrnlh %r6,%r9 + locfhrhe %r6,%r9 + locfhrnl %r6,%r9 + locfhrnm %r6,%r9 + locfhrle %r6,%r9 + locfhrnh %r6,%r9 + locfhrnp %r6,%r9 + locfhrno %r6,%r9 + locfh %r6,-10000(%r9),13 + locfho %r6,-10000(%r9) + locfhh %r6,-10000(%r9) + locfhp %r6,-10000(%r9) + locfhnle %r6,-10000(%r9) + locfhl %r6,-10000(%r9) + locfhm %r6,-10000(%r9) + locfhnhe %r6,-10000(%r9) + locfhlh %r6,-10000(%r9) + locfhne %r6,-10000(%r9) + locfhnz %r6,-10000(%r9) + locfhe %r6,-10000(%r9) + locfhz %r6,-10000(%r9) + locfhnlh %r6,-10000(%r9) + locfhhe %r6,-10000(%r9) + locfhnl %r6,-10000(%r9) + locfhnm %r6,-10000(%r9) + locfhle %r6,-10000(%r9) + locfhnh %r6,-10000(%r9) + locfhnp %r6,-10000(%r9) + locfhno %r6,-10000(%r9) + lochi %r6,-32765,12 + lochio %r6,-32765 + lochih %r6,-32765 + lochip %r6,-32765 + lochinle %r6,-32765 + lochil %r6,-32765 + lochim %r6,-32765 + lochinhe %r6,-32765 + lochilh %r6,-32765 + lochine %r6,-32765 + lochinz %r6,-32765 + lochie %r6,-32765 + lochiz %r6,-32765 + lochinlh %r6,-32765 + lochihe %r6,-32765 + lochinl %r6,-32765 + lochinm %r6,-32765 + lochile %r6,-32765 + lochinh %r6,-32765 + lochinp %r6,-32765 + lochino %r6,-32765 + locghi %r6,-32765,12 + locghio %r6,-32765 + locghih %r6,-32765 + locghip %r6,-32765 + locghinle %r6,-32765 + locghil %r6,-32765 + locghim %r6,-32765 + locghinhe %r6,-32765 + locghilh %r6,-32765 + locghine %r6,-32765 + locghinz %r6,-32765 + locghie %r6,-32765 + locghiz %r6,-32765 + locghinlh %r6,-32765 + locghihe %r6,-32765 + locghinl %r6,-32765 + locghinm %r6,-32765 + locghile %r6,-32765 + locghinh %r6,-32765 + locghinp %r6,-32765 + locghino %r6,-32765 + lochhi %r6,-32765,12 + lochhio %r6,-32765 + lochhih %r6,-32765 + lochhip %r6,-32765 + lochhinle %r6,-32765 + lochhil %r6,-32765 + lochhim %r6,-32765 + lochhinhe %r6,-32765 + lochhilh %r6,-32765 + lochhine %r6,-32765 + lochhinz %r6,-32765 + lochhie %r6,-32765 + lochhiz %r6,-32765 + lochhinlh %r6,-32765 + lochhihe %r6,-32765 + lochhinl %r6,-32765 + lochhinm %r6,-32765 + lochhile %r6,-32765 + lochhinh %r6,-32765 + lochhinp %r6,-32765 + lochhino %r6,-32765 + stocfh %r6,-10000(%r9),13 + stocfho %r6,-10000(%r9) + stocfhh %r6,-10000(%r9) + stocfhp %r6,-10000(%r9) + stocfhnle %r6,-10000(%r9) + stocfhl %r6,-10000(%r9) + stocfhm %r6,-10000(%r9) + stocfhnhe %r6,-10000(%r9) + stocfhlh %r6,-10000(%r9) + stocfhne %r6,-10000(%r9) + stocfhnz %r6,-10000(%r9) + stocfhe %r6,-10000(%r9) + stocfhz %r6,-10000(%r9) + stocfhnlh %r6,-10000(%r9) + stocfhhe %r6,-10000(%r9) + stocfhnl %r6,-10000(%r9) + stocfhnm %r6,-10000(%r9) + stocfhle %r6,-10000(%r9) + stocfhnh %r6,-10000(%r9) + stocfhnp %r6,-10000(%r9) + stocfhno %r6,-10000(%r9) + llzrgf %r6,-10000(%r9,%r11) + lzrf %r6,-10000(%r9,%r11) + lzrg %r6,-10000(%r9,%r11) + ppno %r6,%r9 diff --git a/opcodes/s390-opc.c b/opcodes/s390-opc.c index ca82ce5..6f66fd8 100644 --- a/opcodes/s390-opc.c +++ b/opcodes/s390-opc.c @@ -311,6 +311,7 @@ const struct s390_operand s390_operands[] = #define INSTR_RIE_R0I0 6, { R_8,I16_16,0,0,0,0 } /* e.g. citne */ #define INSTR_RIE_R0UU 6, { R_8,U16_16,U4_32,0,0,0 } /* e.g. clfit */ #define INSTR_RIE_R0U0 6, { R_8,U16_16,0,0,0,0 } /* e.g. clfitne */ +#define INSTR_RIE_RUI0 6, { R_8,I16_16,U4_12,0,0,0 } /* e.g. lochi */ #define INSTR_RIE_RRUUU 6, { R_8,R_12,U8_16,U8_24,U8_32,0 } /* e.g. rnsbg */ #define INSTR_RIL_0P 6, { J32_16,0,0,0,0 } /* e.g. jg */ #define INSTR_RIL_RP 6, { R_8,J32_16,0,0,0,0 } /* e.g. brasl */ @@ -515,6 +516,7 @@ const struct s390_operand s390_operands[] = #define MASK_RIE_R0I0 { 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff } #define MASK_RIE_R0UU { 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff } #define MASK_RIE_R0U0 { 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff } +#define MASK_RIE_RUI0 { 0xff, 0x00, 0x00, 0x00, 0xff, 0xff } #define MASK_RIE_RRUUU { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #define MASK_RIL_0P { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } #define MASK_RIL_RP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt index 2a5e1dd..3429494 100644 --- a/opcodes/s390-opc.txt +++ b/opcodes/s390-opc.txt @@ -1656,3 +1656,26 @@ e700000830e2 wfsdb VRR_VVV "vector fp subtract" z13 zarch e7000000004a vftci VRI_VVUUU "vector fp test data class immediate" z13 zarch e7000000304a vftcidb VRI_VVU2 "vector fp test data class immediate" z13 zarch e7000008304a wftcidb VRI_VVU2 "vector fp test data class immediate" z13 zarch + +ed00000000ae cdpt RSL_LRDFU "convert from packed to long dfp" z13 zarch +ed00000000af cxpt RSL_LRDFEU "convert from packed to extended dfp" z13 zarch +ed00000000ac cpdt RSL_LRDFU "convert from long dfp to packed" z13 zarch +ed00000000ad cpxt RSL_LRDFEU "convert from extended dfp to packed" z13 zarch + +b9e0 locfhr RRF_U0RR "load high on condition from gpr" z13 zarch +b9e000000000 locfhr*16 RRF_00RR "load high on condition from gpr" z13 zarch +eb00000000e0 locfh RSY_RURD2 "load high on condition from memory" z13 zarch +eb00000000e0 locfh*12 RSY_R0RD "load high on condition from memory" z13 zarch +ec0000000042 lochi RIE_RUI0 "load halfword immediate on condition into 32 bit gpr" z13 zarch +ec0000000042 lochi*12 RIE_R0I0 "load halfword immediate on condition into 32 bit gpr" z13 zarch +ec0000000046 locghi RIE_RUI0 "load halfword immediate on condition into 64 bit gpr" z13 zarch +ec0000000046 locghi*12 RIE_R0I0 "load halfword immediate on condition into 64 bit gpr" z13 zarch +ec000000004e lochhi RIE_RUI0 "load halfword high immediate on condition" z13 zarch +ec000000004e lochhi*12 RIE_R0I0 "load halfword high immediate on condition" z13 zarch +eb00000000e1 stocfh RSY_RURD2 "store high on condition" z13 zarch +eb00000000e1 stocfh*12 RSY_R0RD "store high on condition" z13 zarch + +e3000000003a llzrgf RXY_RRRD "load logical and zero rightmost bytes 32->64" z13 zarch +e3000000003b lzrf RXY_RRRD "load and zero rightmost byte 32->32" z13 zarch +e3000000002a lzrg RXY_RRRD "load and zero rightmost byte 64->64" z13 zarch +b9ec ppno RRE_RR "perform pseudorandom number operation" z13 zarch -- 2.3.0