@@ -336,6 +336,38 @@ firrtl.circuit "UnusedBitsAtEnd" {
336
336
337
337
// -----
338
338
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.sint <5 >) {
345
+ // CHECK: %Memory_read, %Memory_write = firrtl.mem Undefined
346
+ // CHECK-SAME: !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<5>>
347
+ // CHECK-SAME: !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<5>, mask: uint<1>>
348
+ %Memory_read , %Memory_write = firrtl.mem Undefined
349
+ {
350
+ depth = 12 : i64 ,
351
+ name = " Memory" ,
352
+ portNames = [" read" , " write" ],
353
+ readLatency = 0 : i32 ,
354
+ writeLatency = 1 : i32
355
+ } :
356
+ !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data flip : sint <42 >>,
357
+ !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
358
+
359
+ %read_data = firrtl.subfield %Memory_read [data ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data flip : sint <42 >>
360
+ %read_data_slice = firrtl.bits %read_data 7 to 3 : (!firrtl.sint <42 >) -> !firrtl.uint <5 >
361
+ %read_data_slice_sint = firrtl.asSInt %read_data_slice : (!firrtl.uint <5 >) -> !firrtl.sint <5 >
362
+ firrtl.connect %result_read , %read_data_slice_sint : !firrtl.sint <5 >, !firrtl.sint <5 >
363
+
364
+ %write_data = firrtl.subfield %Memory_write [data ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
365
+ firrtl.connect %write_data , %in_data : !firrtl.sint <42 >, !firrtl.sint <42 >
366
+ }
367
+ }
368
+
369
+ // -----
370
+
339
371
firrtl.circuit " OneAddressMasked" {
340
372
firrtl.module public @OneAddressMasked (
341
373
in %clock: !firrtl.clock ,
0 commit comments