type alu_testv_array is array (natural range 0 to 20) of alu_testv;
variable testmatrix : alu_testv_array :=
- ( 0 => (-5, DIV, 3, -1),
- 1 => (7, ADD, 3, 10),
- 2 => (7, SUB, 1, 6),
- 3 => (7, DIV, 1, 7),
- 4 => (7, DIV, 3, 2),
- 5 => (7, ADD, 1, 8),
- 6 => (7, MUL, 3, 21),
- 7 => (-7, MUL, 3, -21),
- 8 => (268435456, MUL, -2, -536870912),
- 9 => (268435456, MUL, 2**5, 0), -- um fuenf nach links shiften
- 10 => (268435456 + 5, MUL, 2**5, 160), -- = 5 * (2^5)
- 11 => (100, DIV, 10, 10),
- 12 => (100, DIV, 51, 1),
- 13 => (100, DIV, 49, 2),
- 14 => (153156, DIV, 3543, 43),
- 15 => (-153156, DIV, 3543, -43),
- 16 => (153156, DIV, -3543, -43),
- 17 => (-153156, DIV, -3543, 43),
- others => (0, ADD, 0, 0)
+ ( 0 => (-5, ALU_DIV, 3, -1),
+ 1 => (7, ALU_ADD, 3, 10),
+ 2 => (7, ALU_SUB, 1, 6),
+ 3 => (7, ALU_DIV, 1, 7),
+ 4 => (7, ALU_DIV, 3, 2),
+ 5 => (7, ALU_ADD, 1, 8),
+ 6 => (7, ALU_MUL, 3, 21),
+ 7 => (-7, ALU_MUL, 3, -21),
+ 8 => (268435456, ALU_MUL, -2, -536870912),
+ 9 => (268435456, ALU_MUL, 2**5, 0), -- um fuenf nach links shiften
+ 10 => (268435456 + 5, ALU_MUL, 2**5, 160), -- = 5 * (2^5)
+ 11 => (100, ALU_DIV, 10, 10),
+ 12 => (100, ALU_DIV, 51, 1),
+ 13 => (100, ALU_DIV, 49, 2),
+ 14 => (153156, ALU_DIV, 3543, 43),
+ 15 => (-153156, ALU_DIV, 3543, -43),
+ 16 => (153156, ALU_DIV, -3543, -43),
+ 17 => (-153156, ALU_DIV, -3543, 43),
+ others => (0, ALU_ADD, 0, 0)
);
begin
assert op3 = to_signed(testmatrix(i).expected,CBITS)
report "" & cinteger'image(testmatrix(i).o1) &
- " " & alu_ops'image(opcode) &
+ " " & integer'image(to_integer(signed(opcode))) &
" " & cinteger'image(testmatrix(i).o2) &
"/= " & integer'image(to_integer(op3)) &
" -- erwartet: " & cinteger'image(testmatrix(i).expected);