@@ -15,6 +15,144 @@ TEXT validation(SB),$0
1515 WORD $-1 // ERROR "must be in range [0x0, 0xffffffff]"
1616 WORD $0x100000000 // ERROR "must be in range [0x0, 0xffffffff]"
1717
18+ //
19+ // "C" Extension for Compressed Instructions, Version 2.0
20+ //
21+ CLWSP 20 (X5), X10 // ERROR "rs2 must be SP/X2"
22+ CLWSP 20 (SP), X0 // ERROR "cannot use register X0"
23+ CLWSP 20 (SP), F10 // ERROR "expected integer register in rd position"
24+ CLWSP 22 (SP), X10 // ERROR "must be a multiple of 4"
25+ CLDSP 24 (X5), X10 // ERROR "rs2 must be SP/X2"
26+ CLDSP 24 (SP), X0 // ERROR "cannot use register X0"
27+ CLDSP 24 (SP), F10 // ERROR "expected integer register in rd position"
28+ CLDSP 28 (SP), X10 // ERROR "must be a multiple of 8"
29+ CFLDSP 32 (X5), F10 // ERROR "rs2 must be SP/X2"
30+ CFLDSP 32 (SP), X10 // ERROR "expected float register in rd position"
31+ CFLDSP 36 (SP), F10 // ERROR "must be a multiple of 8"
32+ CSWSP X10, 20 (X5) // ERROR "rd must be SP/X2"
33+ CSWSP F10, 20 (SP) // ERROR "expected integer register in rs2 position"
34+ CSWSP X10, 22 (SP) // ERROR "must be a multiple of 4"
35+ CSDSP X10, 24 (X5) // ERROR "rd must be SP/X2"
36+ CSDSP F10, 24 (SP) // ERROR "expected integer register in rs2 position"
37+ CSDSP X10, 28 (SP) // ERROR "must be a multiple of 8"
38+ CFSDSP F10, 32 (X5) // ERROR "rd must be SP/X2"
39+ CFSDSP X10, 32 (SP) // ERROR "expected float register in rs2 position"
40+ CFSDSP F10, 36 (SP) // ERROR "must be a multiple of 8"
41+ CLW 20 (X10), F11 // ERROR "expected integer prime register in rd position"
42+ CLW 20 (X5), X11 // ERROR "expected integer prime register in rs1 position"
43+ CLW 20 (X10), X5 // ERROR "expected integer prime register in rd position"
44+ CLW -1 (X10), X11 // ERROR "must be in range [0, 127]"
45+ CLW 22 (X10), X11 // ERROR "must be a multiple of 4"
46+ CLW 128 (X10), X11 // ERROR "must be in range [0, 127]"
47+ CLD 24 (X10), F11 // ERROR "expected integer prime register in rd position"
48+ CLD 24 (X5), X11 // ERROR "expected integer prime register in rs1 position"
49+ CLD -1 (X10), X11 // ERROR "must be in range [0, 255]"
50+ CLD 30 (X10), X11 // ERROR "must be a multiple of 8"
51+ CLD 256 (X10), X11 // ERROR "must be in range [0, 255]"
52+ CFLD 32 (X10), X11 // ERROR "expected float prime register in rd position"
53+ CFLD 32 (X5), F11 // ERROR "expected integer prime register in rs1 position"
54+ CFLD -1 (X10), F11 // ERROR "must be in range [0, 255]"
55+ CFLD 34 (X10), F11 // ERROR "must be a multiple of 8"
56+ CFLD 256 (X10), F11 // ERROR "must be in range [0, 255]"
57+ CSW F11, 20 (X10) // ERROR "expected integer prime register in rs2 position"
58+ CSW X11, -1 (X10) // ERROR "must be in range [0, 127]"
59+ CSW X11, 22 (X10) // ERROR "must be a multiple of 4"
60+ CSW X11, 128 (X10) // ERROR "must be in range [0, 127]"
61+ CSD F11, 24 (X10) // ERROR "expected integer prime register in rs2 position"
62+ CSD X11, -1 (X10) // ERROR "must be in range [0, 255]"
63+ CSD X11, 28 (X10) // ERROR "must be a multiple of 8"
64+ CSD X11, 256 (X10) // ERROR "must be in range [0, 255]"
65+ CFSD X11, 32 (X10) // ERROR "expected float prime register in rs2 position"
66+ CFSD F11, -1 (X10) // ERROR "must be in range [0, 255]"
67+ CFSD F11, 36 (X10) // ERROR "must be a multiple of 8"
68+ CFSD F11, 256 (X10) // ERROR "must be in range [0, 255]"
69+ CJR X0 // ERROR "cannot use register X0 in rs1"
70+ CJR X10, X11 // ERROR "expected no register in rs2"
71+ CJALR X0 // ERROR "cannot use register X0 in rs1"
72+ CJALR X10, X11 // ERROR "expected no register in rd"
73+ CBEQZ X5, 1 (PC) // ERROR "expected integer prime register in rs1"
74+ CBNEZ X5, 1 (PC) // ERROR "expected integer prime register in rs1"
75+ CLI $3 , X0 // ERROR "cannot use register X0 in rd"
76+ CLI $-33 , X5 // ERROR "must be in range [-32, 31]"
77+ CLI $32 , X5 // ERROR "must be in range [-32, 31]"
78+ CLUI $0 , X5 // ERROR "immediate cannot be zero"
79+ CLUI $3 , X0 // ERROR "cannot use register X0 in rd"
80+ CLUI $3 , X2 // ERROR "cannot use register SP/X2 in rd"
81+ CLUI $-33 , X5 // ERROR "must be in range [-32, 31]"
82+ CLUI $32 , X5 // ERROR "must be in range [-32, 31]"
83+ CADD $31 , X5, X6 // ERROR "rd must be the same as rs1"
84+ CADD $-33 , X5 // ERROR "must be in range [-32, 31]"
85+ CADD $32 , X5 // ERROR "must be in range [-32, 31]"
86+ CADDI $0 , X5 // ERROR "immediate cannot be zero"
87+ CADDI $31 , X5, X6 // ERROR "rd must be the same as rs1"
88+ CADDI $-33 , X5 // ERROR "must be in range [-32, 31]"
89+ CADDI $32 , X5 // ERROR "must be in range [-32, 31]"
90+ CADDW $-33 , X5 // ERROR "must be in range [-32, 31]"
91+ CADDW $32 , X5 // ERROR "must be in range [-32, 31]"
92+ CADDIW $-33 , X5 // ERROR "must be in range [-32, 31]"
93+ CADDIW $32 , X5 // ERROR "must be in range [-32, 31]"
94+ CADDI16SP $0 , SP // ERROR "immediate cannot be zero"
95+ CADDI16SP $16 , X5 // ERROR "rd must be SP/X2"
96+ CADDI16SP $-513 , SP // ERROR "must be in range [-512, 511]"
97+ CADDI16SP $20 , SP // ERROR "must be a multiple of 16"
98+ CADDI16SP $512 , SP // ERROR "must be in range [-512, 511]"
99+ CADDI4SPN $4 , SP, X5 // ERROR "expected integer prime register in rd"
100+ CADDI4SPN $4 , X5, X10 // ERROR "SP/X2 must be in rs1"
101+ CADDI4SPN $-1 , SP, X10 // ERROR "must be in range [0, 1023]"
102+ CADDI4SPN $0 , SP, X10 // ERROR "immediate cannot be zero"
103+ CADDI4SPN $6 , SP, X10 // ERROR "must be a multiple of 4"
104+ CADDI4SPN $1024 , SP, X10 // ERROR "must be in range [0, 1023]"
105+ CSLLI $63 , X5, X6 // ERROR "rd must be the same as rs1"
106+ CSLLI $-1 , X5 // ERROR "must be in range [0, 63]"
107+ CSLLI $0 , X5 // ERROR "immediate cannot be zero"
108+ CSLLI $64 , X5 // ERROR "must be in range [0, 63]"
109+ CSRLI $63 , X10, X11 // ERROR "rd must be the same as rs1"
110+ CSRLI $63 , X5 // ERROR "expected integer prime register in rd"
111+ CSRLI $-1 , X10 // ERROR "must be in range [0, 63]"
112+ CSRLI $0 , X10 // ERROR "immediate cannot be zero"
113+ CSRLI $64 , X10 // ERROR "must be in range [0, 63]"
114+ CSRAI $63 , X10, X11 // ERROR "rd must be the same as rs1"
115+ CSRAI $63 , X5 // ERROR "expected integer prime register in rd"
116+ CSRAI $-1 , X10 // ERROR "must be in range [0, 63]"
117+ CSRAI $0 , X10 // ERROR "immediate cannot be zero"
118+ CSRAI $64 , X10 // ERROR "must be in range [0, 63]"
119+ CAND $1 , X10, X11 // ERROR "rd must be the same as rs1"
120+ CAND $1 , X5 // ERROR "expected integer prime register in rd"
121+ CAND $-64 , X10 // ERROR "must be in range [-32, 31]"
122+ CAND $63 , X10 // ERROR "must be in range [-32, 31]"
123+ CANDI $1 , X10, X11 // ERROR "rd must be the same as rs1"
124+ CANDI $1 , X5 // ERROR "expected integer prime register in rd"
125+ CANDI $-64 , X10 // ERROR "must be in range [-32, 31]"
126+ CANDI $63 , X10 // ERROR "must be in range [-32, 31]"
127+ CMV X0, X5 // ERROR "cannot use register X0 in rs2"
128+ CMV X5, X6, X7 // ERROR "expected no register in rs1"
129+ CMV X5, X0 // ERROR "cannot use register X0 in rd"
130+ CMV F1, X5 // ERROR "expected integer register in rs2"
131+ CMV X5, F1 // ERROR "expected integer register in rd"
132+ CADD X5, X6, X7 // ERROR "rd must be the same as rs1"
133+ CADD X0, X8 // ERROR "cannot use register X0 in rs2"
134+ CADD X8, X0 // ERROR "cannot use register X0 in rd"
135+ CAND X10, X11, X12 // ERROR "rd must be the same as rs1"
136+ CAND X5, X11 // ERROR "expected integer prime register in rs2"
137+ CAND X10, X5 // ERROR "expected integer prime register in rd"
138+ COR X10, X11, X12 // ERROR "rd must be the same as rs1"
139+ COR X5, X11 // ERROR "expected integer prime register in rs2"
140+ COR X10, X5 // ERROR "expected integer prime register in rd"
141+ CXOR X10, X11, X12 // ERROR "rd must be the same as rs1"
142+ CXOR X5, X11 // ERROR "expected integer prime register in rs2"
143+ CXOR X10, X5 // ERROR "expected integer prime register in rd"
144+ CSUB X10, X11, X12 // ERROR "rd must be the same as rs1"
145+ CSUB X5, X11 // ERROR "expected integer prime register in rs2"
146+ CSUB X10, X5 // ERROR "expected integer prime register in rd"
147+ CADDW X10, X11, X12 // ERROR "rd must be the same as rs1"
148+ CADDW X5, X11 // ERROR "expected integer prime register in rs2"
149+ CADDW X10, X5 // ERROR "expected integer prime register in rd"
150+ CSUBW X10, X11, X12 // ERROR "rd must be the same as rs1"
151+ CSUBW X5, X11 // ERROR "expected integer prime register in rs2"
152+ CSUBW X10, X5 // ERROR "expected integer prime register in rd"
153+ CNOP X10 // ERROR "expected no register in rs2"
154+ CEBREAK X10 // ERROR "expected no register in rs2"
155+
18156 //
19157 // "V" Standard Extension for Vector Operations, Version 1.0
20158 //
0 commit comments