Compare commits
2 commits
6b31e6d515
...
8616ee4737
| Author | SHA1 | Date | |
|---|---|---|---|
| 8616ee4737 | |||
| 5087f16099 |
4 changed files with 1760 additions and 1 deletions
|
|
@ -458,6 +458,9 @@ impl Assignments {
|
||||||
slot_readers
|
slot_readers
|
||||||
.keys_for_assignment(assignment_index)
|
.keys_for_assignment(assignment_index)
|
||||||
.extend([&assignment.inputs]);
|
.extend([&assignment.inputs]);
|
||||||
|
slot_readers
|
||||||
|
.keys_for_assignment(assignment_index)
|
||||||
|
.extend(&assignment.conditions);
|
||||||
let SlotSet(TypeParts {
|
let SlotSet(TypeParts {
|
||||||
small_slots,
|
small_slots,
|
||||||
big_slots,
|
big_slots,
|
||||||
|
|
@ -1400,6 +1403,30 @@ impl<'a> Extend<&'a SlotSet> for SlotToAssignmentIndexFullMapKeysForAssignment<'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a> Extend<&'a Cond> for SlotToAssignmentIndexFullMapKeysForAssignment<'_> {
|
||||||
|
fn extend<T: IntoIterator<Item = &'a Cond>>(&mut self, iter: T) {
|
||||||
|
iter.into_iter().for_each(|cond| match cond.body {
|
||||||
|
CondBody::IfTrue { cond } | CondBody::IfFalse { cond } => {
|
||||||
|
let CompiledValue {
|
||||||
|
range:
|
||||||
|
TypeIndexRange {
|
||||||
|
small_slots,
|
||||||
|
big_slots,
|
||||||
|
},
|
||||||
|
layout: _,
|
||||||
|
write: _,
|
||||||
|
} = cond;
|
||||||
|
self.extend(small_slots.iter());
|
||||||
|
self.extend(big_slots.iter());
|
||||||
|
}
|
||||||
|
CondBody::MatchArm {
|
||||||
|
discriminant,
|
||||||
|
variant_index: _,
|
||||||
|
} => self.extend([discriminant]),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Assignment {
|
impl Assignment {
|
||||||
fn new(
|
fn new(
|
||||||
conditions: Interned<[Cond]>,
|
conditions: Interned<[Cond]>,
|
||||||
|
|
|
||||||
|
|
@ -363,7 +363,6 @@ pub fn enums() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(todo)] // FIXME: enum lowering currently broken
|
|
||||||
#[hdl]
|
#[hdl]
|
||||||
#[test]
|
#[test]
|
||||||
fn test_enums() {
|
fn test_enums() {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,94 @@
|
||||||
|
$timescale 1 ps $end
|
||||||
|
$scope module enums $end
|
||||||
|
$scope struct cd $end
|
||||||
|
$var wire 1 ! clk $end
|
||||||
|
$var wire 1 " rst $end
|
||||||
|
$upscope $end
|
||||||
|
$var wire 1 # en $end
|
||||||
|
$var wire 2 $ which_in $end
|
||||||
|
$var wire 4 % data_in $end
|
||||||
|
$var wire 2 & which_out $end
|
||||||
|
$var wire 4 ' data_out $end
|
||||||
|
$scope struct the_reg $end
|
||||||
|
$var string 1 ( \$tag $end
|
||||||
|
$scope struct B $end
|
||||||
|
$var reg 1 ) \0 $end
|
||||||
|
$var reg 1 * \1 $end
|
||||||
|
$upscope $end
|
||||||
|
$scope struct C $end
|
||||||
|
$scope struct a $end
|
||||||
|
$var reg 1 + \[0] $end
|
||||||
|
$var reg 1 , \[1] $end
|
||||||
|
$upscope $end
|
||||||
|
$var reg 2 - b $end
|
||||||
|
$upscope $end
|
||||||
|
$upscope $end
|
||||||
|
$upscope $end
|
||||||
|
$enddefinitions $end
|
||||||
|
$dumpvars
|
||||||
|
0!
|
||||||
|
1"
|
||||||
|
0#
|
||||||
|
b0 $
|
||||||
|
b0 %
|
||||||
|
b0 &
|
||||||
|
b0 '
|
||||||
|
sA\x20(0) (
|
||||||
|
0)
|
||||||
|
0*
|
||||||
|
0+
|
||||||
|
0,
|
||||||
|
b0 -
|
||||||
|
$end
|
||||||
|
#1000000
|
||||||
|
1!
|
||||||
|
#1100000
|
||||||
|
0"
|
||||||
|
#2000000
|
||||||
|
0!
|
||||||
|
#3000000
|
||||||
|
1!
|
||||||
|
#4000000
|
||||||
|
1#
|
||||||
|
b1 $
|
||||||
|
0!
|
||||||
|
#5000000
|
||||||
|
1!
|
||||||
|
b1 &
|
||||||
|
sB\x20(1) (
|
||||||
|
#6000000
|
||||||
|
0#
|
||||||
|
b0 $
|
||||||
|
0!
|
||||||
|
#7000000
|
||||||
|
1!
|
||||||
|
#8000000
|
||||||
|
1#
|
||||||
|
b1 $
|
||||||
|
b1111 %
|
||||||
|
0!
|
||||||
|
#9000000
|
||||||
|
1!
|
||||||
|
b11 '
|
||||||
|
1)
|
||||||
|
1*
|
||||||
|
1+
|
||||||
|
1,
|
||||||
|
#10000000
|
||||||
|
0!
|
||||||
|
#11000000
|
||||||
|
1!
|
||||||
|
#12000000
|
||||||
|
b10 $
|
||||||
|
0!
|
||||||
|
#13000000
|
||||||
|
1!
|
||||||
|
b10 &
|
||||||
|
b1111 '
|
||||||
|
sC\x20(2) (
|
||||||
|
b11 -
|
||||||
|
#14000000
|
||||||
|
0!
|
||||||
|
#15000000
|
||||||
|
1!
|
||||||
|
#16000000
|
||||||
Loading…
Add table
Add a link
Reference in a new issue