[NFC, FIRRTL] Elide duplicate types in connect printing and parsing.

This commit is contained in:
Andrew Lenharth 2024-06-03 14:10:05 -05:00
parent 8e472862b1
commit e75c17f395
16 changed files with 120 additions and 120 deletions

View File

@ -46,7 +46,7 @@ def ConnectOp : FIRRTLOp<"connect", [FConnectLike]> {
let results = (outs);
let assemblyFormat =
"$dest `,` $src attr-dict `:` qualified(type($dest)) `,` qualified(type($src))";
"$dest `,` $src attr-dict `:` custom<OptionalBinaryOpTypes>(type($dest), type($src))";
let hasVerifier = 1;
let hasCanonicalizer = true;

View File

@ -14,9 +14,9 @@ firrtl.circuit "Foo" {
// CHECK-NEXT: %a = firrtl.wire : !firrtl.uint<2>
// CHECK-NEXT: %b = firrtl.reg %clock : !firrtl.clock, !firrtl.uint<2>
// CHECK-NEXT: %c = firrtl.reg %clock : !firrtl.clock, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %a, %val : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %b, %val : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %c, %val : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %a, %val : !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %b, %val : !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %c, %val : !firrtl.uint<2>
// CHECK-NEXT: }
}
}

View File

@ -2333,8 +2333,8 @@ firrtl.module @issue1116(out %z: !firrtl.uint<1>) {
firrtl.module @issue1118(out %z0: !firrtl.uint, out %z1: !firrtl.sint) {
// CHECK: %0 = firrtl.asUInt %c4232_si : (!firrtl.sint) -> !firrtl.uint
// CHECK: %1 = firrtl.asSInt %c4232_ui : (!firrtl.uint) -> !firrtl.sint
// CHECK: firrtl.connect %z0, %0 : !firrtl.uint, !firrtl.uint
// CHECK: firrtl.connect %z1, %1 : !firrtl.sint, !firrtl.sint
// CHECK: firrtl.connect %z0, %0 : !firrtl.uint
// CHECK: firrtl.connect %z1, %1 : !firrtl.sint
%c4232_si = firrtl.constant 4232 : !firrtl.sint
%c4232_ui = firrtl.constant 4232 : !firrtl.uint
%0 = firrtl.asUInt %c4232_si : (!firrtl.sint) -> !firrtl.uint
@ -2445,9 +2445,9 @@ firrtl.module @regsyncreset(in %clock: !firrtl.clock, in %reset: !firrtl.uint<1>
firrtl.module @regsyncreset_no(in %clock: !firrtl.clock, in %reset: !firrtl.uint<1>, in %foo : !firrtl.uint, out %bar: !firrtl.uint) {
// CHECK: %[[const:.*]] = firrtl.constant 1
// CHECK: firrtl.reg %clock
// CHECK-NEXT: firrtl.connect %bar, %d : !firrtl.uint, !firrtl.uint
// CHECK-NEXT: firrtl.connect %bar, %d : !firrtl.uint
// CHECK-NEXT: %0 = firrtl.mux(%reset, %[[const]], %foo) : (!firrtl.uint<1>, !firrtl.uint, !firrtl.uint) -> !firrtl.uint
// CHECK-NEXT: firrtl.connect %d, %0 : !firrtl.uint, !firrtl.uint
// CHECK-NEXT: firrtl.connect %d, %0 : !firrtl.uint
// CHECK-NEXT: }
%d = firrtl.reg %clock : !firrtl.clock, !firrtl.uint
firrtl.connect %bar, %d : !firrtl.uint, !firrtl.uint

View File

@ -89,16 +89,16 @@ firrtl.module @bitwidth(in %a : !firrtl.uint<1>, out %b : !firrtl.uint<2>) {
firrtl.module @wires0(in %in : !firrtl.uint<1>, out %out : !firrtl.uint<1>) {
%w = firrtl.wire : !firrtl.uint<1>
// CHECK: firrtl.connect %w, %in : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %out, %w : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %w, %in : !firrtl.uint<1>
// CHECK: firrtl.connect %out, %w : !firrtl.uint<1>
firrtl.connect %w, %in : !firrtl.uint<1>, !firrtl.uint<1>
firrtl.connect %out, %w : !firrtl.uint<1>, !firrtl.uint<1>
}
firrtl.module @wires1(in %in : !firrtl.uint<1>, out %out : !firrtl.uint<1>) {
%wf = firrtl.wire : !firrtl.uint<1>
// CHECK: firrtl.connect %wf, %in : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %out, %wf : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %wf, %in : !firrtl.uint<1>
// CHECK: firrtl.connect %out, %wf : !firrtl.uint<1>
firrtl.connect %wf, %in : !firrtl.uint<1>, !firrtl.uint<1>
firrtl.connect %out, %wf : !firrtl.uint<1>, !firrtl.uint<1>
}
@ -120,16 +120,16 @@ firrtl.module @wires3(out %out : !firrtl.uint<1>) {
firrtl.module @wires4(in %in : !firrtl.uint<1>, out %out : !firrtl.uint<1>) {
%w = firrtl.wire : !firrtl.bundle<a: uint<1>>
%0 = firrtl.subfield %w[a] : !firrtl.bundle<a: uint<1>>
// CHECK: firrtl.connect %0, %in : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %out, %0 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %0, %in : !firrtl.uint<1>
// CHECK: firrtl.connect %out, %0 : !firrtl.uint<1>
firrtl.connect %0, %in : !firrtl.uint<1>, !firrtl.uint<1>
firrtl.connect %out, %0 : !firrtl.uint<1>, !firrtl.uint<1>
}
firrtl.module @registers0(in %clock : !firrtl.clock, in %in : !firrtl.uint<1>, out %out : !firrtl.uint<1>) {
%0 = firrtl.reg %clock : !firrtl.clock, !firrtl.uint<1>
// CHECK: firrtl.connect %0, %in : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %out, %0 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %0, %in : !firrtl.uint<1>
// CHECK: firrtl.connect %out, %0 : !firrtl.uint<1>
firrtl.connect %0, %in : !firrtl.uint<1>, !firrtl.uint<1>
firrtl.connect %out, %0 : !firrtl.uint<1>, !firrtl.uint<1>
}
@ -142,47 +142,47 @@ firrtl.module @registers1(in %clock : !firrtl.clock) {
}
firrtl.module @ConstClock(in %in : !firrtl.const.clock, out %out : !firrtl.const.clock) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.clock, !firrtl.const.clock
// CHECK: firrtl.connect %out, %in : !firrtl.const.clock
firrtl.connect %out, %in : !firrtl.const.clock, !firrtl.const.clock
}
firrtl.module @ConstReset(in %in : !firrtl.const.reset, out %out : !firrtl.const.reset) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.reset, !firrtl.const.reset
// CHECK: firrtl.connect %out, %in : !firrtl.const.reset
firrtl.connect %out, %in : !firrtl.const.reset, !firrtl.const.reset
}
firrtl.module @ConstAsyncReset(in %in : !firrtl.const.asyncreset, out %out : !firrtl.const.asyncreset) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.asyncreset, !firrtl.const.asyncreset
// CHECK: firrtl.connect %out, %in : !firrtl.const.asyncreset
firrtl.connect %out, %in : !firrtl.const.asyncreset, !firrtl.const.asyncreset
}
firrtl.module @ConstUInt(in %in : !firrtl.const.uint<2>, out %out : !firrtl.const.uint<2>) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.uint<2>, !firrtl.const.uint<2>
// CHECK: firrtl.connect %out, %in : !firrtl.const.uint<2>
firrtl.connect %out, %in : !firrtl.const.uint<2>, !firrtl.const.uint<2>
}
firrtl.module @ConstSInt(in %in : !firrtl.const.sint<2>, out %out : !firrtl.const.sint<2>) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.sint<2>, !firrtl.const.sint<2>
// CHECK: firrtl.connect %out, %in : !firrtl.const.sint<2>
firrtl.connect %out, %in : !firrtl.const.sint<2>, !firrtl.const.sint<2>
}
firrtl.module @ConstVec(in %in : !firrtl.const.vector<uint<1>, 3>, out %out : !firrtl.const.vector<uint<1>, 3>) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.vector<uint<1>, 3>, !firrtl.const.vector<uint<1>, 3>
// CHECK: firrtl.connect %out, %in : !firrtl.const.vector<uint<1>, 3>
firrtl.connect %out, %in : !firrtl.const.vector<uint<1>, 3>, !firrtl.const.vector<uint<1>, 3>
}
firrtl.module @ConstBundle(in %in : !firrtl.const.bundle<a: uint<1>, b: sint<2>>, out %out : !firrtl.const.bundle<a: uint<1>, b: sint<2>>) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.bundle<a: uint<1>, b: sint<2>>, !firrtl.const.bundle<a: uint<1>, b: sint<2>>
// CHECK: firrtl.connect %out, %in : !firrtl.const.bundle<a: uint<1>, b: sint<2>>
firrtl.connect %out, %in : !firrtl.const.bundle<a: uint<1>, b: sint<2>>, !firrtl.const.bundle<a: uint<1>, b: sint<2>>
}
firrtl.module @MixedConstBundle(in %in : !firrtl.bundle<a: uint<1>, b: const.sint<2>>, out %out : !firrtl.bundle<a: uint<1>, b: const.sint<2>>) {
// CHECK: firrtl.connect %out, %in : !firrtl.bundle<a: uint<1>, b: const.sint<2>>, !firrtl.bundle<a: uint<1>, b: const.sint<2>>
// CHECK: firrtl.connect %out, %in : !firrtl.bundle<a: uint<1>, b: const.sint<2>>
firrtl.connect %out, %in : !firrtl.bundle<a: uint<1>, b: const.sint<2>>, !firrtl.bundle<a: uint<1>, b: const.sint<2>>
}
firrtl.module @ConstToExplicitConstElementsBundle(in %in : !firrtl.const.bundle<a: uint<1>, b: sint<2>>, out %out : !firrtl.const.bundle<a: const.uint<1>, b: const.sint<2>>) {
// CHECK: firrtl.connect %out, %in : !firrtl.const.bundle<a: const.uint<1>, b: const.sint<2>>, !firrtl.const.bundle<a: uint<1>, b: sint<2>>
// CHECK: firrtl.connect %out, %in : !firrtl.const.bundle<a: const.uint<1>, b: const.sint<2>>
firrtl.connect %out, %in : !firrtl.const.bundle<a: const.uint<1>, b: const.sint<2>>, !firrtl.const.bundle<a: uint<1>, b: sint<2>>
}
@ -250,7 +250,7 @@ firrtl.module @NonConstToNonConstFlipFromConstSubaccess(in %in : !firrtl.bund
out %out : !firrtl.const.vector<bundle<a flip: uint<1>>, 1>,
in %index : !firrtl.uint<1>) {
%0 = firrtl.subaccess %out[%index] : !firrtl.const.vector<bundle<a flip: uint<1>>, 1>, !firrtl.uint<1>
// CHECK: firrtl.connect %0, %in : !firrtl.bundle<a flip: uint<1>>, !firrtl.bundle<a flip: uint<1>>
// CHECK: firrtl.connect %0, %in : !firrtl.bundle<a flip: uint<1>>
firrtl.connect %0, %in : !firrtl.bundle<a flip: uint<1>>, !firrtl.bundle<a flip: uint<1>>
}

View File

@ -43,7 +43,7 @@ firrtl.module @ConstBundleExplicitElements(in %a: !firrtl.const.bundle<a: const.
// CHECK-LABEL: firrtl.module @ConstSubfield
firrtl.module @ConstSubfield(in %a: !firrtl.const.bundle<a: uint<1>, b: sint<2>>, out %b: !firrtl.const.uint<1>) {
// CHECK-NEXT: [[VAL:%.+]] = firrtl.subfield %a[a] : !firrtl.const.bundle<a: uint<1>, b: sint<2>>
// CHECK-NEXT: firrtl.connect %b, [[VAL]] : !firrtl.const.uint<1>, !firrtl.const.uint<1>
// CHECK-NEXT: firrtl.connect %b, [[VAL]] : !firrtl.const.uint<1>
%0 = firrtl.subfield %a[a] : !firrtl.const.bundle<a: uint<1>, b: sint<2>>
firrtl.connect %b, %0 : !firrtl.const.uint<1>, !firrtl.const.uint<1>
}
@ -53,8 +53,8 @@ firrtl.module @ConstSubfield(in %a: !firrtl.const.bundle<a: uint<1>, b: sint<2>>
firrtl.module @MixedConstSubfield(in %a: !firrtl.bundle<a: uint<1>, b: const.sint<2>>, out %b: !firrtl.uint<1>, out %c: !firrtl.const.sint<2>) {
// CHECK-NEXT: [[VAL0:%.+]] = firrtl.subfield %a[a] : !firrtl.bundle<a: uint<1>, b: const.sint<2>>
// CHECK-NEXT: [[VAL1:%.+]] = firrtl.subfield %a[b] : !firrtl.bundle<a: uint<1>, b: const.sint<2>>
// CHECK-NEXT: firrtl.connect %b, [[VAL0]] : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %c, [[VAL1]] : !firrtl.const.sint<2>, !firrtl.const.sint<2>
// CHECK-NEXT: firrtl.connect %b, [[VAL0]] : !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %c, [[VAL1]] : !firrtl.const.sint<2>
%0 = firrtl.subfield %a[a] : !firrtl.bundle<a: uint<1>, b: const.sint<2>>
%1 = firrtl.subfield %a[b] : !firrtl.bundle<a: uint<1>, b: const.sint<2>>
firrtl.connect %b, %0 : !firrtl.uint<1>, !firrtl.uint<1>
@ -65,7 +65,7 @@ firrtl.module @MixedConstSubfield(in %a: !firrtl.bundle<a: uint<1>, b: const.sin
// CHECK-LABEL: firrtl.module @ConstSubindex
firrtl.module @ConstSubindex(in %a: !firrtl.const.vector<uint<1>, 3>, out %b: !firrtl.const.uint<1>) {
// CHECK-NEXT: [[VAL:%.+]] = firrtl.subindex %a[1] : !firrtl.const.vector<uint<1>, 3>
// CHECK-NEXT: firrtl.connect %b, [[VAL]] : !firrtl.const.uint<1>, !firrtl.const.uint<1>
// CHECK-NEXT: firrtl.connect %b, [[VAL]] : !firrtl.const.uint<1>
%0 = firrtl.subindex %a[1] : !firrtl.const.vector<uint<1>, 3>
firrtl.connect %b, %0 : !firrtl.const.uint<1>, !firrtl.const.uint<1>
}
@ -74,7 +74,7 @@ firrtl.module @ConstSubindex(in %a: !firrtl.const.vector<uint<1>, 3>, out %b: !f
// CHECK-LABEL: firrtl.module @ConstElementSubindex
firrtl.module @ConstElementSubindex(in %a: !firrtl.vector<const.uint<1>, 3>, out %b: !firrtl.const.uint<1>) {
// CHECK-NEXT: [[VAL:%.+]] = firrtl.subindex %a[1] : !firrtl.vector<const.uint<1>, 3>
// CHECK-NEXT: firrtl.connect %b, [[VAL]] : !firrtl.const.uint<1>, !firrtl.const.uint<1>
// CHECK-NEXT: firrtl.connect %b, [[VAL]] : !firrtl.const.uint<1>
%0 = firrtl.subindex %a[1] : !firrtl.vector<const.uint<1>, 3>
firrtl.connect %b, %0 : !firrtl.const.uint<1>, !firrtl.const.uint<1>
}
@ -84,8 +84,8 @@ firrtl.module @ConstElementSubindex(in %a: !firrtl.vector<const.uint<1>, 3>, out
firrtl.module @ConstSubaccess(in %a: !firrtl.const.vector<uint<1>, 3>, in %constIndex: !firrtl.const.uint<4>, in %dynamicIndex: !firrtl.uint<4>, out %constOut: !firrtl.const.uint<1>, out %dynamicOut: !firrtl.uint<1>) {
// CHECK-NEXT: [[VAL0:%.+]] = firrtl.subaccess %a[%constIndex] : !firrtl.const.vector<uint<1>, 3>, !firrtl.const.uint<4>
// CHECK-NEXT: [[VAL1:%.+]] = firrtl.subaccess %a[%dynamicIndex] : !firrtl.const.vector<uint<1>, 3>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %constOut, [[VAL0]] : !firrtl.const.uint<1>, !firrtl.const.uint<1>
// CHECK-NEXT: firrtl.connect %dynamicOut, [[VAL1]] : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %constOut, [[VAL0]] : !firrtl.const.uint<1>
// CHECK-NEXT: firrtl.connect %dynamicOut, [[VAL1]] : !firrtl.uint<1>
%0 = firrtl.subaccess %a[%constIndex] : !firrtl.const.vector<uint<1>, 3>, !firrtl.const.uint<4>
%1 = firrtl.subaccess %a[%dynamicIndex] : !firrtl.const.vector<uint<1>, 3>, !firrtl.uint<4>
firrtl.connect %constOut, %0 : !firrtl.const.uint<1>, !firrtl.const.uint<1>
@ -97,8 +97,8 @@ firrtl.module @ConstSubaccess(in %a: !firrtl.const.vector<uint<1>, 3>, in %const
firrtl.module @ConstElementSubaccess(in %a: !firrtl.vector<const.uint<1>, 3>, in %constIndex: !firrtl.const.uint<4>, in %dynamicIndex: !firrtl.uint<4>, out %constOut: !firrtl.const.uint<1>, out %dynamicOut: !firrtl.uint<1>) {
// CHECK-NEXT: [[VAL0:%.+]] = firrtl.subaccess %a[%constIndex] : !firrtl.vector<const.uint<1>, 3>, !firrtl.const.uint<4>
// CHECK-NEXT: [[VAL1:%.+]] = firrtl.subaccess %a[%dynamicIndex] : !firrtl.vector<const.uint<1>, 3>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %constOut, [[VAL0]] : !firrtl.const.uint<1>, !firrtl.const.uint<1>
// CHECK-NEXT: firrtl.connect %dynamicOut, [[VAL1]] : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %constOut, [[VAL0]] : !firrtl.const.uint<1>
// CHECK-NEXT: firrtl.connect %dynamicOut, [[VAL1]] : !firrtl.uint<1>
%0 = firrtl.subaccess %a[%constIndex] : !firrtl.vector<const.uint<1>, 3>, !firrtl.const.uint<4>
%1 = firrtl.subaccess %a[%dynamicIndex] : !firrtl.vector<const.uint<1>, 3>, !firrtl.uint<4>
firrtl.connect %constOut, %0 : !firrtl.const.uint<1>, !firrtl.const.uint<1>
@ -124,7 +124,7 @@ firrtl.module @ConstNestedElementSubaccess(in %a: !firrtl.vector<bundle<a: const
firrtl.module @ConstSubtag(in %in : !firrtl.const.enum<a: uint<1>, b: uint<2>>,
out %out : !firrtl.const.uint<2>) {
// CHECK-NEXT: [[VAL:%.+]] = firrtl.subtag %in[b] : !firrtl.const.enum<a: uint<1>, b: uint<2>>
// CHECK-NEXT: firrtl.connect %out, [[VAL]] : !firrtl.const.uint<2>, !firrtl.const.uint<2>
// CHECK-NEXT: firrtl.connect %out, [[VAL]] : !firrtl.const.uint<2>
%0 = firrtl.subtag %in[b] : !firrtl.const.enum<a: uint<1>, b: uint<2>>
firrtl.connect %out, %0 : !firrtl.const.uint<2>, !firrtl.const.uint<2>
}

View File

@ -12,7 +12,7 @@ firrtl.module @shadow_connects(out %out : !firrtl.uint<1>) {
// CHECK-LABEL: firrtl.module @shadow_connects(out %out: !firrtl.uint<1>) {
// CHECK-NEXT: %c0_ui1 = firrtl.constant 0 : !firrtl.uint<1>
// CHECK-NEXT: %c1_ui1 = firrtl.constant 1 : !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %out, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %out, %c1_ui1 : !firrtl.uint<1>
// CHECK-NEXT: }
@ -30,7 +30,7 @@ firrtl.module @shadow_when(in %p : !firrtl.uint<1>) {
// CHECK-NEXT: %c0_ui2 = firrtl.constant 0 : !firrtl.uint<2>
// CHECK-NEXT: %c1_ui2 = firrtl.constant 1 : !firrtl.uint<2>
// CHECK-NEXT: %w = firrtl.wire : !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %w, %c1_ui2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %w, %c1_ui2 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -112,7 +112,7 @@ firrtl.module @set_in_both(in %clock : !firrtl.clock, in %p : !firrtl.uint<1>, o
// CHECK-NEXT: %0 = firrtl.not %p : (!firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK-NEXT: %c1_ui2 = firrtl.constant 1 : !firrtl.uint<2>
// CHECK-NEXT: %1 = firrtl.mux(%p, %c0_ui2, %c1_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %1 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %1 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -135,7 +135,7 @@ firrtl.module @set_before_and_in_both(in %clock : !firrtl.clock, in %p : !firrtl
// CHECK-NEXT: %c2_ui2 = firrtl.constant 2 : !firrtl.uint<2>
// CHECK-NEXT: %0 = firrtl.not %p : (!firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK-NEXT: %1 = firrtl.mux(%p, %c0_ui2, %c1_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %1 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %1 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -157,7 +157,7 @@ firrtl.module @set_after(in %clock : !firrtl.clock, in %p : !firrtl.uint<1>, out
// CHECK-NEXT: %c2_ui2 = firrtl.constant 2 : !firrtl.uint<2>
// CHECK-NEXT: %0 = firrtl.not %p : (!firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK-NEXT: %1 = firrtl.mux(%p, %c0_ui2, %c1_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %c2_ui2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %c2_ui2 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -174,7 +174,7 @@ firrtl.module @set_in_then0(in %clock : !firrtl.clock, in %p : !firrtl.uint<1>,
// CHECK-NEXT: %c0_ui2 = firrtl.constant 0 : !firrtl.uint<2>
// CHECK-NEXT: %c1_ui2 = firrtl.constant 1 : !firrtl.uint<2>
// CHECK-NEXT: %0 = firrtl.mux(%p, %c1_ui2, %c0_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %0 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %0 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -190,7 +190,7 @@ firrtl.module @set_in_then1(in %clock : !firrtl.clock, in %p : !firrtl.uint<1>,
// CHECK-LABEL: firrtl.module @set_in_then1(in %clock: !firrtl.clock, in %p: !firrtl.uint<1>, out %out: !firrtl.uint<2>) {
// CHECK-NEXT: %c0_ui2 = firrtl.constant 0 : !firrtl.uint<2>
// CHECK-NEXT: %c1_ui2 = firrtl.constant 1 : !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %c0_ui2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %c0_ui2 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -209,7 +209,7 @@ firrtl.module @set_in_else0(in %p : !firrtl.uint<1>, out %out : !firrtl.uint<2>)
// CHECK-NEXT: %c1_ui2 = firrtl.constant 1 : !firrtl.uint<2>
// CHECK-NEXT: %0 = firrtl.not %p : (!firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK-NEXT: %1 = firrtl.mux(%p, %c0_ui2, %c1_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %1 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %1 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -239,7 +239,7 @@ firrtl.module @set_in_else1(in %clock : !firrtl.clock, in %p : !firrtl.uint<1>,
// CHECK-NEXT: %c0_ui2 = firrtl.constant 0 : !firrtl.uint<2>
// CHECK-NEXT: %c1_ui2 = firrtl.constant 1 : !firrtl.uint<2>
// CHECK-NEXT: %0 = firrtl.not %p : (!firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %out, %c0_ui2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %c0_ui2 : !firrtl.uint<2>
// CHECK-NEXT: }
// Check that nested WhenOps work.
@ -262,7 +262,7 @@ firrtl.module @nested(in %clock : !firrtl.clock, in %p0 : !firrtl.uint<1>, in %p
// CHECK-NEXT: %0 = firrtl.and %p0, %p1 : (!firrtl.uint<1>, !firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK-NEXT: %1 = firrtl.mux(%p1, %c1_ui2, %c0_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: %2 = firrtl.mux(%p0, %1, %c0_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %out, %2 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -302,7 +302,7 @@ firrtl.module @nested2(in %clock : !firrtl.clock, in %p0 : !firrtl.uint<1>, in %
//CHECK-NEXT: %7 = firrtl.and %4, %6 : (!firrtl.uint<1>, !firrtl.uint<1>) -> !firrtl.uint<1>
//CHECK-NEXT: %8 = firrtl.mux(%p1, %c2_ui2, %c3_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
//CHECK-NEXT: %9 = firrtl.mux(%p0, %3, %8) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
//CHECK-NEXT: firrtl.connect %out, %9 : !firrtl.uint<2>, !firrtl.uint<2>
//CHECK-NEXT: firrtl.connect %out, %9 : !firrtl.uint<2>
//CHECK-NEXT: }
// Test invalid value optimization
@ -445,7 +445,7 @@ firrtl.module @as_passive(in %p : !firrtl.uint<1>) {
firrtl.connect %simple1_in, %c3_ui3 : !firrtl.uint<3>, !firrtl.uint<3>
}
// CHECK: [[MUX:%.*]] = firrtl.mux(%p, %test0_in, %c3_ui3) : (!firrtl.uint<1>, !firrtl.uint<3>, !firrtl.uint<3>) -> !firrtl.uint<3>
// CHECK: firrtl.connect %test0_in_0, [[MUX]] : !firrtl.uint<3>, !firrtl.uint<3>
// CHECK: firrtl.connect %test0_in_0, [[MUX]] : !firrtl.uint<3>
}
@ -468,7 +468,7 @@ firrtl.module @vector_simple(in %clock: !firrtl.clock, out %ret: !firrtl.vector<
firrtl.connect %0, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
firrtl.connect %0, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: %0 = firrtl.subindex %ret[0] : !firrtl.vector<uint<1>, 1>
// CHECK-NEXT: firrtl.connect %0, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1
// CHECK-NEXT: firrtl.connect %0, %c1_ui1 : !firrtl.uint<1>
}
// CHECK-LABEL: @shadow_when_vector
@ -483,7 +483,7 @@ firrtl.module @shadow_when_vector(in %p : !firrtl.uint<1>) {
}
// CHECK: %w = firrtl.wire : !firrtl.vector<uint<2>, 1>
// CHECK-NEXT: %0 = firrtl.subindex %w[0] : !firrtl.vector<uint<2>, 1>
// CHECK-NEXT: firrtl.connect %0, %c1_ui2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %0, %c1_ui2 : !firrtl.uint<2>
}
// CHECK-LABEL: @multi_dim_vector
@ -502,9 +502,9 @@ firrtl.module @multi_dim_vector(in %p : !firrtl.uint<1>) {
firrtl.connect %2, %c0_ui2 : !firrtl.uint<2>, !firrtl.uint<2>
}
// CHECK: [[MUX1:%.*]] = firrtl.mux(%p, %c0_ui2, %c1_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %1, [[MUX1]] : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %1, [[MUX1]] : !firrtl.uint<2>
// CHECK-NEXT: [[MUX2:%.*]] = firrtl.mux(%p, %c1_ui2, %c0_ui2) : (!firrtl.uint<1>, !firrtl.uint<2>, !firrtl.uint<2>) -> !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %2, [[MUX2]] : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %2, [[MUX2]] : !firrtl.uint<2>
}
// CHECK-LABEL: @vector_of_bundle
@ -515,8 +515,8 @@ firrtl.module @vector_of_bundle(in %p : !firrtl.uint<1>, out %ret: !firrtl.vecto
%c0_ui1 = firrtl.constant 0 : !firrtl.uint<1>
firrtl.connect %1, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
firrtl.connect %1, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NOT: firrtl.connect %1, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %1, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NOT: firrtl.connect %1, %c0_ui1 : !firrtl.uint<1>
// CHECK: firrtl.connect %1, %c1_ui1 : !firrtl.uint<1>
}
// CHECK-LABEL: @aggregate_register

View File

@ -847,7 +847,7 @@ firrtl.circuit "RefReset" {
// CHECK-LABEL: firrtl.module @RefReset
// CHECK-NEXT: in r: !firrtl.asyncreset
// CHECK-SAME: out ref: !firrtl.probe<asyncreset>
// CHECK-NEXT: !firrtl.asyncreset, !firrtl.asyncreset
// CHECK-NEXT: !firrtl.asyncreset
// CHECK-NEXT: %s_ref : !firrtl.probe<asyncreset>
firrtl.module @RefReset(in %r: !firrtl.asyncreset) {
%s_r, %s_ref = firrtl.instance s @SendReset(in r: !firrtl.reset, out ref: !firrtl.probe<reset>)

View File

@ -414,22 +414,22 @@ firrtl.circuit "Foo" {
firrtl.connect %ui, %c0_ui5 : !firrtl.uint, !firrtl.uint<5>
firrtl.connect %si, %c0_si5 : !firrtl.sint, !firrtl.sint<5>
// CHECK: firrtl.connect %u0, %0 : !firrtl.uint<8>, !firrtl.uint<8>
// CHECK: firrtl.connect %u0, %0 : !firrtl.uint<8>
%u0 = firrtl.wire : !firrtl.uint
firrtl.connect %u0, %0 : !firrtl.uint, !firrtl.uint
// CHECK: firrtl.connect %s1, %1 : !firrtl.sint<8>, !firrtl.sint<8>
// CHECK: firrtl.connect %s1, %1 : !firrtl.sint<8>
%s1 = firrtl.wire : !firrtl.sint
firrtl.connect %s1, %1 : !firrtl.sint, !firrtl.sint
// CHECK: firrtl.connect %u2, %2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK: firrtl.connect %u2, %2 : !firrtl.uint<2>
%u2 = firrtl.wire : !firrtl.uint
firrtl.connect %u2, %2 : !firrtl.uint, !firrtl.uint
// CHECK: firrtl.connect %s3, %3 : !firrtl.sint<2>, !firrtl.sint<2>
// CHECK: firrtl.connect %s3, %3 : !firrtl.sint<2>
%s3 = firrtl.wire : !firrtl.sint
firrtl.connect %s3, %3 : !firrtl.sint, !firrtl.sint
// CHECK: firrtl.connect %u4, %4 : !firrtl.uint<0>, !firrtl.uint<0>
// CHECK: firrtl.connect %u4, %4 : !firrtl.uint<0>
%u4 = firrtl.wire : !firrtl.uint
firrtl.connect %u4, %4 : !firrtl.uint, !firrtl.uint
// CHECK: firrtl.connect %s5, %5 : !firrtl.sint<1>, !firrtl.sint<1>
// CHECK: firrtl.connect %s5, %5 : !firrtl.sint<1>
%s5 = firrtl.wire : !firrtl.sint
firrtl.connect %s5, %5 : !firrtl.sint, !firrtl.sint
}
@ -477,8 +477,8 @@ firrtl.circuit "Foo" {
// CHECK: %c200_si9 = firrtl.constant 200 : !firrtl.sint<9>
// CHECK: %0 = firrtl.tail %x, 5 : (!firrtl.sint<9>) -> !firrtl.uint<4>
// CHECK: %1 = firrtl.asSInt %0 : (!firrtl.uint<4>) -> !firrtl.sint<4>
// CHECK: firrtl.connect %y, %1 : !firrtl.sint<4>, !firrtl.sint<4>
// CHECK: firrtl.connect %x, %c200_si9 : !firrtl.sint<9>, !firrtl.sint<9>
// CHECK: firrtl.connect %y, %1 : !firrtl.sint<4>
// CHECK: firrtl.connect %x, %c200_si9 : !firrtl.sint<9>
%x = firrtl.wire : !firrtl.sint
%c200_si = firrtl.constant 200 : !firrtl.sint
firrtl.connect %y, %x : !firrtl.sint<4>, !firrtl.sint
@ -493,7 +493,7 @@ firrtl.circuit "Foo" {
firrtl.connect %w, %c1_ui1 : !firrtl.uint, !firrtl.uint<1>
%w1 = firrtl.wire : !firrtl.uint<0>
// CHECK: %0 = firrtl.tail %w, 1 : (!firrtl.uint<1>) -> !firrtl.uint<0>
// CHECK: firrtl.connect %w1, %0 : !firrtl.uint<0>, !firrtl.uint<0>
// CHECK: firrtl.connect %w1, %0 : !firrtl.uint<0>
firrtl.connect %w1, %w : !firrtl.uint<0>, !firrtl.uint
}
@ -646,7 +646,7 @@ firrtl.circuit "Foo" {
// CHECK-LABEL: @InferBundlePort
firrtl.module @InferBundlePort(in %in: !firrtl.bundle<a: uint<2>, b: uint<3>>, out %out: !firrtl.bundle<a: uint, b: uint>) {
// CHECK: firrtl.connect %out, %in : !firrtl.bundle<a: uint<2>, b: uint<3>>, !firrtl.bundle<a: uint<2>, b: uint<3>>
// CHECK: firrtl.connect %out, %in : !firrtl.bundle<a: uint<2>, b: uint<3>>
firrtl.connect %out, %in : !firrtl.bundle<a: uint, b: uint>, !firrtl.bundle<a: uint<2>, b: uint<3>>
}
@ -676,7 +676,7 @@ firrtl.circuit "Foo" {
// CHECK-LABEL: @InferVectorPort
firrtl.module @InferVectorPort(in %in: !firrtl.vector<uint<4>, 2>, out %out: !firrtl.vector<uint, 2>) {
// CHECK: firrtl.connect %out, %in : !firrtl.vector<uint<4>, 2>, !firrtl.vector<uint<4>, 2>
// CHECK: firrtl.connect %out, %in : !firrtl.vector<uint<4>, 2>
firrtl.connect %out, %in : !firrtl.vector<uint, 2>, !firrtl.vector<uint<4>, 2>
}
@ -987,7 +987,7 @@ firrtl.circuit "Foo" {
// CHECK-SAME: rwprobe<uint<1>>
// CHECK-SAME: rwprobe<uint<2>>
%c_in, %c_p, %c_p2 = firrtl.instance c @RWProbePortChild(in in: !firrtl.bundle<a: vector<uint, 2>, b: uint>, out p: !firrtl.rwprobe<uint>, out p2: !firrtl.rwprobe<uint>)
// CHECK-NEXT: !firrtl.bundle<a: vector<uint<1>, 2>, b: uint<2>>, !firrtl.bundle<a: vector<uint<1>, 2>, b: uint<2>>
// CHECK-NEXT: firrtl.connect %c_in, %in : !firrtl.bundle<a: vector<uint<1>, 2>, b: uint<2>>
firrtl.connect %c_in, %in : !firrtl.bundle<a: vector<uint, 2>, b: uint>, !firrtl.bundle<a: vector<uint<1>, 2>, b: uint<2>>
// CHECK-NEXT: rwprobe<uint<1>>
firrtl.ref.define %p, %c_p : !firrtl.rwprobe<uint>

View File

@ -42,12 +42,12 @@ firrtl.circuit "TLRAM" {
// CHECK: %[[v8:.+]] = firrtl.or %[[readEnable:.+]], %[[writeEnable]] : (!firrtl.uint<1>, !firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK: firrtl.strictconnect %[[v1:.+]], %[[v8]] : !firrtl.uint<1>
// CHECK: firrtl.ref.define %dbg_0, %mem_0_dbgs : !firrtl.probe<vector<uint<8>, 16>>
// CHECK: firrtl.connect %[[readAddr]], %[[index2:.+]] : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK: firrtl.connect %[[readEnable]], %mem_MPORT_en : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %[[writeAddr]], %index : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK: firrtl.connect %[[writeEnable]], %wen : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %[[readAddr]], %[[index2:.+]] : !firrtl.uint<4>
// CHECK: firrtl.connect %[[readEnable]], %mem_MPORT_en : !firrtl.uint<1>
// CHECK: firrtl.connect %[[writeAddr]], %index : !firrtl.uint<4>
// CHECK: firrtl.connect %[[writeEnable]], %wen : !firrtl.uint<1>
// CHECK: %[[v10:.+]] = firrtl.not %wen : (!firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK: firrtl.connect %mem_MPORT_en, %[[v10]] : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %mem_MPORT_en, %[[v10]] : !firrtl.uint<1>
// CHECK: firrtl.strictconnect %[[v4:.+]], %wen : !firrtl.uint<1>
}

View File

@ -215,17 +215,17 @@ firrtl.module @TestConnections(in %in0: !firrtl.uint<4>, in %in1: !firrtl.uint<4
// CHECK-NEXT: %b_a_out0 = firrtl.wire : !firrtl.uint<4>
// CHECK-NEXT: %b_a_out1 = firrtl.wire : !firrtl.uint<4>
// CHECK-NEXT: %0 = firrtl.and %b_a_in0, %b_a_in1 : (!firrtl.uint<4>, !firrtl.uint<4>) -> !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_out0, %0 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_out0, %0 : !firrtl.uint<4>
// CHECK-NEXT: %1 = firrtl.and %b_a_in0, %b_a_in1 : (!firrtl.uint<4>, !firrtl.uint<4>) -> !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_out1, %1 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_in0, %b_in0 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_in1, %b_in1 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_out0, %b_a_out0 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_out1, %b_a_out1 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_in0, %in0 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_in1, %in1 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %out0, %b_out0 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %out1, %b_out1 : !firrtl.uint<4>, !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_out1, %1 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_in0, %b_in0 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_a_in1, %b_in1 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_out0, %b_a_out0 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_out1, %b_a_out1 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_in0, %in0 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %b_in1, %in1 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %out0, %b_out0 : !firrtl.uint<4>
// CHECK-NEXT: firrtl.connect %out1, %b_out1 : !firrtl.uint<4>
// CHECK-NEXT: }
@ -243,9 +243,9 @@ firrtl.module @TestBulkConnections(in %in0: !firrtl.bundle<a: uint<4>, b flip: u
firrtl.connect %out0, %i_out0 : !firrtl.bundle<a: uint<4>, b flip: uint<4>>, !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: %i_in0 = firrtl.wire : !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: %i_out0 = firrtl.wire : !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: firrtl.connect %i_out0, %i_in0 : !firrtl.bundle<a: uint<4>, b flip: uint<4>>, !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: firrtl.connect %i_in0, %in0 : !firrtl.bundle<a: uint<4>, b flip: uint<4>>, !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: firrtl.connect %out0, %i_out0 : !firrtl.bundle<a: uint<4>, b flip: uint<4>>, !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: firrtl.connect %i_out0, %i_in0 : !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: firrtl.connect %i_in0, %in0 : !firrtl.bundle<a: uint<4>, b flip: uint<4>>
// CHECK: firrtl.connect %out0, %i_out0 : !firrtl.bundle<a: uint<4>, b flip: uint<4>>
}
}

View File

@ -158,7 +158,7 @@ firrtl.module @ReadAndWriteToSubfield(in %clock: !firrtl.clock, in %addr: !firrt
firrtl.connect %port_a, %in : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: [[RDATA_B:%.*]] = firrtl.subfield [[RDATA]][b] : !firrtl.bundle<a: uint<1>, b: uint<1>>
// CHECK: firrtl.connect %out, [[RDATA_B]] : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %out, [[RDATA_B]] : !firrtl.uint<1>
%port_b = firrtl.subfield %ramport_data[b] : !firrtl.bundle<a: uint<1>, b: uint<1>>
firrtl.connect %out, %port_b : !firrtl.uint<1>, !firrtl.uint<1>
}
@ -178,7 +178,7 @@ firrtl.module @ReadAndWriteToSubindex(in %clock: !firrtl.clock, in %addr: !firrt
// CHECK: [[WMASK_0:%.*]] = firrtl.subindex [[WMASK]][0]
// CHECK: firrtl.strictconnect [[WMASK_0]], %c1_ui1 : !firrtl.uint<1>
// CHECK: firrtl.strictconnect [[WMODE]], %c1_ui1 : !firrtl.uint<1>
// CHECK: firrtl.connect [[WDATA_0]], %in : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect [[WDATA_0]], %in : !firrtl.uint<1>
%port_a = firrtl.subindex %ramport_data[0] : !firrtl.vector<uint<1>, 10>
firrtl.connect %port_a, %in : !firrtl.uint<1>, !firrtl.uint<1>

View File

@ -115,7 +115,7 @@ firrtl.circuit "Test" {
// CHECK: firrtl.module private @[[A:.+]](in %[[p:.+]]: !firrtl.uint<1>) {
// CHECK: %w = firrtl.wire : !firrtl.uint<1>
// CHECK: firrtl.connect %w, %[[p]] : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %w, %[[p]] : !firrtl.uint<1>
// CHECK: }
// CHECK: firrtl.module @CaptureHardwareViaConnect() {
// CHECK: %c0_ui1 = firrtl.constant 0 : !firrtl.uint<1>

View File

@ -171,7 +171,7 @@ firrtl.circuit "MemDepth1" {
firrtl.module @MemDepth1(in %clock: !firrtl.clock, in %en: !firrtl.uint<1>,
in %addr: !firrtl.uint<1>, in %data: !firrtl.uint<32>) {
// CHECK: firrtl.instance mem0 @mem0(in W0_addr: !firrtl.uint<1>, in W0_en: !firrtl.uint<1>, in W0_clk: !firrtl.clock, in W0_data: !firrtl.uint<32>, in W0_mask: !firrtl.uint<4>)
// CHECK: firrtl.connect %mem0_W0_data, %data : !firrtl.uint<32>, !firrtl.uint<32>
// CHECK: firrtl.connect %mem0_W0_data, %data : !firrtl.uint<32>
%mem0_write = firrtl.mem Old {depth = 1 : i64, name = "mem0", portNames = ["write"], readLatency = 1 : i32, writeLatency = 1 : i32} : !firrtl.bundle<addr: uint<1>, en: uint<1>, clk: clock, data: uint<32>, mask: uint<4>>
%1 = firrtl.subfield %mem0_write[addr] : !firrtl.bundle<addr: uint<1>, en: uint<1>, clk: clock, data: uint<32>, mask: uint<4>>
firrtl.connect %1, %addr : !firrtl.uint<1>, !firrtl.uint<1>
@ -218,9 +218,9 @@ firrtl.circuit "inferUnmaskedMemory" {
firrtl.connect %rw_wmode, %wMode : !firrtl.uint<1>, !firrtl.uint<1>
firrtl.connect %rw_mask, %wMask : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: %[[MReadWrite_RW0_addr:.+]], %[[MReadWrite_RW0_en:.+]], %[[MReadWrite_RW0_clk:.+]], %[[MReadWrite_RW0_wmode:.+]], %[[MReadWrite_RW0_wdata:.+]], %[[MReadWrite_RW0_rdata:.+]] = firrtl.instance MReadWrite @MReadWrite
// CHECK: firrtl.connect %[[MReadWrite_RW0_en]], %rEn : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %[[MReadWrite_RW0_en]], %rEn : !firrtl.uint<1>
// CHECK: %1 = firrtl.and %wMask, %wMode : (!firrtl.uint<1>, !firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK: firrtl.connect %[[MReadWrite_RW0_wmode]], %1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %[[MReadWrite_RW0_wmode]], %1 : !firrtl.uint<1>
}
}

View File

@ -17,9 +17,9 @@ firrtl.circuit "TopLevel" {
// SIG-NEXT: %source = firrtl.wire interesting_name : !firrtl.bundle<valid: uint<1>, ready flip: uint<1>, data: uint<64>>
// SIG-NEXT: %sink = firrtl.wire interesting_name : !firrtl.bundle<valid: uint<1>, ready flip: uint<1>, data: uint<64>>
// LT-NEXT: firrtl.when %[[SOURCE_VALID_NAME]] : !firrtl.uint<1>
// LT-NEXT: firrtl.connect %[[SINK_DATA_NAME]], %[[SOURCE_DATA_NAME]] : [[SINK_DATA_TYPE]], [[SOURCE_DATA_TYPE]]
// LT-NEXT: firrtl.connect %[[SINK_VALID_NAME]], %[[SOURCE_VALID_NAME]] : [[SINK_VALID_TYPE]], [[SOURCE_VALID_TYPE]]
// LT-NEXT: firrtl.connect %[[SOURCE_READY_NAME]], %[[SINK_READY_NAME]] : [[SOURCE_READY_TYPE]], [[SINK_READY_TYPE]]
// LT-NEXT: firrtl.connect %[[SINK_DATA_NAME]], %[[SOURCE_DATA_NAME]] : [[SINK_DATA_TYPE]]
// LT-NEXT: firrtl.connect %[[SINK_VALID_NAME]], %[[SOURCE_VALID_NAME]] : [[SINK_VALID_TYPE]]
// LT-NEXT: firrtl.connect %[[SOURCE_READY_NAME]], %[[SINK_READY_NAME]] : [[SOURCE_READY_TYPE]]
%0 = firrtl.subfield %source[valid] : !firrtl.bundle<valid: uint<1>, ready flip: uint<1>, data: uint<64>>
%1 = firrtl.subfield %source[ready] : !firrtl.bundle<valid: uint<1>, ready flip: uint<1>, data: uint<64>>
@ -76,8 +76,8 @@ firrtl.circuit "TopLevel" {
firrtl.module private @Recursive(in %arg: !firrtl.bundle<foo: bundle<bar: bundle<baz: uint<1>>, qux: sint<64>>>,
out %out1: !firrtl.uint<1>, out %out2: !firrtl.sint<64>) {
// CHECK-NEXT: firrtl.connect %[[OUT_1_NAME]], %[[FLAT_ARG_1_NAME]] : [[OUT_1_TYPE]], [[FLAT_ARG_1_TYPE]]
// CHECK-NEXT: firrtl.connect %[[OUT_2_NAME]], %[[FLAT_ARG_2_NAME]] : [[OUT_2_TYPE]], [[FLAT_ARG_2_TYPE]]
// CHECK-NEXT: firrtl.connect %[[OUT_1_NAME]], %[[FLAT_ARG_1_NAME]] : [[OUT_1_TYPE]]
// CHECK-NEXT: firrtl.connect %[[OUT_2_NAME]], %[[FLAT_ARG_2_NAME]] : [[OUT_2_TYPE]]
// AGGREGATE-NEXT: %0 = firrtl.subfield %[[ARG_NAME]][foo]
// AGGREGATE-NEXT: %1 = firrtl.subfield %0[bar]
// AGGREGATE-NEXT: %2 = firrtl.subfield %1[baz]
@ -106,7 +106,7 @@ firrtl.circuit "TopLevel" {
out %out : !firrtl.bundle<a: uint<1>, b: uint<1>>) {
// CHECK: firrtl.strictconnect %out_a, %in_a : !firrtl.uint<1>
// CHECK: firrtl.strictconnect %out_b, %in_b : !firrtl.uint<1>
// SIG: firrtl.connect %out, %in : !firrtl.bundle<a: uint<1>, b: uint<1>>, !firrtl.bundle<a: uint<1>, b: uint<1>>
// SIG: firrtl.connect %out, %in : !firrtl.bundle<a: uint<1>, b: uint<1>>
firrtl.connect %out, %in : !firrtl.bundle<a: uint<1>, b: uint<1>>, !firrtl.bundle<a: uint<1>, b: uint<1>>
}
@ -115,7 +115,7 @@ firrtl.circuit "TopLevel" {
// CHECK-SAME: out %[[FLAT_ARG_OUTPUT_NAME:b_b_c]]: [[FLAT_ARG_OUTPUT_TYPE:!firrtl.uint<1>]]
firrtl.module private @Foo(in %a: !firrtl.bundle<b: bundle<c: uint<1>>>, out %b: !firrtl.bundle<b: bundle<c: uint<1>>>) {
// CHECK: firrtl.strictconnect %[[FLAT_ARG_OUTPUT_NAME]], %[[FLAT_ARG_INPUT_NAME]] : [[FLAT_ARG_OUTPUT_TYPE]]
// SIG: firrtl.connect %b, %a : !firrtl.bundle<b: bundle<c: uint<1>>>, !firrtl.bundle<b: bundle<c: uint<1>>>
// SIG: firrtl.connect %b, %a : !firrtl.bundle<b: bundle<c: uint<1>>>
firrtl.connect %b, %a : !firrtl.bundle<b: bundle<c: uint<1>>>, !firrtl.bundle<b: bundle<c: uint<1>>>
}
@ -255,7 +255,7 @@ firrtl.circuit "TopLevel" {
//CHECK: firrtl.module private @top_mod(in %clock: !firrtl.clock)
//CHECK-NEXT: %U0_clock, %U0_inp_a_inp_d = firrtl.instance U0 @mod_2(in clock: !firrtl.clock, in inp_a_inp_d: !firrtl.uint<14>)
//CHECK-NEXT: %invalid_clock = firrtl.invalidvalue : !firrtl.clock
//CHECK-NEXT: firrtl.connect %U0_clock, %invalid_clock : !firrtl.clock, !firrtl.clock
//CHECK-NEXT: firrtl.connect %U0_clock, %invalid_clock : !firrtl.clock
//CHECK-NEXT: %invalid_ui14 = firrtl.invalidvalue : !firrtl.uint<14>
//CHECK-NEXT: firrtl.strictconnect %U0_inp_a_inp_d, %invalid_ui14 : !firrtl.uint<14>
@ -263,7 +263,7 @@ firrtl.circuit "TopLevel" {
//AGGREGATE: firrtl.module private @top_mod(in %clock: !firrtl.clock)
//AGGREGATE-NEXT: %U0_clock, %U0_inp_a = firrtl.instance U0 @mod_2(in clock: !firrtl.clock, in inp_a: !firrtl.bundle<inp_d: uint<14>>)
//AGGREGATE-NEXT: %invalid_clock = firrtl.invalidvalue : !firrtl.clock
//AGGREGATE-NEXT: firrtl.connect %U0_clock, %invalid_clock : !firrtl.clock, !firrtl.clock
//AGGREGATE-NEXT: firrtl.connect %U0_clock, %invalid_clock : !firrtl.clock
//AGGREGATE-NEXT: %invalid = firrtl.invalidvalue : !firrtl.bundle<inp_d: uint<14>>
//AGGREGATE-NEXT: %0 = firrtl.subfield %invalid[inp_d] : !firrtl.bundle<inp_d: uint<14>>
//AGGREGATE-NEXT: %1 = firrtl.subfield %U0_inp_a[inp_d] : !firrtl.bundle<inp_d: uint<14>>
@ -286,7 +286,7 @@ firrtl.circuit "TopLevel" {
// COMMON-LABEL: firrtl.module private @Mux
firrtl.module private @Mux(in %p: !firrtl.uint<1>, in %a: !firrtl.uint<1>, in %b: !firrtl.uint<1>, out %c: !firrtl.uint<1>) {
// CHECK-NEXT: %0 = firrtl.mux(%p, %a, %b) : (!firrtl.uint<1>, !firrtl.uint<1>, !firrtl.uint<1>) -> !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %c, %0 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %c, %0 : !firrtl.uint<1>
%0 = firrtl.mux(%p, %a, %b) : (!firrtl.uint<1>, !firrtl.uint<1>, !firrtl.uint<1>) -> !firrtl.uint<1>
firrtl.connect %c, %0 : !firrtl.uint<1>, !firrtl.uint<1>
}
@ -302,7 +302,7 @@ firrtl.circuit "TopLevel" {
// COMMON-LABEL: firrtl.module private @NodeBundle
firrtl.module private @NodeBundle(in %a: !firrtl.bundle<a: uint<1>>, out %b: !firrtl.uint<1>) {
// CHECK-NEXT: %n_a = firrtl.node %a_a : !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %b, %n_a : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %b, %n_a : !firrtl.uint<1>
// SIG: firrtl.node %a : !firrtl.bundle<a: uint<1>>
%n = firrtl.node %a : !firrtl.bundle<a: uint<1>>
%n_a = firrtl.subfield %n[a] : !firrtl.bundle<a: uint<1>>
@ -312,8 +312,8 @@ firrtl.circuit "TopLevel" {
// CHECK-LABEL: firrtl.module private @RegBundle(in %a_a: !firrtl.uint<1>, in %clk: !firrtl.clock, out %b_a: !firrtl.uint<1>)
firrtl.module private @RegBundle(in %a: !firrtl.bundle<a: uint<1>>, in %clk: !firrtl.clock, out %b: !firrtl.bundle<a: uint<1>>) {
// CHECK-NEXT: %x_a = firrtl.reg %clk : !firrtl.clock, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %x_a, %a_a : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %b_a, %x_a : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %x_a, %a_a : !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %b_a, %x_a : !firrtl.uint<1>
// SIG: %x = firrtl.reg %clk : !firrtl.clock, !firrtl.bundle<a: uint<1>>
%x = firrtl.reg %clk {name = "x"} : !firrtl.clock, !firrtl.bundle<a: uint<1>>
%0 = firrtl.subfield %x[a] : !firrtl.bundle<a: uint<1>>
@ -337,8 +337,8 @@ firrtl.circuit "TopLevel" {
// CHECK-LABEL: firrtl.module private @WireBundle(in %a_a: !firrtl.uint<1>, out %b_a: !firrtl.uint<1>)
firrtl.module private @WireBundle(in %a: !firrtl.bundle<a: uint<1>>, out %b: !firrtl.bundle<a: uint<1>>) {
// CHECK-NEXT: %x_a = firrtl.wire : !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %x_a, %a_a : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %b_a, %x_a : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %x_a, %a_a : !firrtl.uint<1>
// CHECK-NEXT: firrtl.connect %b_a, %x_a : !firrtl.uint<1>
%x = firrtl.wire : !firrtl.bundle<a: uint<1>>
%0 = firrtl.subfield %x[a] : !firrtl.bundle<a: uint<1>>
%1 = firrtl.subfield %a[a] : !firrtl.bundle<a: uint<1>>
@ -414,8 +414,8 @@ firrtl.circuit "TopLevel" {
// CHECK: %c0_ui1 = firrtl.constant 0 : !firrtl.uint<1>
// CHECK: %init_0 = firrtl.wire : !firrtl.uint<1>
// CHECK: %init_1 = firrtl.wire : !firrtl.uint<1>
// CHECK: firrtl.connect %init_0, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %init_1, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %init_0, %c0_ui1 : !firrtl.uint<1>
// CHECK: firrtl.connect %init_1, %c0_ui1 : !firrtl.uint<1>
// CHECK: %r_0 = firrtl.regreset %clock, %reset, %init_0 : !firrtl.clock, !firrtl.uint<1>, !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: %r_1 = firrtl.regreset %clock, %reset, %init_1 : !firrtl.clock, !firrtl.uint<1>, !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.strictconnect %r_0, %a_d_0 : !firrtl.uint<1>
@ -425,9 +425,9 @@ firrtl.circuit "TopLevel" {
// AGGREGATE: %c0_ui1 = firrtl.constant 0 : !firrtl.uint<1>
// AGGREGATE-NEXT: %init = firrtl.wire : !firrtl.vector<uint<1>, 2>
// AGGREGATE-NEXT: %0 = firrtl.subindex %init[0] : !firrtl.vector<uint<1>, 2>
// AGGREGATE-NEXT: firrtl.connect %0, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// AGGREGATE-NEXT: firrtl.connect %0, %c0_ui1 : !firrtl.uint<1>
// AGGREGATE-NEXT: %1 = firrtl.subindex %init[1] : !firrtl.vector<uint<1>, 2>
// AGGREGATE-NEXT: firrtl.connect %1, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// AGGREGATE-NEXT: firrtl.connect %1, %c0_ui1 : !firrtl.uint<1>
// AGGREGATE-NEXT: %r = firrtl.regreset %clock, %reset, %init : !firrtl.clock, !firrtl.uint<1>, !firrtl.vector<uint<1>, 2>, !firrtl.vector<uint<1>, 2>
// AGGREGATE-NEXT: %2 = firrtl.subindex %a_d[0] : !firrtl.vector<uint<1>, 2>
// AGGREGATE-NEXT: %3 = firrtl.subindex %r[0] : !firrtl.vector<uint<1>, 2>
@ -459,8 +459,8 @@ firrtl.circuit "TopLevel" {
// CHECK: %c0_ui1 = firrtl.constant 0 : !firrtl.uint<1>
// CHECK: %init_0 = firrtl.wire : !firrtl.uint<1>
// CHECK: %init_1 = firrtl.wire : !firrtl.uint<1>
// CHECK: firrtl.connect %init_0, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %init_1, %c0_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.connect %init_0, %c0_ui1 : !firrtl.uint<1>
// CHECK: firrtl.connect %init_1, %c0_ui1 : !firrtl.uint<1>
// CHECK: %0 = firrtl.regreset %clock, %reset, %init_0 : !firrtl.clock, !firrtl.uint<1>, !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: %1 = firrtl.regreset %clock, %reset, %init_1 : !firrtl.clock, !firrtl.uint<1>, !firrtl.uint<1>, !firrtl.uint<1>
// CHECK: firrtl.strictconnect %0, %a_d_0 : !firrtl.uint<1>
@ -770,7 +770,7 @@ firrtl.circuit "TopLevel" {
// CHECK-NEXT: %0 = firrtl.multibit_mux %sel, %a_1_0, %a_0_0 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: %1 = firrtl.multibit_mux %sel, %a_1_1, %a_0_1 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: %2 = firrtl.multibit_mux %sel, %1, %0 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %b, %2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %b, %2 : !firrtl.uint<2>
// CHECK-NEXT: }
// module Foo:
@ -904,11 +904,11 @@ firrtl.circuit "TopLevel" {
// CHECK-NEXT: %0 = firrtl.multibit_mux %sel1, %a_1_0, %a_0_0 : !firrtl.uint<1>, !firrtl.uint<2>
// CHECK-NEXT: %1 = firrtl.multibit_mux %sel1, %a_1_1, %a_0_1 : !firrtl.uint<1>, !firrtl.uint<2>
// CHECK-NEXT: %2 = firrtl.multibit_mux %sel1, %1, %0 : !firrtl.uint<1>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %b, %2 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %b, %2 : !firrtl.uint<2>
// CHECK-NEXT: %3 = firrtl.multibit_mux %sel1, %a_1_0, %a_0_0 : !firrtl.uint<1>, !firrtl.uint<2>
// CHECK-NEXT: %4 = firrtl.multibit_mux %sel1, %a_1_1, %a_0_1 : !firrtl.uint<1>, !firrtl.uint<2>
// CHECK-NEXT: %5 = firrtl.multibit_mux %sel2, %4, %3 : !firrtl.uint<1>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %c, %5 : !firrtl.uint<2>, !firrtl.uint<2>
// CHECK-NEXT: firrtl.connect %c, %5 : !firrtl.uint<2>
// CHECK-NEXT: }
@ -1051,7 +1051,7 @@ firrtl.module private @is1436_FOO() {
// The width of multibit mux index will be converted at LowerToHW,
// so it is ok that the type of `%source` is uint<2> here.
// CHECK: %0 = firrtl.multibit_mux %source, %x_4, %x_3, %x_2, %x_1, %x_0 : !firrtl.uint<2>, !firrtl.uint<10>
// CHECK-NEXT: firrtl.connect %z, %0 : !firrtl.uint<10>, !firrtl.uint<10>
// CHECK-NEXT: firrtl.connect %z, %0 : !firrtl.uint<10>
}
firrtl.module private @SendRefTypeBundles1(in %source: !firrtl.bundle<valid: uint<1>, ready: uint<1>, data: uint<64>>, out %sink: !firrtl.probe<bundle<valid: uint<1>, ready: uint<1>, data: uint<64>>>) {

View File

@ -45,7 +45,7 @@ firrtl.module @MyModule(in %in : !firrtl.uint<8>,
}
// CHECK-LABEL: firrtl.module @MyModule(in %in: !firrtl.uint<8>, out %out: !firrtl.uint<8>)
// CHECK-NEXT: firrtl.connect %out, %in : !firrtl.uint<8>, !firrtl.uint<8>
// CHECK-NEXT: firrtl.connect %out, %in : !firrtl.uint<8>
// CHECK-NEXT: }
@ -92,7 +92,7 @@ firrtl.module @Mod2(in %in : !firrtl.uint<8>,
// CHECK-LABEL: firrtl.module @Mod2(in %some_name: !firrtl.uint<8>,
// CHECK: out %out: !firrtl.uint<8>)
// CHECK-NEXT: firrtl.connect %out, %some_name : !firrtl.uint<8>, !firrtl.uint<8>
// CHECK-NEXT: firrtl.connect %out, %some_name : !firrtl.uint<8>
// CHECK-NEXT: }
// Check that quotes port names are paresable and printed with quote only if needed.

View File

@ -334,7 +334,7 @@ firrtl.circuit "Test" {
// CHECK: %0 = firrtl.subfield %port[a] : !firrtl.bundle<a flip: vector<uint<8>, 4>>
// CHECK: %1 = firrtl.subindex %0[3] : !firrtl.vector<uint<8>, 4>
// CHECK: %c7_ui8 = firrtl.constant 7 : !firrtl.uint<8>
// CHECK: firrtl.connect %1, %c7_ui8 : !firrtl.uint<8>, !firrtl.uint<8>
// CHECK: firrtl.connect %1, %c7_ui8 : !firrtl.uint<8>
%bundle = firrtl.subindex %port[3] : !firrtl.vector<bundle<a flip: uint<8>>, 4>
%field = firrtl.subfield %bundle[a] : !firrtl.bundle<a flip: uint<8>>
%value = firrtl.constant 7 : !firrtl.uint<8>
@ -681,7 +681,7 @@ firrtl.circuit "Test" {
// CHECK: %8 = firrtl.bundlecreate %6, %7 : (!firrtl.vector<uint<8>, 2>, !firrtl.vector<uint<16>, 2>) -> !firrtl.bundle<a: vector<uint<8>, 2>, b: vector<uint<16>, 2>>
%vector = firrtl.vectorcreate %bundle1, %bundle2 : (!firrtl.bundle<a: uint<8>, b: uint<16>>, !firrtl.bundle<a: uint<8>, b: uint<16>>) -> !firrtl.vector<bundle<a: uint<8>, b: uint<16>>, 2>
// CHECK: firrtl.connect %out, %8 : !firrtl.bundle<a: vector<uint<8>, 2>, b: vector<uint<16>, 2>>, !firrtl.bundle<a: vector<uint<8>, 2>, b: vector<uint<16>, 2>>
// CHECK: firrtl.connect %out, %8 : !firrtl.bundle<a: vector<uint<8>, 2>, b: vector<uint<16>, 2>>
firrtl.connect %out, %vector : !firrtl.vector<bundle<a: uint<8>, b: uint<16>>, 2>, !firrtl.vector<bundle<a: uint<8>, b: uint<16>>, 2>
}