mirror of https://github.com/llvm/circt.git
[HWLegalizeNames] Fix case order
Fix bug in HWLegalizeNames where the case order was generated in reverse order. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
This commit is contained in:
parent
c07a9ee213
commit
e218e1c6fe
|
@ -92,12 +92,13 @@ Operation *HWLegalizeModulesPass::tryLoweringArrayGet(hw::ArrayGetOp getOp) {
|
|||
using sv::CaseZPattern;
|
||||
|
||||
// Create the casez itself.
|
||||
auto lastIndex = createOp.getNumOperands() - 1;
|
||||
builder.create<sv::CaseZOp>(
|
||||
createOp.getLoc(), index, createOp.getNumOperands() + !!defaultValue,
|
||||
[&](size_t caseIdx) -> CaseZPattern {
|
||||
bool isDefault = caseIdx >= createOp.getNumOperands();
|
||||
Value theValue =
|
||||
isDefault ? defaultValue : createOp.getOperand(caseIdx);
|
||||
isDefault ? defaultValue : createOp.getOperand(lastIndex - caseIdx);
|
||||
sv::CaseZPattern thePattern =
|
||||
isDefault
|
||||
? CaseZPattern::getDefault(caseValue.getBitWidth(), context)
|
||||
|
|
|
@ -40,7 +40,7 @@ hw.module @array_create_get_comb(%arg0: i8, %arg1: i8, %arg2: i8, %arg3: i8,
|
|||
// CHECK: sv.bpassign %casez_tmp, %arg3 : i8
|
||||
// CHECK: }
|
||||
// CHECK: }
|
||||
%0 = hw.array_create %arg0, %arg1, %arg2, %arg3 : i8
|
||||
%0 = hw.array_create %arg3, %arg2, %arg1, %arg0 : i8
|
||||
|
||||
// CHECK: %0 = sv.read_inout %casez_tmp : !hw.inout<i8>
|
||||
%1 = hw.array_get %0[%sel] : !hw.array<4xi8>
|
||||
|
@ -69,7 +69,7 @@ hw.module @array_create_get_default(%arg0: i8, %arg1: i8, %arg2: i8, %arg3: i8,
|
|||
// CHECK: default: {
|
||||
// CHECK: sv.bpassign %casez_tmp, %x_i8 : i8
|
||||
// CHECK: }
|
||||
%three_array = hw.array_create %arg0, %arg1, %arg2 : i8
|
||||
%three_array = hw.array_create %arg2, %arg1, %arg0 : i8
|
||||
|
||||
// CHECK: %0 = sv.read_inout %casez_tmp : !hw.inout<i8>
|
||||
%2 = hw.array_get %three_array[%sel] : !hw.array<3xi8>
|
||||
|
|
Loading…
Reference in New Issue