llhd 0.16.0

A Low Level Hardware Description that acts as a foundation for building hardware design tools.
Documentation
proc @broken_in_tcm (i64$ %acc_pdata_i, i5$ %acc_pid_i, i1$ %acc_pvalid_i, i5$ %rd, i64$ %ld_result, i1$ %lsu_pvalid, i5$ %lsu_rd, i1$ %retire_i, i32$ %alu_writeback) -> (i1$ %acc_pready_o, [1 x i5]$ %gpr_waddr, [1 x i32]$ %gpr_wdata, i1$ %gpr_we, i1$ %lsu_pready, i1$ %retire_load, i1$ %retire_acc) {
0:
    br %body
body:
    %1 = const i32 0
    %2 = const i1 0
    %3 = sig i1 %2
    %4 = shr i1$ %gpr_we, i1$ %3, i32 %1
    %5 = exts i1$, i1$ %4, 0, 1
    %6 = const i1 0
    %7 = const time 0s 1e
    drv i1$ %5, %6, %7
    %8 = const i32 0
    %9 = const i5 0
    %10 = [1 x i5 %9]
    %11 = sig [1 x i5] %10
    %12 = shr [1 x i5]$ %gpr_waddr, [1 x i5]$ %11, i32 %8
    %13 = extf i5$, [1 x i5]$ %12, 0
    %rd1 = prb i5$ %rd
    %14 = const time 0s 1e
    drv i5$ %13, %rd1, %14
    %15 = const i32 0
    %16 = const i32 0
    %17 = [1 x i32 %16]
    %18 = sig [1 x i32] %17
    %19 = shr [1 x i32]$ %gpr_wdata, [1 x i32]$ %18, i32 %15
    %20 = extf i32$, [1 x i32]$ %19, 0
    %alu_writeback1 = prb i32$ %alu_writeback
    %21 = const time 0s 1e
    drv i32$ %20, %alu_writeback1, %21
    %22 = const i1 0
    %23 = const time 0s 1e
    drv i1$ %lsu_pready, %22, %23
    %24 = const i1 0
    %25 = const time 0s 1e
    drv i1$ %acc_pready_o, %24, %25
    %26 = const i1 0
    %27 = const time 0s 1e
    drv i1$ %retire_acc, %26, %27
    %28 = const i1 0
    %29 = const time 0s 1e
    drv i1$ %retire_load, %28, %29
    %retire_i1 = prb i1$ %retire_i
    br %retire_i1, %if_false, %if_true
check:
    wait %body, %acc_pdata_i, %acc_pid_i, %acc_pvalid_i, %rd, %ld_result, %lsu_pvalid, %lsu_rd, %retire_i, %alu_writeback
if_true:
    %30 = const i32 0
    %31 = const i1 0
    %32 = sig i1 %31
    %33 = shr i1$ %gpr_we, i1$ %32, i32 %30
    %34 = exts i1$, i1$ %33, 0, 1
    %35 = const i1 1
    %36 = const time 0s 1e
    drv i1$ %34, %35, %36
    br %if_exit
if_false:
    %lsu_pvalid1 = prb i1$ %lsu_pvalid
    br %lsu_pvalid1, %if_false1, %if_true1
if_exit:
    br %check
if_true1:
    %37 = const i1 1
    %38 = const time 0s 1e
    drv i1$ %retire_load, %37, %38
    %39 = const i32 0
    %40 = const i1 0
    %41 = sig i1 %40
    %42 = shr i1$ %gpr_we, i1$ %41, i32 %39
    %43 = exts i1$, i1$ %42, 0, 1
    %44 = const i1 1
    %45 = const time 0s 1e
    drv i1$ %43, %44, %45
    %46 = const i32 0
    %47 = const i5 0
    %48 = [1 x i5 %47]
    %49 = sig [1 x i5] %48
    %50 = shr [1 x i5]$ %gpr_waddr, [1 x i5]$ %49, i32 %46
    %51 = extf i5$, [1 x i5]$ %50, 0
    %lsu_rd1 = prb i5$ %lsu_rd
    %52 = const time 0s 1e
    drv i5$ %51, %lsu_rd1, %52
    %53 = const i32 0
    %54 = const i32 0
    %55 = [1 x i32 %54]
    %56 = sig [1 x i32] %55
    %57 = shr [1 x i32]$ %gpr_wdata, [1 x i32]$ %56, i32 %53
    %58 = extf i32$, [1 x i32]$ %57, 0
    %ld_result1 = prb i64$ %ld_result
    %59 = const i1 0
    %60 = const i64 0
    %61 = shr i64 %ld_result1, i64 %60, i1 %59
    %62 = exts i32, i64 %61, 0, 32
    %63 = const time 0s 1e
    drv i32$ %58, %62, %63
    %64 = const i1 1
    %65 = const time 0s 1e
    drv i1$ %lsu_pready, %64, %65
    br %if_exit1
if_false1:
    %acc_pvalid_i1 = prb i1$ %acc_pvalid_i
    br %acc_pvalid_i1, %if_false2, %if_true2
if_exit1:
    br %if_exit
if_true2:
    %66 = const i1 1
    %67 = const time 0s 1e
    drv i1$ %retire_acc, %66, %67
    %68 = const i32 0
    %69 = const i1 0
    %70 = sig i1 %69
    %71 = shr i1$ %gpr_we, i1$ %70, i32 %68
    %72 = exts i1$, i1$ %71, 0, 1
    %73 = const i1 1
    %74 = const time 0s 1e
    drv i1$ %72, %73, %74
    %75 = const i32 0
    %76 = const i5 0
    %77 = [1 x i5 %76]
    %78 = sig [1 x i5] %77
    %79 = shr [1 x i5]$ %gpr_waddr, [1 x i5]$ %78, i32 %75
    %80 = extf i5$, [1 x i5]$ %79, 0
    %acc_pid_i1 = prb i5$ %acc_pid_i
    %81 = const time 0s 1e
    drv i5$ %80, %acc_pid_i1, %81
    %82 = const i32 0
    %83 = const i32 0
    %84 = [1 x i32 %83]
    %85 = sig [1 x i32] %84
    %86 = shr [1 x i32]$ %gpr_wdata, [1 x i32]$ %85, i32 %82
    %87 = extf i32$, [1 x i32]$ %86, 0
    %acc_pdata_i1 = prb i64$ %acc_pdata_i
    %88 = const i1 0
    %89 = const i64 0
    %90 = shr i64 %acc_pdata_i1, i64 %89, i1 %88
    %91 = exts i32, i64 %90, 0, 32
    %92 = const time 0s 1e
    drv i32$ %87, %91, %92
    %93 = const i1 1
    %94 = const time 0s 1e
    drv i1$ %acc_pready_o, %93, %94
    br %if_exit2
if_false2:
    br %if_exit2
if_exit2:
    br %if_exit1
}