[llvm] 06effa5 - [LLVM][Verifier] Remove constant-only matrix stride check (#207665)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 17 03:37:11 PDT 2026
Author: mayanksolanki393
Date: 2026-07-17T11:37:06+01:00
New Revision: 06effa5b965f68a24dcea8550efc86225b186f54
URL: https://github.com/llvm/llvm-project/commit/06effa5b965f68a24dcea8550efc86225b186f54
DIFF: https://github.com/llvm/llvm-project/commit/06effa5b965f68a24dcea8550efc86225b186f54.diff
LOG: [LLVM][Verifier] Remove constant-only matrix stride check (#207665)
Remove the verifier check requiring constant column-major matrix
load/store strides to be greater than or equal to the row count.
The stride operand is not an immarg, so the verifier must not enforce
constraints that only apply when the argument happens to be constant.
Added:
Modified:
llvm/lib/IR/Verifier.cpp
llvm/test/Verifier/matrix-intrinsics.ll
Removed:
################################################################################
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 51c315cb13668..b6ee0170904e8 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -6674,7 +6674,7 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
case Intrinsic::matrix_column_major_load:
case Intrinsic::matrix_column_major_store: {
Function *IF = Call.getCalledFunction();
- ConstantInt *Stride = nullptr;
+ Value *Stride = nullptr;
ConstantInt *NumRows;
ConstantInt *NumColumns;
VectorType *ResultTy;
@@ -6711,14 +6711,14 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
cast<VectorType>(Call.getArgOperand(0)->getType())->getElementType();
break;
case Intrinsic::matrix_column_major_load: {
- Stride = dyn_cast<ConstantInt>(Call.getArgOperand(1));
+ Stride = Call.getArgOperand(1);
NumRows = cast<ConstantInt>(Call.getArgOperand(3));
NumColumns = cast<ConstantInt>(Call.getArgOperand(4));
ResultTy = cast<VectorType>(Call.getType());
break;
}
case Intrinsic::matrix_column_major_store: {
- Stride = dyn_cast<ConstantInt>(Call.getArgOperand(2));
+ Stride = Call.getArgOperand(2);
NumRows = cast<ConstantInt>(Call.getArgOperand(4));
NumColumns = cast<ConstantInt>(Call.getArgOperand(5));
ResultTy = cast<VectorType>(Call.getArgOperand(0)->getType());
@@ -6750,12 +6750,9 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
NumRows->getZExtValue() * NumColumns->getZExtValue(),
"Result of a matrix operation does not fit in the returned vector!");
- if (Stride) {
- Check(Stride->getBitWidth() <= 64, "Stride bitwidth cannot exceed 64!",
- IF);
- Check(Stride->getZExtValue() >= NumRows->getZExtValue(),
- "Stride must be greater or equal than the number of rows!", IF);
- }
+ if (Stride)
+ Check(Stride->getType()->getIntegerBitWidth() <= 64,
+ "Stride bitwidth cannot exceed 64!", IF);
break;
}
diff --git a/llvm/test/Verifier/matrix-intrinsics.ll b/llvm/test/Verifier/matrix-intrinsics.ll
index 42e98d5805c0f..574260a1c344d 100644
--- a/llvm/test/Verifier/matrix-intrinsics.ll
+++ b/llvm/test/Verifier/matrix-intrinsics.ll
@@ -98,8 +98,7 @@ define void @column.major_store_non_int_float_type(ptr %m, ptr %n, i64 %arg) {
define <4 x float> @column.major_load_stride_too_small(ptr %m, i32 %arg) {
;
-; CHECK-NEXT: Stride must be greater or equal than the number of rows!
-; CHECK-NEXT: ptr @llvm.matrix.column.major.load.v4f32.i64
+; CHECK-NOT: Stride must be greater or equal than the number of rows!
;
%result.1 = call <4 x float> @llvm.matrix.column.major.load.v4f32.i64(ptr %m, i64 1, i1 false, i32 2, i32 2)
ret <4 x float> %result.1
@@ -107,8 +106,7 @@ define <4 x float> @column.major_load_stride_too_small(ptr %m, i32 %arg) {
define void @column.major_store_stride_too_small(ptr %m, i64 %arg) {
;
-; CHECK-NEXT: Stride must be greater or equal than the number of rows!
-; CHECK-NEXT: ptr @llvm.matrix.column.major.store.v4f32.i64
+; CHECK-NOT: Stride must be greater or equal than the number of rows!
;
call void @llvm.matrix.column.major.store.v4f32.i64(<4 x float> zeroinitializer, ptr %m, i64 1, i1 false, i32 2, i32 2)
ret void
More information about the llvm-commits
mailing list