]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
s390: Add arch15 instructions
authorAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 8 Oct 2024 10:04:31 +0000 (12:04 +0200)
committerJens Remus <jremus@linux.ibm.com>
Thu, 10 Oct 2024 10:09:40 +0000 (12:09 +0200)
opcodes/
* s390-mkopc.c (main) Accept arch15 as CPU string.
* s390-opc.txt: Add arch15 instructions.

include/
* opcode/s390.h (enum s390_opcode_cpu_val): Add
S390_OPCODE_ARCH15.

gas/
* config/tc-s390.c (s390_parse_cpu): New entry for arch15.
* doc/c-s390.texi: Document arch15 march option.
* doc/as.texi: Likewise.
* testsuite/gas/s390/s390.exp: Run the arch15 related tests.
* testsuite/gas/s390/zarch-arch15.d: Tests for arch15
instructions.
* testsuite/gas/s390/zarch-arch15.s: Likewise.

Signed-off-by: Andreas Krebbel <krebbel@linux.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.ibm.com>
gas/config/tc-s390.c
gas/doc/as.texi
gas/doc/c-s390.texi
gas/testsuite/gas/s390/s390.exp
gas/testsuite/gas/s390/zarch-arch15.d [new file with mode: 0644]
gas/testsuite/gas/s390/zarch-arch15.s [new file with mode: 0644]
include/opcode/s390.h
opcodes/s390-mkopc.c
opcodes/s390-opc.c
opcodes/s390-opc.txt

index 75e1011f67b9ea909dd72c419842544bfe094276..055b6948c8421e5da6c6f9e7dcf43922f0daafee 100644 (file)
@@ -342,6 +342,8 @@ s390_parse_cpu (const char *arg,
     { STRING_COMMA_LEN ("z15"), STRING_COMMA_LEN ("arch13"),
       S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX },
     { STRING_COMMA_LEN ("z16"), STRING_COMMA_LEN ("arch14"),
+      S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX },
+    { STRING_COMMA_LEN (""), STRING_COMMA_LEN ("arch15"),
       S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX }
   };
   static struct
index 0b4109e114967c1c3075839c338828042d248790..4c7799acc50bdff80548e45cb36bdffda8133a88 100644 (file)
@@ -1961,7 +1961,7 @@ Specify which s390 processor variant is the target, @samp{g5} (or
 @samp{arch6}), @samp{z9-109}, @samp{z9-ec} (or @samp{arch7}), @samp{z10} (or
 @samp{arch8}), @samp{z196} (or @samp{arch9}), @samp{zEC12} (or @samp{arch10}),
 @samp{z13} (or @samp{arch11}), @samp{z14} (or @samp{arch12}), @samp{z15}
-(or @samp{arch13}), or @samp{z16} (or @samp{arch14}).
+(or @samp{arch13}), @samp{z16} (or @samp{arch14}), or @samp{arch15}.
 @item -mregnames
 @itemx -mno-regnames
 Allow or disallow symbolic names for registers.
index cd0dc7be2585fa08599d2e510b7e6960e5dfbf59..9a4fdfe14f17ec494a1f8fbcb05aabcfedf04ded 100644 (file)
@@ -18,7 +18,7 @@ and eleven chip levels. The architecture modes are the Enterprise System
 Architecture (ESA) and the newer z/Architecture mode. The chip levels
 are g5 (or arch3), g6, z900 (or arch5), z990 (or arch6), z9-109, z9-ec
 (or arch7), z10 (or arch8), z196 (or arch9), zEC12 (or arch10), z13
-(or arch11), z14 (or arch12), z15 (or arch13), or z16 (or arch14).
+(or arch11), z14 (or arch12), z15 (or arch13), z16 (or arch14), or arch15.
 
 @menu
 * s390 Options::                Command-line Options.
@@ -71,8 +71,9 @@ are recognized:
 @code{zEC12} (or @code{arch10}),
 @code{z13} (or @code{arch11}),
 @code{z14} (or @code{arch12}),
-@code{z15} (or @code{arch13}), and
-@code{z16} (or @code{arch14}).
+@code{z15} (or @code{arch13}),
+@code{z16} (or @code{arch14}), and
+@code{arch15}.
 
 Assembling an instruction that is not supported on the target
 processor results in an error message.
index a4e8dbc44a50e66264ff41a3eaf37279cf67e302..1d5d97f48631b1c49554ae56cd37e18e71536952 100644 (file)
@@ -43,6 +43,7 @@ if [expr [istarget "s390-*-*"] ||  [istarget "s390x-*-*"]]  then {
     run_dump_test "zarch-arch12" "{as -m64} {as -march=arch12}"
     run_dump_test "zarch-arch13" "{as -m64} {as -march=arch13}"
     run_dump_test "zarch-arch14" "{as -m64} {as -march=arch14}"
+    run_dump_test "zarch-arch15" "{as -m64} {as -march=arch15}"
     run_dump_test "zarch-reloc" "{as -m64}"
     run_dump_test "zarch-operands" "{as -m64} {as -march=z9-109}"
     run_dump_test "zarch-machine" "{as -m64} {as -march=z900}"
diff --git a/gas/testsuite/gas/s390/zarch-arch15.d b/gas/testsuite/gas/s390/zarch-arch15.d
new file mode 100644 (file)
index 0000000..955c970
--- /dev/null
@@ -0,0 +1,102 @@
+#name: s390x opcode
+#objdump: -dr
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+.* <foo>:
+.*:    e7 f1 4d 00 87 89 [      ]*vblend       %v15,%v17,%v20,%v24,13
+.*:    e7 f1 40 00 87 89 [      ]*vblendb      %v15,%v17,%v20,%v24
+.*:    e7 f1 41 00 87 89 [      ]*vblendh      %v15,%v17,%v20,%v24
+.*:    e7 f1 42 00 87 89 [      ]*vblendf      %v15,%v17,%v20,%v24
+.*:    e7 f1 43 00 87 89 [      ]*vblendg      %v15,%v17,%v20,%v24
+.*:    e7 f1 44 00 87 89 [      ]*vblendq      %v15,%v17,%v20,%v24
+.*:    e7 f1 40 fd 87 88 [      ]*veval        %v15,%v17,%v20,%v24,253
+.*:    e7 f1 00 00 d4 54 [      ]*vgem %v15,%v17,13
+.*:    e7 f1 00 00 04 54 [      ]*vgemb        %v15,%v17
+.*:    e7 f1 00 00 14 54 [      ]*vgemh        %v15,%v17
+.*:    e7 f1 00 00 24 54 [      ]*vgemf        %v15,%v17
+.*:    e7 f1 00 00 34 54 [      ]*vgemg        %v15,%v17
+.*:    e7 f1 00 00 44 54 [      ]*vgemq        %v15,%v17
+.*:    e7 f1 00 00 34 d7 [      ]*vuphg        %v15,%v17
+.*:    e7 f1 00 00 34 d5 [      ]*vuplhg       %v15,%v17
+.*:    e7 f1 00 00 34 d6 [      ]*vuplg        %v15,%v17
+.*:    e7 f1 00 00 34 d4 [      ]*vupllg       %v15,%v17
+.*:    e7 f1 40 00 46 f2 [      ]*vavgq        %v15,%v17,%v20
+.*:    e7 f1 40 00 46 f0 [      ]*vavglq       %v15,%v17,%v20
+.*:    e7 f1 00 00 44 db [      ]*vecq %v15,%v17
+.*:    e7 f1 00 00 44 d9 [      ]*veclq        %v15,%v17
+.*:    e7 f1 40 00 46 f8 [      ]*vceqq        %v15,%v17,%v20
+.*:    e7 f1 40 10 46 f8 [      ]*vceqqs       %v15,%v17,%v20
+.*:    e7 f1 40 00 46 fb [      ]*vchq %v15,%v17,%v20
+.*:    e7 f1 40 10 46 fb [      ]*vchqs        %v15,%v17,%v20
+.*:    e7 f1 40 00 46 f9 [      ]*vchlq        %v15,%v17,%v20
+.*:    e7 f1 40 10 46 f9 [      ]*vchlqs       %v15,%v17,%v20
+.*:    e7 f1 00 00 44 53 [      ]*vclzq        %v15,%v17
+.*:    e7 f1 00 00 44 52 [      ]*vctzq        %v15,%v17
+.*:    e7 f1 00 00 44 de [      ]*vlcq %v15,%v17
+.*:    e7 f1 00 00 44 df [      ]*vlpq %v15,%v17
+.*:    e7 f1 40 00 46 ff [      ]*vmxq %v15,%v17,%v20
+.*:    e7 f1 40 00 46 fd [      ]*vmxlq        %v15,%v17,%v20
+.*:    e7 f1 40 00 46 fe [      ]*vmnq %v15,%v17,%v20
+.*:    e7 f1 40 00 46 fc [      ]*vmnlq        %v15,%v17,%v20
+.*:    e7 f1 43 00 87 aa [      ]*vmalg        %v15,%v17,%v20,%v24
+.*:    e7 f1 44 00 87 aa [      ]*vmalq        %v15,%v17,%v20,%v24
+.*:    e7 f1 43 00 87 ab [      ]*vmahg        %v15,%v17,%v20,%v24
+.*:    e7 f1 44 00 87 ab [      ]*vmahq        %v15,%v17,%v20,%v24
+.*:    e7 f1 43 00 87 a9 [      ]*vmalhg       %v15,%v17,%v20,%v24
+.*:    e7 f1 44 00 87 a9 [      ]*vmalhq       %v15,%v17,%v20,%v24
+.*:    e7 f1 43 00 87 ae [      ]*vmaeg        %v15,%v17,%v20,%v24
+.*:    e7 f1 43 00 87 ac [      ]*vmaleg       %v15,%v17,%v20,%v24
+.*:    e7 f1 43 00 87 af [      ]*vmaog        %v15,%v17,%v20,%v24
+.*:    e7 f1 43 00 87 ad [      ]*vmalog       %v15,%v17,%v20,%v24
+.*:    e7 f1 40 00 36 a3 [      ]*vmhg %v15,%v17,%v20
+.*:    e7 f1 40 00 46 a3 [      ]*vmhq %v15,%v17,%v20
+.*:    e7 f1 40 00 36 a1 [      ]*vmlhg        %v15,%v17,%v20
+.*:    e7 f1 40 00 46 a1 [      ]*vmlhq        %v15,%v17,%v20
+.*:    e7 f1 40 00 36 a2 [      ]*vmlg %v15,%v17,%v20
+.*:    e7 f1 40 00 46 a2 [      ]*vmlq %v15,%v17,%v20
+.*:    e7 f1 40 00 36 a6 [      ]*vmeg %v15,%v17,%v20
+.*:    e7 f1 40 00 36 a4 [      ]*vmleg        %v15,%v17,%v20
+.*:    e7 f1 40 00 36 a7 [      ]*vmog %v15,%v17,%v20
+.*:    e7 f1 40 00 36 a5 [      ]*vmlog        %v15,%v17,%v20
+.*:    e7 f1 40 0c d6 b2 [      ]*vd   %v15,%v17,%v20,13,12
+.*:    e7 f1 40 0d 26 b2 [      ]*vdf  %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 36 b2 [      ]*vdg  %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 46 b2 [      ]*vdq  %v15,%v17,%v20,13
+.*:    e7 f1 40 0c d6 b0 [      ]*vdl  %v15,%v17,%v20,13,12
+.*:    e7 f1 40 0d 26 b0 [      ]*vdlf %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 36 b0 [      ]*vdlg %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 46 b0 [      ]*vdlq %v15,%v17,%v20,13
+.*:    e7 f1 40 0c d6 b3 [      ]*vr   %v15,%v17,%v20,13,12
+.*:    e7 f1 40 0d 26 b3 [      ]*vrf  %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 36 b3 [      ]*vrg  %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 46 b3 [      ]*vrq  %v15,%v17,%v20,13
+.*:    e7 f1 40 0c d6 b1 [      ]*vrl  %v15,%v17,%v20,13,12
+.*:    e7 f1 40 0d 26 b1 [      ]*vrlf %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 36 b1 [      ]*vrlg %v15,%v17,%v20,13
+.*:    e7 f1 40 0d 46 b1 [      ]*vrlq %v15,%v17,%v20,13
+.*:    b9 68 00 69 [    ]*clzg %r6,%r9
+.*:    b9 69 00 69 [    ]*ctzg %r6,%r9
+.*:    e3 69 b8 f0 fd 60 [      ]*lxab %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 62 [      ]*lxah %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 64 [      ]*lxaf %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 66 [      ]*lxag %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 68 [      ]*lxaq %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 61 [      ]*llxab        %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 63 [      ]*llxah        %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 65 [      ]*llxaf        %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 67 [      ]*llxag        %r6,-10000\(%r9,%r11\)
+.*:    e3 69 b8 f0 fd 69 [      ]*llxaq        %r6,-10000\(%r9,%r11\)
+.*:    b9 6c b0 69 [    ]*bextg        %r6,%r9,%r11
+.*:    b9 6d b0 69 [    ]*bdepg        %r6,%r9,%r11
+.*:    b9 3e 00 69 [    ]*kimd %r6,%r9
+.*:    b9 3e d0 69 [    ]*kimd %r6,%r9,13
+.*:    b9 3f 00 69 [    ]*klmd %r6,%r9
+.*:    b9 3f d0 69 [    ]*klmd %r6,%r9,13
+.*:    e6 f1 00 d0 04 4e [      ]*vcvbq        %v15,%v17,13
+.*:    e6 f1 00 cf d4 4a [      ]*vcvdq        %v15,%v17,253,12
+.*:    e6 0f 00 00 00 5f [      ]*vtp  %v15
+.*:    e6 0f 0f ff d0 5f [      ]*vtp  %v15,65533
+.*:    e6 0f 1f ff d2 7f [      ]*vtz  %v15,%v17,65533
diff --git a/gas/testsuite/gas/s390/zarch-arch15.s b/gas/testsuite/gas/s390/zarch-arch15.s
new file mode 100644 (file)
index 0000000..43be9d4
--- /dev/null
@@ -0,0 +1,96 @@
+.text
+foo:
+       vblend  %v15,%v17,%v20,%v24,13
+       vblendb %v15,%v17,%v20,%v24
+       vblendh %v15,%v17,%v20,%v24
+       vblendf %v15,%v17,%v20,%v24
+       vblendg %v15,%v17,%v20,%v24
+       vblendq %v15,%v17,%v20,%v24
+       veval   %v15,%v17,%v20,%v24,253
+       vgem    %v15,%v17,13
+       vgemb   %v15,%v17
+       vgemh   %v15,%v17
+       vgemf   %v15,%v17
+       vgemg   %v15,%v17
+       vgemq   %v15,%v17
+       vuphg   %v15,%v17
+       vuplhg  %v15,%v17
+       vuplg   %v15,%v17
+       vupllg  %v15,%v17
+       vavgq   %v15,%v17,%v20
+       vavglq  %v15,%v17,%v20
+       vecq    %v15,%v17
+       veclq   %v15,%v17
+       vceqq   %v15,%v17,%v20
+       vceqqs  %v15,%v17,%v20
+       vchq    %v15,%v17,%v20
+       vchqs   %v15,%v17,%v20
+       vchlq   %v15,%v17,%v20
+       vchlqs  %v15,%v17,%v20
+       vclzq   %v15,%v17
+       vctzq   %v15,%v17
+       vlcq    %v15,%v17
+       vlpq    %v15,%v17
+       vmxq    %v15,%v17,%v20
+       vmxlq   %v15,%v17,%v20
+       vmnq    %v15,%v17,%v20
+       vmnlq   %v15,%v17,%v20
+       vmalg   %v15,%v17,%v20,%v24
+       vmalq   %v15,%v17,%v20,%v24
+       vmahg   %v15,%v17,%v20,%v24
+       vmahq   %v15,%v17,%v20,%v24
+       vmalhg  %v15,%v17,%v20,%v24
+       vmalhq  %v15,%v17,%v20,%v24
+       vmaeg   %v15,%v17,%v20,%v24
+       vmaleg  %v15,%v17,%v20,%v24
+       vmaog   %v15,%v17,%v20,%v24
+       vmalog  %v15,%v17,%v20,%v24
+       vmhg    %v15,%v17,%v20
+       vmhq    %v15,%v17,%v20
+       vmlhg   %v15,%v17,%v20
+       vmlhq   %v15,%v17,%v20
+       vmlg    %v15,%v17,%v20
+       vmlq    %v15,%v17,%v20
+       vmeg    %v15,%v17,%v20
+       vmleg   %v15,%v17,%v20
+       vmog    %v15,%v17,%v20
+       vmlog   %v15,%v17,%v20
+       vd      %v15,%v17,%v20,13,12
+       vdf     %v15,%v17,%v20,13
+       vdg     %v15,%v17,%v20,13
+       vdq     %v15,%v17,%v20,13
+       vdl     %v15,%v17,%v20,13,12
+       vdlf    %v15,%v17,%v20,13
+       vdlg    %v15,%v17,%v20,13
+       vdlq    %v15,%v17,%v20,13
+       vr      %v15,%v17,%v20,13,12
+       vrf     %v15,%v17,%v20,13
+       vrg     %v15,%v17,%v20,13
+       vrq     %v15,%v17,%v20,13
+       vrl     %v15,%v17,%v20,13,12
+       vrlf    %v15,%v17,%v20,13
+       vrlg    %v15,%v17,%v20,13
+       vrlq    %v15,%v17,%v20,13
+       clzg    %r6,%r9
+       ctzg    %r6,%r9
+       lxab    %r6,-10000(%r9,%r11)
+       lxah    %r6,-10000(%r9,%r11)
+       lxaf    %r6,-10000(%r9,%r11)
+       lxag    %r6,-10000(%r9,%r11)
+       lxaq    %r6,-10000(%r9,%r11)
+       llxab   %r6,-10000(%r9,%r11)
+       llxah   %r6,-10000(%r9,%r11)
+       llxaf   %r6,-10000(%r9,%r11)
+       llxag   %r6,-10000(%r9,%r11)
+       llxaq   %r6,-10000(%r9,%r11)
+       bextg   %r6,%r9,%r11
+       bdepg   %r6,%r9,%r11
+       kimd    %r6,%r9
+       kimd    %r6,%r9,13
+       klmd    %r6,%r9
+       klmd    %r6,%r9,13
+       vcvbq   %v15,%v17,13
+       vcvdq   %v15,%v17,253,12
+       vtp     %v15
+       vtp     %v15,65533
+       vtz     %v15,%v17,65533
index 8de037011721e6b506a2ed1088026e87edc09068..8322882410e86ae32a73e76f104737ae8a000fb2 100644 (file)
@@ -45,6 +45,7 @@ enum s390_opcode_cpu_val
     S390_OPCODE_ARCH12,
     S390_OPCODE_ARCH13,
     S390_OPCODE_ARCH14,
+    S390_OPCODE_ARCH15,
     S390_OPCODE_MAXCPU
   };
 
index 1f5729a3db0b18b1d4d880b320f472445fdc6b6b..825188407eed217130e60a96b9b8aaa97adb1788 100644 (file)
@@ -443,6 +443,8 @@ main (void)
       else if (strcmp (cpu_string, "z16") == 0
               || strcmp (cpu_string, "arch14") == 0)
        min_cpu = S390_OPCODE_ARCH14;
+      else if (strcmp (cpu_string, "arch15") == 0)
+       min_cpu = S390_OPCODE_ARCH15;
       else {
        print_error ("Mnemonic \"%s\": Couldn't parse CPU string: %s\n",
                     mnemonic, cpu_string);
index fe0299aa4e5d10b9a4a0f7f02105e2ff4a243972..9d9f0973e55a8c2437323a64b28dd420f78eeb01 100644 (file)
@@ -228,7 +228,9 @@ const struct s390_operand s390_operands[] =
   { 12, 16, 0 },
 #define U16_16      (U12_16 + 1)  /* 16 bit unsigned value starting at 16 */
   { 16, 16, 0 },
-#define U16_32      (U16_16 + 1)  /* 16 bit unsigned value starting at 32 */
+#define U16_20      (U16_16 + 1)  /* 16 bit unsigned value starting at 20 */
+  { 16, 20, 0 },
+#define U16_32      (U16_20 + 1)  /* 16 bit unsigned value starting at 32 */
   { 16, 32, 0 },
 #define U32_16      (U16_32 + 1)  /* 32 bit unsigned value starting at 16 */
   { 32, 16, 0 },
@@ -484,6 +486,8 @@ unused_s390_operands_static_asserts (void)
 #define INSTR_VRI_VVUUU    6, { V_8,V_12,U12_16,U4_32,U4_28,0 }  /* e.g. vftci */
 #define INSTR_VRI_VVUUU2   6, { V_8,V_12,U8_28,U8_16,U4_24,0 }   /* e.g. vpsop */
 #define INSTR_VRI_VR0UU    6, { V_8,R_12,U8_28,U4_24,0,0 }       /* e.g. vcvd  */
+#define INSTR_VRI_VV0UU    6, { V_8,V_12,U8_28,U4_24,0,0 }       /* e.g. vcvdq */
+#define INSTR_VRI_VVV0UV   6, { V_8,V_12,V_16,V_32,U8_24,0 }     /* e.g. veval */
 #define INSTR_VRX_VRRD     6, { V_8,D_20,X_12,B_16,0,0 }         /* e.g. vl    */
 #define INSTR_VRX_VV       6, { V_8,V_12,0,0,0,0 }               /* e.g. vlr   */
 #define INSTR_VRX_VRRDU    6, { V_8,D_20,X_12,B_16,U4_32,0 }     /* e.g. vlrep */
@@ -494,10 +498,10 @@ unused_s390_operands_static_asserts (void)
 #define INSTR_VRS_VRRDU    6, { V_8,R_12,D_20,B_16,U4_32,0 }     /* e.g. vlvg  */
 #define INSTR_VRS_VRRD     6, { V_8,R_12,D_20,B_16,0,0 }         /* e.g. vlvgb */
 #define INSTR_VRS_RRDV     6, { V_32,R_12,D_20,B_16,0,0 }        /* e.g. vlrlr */
-#define INSTR_VRR_0V       6, { V_12,0,0,0,0,0 }                 /* e.g. vtp   */
 #define INSTR_VRR_VRR      6, { V_8,R_12,R_16,0,0,0 }            /* e.g. vlvgp */
 #define INSTR_VRR_VVV0U    6, { V_8,V_12,V_16,U4_32,0,0 }        /* e.g. vmrh  */
 #define INSTR_VRR_VVV0U0   6, { V_8,V_12,V_16,U4_24,0,0 }        /* e.g. vfaeb */
+#define INSTR_VRR_VVV0U02  6, { V_8,V_12,V_16,U4_28,0,0 }        /* e.g. vd */
 #define INSTR_VRR_VVV0U1   INSTR_VRR_VVV0U0                      /* e.g. vfaebs*/
 #define INSTR_VRR_VVV0U2   INSTR_VRR_VVV0U0                      /* e.g. vfaezb*/
 #define INSTR_VRR_VVV0U3   INSTR_VRR_VVV0U0                      /* e.g. vfaezbs*/
@@ -523,6 +527,9 @@ unused_s390_operands_static_asserts (void)
 #define INSTR_VRR_VV0UUU   6, { V_8,V_12,U4_32,U4_28,U4_24,0 }   /* e.g. vcdg  */
 #define INSTR_VRR_VVVU0UV  6, { V_8,V_12,V_16,V_32,U4_28,U4_20 } /* e.g. vfma  */
 #define INSTR_VRR_VV0U0U   6, { V_8,V_12,U4_32,U4_24,0,0 }       /* e.g. vistr */
+#define INSTR_VRR_0V       6, { V_12,0,0,0,0,0 }                 /* e.g. vtp   */
+#define INSTR_VRR_0V0U     6, { V_12,U16_20,0,0,0,0 }            /* e.g. vtp   */
+#define INSTR_VRR_0VVU     6, { V_12,V_16,U16_20,0,0,0 }         /* e.g. vtz   */
 #define INSTR_VRR_0VV0U    6, { V_12,V_16,U4_24,0,0,0 }          /* e.g. vcp   */
 #define INSTR_VRR_RV0U     6, { R_8,V_12,U4_24,0,0,0 }           /* e.g. vcvb  */
 #define INSTR_VRR_RV0UU    6, { R_8,V_12,U4_24,U4_28,0,0 }       /* e.g. vcvb  */
@@ -711,6 +718,8 @@ unused_s390_operands_static_asserts (void)
 #define MASK_VRI_VVUUU    { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
 #define MASK_VRI_VVUUU2   { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
 #define MASK_VRI_VR0UU    { 0xff, 0x00, 0xff, 0x00, 0x00, 0xff }
+#define MASK_VRI_VV0UU    { 0xff, 0x00, 0xff, 0x00, 0x00, 0xff }
+#define MASK_VRI_VVV0UV   { 0xff, 0x00, 0x0f, 0x00, 0x00, 0xff }
 #define MASK_VRX_VRRD     { 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff }
 #define MASK_VRX_VV       { 0xff, 0x00, 0xff, 0xff, 0xf0, 0xff }
 #define MASK_VRX_VRRDU    { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
@@ -721,10 +730,10 @@ unused_s390_operands_static_asserts (void)
 #define MASK_VRS_VRRDU    { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
 #define MASK_VRS_VRRD     { 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff }
 #define MASK_VRS_RRDV     { 0xff, 0xf0, 0x00, 0x00, 0x00, 0xff }
-#define MASK_VRR_0V       { 0xff, 0xf0, 0xff, 0xff, 0xf0, 0xff }
 #define MASK_VRR_VRR      { 0xff, 0x00, 0x0f, 0xff, 0xf0, 0xff }
 #define MASK_VRR_VVV0U    { 0xff, 0x00, 0x0f, 0xff, 0x00, 0xff }
 #define MASK_VRR_VVV0U0   { 0xff, 0x00, 0x0f, 0x0f, 0xf0, 0xff }
+#define MASK_VRR_VVV0U02  { 0xff, 0x00, 0x0f, 0xf0, 0xf0, 0xff }
 #define MASK_VRR_VVV0U1   { 0xff, 0x00, 0x0f, 0x1f, 0xf0, 0xff }
 #define MASK_VRR_VVV0U2   { 0xff, 0x00, 0x0f, 0x2f, 0xf0, 0xff }
 #define MASK_VRR_VVV0U3   { 0xff, 0x00, 0x0f, 0x3f, 0xf0, 0xff }
@@ -750,6 +759,9 @@ unused_s390_operands_static_asserts (void)
 #define MASK_VRR_VV0UUU   { 0xff, 0x00, 0xff, 0x00, 0x00, 0xff }
 #define MASK_VRR_VVVU0UV  { 0xff, 0x00, 0x00, 0xf0, 0x00, 0xff }
 #define MASK_VRR_VV0U0U   { 0xff, 0x00, 0xff, 0x0f, 0x00, 0xff }
+#define MASK_VRR_0V       { 0xff, 0xf0, 0xff, 0xff, 0xf0, 0xff }
+#define MASK_VRR_0V0U     { 0xff, 0xf0, 0xf0, 0x00, 0x00, 0xff }
+#define MASK_VRR_0VVU     { 0xff, 0xf0, 0x00, 0x00, 0x00, 0xff }
 #define MASK_VRR_0VV0U    { 0xff, 0xf0, 0x0f, 0x0f, 0xf0, 0xff }
 #define MASK_VRR_RV0U     { 0xff, 0x00, 0xff, 0x0f, 0xf0, 0xff }
 #define MASK_VRR_RV0UU    { 0xff, 0x00, 0xff, 0x00, 0xf0, 0xff }
index 4610a8fddd7623696671d2b6cb65660d6aa4ed6c..bbc00b103554d66cc3007606ab0d34376c60ae38 100644 (file)
@@ -2072,3 +2072,113 @@ b201 stbear S_RD "store bear" arch14 zarch
 # Processor-Activity-Instrumentation Facility
 
 b28f qpaci S_RD "query processor activity counter information" arch14 zarch
+
+
+# arch15 instructions
+
+e70000000089 vblend VRR_VVVU0V " " arch15 zarch
+e70000000089 vblendb VRR_VVV0V " " arch15 zarch
+e70001000089 vblendh VRR_VVV0V " " arch15 zarch
+e70002000089 vblendf VRR_VVV0V " " arch15 zarch
+e70003000089 vblendg VRR_VVV0V " " arch15 zarch
+e70004000089 vblendq VRR_VVV0V " " arch15 zarch
+
+e70000000088 veval VRI_VVV0UV " " arch15 zarch
+
+e70000000054 vgem VRR_VV0U " " arch15 zarch
+e70000000054 vgemb VRR_VV " " arch15 zarch
+e70000001054 vgemh VRR_VV " " arch15 zarch
+e70000002054 vgemf VRR_VV " " arch15 zarch
+e70000003054 vgemg VRR_VV " " arch15 zarch
+e70000004054 vgemq VRR_VV " " arch15 zarch
+
+e700000030d7 vuphg VRR_VV " " arch15 zarch
+e700000030d5 vuplhg VRR_VV " " arch15 zarch
+e700000030d6 vuplg VRR_VV " " arch15 zarch
+e700000030d4 vupllg VRR_VV " " arch15 zarch
+
+e700000040f2 vavgq VRR_VVV " " arch15 zarch
+e700000040f0 vavglq VRR_VVV " " arch15 zarch
+e700000040db vecq VRR_VV " " arch15 zarch
+e700000040d9 veclq VRR_VV " " arch15 zarch
+e700000040f8 vceqq VRR_VVV " " arch15 zarch
+e700001040f8 vceqqs VRR_VVV " " arch15 zarch
+e700000040fb vchq VRR_VVV " " arch15 zarch
+e700001040fb vchqs VRR_VVV " " arch15 zarch
+e700000040f9 vchlq VRR_VVV " " arch15 zarch
+e700001040f9 vchlqs VRR_VVV " " arch15 zarch
+e70000004053 vclzq VRR_VV " " arch15 zarch
+e70000004052 vctzq VRR_VV " " arch15 zarch
+e700000040de vlcq VRR_VV " " arch15 zarch
+e700000040df vlpq VRR_VV " " arch15 zarch
+e700000040ff vmxq VRR_VVV " " arch15 zarch
+e700000040fd vmxlq VRR_VVV " " arch15 zarch
+e700000040fe vmnq VRR_VVV " " arch15 zarch
+e700000040fc vmnlq VRR_VVV " " arch15 zarch
+e700030000aa vmalg VRR_VVV0V " " arch15 zarch
+e700040000aa vmalq VRR_VVV0V " " arch15 zarch
+e700030000ab vmahg VRR_VVV0V " " arch15 zarch
+e700040000ab vmahq VRR_VVV0V " " arch15 zarch
+e700030000a9 vmalhg VRR_VVV0V " " arch15 zarch
+e700040000a9 vmalhq VRR_VVV0V " " arch15 zarch
+e700030000ae vmaeg VRR_VVV0V " " arch15 zarch
+e700030000ac vmaleg VRR_VVV0V " " arch15 zarch
+e700030000af vmaog VRR_VVV0V " " arch15 zarch
+e700030000ad vmalog VRR_VVV0V " " arch15 zarch
+e700000030a3 vmhg VRR_VVV " " arch15 zarch
+e700000040a3 vmhq VRR_VVV " " arch15 zarch
+e700000030a1 vmlhg VRR_VVV " " arch15 zarch
+e700000040a1 vmlhq VRR_VVV " " arch15 zarch
+e700000030a2 vmlg VRR_VVV " " arch15 zarch
+e700000040a2 vmlq VRR_VVV " " arch15 zarch
+e700000030a6 vmeg VRR_VVV " " arch15 zarch
+e700000030a4 vmleg VRR_VVV " " arch15 zarch
+e700000030a7 vmog VRR_VVV " " arch15 zarch
+e700000030a5 vmlog VRR_VVV " " arch15 zarch
+
+e700000000b2 vd VRR_VVV0UU " " arch15 zarch
+e700000020b2 vdf VRR_VVV0U02 " " arch15 zarch
+e700000030b2 vdg VRR_VVV0U02 " " arch15 zarch
+e700000040b2 vdq VRR_VVV0U02 " " arch15 zarch
+
+e700000000b0 vdl VRR_VVV0UU " " arch15 zarch
+e700000020b0 vdlf VRR_VVV0U02 " " arch15 zarch
+e700000030b0 vdlg VRR_VVV0U02 " " arch15 zarch
+e700000040b0 vdlq VRR_VVV0U02 " " arch15 zarch
+
+e700000000b3 vr VRR_VVV0UU " " arch15 zarch
+e700000020b3 vrf VRR_VVV0U02 " " arch15 zarch
+e700000030b3 vrg VRR_VVV0U02 " " arch15 zarch
+e700000040b3 vrq VRR_VVV0U02 " " arch15 zarch
+
+e700000000b1 vrl VRR_VVV0UU " " arch15 zarch
+e700000020b1 vrlf VRR_VVV0U02 " " arch15 zarch
+e700000030b1 vrlg VRR_VVV0U02 " " arch15 zarch
+e700000040b1 vrlq VRR_VVV0U02 " " arch15 zarch
+
+b968 clzg RRE_RR " " arch15 zarch
+b969 ctzg RRE_RR " " arch15 zarch
+
+e30000000060 lxab RXY_RRRD " " arch15 zarch
+e30000000062 lxah RXY_RRRD " " arch15 zarch
+e30000000064 lxaf RXY_RRRD " " arch15 zarch
+e30000000066 lxag RXY_RRRD " " arch15 zarch
+e30000000068 lxaq RXY_RRRD " " arch15 zarch
+
+e30000000061 llxab RXY_RRRD " " arch15 zarch
+e30000000063 llxah RXY_RRRD " " arch15 zarch
+e30000000065 llxaf RXY_RRRD " " arch15 zarch
+e30000000067 llxag RXY_RRRD " " arch15 zarch
+e30000000069 llxaq RXY_RRRD " " arch15 zarch
+
+b96c bextg RRF_R0RR2 " " arch15 zarch
+b96d bdepg RRF_R0RR2 " " arch15 zarch
+
+b93e kimd RRF_U0RR " " arch15 zarch optparm
+b93f klmd RRF_U0RR " " arch15 zarch optparm
+
+e6000000004e vcvbq VRR_VV0U2 " " arch15 zarch
+e6000000004a vcvdq VRI_VV0UU " " arch15 zarch
+
+e6000000005f vtp VRR_0V0U " " arch15 zarch optparm
+e6000000007f vtz VRR_0VVU " " arch15 zarch