aboutsummaryrefslogtreecommitdiff
path: root/test/passes/inline-indexers/simple6.fir
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes/inline-indexers/simple6.fir')
-rw-r--r--test/passes/inline-indexers/simple6.fir45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/passes/inline-indexers/simple6.fir b/test/passes/inline-indexers/simple6.fir
new file mode 100644
index 00000000..e94efc7a
--- /dev/null
+++ b/test/passes/inline-indexers/simple6.fir
@@ -0,0 +1,45 @@
+; RUN: firrtl -i %s -o %s.v -X verilog -p c 2>&1 | tee %s.out | FileCheck %s
+
+;CHECK: Inline Indexers
+circuit top :
+ module top :
+ input value : UInt<32>
+ input in : {x : UInt<32>, y : UInt<32>}
+ wire m :{x : UInt<32>, y : UInt<32>}[2][2]
+ wire i : UInt
+ wire j : UInt
+
+ m[0][0] := in
+ m[1][0] := in
+ m[0][1] := in
+ m[1][1] := in
+ i := UInt("h1")
+ j := UInt("h1")
+
+ write accessor a = m[i]
+ write accessor b = a[j]
+ b.x := value
+
+;CHECK: wire b$x_1 : UInt<32>
+;CHECK: node j_1 = j
+;CHECK: when eqv(j_1, UInt("h0")) :
+;CHECK: wire a$0$x_1 : UInt<32>
+;CHECK: node i_1 = i
+;CHECK: when eqv(i_1, UInt("h0")) :
+;CHECK: m$0$0$x := a$0$x_1
+;CHECK: when eqv(i_1, UInt("h1")) :
+;CHECK: m$1$0$x := a$0$x_1
+;CHECK: a$0$x_1 := b$x_1
+;CHECK: when eqv(j_1, UInt("h1")) :
+;CHECK: wire a$1$x_1 : UInt<32>
+;CHECK: node i_2 = i
+;CHECK: when eqv(i_2, UInt("h0")) :
+;CHECK: m$0$1$x := a$1$x_1
+;CHECK: when eqv(i_2, UInt("h1")) :
+;CHECK: m$1$1$x := a$1$x_1
+;CHECK: a$1$x_1 := b$x_1
+;CHECK: b$x_1 := value
+
+
+
+;CHECK: Done!