82 #define GENERIC_PAIR(mask,high) \
83 (high),((mask)&~(high))
87 #define RI_PAIR(op,f,h) GENERIC_PAIR(L3_RI_MASK, \
88 L3_RI | L3_RI_OP(op) | ((f)?L3_RI_F:0) | ((h)?L3_RI_H:0) )
90 #define RR_PAIR(f,op) GENERIC_PAIR(L3_RR_MASK, \
91 L3_RR | ((f)?L3_RR_F:0) | L3_RR_OP(op) \
92 | ((((op)&L3_OP_MASK)==L3_SH) ? ((op)&L3_ARITH?0xc0:0x80) : 0 ))
94 #define LEADZ_PAIR(f) GENERIC_PAIR(L3_LEADZ_MASK, \
95 L3_LEADZ | ((f)?L3_LEADZ_F:0))
97 #define POPC_PAIR(f) GENERIC_PAIR(L3_POPC_MASK, \
98 L3_POPC | ((f)?L3_POPC_F:0))
100 #define RRR_PAIR() GENERIC_PAIR(L3_RRR_MASK, \
103 #define RM_PAIR(s,p,q) GENERIC_PAIR(L3_RM_MASK, \
104 L3_RM | ((s)?L3_RM_S:0) | ((p)?L3_RM_P:0) | ((q)?L3_RM_Q:0) )
106 #define RRM_PAIR(s,p,q,mode) GENERIC_PAIR(L3_RRM_MASK, \
107 L3_RRM | ((s)?L3_RRM_S:0) | ((p)?L3_RRM_P:0) \
108 | ((q)?L3_RRM_Q:0) | L3_RRM_MODE(mode) )
110 #define BR_PAIR(cond,r) GENERIC_PAIR(L3_BR_MASK, \
111 L3_BR | L3_BR_COND(cond) | ((r)?L3_BR_R:0) )
113 #define SCC_PAIR(cond) GENERIC_PAIR (L3_SCC_MASK, L3_SCC | L3_BR_COND (cond))
115 #define SLS_PAIR(s) GENERIC_PAIR(L3_SLS_MASK, \
116 L3_SLS | ((s)?L3_SLS_S:0) )
118 #define SLI_PAIR() GENERIC_PAIR(L3_SLI_MASK, \
121 #define SPLS_PAIR(s,mode,p,q) GENERIC_PAIR(L3_SPLS_MASK, \
122 L3_SPLS | L3_SPLS_MODE(mode) | ((s)?L3_SPLS_S:0) \
123 | ((p)?L3_SPLS_P:0) | ((q)?L3_SPLS_Q:0) )
125 #define PUNT_PAIR() GENERIC_PAIR(L3_PUNT_MASK, \
128 #define SBR_PAIR(cond,op,r) GENERIC_PAIR(L3_SBR_MASK, \
129 L3_SBR|L3_SBR_COND(cond)|L3_SBR_OP(op)|((r)?L3_SBR_R:0))
131 #define PCREL_SBR_PAIR(cond) GENERIC_PAIR(L3_SBR_MASK|L3_RS1(0x1f)| \
133 L3_SBR|L3_SBR_COND(cond)|L3_SBR_OP(L3_ADD)|L3_RS1(2)|L3_SBR_R)
137 #define RI_MOV_PAIR(op,f,h) GENERIC_PAIR(L3_RI_MASK|L3_RS1(31), \
138 L3_RI|L3_RI_OP(op)|((f)?L3_RI_F:0)|((h)?L3_RI_H:0)|(((op)==L3_AND)?L3_RS1(1):0))
141 #define RR_MOV_PAIR(f,op) GENERIC_PAIR(L3_RR_MASK|0x007c0000, \
142 L3_RR | ((f)?L3_RR_F:0) | L3_RR_OP(op) \
143 | (((op)&L3_ARITH)?1<<6:0) | ((op)==L3_SH?1<<7:0) )
162 {
"nop", 0x00000001,0xfffffffe ,
"",
F_RI, 0},
163 {
"nop(RI)", 0x00000000,0x8f820000 ,
"",
F_RI, 0},
164 {
"nop(RR)", 0xc0000000,0x3f820000 ,
"",
F_RR, 0},
165 {
"nop(RRR)", 0xd0000000,0x2f820000 ,
"",
F_RRR, 0},
166 {
"nop(BR)", 0xe2000000,0x1c000000 ,
"",
F_BR, 0},
167 {
"nop(SLI)", 0xf0020000,0x0f810000 ,
"",
F_SLI, 0},
168 {
"nop(SPLS)", 0xf0030000,0x0f808000 ,
"",
F_SPLS, 0},
169 {
"nop(SBR)", 0xf203c000,0x0c003800 ,
"",
F_SBR, 0},
340 {
"ld", 0x80030004,0x7000fffb ,
"[++1],d",
F_RM,0},
341 {
"ld", 0x80010004,0x7002fffb ,
"[1++],d",
F_RM,0},
342 {
"ld", 0x8003fffc,0x70000003 ,
"[--1],d",
F_RM,0},
343 {
"ld", 0x8001fffc,0x70020003 ,
"[1--],d",
F_RM,0},
351 {
"ld", 0x80020000,0x707d0000 ,
"[o],d",
F_RM,0},
357 {
"uld", 0x80030004,0x7000fffb ,
"[++1],d",
F_ALIAS,0},
358 {
"uld", 0x80010004,0x7002fffb ,
"[1++],d",
F_ALIAS,0},
359 {
"uld", 0x8003fffc,0x70000003 ,
"[--1],d",
F_ALIAS,0},
360 {
"uld", 0x8001fffc,0x70020003 ,
"[1--],d",
F_ALIAS,0},
374 {
"ld.h", 0xf0030c02,0x0000f3fd ,
"[++1],d",
F_HALF|
F_SPLS,0},
375 {
"ld.h", 0xf0030402,0x0000fbfd ,
"[1++],d",
F_HALF|
F_SPLS,0},
376 {
"ld.h", 0xf0030ffe,0x0000f001 ,
"[--1],d",
F_HALF|
F_SPLS,0},
377 {
"ld.h", 0xf00307fe,0x0000f801 ,
"[1--],d",
F_HALF|
F_SPLS,0},
384 {
"ld.h", 0xf0030800,0x007cf400 ,
"[i],d",
F_HALF|
F_SPLS,0},
390 {
"uld.h", 0xf0031c02,0x0000e3fd ,
"[++1],d",
F_HALF|
F_SPLS,0},
391 {
"uld.h", 0xf0031402,0x0000ebfd ,
"[1++],d",
F_HALF|
F_SPLS,0},
392 {
"uld.h", 0xf0031ffe,0x0000e001 ,
"[--1],d",
F_HALF|
F_SPLS,0},
393 {
"uld.h", 0xf00317fe,0x0000e801 ,
"[1--],d",
F_HALF|
F_SPLS,0},
400 {
"uld.h", 0xf0031800,0x007ce400 ,
"[i],d",
F_HALF|
F_SPLS,0},
406 {
"ld.b", 0xf0034c01,0x0000b3fe ,
"[++1],d",
F_BYTE|
F_SPLS,0},
407 {
"ld.b", 0xf0034401,0x0000bbfe ,
"[1++],d",
F_BYTE|
F_SPLS,0},
408 {
"ld.b", 0xf0034fff,0x0000b000 ,
"[--1],d",
F_BYTE|
F_SPLS,0},
409 {
"ld.b", 0xf00347ff,0x0000b800 ,
"[1--],d",
F_BYTE|
F_SPLS,0},
416 {
"ld.b", 0xf0034800,0x007cb400 ,
"[i],d",
F_BYTE|
F_SPLS,0},
422 {
"uld.b", 0xf0035c01,0x0000a3fe ,
"[++1],d",
F_BYTE|
F_SPLS,0},
423 {
"uld.b", 0xf0035401,0x0000abfe ,
"[1++],d",
F_BYTE|
F_SPLS,0},
424 {
"uld.b", 0xf0035fff,0x0000a000 ,
"[--1],d",
F_BYTE|
F_SPLS,0},
425 {
"uld.b", 0xf00357ff,0x0000a800 ,
"[1--],d",
F_BYTE|
F_SPLS,0},
432 {
"uld.b", 0xf0035800,0x007ca400 ,
"[i],d",
F_BYTE|
F_SPLS,0},
463 {
"punt", 0xf003ff47, 0x00000000 ,
"",
F_PUNT, 0},
478 {
"st", 0x90030004,0x6000fffb ,
"d,[++1]",
F_RM,0},
479 {
"st", 0x90010004,0x6002fffb ,
"d,[1++]",
F_RM,0},
480 {
"st", 0x9003fffc,0x60000003 ,
"d,[--1]",
F_RM,0},
481 {
"st", 0x9001fffc,0x60020003 ,
"d,[1--]",
F_RM,0},
489 {
"st", 0x90020000,0x607d0000 ,
"d,[o]",
F_RM,0},
495 {
"st.h", 0xf0032c02,0x0000d3fd ,
"d,[++1]",
F_HALF|
F_SPLS,0},
496 {
"st.h", 0xf0032402,0x0000dbfd ,
"d,[1++]",
F_HALF|
F_SPLS,0},
497 {
"st.h", 0xf0032ffe,0x0000d001 ,
"d,[--1]",
F_HALF|
F_SPLS,0},
498 {
"st.h", 0xf00327fe,0x0000d801 ,
"d,[1--]",
F_HALF|
F_SPLS,0},
505 {
"st.h", 0xf0032800,0x007cd400 ,
"d,[i]",
F_HALF|
F_SPLS,0},
511 {
"st.b", 0xf0036c01,0x000093fe ,
"d,[++1]",
F_BYTE|
F_SPLS,0},
512 {
"st.b", 0xf0036401,0x00009bfe ,
"d,[1++]",
F_BYTE|
F_SPLS,0},
513 {
"st.b", 0xf0036fff,0x00009000 ,
"d,[--1]",
F_BYTE|
F_SPLS,0},
514 {
"st.b", 0xf00367ff,0x00009800 ,
"d,[1--]",
F_BYTE|
F_SPLS,0},
521 {
"st.b", 0xf0036800,0x007c9400 ,
"d,[i]",
F_BYTE|
F_SPLS,0},
#define RI_PAIR(op, f, h)
#define RR_MOV_PAIR(f, op)
#define RRM_PAIR(s, p, q, mode)
const int bfd_lanai_num_opcodes
struct lanai_opcode lanai_opcodes[]
#define SPLS_PAIR(s, mode, p, q)
#define PCREL_SBR_PAIR(cond)
#define SBR_PAIR(cond, op, r)
#define RI_MOV_PAIR(op, f, h)
const char * architecture_pname[]
#define L3_UNSIGNED_FULLWORD
#define L3_UNSIGNED_HALFWORD
#define L3_SIGNED_FULLWORD
#define L3_SIGNED_HALFWORD