[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:
Schuyler Eldridge 2021-08-23 17:06:10 -04:00
parent c07a9ee213
commit e218e1c6fe
No known key found for this signature in database
GPG Key ID: 50C5E9936AAD536D
2 changed files with 4 additions and 3 deletions

View File

@ -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)

View File

@ -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>