riscv_codec/
immediates.rs1use riscv_codec_proc_macros::make_immediate;
2use alloc::fmt::{Display, Formatter};
3use alloc::format;
4use alloc::string::String;
5
6make_immediate!(IImmediate true false (0 12 20));
8make_immediate!(SImmediate true false (0 5 7) (5 7 25));
9make_immediate!(UImmediate true false (0 20 12));
10make_immediate!(JImmediate true false (12 8 12) (11 1 20) (1 10 21) (20 1 31));
11make_immediate!(BImmediate true false (11 1 7) (1 4 8) (5 6 25) (12 1 31));
12make_immediate!(Shamt false false (0 6 20));
13make_immediate!(ShamtW false false (0 5 20));
14
15make_immediate!(CWideImmediate false true (3 1 5) (2 1 6) (6 4 7) (4 2 11));
16make_immediate!(CDImmediate false true (6 2 5) (3 3 10));
17make_immediate!(CWImmediate false true (6 1 5) (2 1 6) (3 3 10));
18make_immediate!(CIImmediate true true (0 5 2) (5 1 12));
19make_immediate!(CBImmediate true true (5 1 2) (1 2 3) (6 2 5) (3 2 10) (8 1 12));
20make_immediate!(CShamt false true (0 5 2) (5 1 12));
21make_immediate!(CJImmediate true true (5 1 2) (1 3 3) (7 1 6) (6 1 7) (10 1 8) (8 2 9) (4 1 11) (11 1 12));
22make_immediate!(CDSPImmediate false true (6 3 2) (3 2 5) (5 1 12));
23make_immediate!(CWSPImmediate false true (6 2 2) (2 3 4) (5 1 12));
24make_immediate!(CSDSPImmediate false true (6 3 7) (3 3 10));
25make_immediate!(CSWSPImmediate false true (6 2 7) (2 4 9));
26make_immediate!(C16SPImmediate true true (5 1 2) (7 2 3) (6 1 5) (4 1 6) (9 1 12));
27
28make_immediate!(CSR false false (0 12 20));
29make_immediate!(CSRImmediate false false (0 5 15));