* opcodes/s390-opc.c: Add "low or high" and "not low or high"
authorAndreas Jaeger <aj@suse.de>
Thu, 23 Aug 2001 06:38:56 +0000 (06:38 +0000)
committerAndreas Jaeger <aj@suse.de>
Thu, 23 Aug 2001 06:38:56 +0000 (06:38 +0000)
branch instructions for gcc 3.0.
* opcodes/s390-opc.txt: Likewise.

opcodes/ChangeLog
opcodes/s390-opc.c
opcodes/s390-opc.txt

index 87af331..ec5bdcc 100644 (file)
@@ -1,3 +1,9 @@
+2001-08-23  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * opcodes/s390-opc.c: Add "low or high" and "not low or high"
+       branch instructions for gcc 3.0.
+       * opcodes/s390-opc.txt: Likewise.
+
 2001-08-21  Andreas Jaeger  <aj@suse.de>
 
        * i960-dis.c: Add parameters for prototypes
index 52aa617..f081177 100644 (file)
@@ -45,15 +45,15 @@ const struct s390_operand s390_operands[] =
 #define R_8    1                  /* GPR starting at position 8 */
   { 4, 8, S390_OPERAND_GPR },
 #define R_12   2                  /* GPR starting at position 12 */
-  { 4, 12, S390_OPERAND_GPR },    
+  { 4, 12, S390_OPERAND_GPR },
 #define R_16   3                  /* GPR starting at position 16 */
-  { 4, 16, S390_OPERAND_GPR },    
+  { 4, 16, S390_OPERAND_GPR },
 #define R_20   4                  /* GPR starting at position 20 */
-  { 4, 20, S390_OPERAND_GPR },    
+  { 4, 20, S390_OPERAND_GPR },
 #define R_24   5                  /* GPR starting at position 24 */
-  { 4, 24, S390_OPERAND_GPR },    
+  { 4, 24, S390_OPERAND_GPR },
 #define R_28   6                  /* GPR starting at position 28 */
-  { 4, 28, S390_OPERAND_GPR },    
+  { 4, 28, S390_OPERAND_GPR },
 #define R_32   7                  /* GPR starting at position 32 */
   { 4, 32, S390_OPERAND_GPR },
 
@@ -87,24 +87,24 @@ const struct s390_operand s390_operands[] =
   { 4, 12, S390_OPERAND_CR },
 
 #define B_16   21                 /* Base register starting at position 16 */
-  { 4, 16, S390_OPERAND_BASE|S390_OPERAND_GPR },   
+  { 4, 16, S390_OPERAND_BASE|S390_OPERAND_GPR },
 #define B_32   22                 /* Base register starting at position 32 */
-  { 4, 32, S390_OPERAND_BASE|S390_OPERAND_GPR },   
+  { 4, 32, S390_OPERAND_BASE|S390_OPERAND_GPR },
 
 #define X_12   23                 /* Index register starting at position 12 */
-  { 4, 12, S390_OPERAND_INDEX|S390_OPERAND_GPR },                   
+  { 4, 12, S390_OPERAND_INDEX|S390_OPERAND_GPR },
 
 #define D_20   24                 /* Displacement starting at position 20 */
-  { 12, 20, S390_OPERAND_DISP },  
+  { 12, 20, S390_OPERAND_DISP },
 #define D_36   25                 /* Displacement starting at position 36 */
-  { 12, 36, S390_OPERAND_DISP },  
+  { 12, 36, S390_OPERAND_DISP },
 
 #define L4_8   26                 /* 4 bit length starting at position 8 */
-  { 4, 8, S390_OPERAND_LENGTH },                         
+  { 4, 8, S390_OPERAND_LENGTH },
 #define L4_12  27                 /* 4 bit length starting at position 12 */
   { 4, 12, S390_OPERAND_LENGTH },
 #define L8_8   28                 /* 8 bit length starting at position 8 */
-  { 8, 8, S390_OPERAND_LENGTH },                    
+  { 8, 8, S390_OPERAND_LENGTH },
 
 #define U4_8   29                 /* 4 bit unsigned value starting at 8 */
   { 4, 8, 0 },
@@ -115,15 +115,15 @@ const struct s390_operand s390_operands[] =
 #define U4_20  32                 /* 4 bit unsigned value starting at 20 */
   { 4, 20, 0 },
 #define U8_8   33                 /* 8 bit unsigned value starting at 8 */
-  { 8, 8, 0 },                    
+  { 8, 8, 0 },
 #define U8_16  34                 /* 8 bit unsigned value starting at 16 */
   { 8, 16, 0 },
 #define I16_16 35                 /* 16 bit signed value starting at 16 */
   { 16, 16, S390_OPERAND_SIGNED },
 #define U16_16 36                 /* 16 bit unsigned value starting at 16 */
-  { 16, 16, 0 },                  
+  { 16, 16, 0 },
 #define J16_16 37                 /* PC relative jump offset at 16 */
-  { 16, 16, S390_OPERAND_PCREL },  
+  { 16, 16, S390_OPERAND_PCREL },
 #define J32_16 38                 /* PC relative long offset at 16 */
   { 32, 16, S390_OPERAND_PCREL }
 };
@@ -204,7 +204,7 @@ const struct s390_operand s390_operands[] =
 #define INSTR_RIL_A  6, { R_8,J32_16,0,0,0,0 }           /* e.g. brasl */
 #define INSTR_RIL_B  6, { J32_16,0,0,0,0,0 }             /* e.g. jg   */
 #define INSTR_RIL_MA 6, { R_8,J32_16,0,0,0,0 }           /* e.g. brcl */
+
 #define MASK_E      { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
 #define MASK_RR     { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
 #define MASK_RR_M   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
@@ -273,7 +273,7 @@ const struct s390_operand s390_operands[] =
 #define MASK_RIL_B  { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
 #define MASK_RIL_M  { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
 #define MASK_RIL_MA { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
+
 /* The opcode formats table (blueprints for .insn pseudo mnemonic). */
 
 const struct s390_opcode s390_opformats[] =
@@ -506,10 +506,12 @@ const struct s390_opcode s390_opcodes[] =
   { "jgnl",  OP16(0xc0b4LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jgnm",  OP16(0xc0b4LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jghe",  OP16(0xc0a4LL), MASK_RIL_B, INSTR_RIL_B, 2},
+  { "jgnlh", OP16(0xc094LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jge",   OP16(0xc084LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jgz",   OP16(0xc084LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jgne",  OP16(0xc074LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jgnz",  OP16(0xc074LL), MASK_RIL_B, INSTR_RIL_B, 2},
+  { "jglh",  OP16(0xc064LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jgnhe", OP16(0xc054LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jgl",   OP16(0xc044LL), MASK_RIL_B, INSTR_RIL_B, 2},
   { "jgm",   OP16(0xc044LL), MASK_RIL_B, INSTR_RIL_B, 2},
@@ -751,10 +753,12 @@ const struct s390_opcode s390_opcodes[] =
   { "jnl",   OP16(0xa7b4LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jnm",   OP16(0xa7b4LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jhe",   OP16(0xa7a4LL), MASK_RI_B, INSTR_RI_B, 3},
+  { "jnlh",  OP16(0xa794LL), MASK_RI_B, INSTR_RI_B, 3},
   { "je",    OP16(0xa784LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jz",    OP16(0xa784LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jne",   OP16(0xa774LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jnz",   OP16(0xa774LL), MASK_RI_B, INSTR_RI_B, 3},
+  { "jlh",   OP16(0xa764LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jnhe",  OP16(0xa754LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jl",    OP16(0xa744LL), MASK_RI_B, INSTR_RI_B, 3},
   { "jm",    OP16(0xa744LL), MASK_RI_B, INSTR_RI_B, 3},
@@ -873,10 +877,12 @@ const struct s390_opcode s390_opcodes[] =
   { "bnl",   OP16(0x47b0LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bnm",   OP16(0x47b0LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bhe",   OP16(0x47a0LL), MASK_RX_B, INSTR_RX_B, 3},
+  { "bnlh",  OP16(0x4790LL), MASK_RX_B, INSTR_RX_B, 3},
   { "be",    OP16(0x4780LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bz",    OP16(0x4780LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bne",   OP16(0x4770LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bnz",   OP16(0x4770LL), MASK_RX_B, INSTR_RX_B, 3},
+  { "blh",   OP16(0x4760LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bnhe",  OP16(0x4750LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bl",    OP16(0x4740LL), MASK_RX_B, INSTR_RX_B, 3},
   { "bm",    OP16(0x4740LL), MASK_RX_B, INSTR_RX_B, 3},
@@ -955,10 +961,12 @@ const struct s390_opcode s390_opcodes[] =
   { "bnlr",  OP16(0x07b0LL), MASK_RR_B, INSTR_RR_B, 3},
   { "bnmr",  OP16(0x07b0LL), MASK_RR_B, INSTR_RR_B, 3},
   { "bher",  OP16(0x07a0LL), MASK_RR_B, INSTR_RR_B, 3},
+  { "bnlhr", OP16(0x0790LL), MASK_RR_B, INSTR_RR_B, 3},
   { "ber",   OP16(0x0780LL), MASK_RR_B, INSTR_RR_B, 3},
   { "bzr",   OP16(0x0780LL), MASK_RR_B, INSTR_RR_B, 3},
   { "bner",  OP16(0x0770LL), MASK_RR_B, INSTR_RR_B, 3},
   { "bnzr",  OP16(0x0770LL), MASK_RR_B, INSTR_RR_B, 3},
+  { "blhr",  OP16(0x0760LL), MASK_RR_B, INSTR_RR_B, 3},
   { "bnher", OP16(0x0750LL), MASK_RR_B, INSTR_RR_B, 3},
   { "blr",   OP16(0x0740LL), MASK_RR_B, INSTR_RR_B, 3},
   { "bmr",   OP16(0x0740LL), MASK_RR_B, INSTR_RR_B, 3},
@@ -983,6 +991,3 @@ const struct s390_opcode s390_opcodes[] =
 
 const int s390_num_opcodes =
   sizeof (s390_opcodes) / sizeof (s390_opcodes[0]);
-
-
-
index 746907b..f713449 100644 (file)
@@ -265,10 +265,12 @@ a701 tml RI_U "test under mask low" esa
 0740 blr RR_B "branch on low" esa
 0740 bmr RR_B "branch on minus / if mixed" esa
 0750 bnher RR_B "branch on not high or equal" esa
+0760 blhr RR_B "branch on low or high" esa
 0770 bner RR_B "branch on not equal" esa
 0770 bnzr RR_B "branch on not zero / if not zeros" esa
 0780 ber RR_B "branch on equal" esa
 0780 bzr RR_B "branch on zero / if zeros" esa
+0790 bnlhr RR_B "branch on not low or high" esa
 07a0 bher RR_B "branch on high or equal" esa
 07b0 bnlr RR_B "branch on not low" esa
 07b0 bnmr RR_B "branch on not minus / if not mixed" esa
@@ -285,10 +287,12 @@ a701 tml RI_U "test under mask low" esa
 4740 bl RX_B "branch on low" esa
 4740 bm RX_B "branch on minus / if mixed" esa
 4750 bnhe RX_B "branch on not high or equal" esa
+4760 blh RX_B "branch on low or high" esa
 4770 bne RX_B "branch on not equal" esa
 4770 bnz RX_B "branch on not zero / if not zeros" esa
 4780 be RX_B "branch on equal" esa
 4780 bz RX_B "branch on zero / if zeros" esa
+4790 bnlh RX_B "branch on not low or high" esa
 47a0 bhe RX_B "branch on high or equal" esa
 47b0 bnl RX_B "branch on not low" esa
 47b0 bnm RX_B "branch on not minus / if not mixed" esa
@@ -304,10 +308,12 @@ a734 jnle RI_B "jump on not low or equal" esa
 a744 jl RI_B "jump on A low" esa
 a744 jm RI_B "jump on minus / if mixed" esa
 a754 jnhe RI_B "jump on not high or equal" esa
+a764 jlh RI_B "jump on low or high" esa
 a774 jne RI_B "jump on A not equal B" esa
 a774 jnz RI_B "jump on not zero / if not zeros" esa
 a784 je RI_B "jump on A equal B" esa
 a784 jz RI_B "jump on zero / if zeros" esa
+a794 jnlh RI_B "jump on not low or high" esa
 a7a4 jhe RI_B "jump on high or equal" esa
 a7b4 jnl RI_B "jump on A not low" esa
 a7b4 jnm RI_B "jump on not minus / if not mixed" esa
@@ -500,10 +506,12 @@ c034 jgnle RIL_B "jump long on not low or equal" esame
 c044 jgl RIL_B "jump long on low" esame
 c044 jgm RIL_B "jump long on minus / if mixed" esame
 c054 jgnhe RIL_B "jump long on not high or equal" esame
+c064 jglh RIL_B "jump long on low or high" esame
 c074 jgne RIL_B "jump long on not equal" esame
 c074 jgnz RIL_B "jump long on not zero / if not zeros" esame
 c084 jge RIL_B "jump long on equal" esame
 c084 jgz RIL_B "jump long on zero / if zeros" esame
+c094 jgnlh RIL_B "jump long on not low or high" esame
 c0a4 jghe RIL_B "jump long on high or equal" esame
 c0b4 jgnl RIL_B "jump long on not low" esame
 c0b4 jgnm RIL_B "jump long on not minus / if not mixed" esame