(root)/
binutils-2.41/
opcodes/
ia64-opc-x.c
       1  /* ia64-opc-x.c -- IA-64 `X' opcode table.
       2     Copyright (C) 1998-2023 Free Software Foundation, Inc.
       3     Contributed by Timothy Wall <twall@cygnus.com>
       4  
       5     This file is part of the GNU opcodes library.
       6  
       7     This library is free software; you can redistribute it and/or modify
       8     it under the terms of the GNU General Public License as published by
       9     the Free Software Foundation; either version 3, or (at your option)
      10     any later version.
      11  
      12     It is distributed in the hope that it will be useful, but WITHOUT
      13     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
      14     or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
      15     License for more details.
      16  
      17     You should have received a copy of the GNU General Public License
      18     along with this file; see the file COPYING.  If not, write to the
      19     Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
      20     MA 02110-1301, USA.  */
      21  
      22  #include "ia64-opc.h"
      23  
      24  /* Identify the specific X-unit type.  */
      25  #define X0      IA64_TYPE_X, 0
      26  #define X	IA64_TYPE_X, 1
      27  
      28  /* Instruction bit fields:  */
      29  #define bBtype(x)	(((ia64_insn) ((x) & 0x7)) << 6)
      30  #define bD(x)		(((ia64_insn) ((x) & 0x1)) << 35)
      31  #define bPa(x)		(((ia64_insn) ((x) & 0x1)) << 12)
      32  #define bPr(x)		(((ia64_insn) ((x) & 0x3f)) << 0)
      33  #define bVc(x)		(((ia64_insn) ((x) & 0x1)) << 20)
      34  #define bWha(x)		(((ia64_insn) ((x) & 0x3)) << 33)
      35  #define bX3(x)		(((ia64_insn) ((x) & 0x7)) << 33)
      36  #define bX6(x)		(((ia64_insn) ((x) & 0x3f)) << 27)
      37  #define bY(x)		(((ia64_insn) ((x) & 0x1)) << 26)
      38  
      39  #define mBtype		bBtype (-1)
      40  #define mD		bD (-1)
      41  #define mPa		bPa (-1)
      42  #define mPr		bPr (-1)
      43  #define mVc             bVc (-1)
      44  #define mWha		bWha (-1)
      45  #define mX3             bX3 (-1)
      46  #define mX6		bX6 (-1)
      47  #define mY		bY (-1)
      48  
      49  #define OpX3X6(a,b,c)		(bOp (a) | bX3 (b) | bX6(c)), \
      50  				(mOp | mX3 | mX6)
      51  #define OpX3X6Y(a,b,c,d)	(bOp (a) | bX3 (b) | bX6(c) | bY(d)), \
      52  				(mOp | mX3 | mX6 | mY)
      53  #define OpVc(a,b)		(bOp (a) | bVc (b)), (mOp | mVc)
      54  #define OpPaWhaD(a,b,c,d) \
      55  	(bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
      56  #define OpBtypePaWhaD(a,b,c,d,e) \
      57  	(bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
      58  	(mOp | mBtype | mPa | mWha | mD)
      59  #define OpBtypePaWhaDPr(a,b,c,d,e,f) \
      60  	(bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
      61  	(mOp | mBtype | mPa | mWha | mD | mPr)
      62  
      63  struct ia64_opcode ia64_opcodes_x[] =
      64    {
      65      {"break.x",	X0, OpX3X6 (0, 0, 0x00), {IMMU62}, 0, 0, NULL},
      66      {"nop.x",	X0, OpX3X6Y (0, 0, 0x01, 0), {IMMU62}, 0, 0, NULL},
      67      {"hint.x",	X0, OpX3X6Y (0, 0, 0x01, 1), {IMMU62}, 0, 0, NULL},
      68      {"movl",	X,  OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL},
      69  #define BRL(a,b) \
      70        X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL
      71      {"brl.few",         BRL (0, 0)},
      72      {"brl",             BRL (0, 0)},
      73      {"brl.few.clr",	BRL (0, 1)},
      74      {"brl.clr",		BRL (0, 1)},
      75      {"brl.many",	BRL (1, 0)},
      76      {"brl.many.clr",	BRL (1, 1)},
      77  #undef BRL
      78  #define BRL(a,b,c) \
      79        X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL
      80  #define BRLP(a,b,c) \
      81        X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL
      82      {"brl.cond.sptk.few",	BRL (0, 0, 0)},
      83      {"brl.cond.sptk",		BRLP (0, 0, 0)},
      84      {"brl.cond.sptk.few.clr",	BRL (0, 0, 1)},
      85      {"brl.cond.sptk.clr",	BRLP (0, 0, 1)},
      86      {"brl.cond.spnt.few",	BRL (0, 1, 0)},
      87      {"brl.cond.spnt",		BRLP (0, 1, 0)},
      88      {"brl.cond.spnt.few.clr",	BRL (0, 1, 1)},
      89      {"brl.cond.spnt.clr",	BRLP (0, 1, 1)},
      90      {"brl.cond.dptk.few",	BRL (0, 2, 0)},
      91      {"brl.cond.dptk",		BRLP (0, 2, 0)},
      92      {"brl.cond.dptk.few.clr",	BRL (0, 2, 1)},
      93      {"brl.cond.dptk.clr",	BRLP (0, 2, 1)},
      94      {"brl.cond.dpnt.few",	BRL (0, 3, 0)},
      95      {"brl.cond.dpnt",		BRLP (0, 3, 0)},
      96      {"brl.cond.dpnt.few.clr",	BRL (0, 3, 1)},
      97      {"brl.cond.dpnt.clr",	BRLP (0, 3, 1)},
      98      {"brl.cond.sptk.many",	BRL (1, 0, 0)},
      99      {"brl.cond.sptk.many.clr",	BRL (1, 0, 1)},
     100      {"brl.cond.spnt.many",	BRL (1, 1, 0)},
     101      {"brl.cond.spnt.many.clr",	BRL (1, 1, 1)},
     102      {"brl.cond.dptk.many",	BRL (1, 2, 0)},
     103      {"brl.cond.dptk.many.clr",	BRL (1, 2, 1)},
     104      {"brl.cond.dpnt.many",	BRL (1, 3, 0)},
     105      {"brl.cond.dpnt.many.clr",	BRL (1, 3, 1)},
     106      {"brl.sptk.few",		BRL (0, 0, 0)},
     107      {"brl.sptk",		BRLP (0, 0, 0)},
     108      {"brl.sptk.few.clr",	BRL (0, 0, 1)},
     109      {"brl.sptk.clr",		BRLP (0, 0, 1)},
     110      {"brl.spnt.few",		BRL (0, 1, 0)},
     111      {"brl.spnt",		BRLP (0, 1, 0)},
     112      {"brl.spnt.few.clr",	BRL (0, 1, 1)},
     113      {"brl.spnt.clr",		BRLP (0, 1, 1)},
     114      {"brl.dptk.few",		BRL (0, 2, 0)},
     115      {"brl.dptk",		BRLP (0, 2, 0)},
     116      {"brl.dptk.few.clr",	BRL (0, 2, 1)},
     117      {"brl.dptk.clr",		BRLP (0, 2, 1)},
     118      {"brl.dpnt.few",		BRL (0, 3, 0)},
     119      {"brl.dpnt",		BRLP (0, 3, 0)},
     120      {"brl.dpnt.few.clr",	BRL (0, 3, 1)},
     121      {"brl.dpnt.clr",		BRLP (0, 3, 1)},
     122      {"brl.sptk.many",		BRL (1, 0, 0)},
     123      {"brl.sptk.many.clr",	BRL (1, 0, 1)},
     124      {"brl.spnt.many",		BRL (1, 1, 0)},
     125      {"brl.spnt.many.clr",	BRL (1, 1, 1)},
     126      {"brl.dptk.many",		BRL (1, 2, 0)},
     127      {"brl.dptk.many.clr",	BRL (1, 2, 1)},
     128      {"brl.dpnt.many",		BRL (1, 3, 0)},
     129      {"brl.dpnt.many.clr",	BRL (1, 3, 1)},
     130  #undef BRL
     131  #undef BRLP
     132  #define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0, 0, NULL
     133  #define BRLP(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, PSEUDO, 0, NULL
     134      {"brl.call.sptk.few",	BRL (0, 0, 0)},
     135      {"brl.call.sptk",		BRLP (0, 0, 0)},
     136      {"brl.call.sptk.few.clr",	BRL (0, 0, 1)},
     137      {"brl.call.sptk.clr",	BRLP (0, 0, 1)},
     138      {"brl.call.spnt.few",	BRL (0, 1, 0)},
     139      {"brl.call.spnt",		BRLP (0, 1, 0)},
     140      {"brl.call.spnt.few.clr",	BRL (0, 1, 1)},
     141      {"brl.call.spnt.clr",	BRLP (0, 1, 1)},
     142      {"brl.call.dptk.few",	BRL (0, 2, 0)},
     143      {"brl.call.dptk",		BRLP (0, 2, 0)},
     144      {"brl.call.dptk.few.clr",	BRL (0, 2, 1)},
     145      {"brl.call.dptk.clr",	BRLP (0, 2, 1)},
     146      {"brl.call.dpnt.few",	BRL (0, 3, 0)},
     147      {"brl.call.dpnt",		BRLP (0, 3, 0)},
     148      {"brl.call.dpnt.few.clr",	BRL (0, 3, 1)},
     149      {"brl.call.dpnt.clr",	BRLP (0, 3, 1)},
     150      {"brl.call.sptk.many",	BRL (1, 0, 0)},
     151      {"brl.call.sptk.many.clr",	BRL (1, 0, 1)},
     152      {"brl.call.spnt.many",	BRL (1, 1, 0)},
     153      {"brl.call.spnt.many.clr",	BRL (1, 1, 1)},
     154      {"brl.call.dptk.many",	BRL (1, 2, 0)},
     155      {"brl.call.dptk.many.clr",	BRL (1, 2, 1)},
     156      {"brl.call.dpnt.many",	BRL (1, 3, 0)},
     157      {"brl.call.dpnt.many.clr",	BRL (1, 3, 1)},
     158  #undef BRL
     159  #undef BRLP
     160      {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
     161    };
     162  
     163  #undef X0
     164  #undef X
     165  
     166  #undef bBtype
     167  #undef bD
     168  #undef bPa
     169  #undef bPr
     170  #undef bVc
     171  #undef bWha
     172  #undef bX3
     173  #undef bX6
     174  
     175  #undef mBtype
     176  #undef mD
     177  #undef mPa
     178  #undef mPr
     179  #undef mVc
     180  #undef mWha
     181  #undef mX3
     182  #undef mX6
     183  
     184  #undef OpX3X6
     185  #undef OpVc
     186  #undef OpPaWhaD
     187  #undef OpBtypePaWhaD
     188  #undef OpBtypePaWhaDPr