bitfields.isa revision 2025
1////////////////////////////////////////////////////////////////////
2//
3// Bitfield definitions.
4//
5
6// Universal (format-independent) fields
7def bitfield OPCODE_HI  <31:29>;
8def bitfield OPCODE_LO  <28:26>;
9
10def bitfield SPECIAL_HI   < 5: 3>;
11def bitfield SPECIAL_HI   < 2: 0>;
12
13def bitfield REGIMM_HI     <20:19>;
14def bitfield REGIMM_LO     <18:16>;
15
16def bitfield RS		<25:21>;
17def bitfield RT		<20:16>;
18
19// Integer operate format(s>;
20def bitfield INTIMM	<15: 0>; // integer immediate (literal)
21def bitfield IMM	<12:12>; // immediate flag
22def bitfield INTFUNC	<11: 5>; // function code
23def bitfield RD		<15:11>; // dest reg
24
25// Memory format
26def signed bitfield MEMDISP <15: 0>; // displacement
27def        bitfield MEMFUNC <15: 0>; // function code (same field, unsigned)
28
29// Memory-format jumps
30def bitfield JMPFUNC	<15:14>; // function code (disp<15:14>)
31def bitfield JMPHINT	<13: 0>; // tgt Icache idx hint (disp<13:0>)
32
33// Branch format
34def signed bitfield BRDISP <20: 0>; // displacement
35
36// Floating-point operate format
37def bitfield FMT	  <25:21>;
38def bitfield FT		  <20:16>;
39def bitfield FS		  <15:11>;
40def bitfield FD		  <10: 6>;
41
42def bitfield FP_FULLFUNC  <15: 5>; // complete function code
43    def bitfield FP_TRAPMODE  <15:13>; // trapping mode
44    def bitfield FP_ROUNDMODE <12:11>; // rounding mode
45    def bitfield FP_TYPEFUNC  <10: 5>; // type+func: handiest for decoding
46        def bitfield FP_SRCTYPE   <10: 9>; // source reg type
47        def bitfield FP_SHORTFUNC < 8: 5>; // short function code
48        def bitfield FP_SHORTFUNC_TOP2 <8:7>; // top 2 bits of short func code
49
50// PALcode format
51def bitfield PALFUNC	<25: 0>; // function code
52
53// EV5 PAL instructions:
54// HW_LD/HW_ST
55def bitfield HW_LDST_PHYS  <15>; // address is physical
56def bitfield HW_LDST_ALT   <14>; // use ALT_MODE IPR
57def bitfield HW_LDST_WRTCK <13>; // HW_LD only: fault if no write acc
58def bitfield HW_LDST_QUAD  <12>; // size: 0=32b, 1=64b
59def bitfield HW_LDST_VPTE  <11>; // HW_LD only: is PTE fetch
60def bitfield HW_LDST_LOCK  <10>; // HW_LD only: is load locked
61def bitfield HW_LDST_COND  <10>; // HW_ST only: is store conditional
62def signed bitfield HW_LDST_DISP  <9:0>; // signed displacement
63
64// HW_REI
65def bitfield HW_REI_TYP <15:14>; // type: stalling vs. non-stallingk
66def bitfield HW_REI_MBZ <13: 0>; // must be zero
67
68// HW_MTPR/MW_MFPR
69def bitfield HW_IPR_IDX <15:0>;	 // IPR index
70
71// M5 instructions
72def bitfield M5FUNC <7:0>;
73