fix validate.py tests
s-ol
1 year, 11 months ago
325 | 325 | [(19, 'i'), (5, 'rd'), (0, 'funct3'), (10, 'rs'), (66, 'imm12')] |
326 | 326 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 3/subop/sltu 5/rs/t0 8/imm12')['instr']) |
327 | 327 | [(19, 'i'), (5, 'rd'), (3, 'funct3'), (5, 'rs'), (8, 'imm12')] |
328 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 1/subop/sll 0/imm7 5/rs/t0 8/imm5')['instr']) | |
328 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 1/subop/sll 0/mode/norm 5/rs/t0 8/imm5')['instr']) | |
329 | 329 | [(19, 'i'), (5, 'rd'), (1, 'funct3'), (5, 'rs'), (8, 'imm12')] |
330 | 330 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 1/subop/sll 5/rs/t0 8/imm12')['instr']) |
331 | 331 | [(19, 'i'), (5, 'rd'), (1, 'funct3'), (5, 'rs'), (8, 'imm12')] |
332 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 5/subop/sra 20/imm7 5/rs/t0 8/imm5')['instr']) | |
332 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 5/subop/sra 20/mode/alt 5/rs/t0 8/imm5')['instr']) | |
333 | 333 | [(19, 'i'), (5, 'rd'), (5, 'funct3'), (5, 'rs'), (1032, 'imm12')] |
334 | 334 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 5/subop/sra 5/rs/t0 408/imm12')['instr']) |
335 | 335 | [(19, 'i'), (5, 'rd'), (5, 'funct3'), (5, 'rs'), (1032, 'imm12')] |
336 | 336 | |
337 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 1/subop/sll 12/imm7 5/rs/t0 8/imm5')['instr']) | |
338 | Traceback (most recent call last): | |
339 | ... | |
340 | ValueError: comp-op 1/funct3/sll needs to go with comp-mode 0/imm7/norm | |
337 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 1/subop/sll 20/mode/alt 5/rs/t0 8/imm5')['instr']) | |
338 | Traceback (most recent call last): | |
339 | ... | |
340 | ValueError: comp-op 1/funct3/sll needs to go with comp-mode 0/funct7/norm | |
341 | 341 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 1/subop/sll 5/rs/t0 108/imm12')['instr']) |
342 | 342 | Traceback (most recent call last): |
343 | 343 | ... |
344 | ValueError: comp-op 1/funct3/sll needs to go with comp-mode 0/imm7/norm | |
345 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 5/subop/sra 10/imm7 5/rs/t0 8/imm5')['instr']) | |
346 | Traceback (most recent call last): | |
347 | ... | |
348 | ValueError: comp-op 5/funct3/sra needs to go with comp-mode 20/imm7/alt | |
344 | ValueError: comp-op 1/funct3/sll needs to go with comp-mode 0/funct7/norm | |
345 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 5/subop/sra 0/mode/norm 5/rs/t0 8/imm5')['instr']) | |
346 | Traceback (most recent call last): | |
347 | ... | |
348 | ValueError: comp-op 5/funct3/sra needs to go with comp-mode 20/funct7/alt | |
349 | 349 | >>> validate_opi(subv.parse('13/opi 5/rd/t0 5/subop/sra 5/rs/t0 208/imm12')['instr']) |
350 | 350 | Traceback (most recent call last): |
351 | 351 | ... |
352 | ValueError: comp-op 5/funct3/sra needs to go with comp-mode 20/imm7/alt | |
352 | ValueError: comp-op 5/funct3/sra needs to go with comp-mode 20/funct7/alt | |
353 | 353 | """ |
354 | 354 | op = inputs.pop(0) |
355 | 355 | |
368 | 368 | except ValueError: |
369 | 369 | imm = pop_immediate(inputs, 12) |
370 | 370 | shamt = ((imm[0] & 0b11111), 'imm5') |
371 | mode = (imm[0] >> 5, 'imm7') | |
371 | mode = (imm[0] >> 5, 'funct7') | |
372 | 372 | |
373 | 373 | expect_mode = "alt" if funct[2] == "sra" else "norm" |
374 | 374 | expect_val = 32 if expect_mode == "alt" else 0 |
377 | 377 | raise ValueError( |
378 | 378 | "comp-op {} needs to go with comp-mode {}".format( |
379 | 379 | subv.format_part(funct), |
380 | subv.format_part((expect_val, "imm7", expect_mode)), | |
380 | subv.format_part((expect_val, "funct7", expect_mode)), | |
381 | 381 | ) |
382 | 382 | ) |
383 | 383 |