Skip to content

Commit cc50307

Browse files
committed
Feedback
1 parent 8ee9261 commit cc50307

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2000,15 +2000,16 @@ struct VectorToElementsLowering
20002000
SmallVector<Value> results(toElementsOp->getNumResults());
20012001
for (auto [idx, element] : llvm::enumerate(toElementsOp.getElements())) {
20022002
// Create an extractelement operation only for results that are not dead.
2003-
if (!element.use_empty()) {
2004-
auto constIdx = rewriter.create<LLVM::ConstantOp>(
2005-
loc, idxType, rewriter.getIntegerAttr(idxType, idx));
2006-
auto llvmType = typeConverter->convertType(element.getType());
2007-
2008-
Value result = rewriter.create<LLVM::ExtractElementOp>(
2009-
loc, llvmType, source, constIdx);
2010-
results[idx] = result;
2011-
}
2003+
if (element.use_empty())
2004+
continue;
2005+
2006+
auto constIdx = rewriter.create<LLVM::ConstantOp>(
2007+
loc, idxType, rewriter.getIntegerAttr(idxType, idx));
2008+
auto llvmType = typeConverter->convertType(element.getType());
2009+
2010+
Value result = rewriter.create<LLVM::ExtractElementOp>(loc, llvmType,
2011+
source, constIdx);
2012+
results[idx] = result;
20122013
}
20132014

20142015
rewriter.replaceOp(toElementsOp, results);

mlir/test/Conversion/VectorToLLVM/vector-to-llvm-interface.mlir

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2421,7 +2421,11 @@ func.func @from_elements_0d(%arg0: f32) -> vector<f32> {
24212421

24222422
// -----
24232423

2424-
// CHECK-LABEL: func.func @vector_to_elements_no_dead_elements
2424+
//===----------------------------------------------------------------------===//
2425+
// vector.to_elements
2426+
//===----------------------------------------------------------------------===//
2427+
2428+
// CHECK-LABEL: func.func @to_elements_no_dead_elements
24252429
// CHECK-SAME: %[[A:.*]]: vector<4xf32>)
24262430
// CHECK: %[[C0:.*]] = llvm.mlir.constant(0 : i64) : i64
24272431
// CHECK: %[[ELEM0:.*]] = llvm.extractelement %[[A]][%[[C0]] : i64] : vector<4xf32>
@@ -2432,14 +2436,14 @@ func.func @from_elements_0d(%arg0: f32) -> vector<f32> {
24322436
// CHECK: %[[C3:.*]] = llvm.mlir.constant(3 : i64) : i64
24332437
// CHECK: %[[ELEM3:.*]] = llvm.extractelement %[[A]][%[[C3]] : i64] : vector<4xf32>
24342438
// CHECK: return %[[ELEM0]], %[[ELEM1]], %[[ELEM2]], %[[ELEM3]] : f32, f32, f32, f32
2435-
func.func @vector_to_elements_no_dead_elements(%a: vector<4xf32>) -> (f32, f32, f32, f32) {
2439+
func.func @to_elements_no_dead_elements(%a: vector<4xf32>) -> (f32, f32, f32, f32) {
24362440
%0:4 = vector.to_elements %a : vector<4xf32>
24372441
return %0#0, %0#1, %0#2, %0#3 : f32, f32, f32, f32
24382442
}
24392443

24402444
// -----
24412445

2442-
// CHECK-LABEL: func.func @vector_to_elements_dead_elements
2446+
// CHECK-LABEL: func.func @to_elements_dead_elements
24432447
// CHECK-SAME: %[[A:.*]]: vector<4xf32>)
24442448
// CHECK-NOT: llvm.mlir.constant(0 : i64) : i64
24452449
// CHECK: %[[C1:.*]] = llvm.mlir.constant(1 : i64) : i64
@@ -2448,7 +2452,7 @@ func.func @vector_to_elements_no_dead_elements(%a: vector<4xf32>) -> (f32, f32,
24482452
// CHECK: %[[C3:.*]] = llvm.mlir.constant(3 : i64) : i64
24492453
// CHECK: %[[ELEM3:.*]] = llvm.extractelement %[[A]][%[[C3]] : i64] : vector<4xf32>
24502454
// CHECK: return %[[ELEM1]], %[[ELEM3]] : f32, f32
2451-
func.func @vector_to_elements_dead_elements(%a: vector<4xf32>) -> (f32, f32) {
2455+
func.func @to_elements_dead_elements(%a: vector<4xf32>) -> (f32, f32) {
24522456
%0:4 = vector.to_elements %a : vector<4xf32>
24532457
return %0#1, %0#3 : f32, f32
24542458
}

0 commit comments

Comments
 (0)