Skip to content

Commit 1045203

Browse files
committed
[FIRRTL] Add UnusedBits test for signed integer
1 parent 01e36bf commit 1045203

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

test/Dialect/FIRRTL/simplify-mems.mlir

+48
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,54 @@ firrtl.circuit "UnusedBitsAtEnd" {
336336

337337
// -----
338338

339+
firrtl.circuit "UnusedBitsOfSignedInteger" {
340+
firrtl.module public @UnusedBitsOfSignedInteger(
341+
in %clock: !firrtl.clock,
342+
in %addr: !firrtl.uint<4>,
343+
in %in_data: !firrtl.sint<42>,
344+
out %result_read: !firrtl.uint<5>) {
345+
346+
%c1_ui1 = firrtl.constant 1 : !firrtl.uint<1>
347+
348+
// CHECK: %Memory_read, %Memory_write = firrtl.mem Undefined
349+
// CHECK-SAME: !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<5>>
350+
// CHECK-SAME: !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<5>, mask: uint<1>>
351+
%Memory_read, %Memory_write = firrtl.mem Undefined
352+
{
353+
depth = 12 : i64,
354+
name = "Memory",
355+
portNames = ["read", "write"],
356+
readLatency = 0 : i32,
357+
writeLatency = 1 : i32
358+
} :
359+
!firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<42>>,
360+
!firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<42>, mask: uint<1>>
361+
362+
%read_addr = firrtl.subfield %Memory_read[addr] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<42>>
363+
firrtl.connect %read_addr, %addr : !firrtl.uint<4>, !firrtl.uint<4>
364+
%read_en = firrtl.subfield %Memory_read[en] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<42>>
365+
firrtl.connect %read_en, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
366+
%read_clk = firrtl.subfield %Memory_read[clk] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<42>>
367+
firrtl.connect %read_clk, %clock : !firrtl.clock, !firrtl.clock
368+
%read_data = firrtl.subfield %Memory_read[data] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<42>>
369+
%read_data_slice = firrtl.bits %read_data 7 to 3 : (!firrtl.sint<42>) -> !firrtl.uint<5>
370+
firrtl.connect %result_read, %read_data_slice : !firrtl.uint<5>, !firrtl.uint<5>
371+
372+
%write_addr = firrtl.subfield %Memory_write[addr] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<42>, mask: uint<1>>
373+
firrtl.connect %write_addr, %addr : !firrtl.uint<4>, !firrtl.uint<4>
374+
%write_en = firrtl.subfield %Memory_write[en] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<42>, mask: uint<1>>
375+
firrtl.connect %write_en, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
376+
%write_clk = firrtl.subfield %Memory_write[clk] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<42>, mask: uint<1>>
377+
firrtl.connect %write_clk, %clock : !firrtl.clock, !firrtl.clock
378+
%write_data = firrtl.subfield %Memory_write[data] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<42>, mask: uint<1>>
379+
firrtl.connect %write_data, %in_data : !firrtl.sint<42>, !firrtl.sint<42>
380+
%write_mask = firrtl.subfield %Memory_write[mask] : !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<42>, mask: uint<1>>
381+
firrtl.connect %write_mask, %c1_ui1 : !firrtl.uint<1>, !firrtl.uint<1>
382+
}
383+
}
384+
385+
// -----
386+
339387
firrtl.circuit "OneAddressMasked" {
340388
firrtl.module public @OneAddressMasked(
341389
in %clock: !firrtl.clock,

0 commit comments

Comments
 (0)