@@ -124,7 +124,7 @@ impl<E: ExtensionField> LogicConfig<E> {
124
124
#[ cfg( test) ]
125
125
mod test {
126
126
use ceno_emul:: { Change , InsnKind , PC_STEP_SIZE , StepRecord , encode_rv32u} ;
127
- use ff_ext:: GoldilocksExt2 ;
127
+ use ff_ext:: { BabyBearExt4 , ExtensionField , GoldilocksExt2 } ;
128
128
use gkr_iop:: circuit_builder:: DebugIndex ;
129
129
130
130
use crate :: {
@@ -150,26 +150,55 @@ mod test {
150
150
151
151
#[ test]
152
152
fn test_opcode_andi ( ) {
153
- verify :: < AndiOp > ( "basic" , 0x0000_0011 , 3 , 0x0000_0011 & 3 ) ;
154
- verify :: < AndiOp > ( "zero result" , 0x0000_0100 , 3 , 0x0000_0100 & 3 ) ;
155
- verify :: < AndiOp > ( "negative imm" , TEST , NEG , TEST & NEG ) ;
153
+ let cases = vec ! [
154
+ ( "basic" , 0x0000_0011 , 3 , 0x0000_0011 & 3 ) ,
155
+ ( "zero result" , 0x0000_0100 , 3 , 0x0000_0100 & 3 ) ,
156
+ ( "negative imm" , TEST , NEG , TEST & NEG ) ,
157
+ ] ;
158
+
159
+ for & ( name, rs1, imm, expected) in & cases {
160
+ verify :: < AndiOp , GoldilocksExt2 > ( name, rs1, imm, expected) ;
161
+ #[ cfg( feature = "u16limb_circuit" ) ]
162
+ verify :: < AndiOp , BabyBearExt4 > ( name, rs1, imm, expected) ;
163
+ }
156
164
}
157
165
158
166
#[ test]
159
167
fn test_opcode_ori ( ) {
160
- verify :: < OriOp > ( "basic" , 0x0000_0011 , 3 , 0x0000_0011 | 3 ) ;
161
- verify :: < OriOp > ( "basic2" , 0x0000_0100 , 3 , 0x0000_0100 | 3 ) ;
162
- verify :: < OriOp > ( "negative imm" , TEST , NEG , TEST | NEG ) ;
168
+ let cases = vec ! [
169
+ ( "basic" , 0x0000_0011 , 3 , 0x0000_0011 | 3 ) ,
170
+ ( "basic2" , 0x0000_0100 , 3 , 0x0000_0100 | 3 ) ,
171
+ ( "negative imm" , TEST , NEG , TEST | NEG ) ,
172
+ ] ;
173
+
174
+ for & ( name, rs1, imm, expected) in & cases {
175
+ verify :: < OriOp , GoldilocksExt2 > ( name, rs1, imm, expected) ;
176
+ #[ cfg( feature = "u16limb_circuit" ) ]
177
+ verify :: < OriOp , BabyBearExt4 > ( name, rs1, imm, expected) ;
178
+ }
163
179
}
164
180
165
181
#[ test]
166
182
fn test_opcode_xori ( ) {
167
- verify :: < XoriOp > ( "basic" , 0x0000_0011 , 3 , 0x0000_0011 ^ 3 ) ;
168
- verify :: < XoriOp > ( "non-overlap" , 0x0000_0100 , 3 , 0x0000_0100 ^ 3 ) ;
169
- verify :: < XoriOp > ( "negative imm" , TEST , NEG , TEST ^ NEG ) ;
183
+ let cases = vec ! [
184
+ ( "basic" , 0x0000_0011 , 3 , 0x0000_0011 ^ 3 ) ,
185
+ ( "non-overlap" , 0x0000_0100 , 3 , 0x0000_0100 ^ 3 ) ,
186
+ ( "negative imm" , TEST , NEG , TEST ^ NEG ) ,
187
+ ] ;
188
+
189
+ for & ( name, rs1, imm, expected) in & cases {
190
+ verify :: < XoriOp , GoldilocksExt2 > ( name, rs1, imm, expected) ;
191
+ #[ cfg( feature = "u16limb_circuit" ) ]
192
+ verify :: < XoriOp , BabyBearExt4 > ( name, rs1, imm, expected) ;
193
+ }
170
194
}
171
195
172
- fn verify < I : LogicOp > ( name : & ' static str , rs1_read : u32 , imm : u32 , expected_rd_written : u32 ) {
196
+ fn verify < I : LogicOp , E : ExtensionField > (
197
+ name : & ' static str ,
198
+ rs1_read : u32 ,
199
+ imm : u32 ,
200
+ expected_rd_written : u32 ,
201
+ ) {
173
202
let mut cs = ConstraintSystem :: < GoldilocksExt2 > :: new ( || "riscv" ) ;
174
203
let mut cb = CircuitBuilder :: new ( & mut cs) ;
175
204
0 commit comments