Skip to content

Commit b12a64a

Browse files
author
git apple-llvm automerger
committed
Merge commit '20fda8b9db2e' from apple/main into swift/next
2 parents f73f2f5 + 20fda8b commit b12a64a

File tree

3 files changed

+70
-39
lines changed

3 files changed

+70
-39
lines changed

mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td

Lines changed: 69 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,8 @@ class LLVM_ArithmeticOpBase<Type type, string mnemonic,
9494
LLVM_Builder<"$res = builder." # builderFunc # "($lhs, $rhs);"> {
9595
let arguments = (ins LLVM_ScalarOrVectorOf<type>:$lhs,
9696
LLVM_ScalarOrVectorOf<type>:$rhs);
97-
let parser =
98-
[{ return impl::parseOneResultSameOperandTypeOp(parser, result); }];
99-
let printer = [{ mlir::impl::printOneResultOp(this->getOperation(), p); }];
97+
let results = (outs LLVM_ScalarOrVectorOf<type>:$res);
98+
let assemblyFormat = "$lhs `,` $rhs attr-dict `:` type($res)";
10099
}
101100
class LLVM_IntArithmeticOp<string mnemonic, string builderFunc,
102101
list<OpTrait> traits = []> :
@@ -112,9 +111,8 @@ class LLVM_UnaryArithmeticOp<Type type, string mnemonic,
112111
!listconcat([NoSideEffect, SameOperandsAndResultType], traits)>,
113112
LLVM_Builder<"$res = builder." # builderFunc # "($operand);"> {
114113
let arguments = (ins type:$operand);
115-
let parser =
116-
[{ return impl::parseOneResultSameOperandTypeOp(parser, result); }];
117-
let printer = [{ mlir::impl::printOneResultOp(this->getOperation(), p); }];
114+
let results = (outs type:$res);
115+
let assemblyFormat = "$operand attr-dict `:` type($res)";
118116
}
119117

120118
// Integer binary operations.
@@ -157,6 +155,7 @@ def LLVM_ICmpOp : LLVM_OneResultOp<"icmp", [NoSideEffect]> {
157155
let arguments = (ins ICmpPredicate:$predicate,
158156
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>:$lhs,
159157
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>:$rhs);
158+
let results = (outs LLVM_ScalarOrVectorOf<LLVM_i1>:$res);
160159
let llvmBuilder = [{
161160
$res = builder.CreateICmp(getLLVMCmpPredicate($predicate), $lhs, $rhs);
162161
}];
@@ -204,6 +203,7 @@ def LLVM_FCmpOp : LLVM_OneResultOp<"fcmp", [NoSideEffect]> {
204203
let arguments = (ins FCmpPredicate:$predicate,
205204
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>:$lhs,
206205
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>:$rhs);
206+
let results = (outs LLVM_ScalarOrVectorOf<LLVM_i1>:$res);
207207
let llvmBuilder = [{
208208
$res = builder.CreateFCmp(getLLVMCmpPredicate($predicate), $lhs, $rhs);
209209
}];
@@ -257,6 +257,7 @@ def LLVM_AllocaOp :
257257
LLVM_OneResultOp<"alloca"> {
258258
let arguments = (ins LLVM_AnyInteger:$arraySize,
259259
OptionalAttr<I64Attr>:$alignment);
260+
let results = (outs LLVM_AnyPointer:$res);
260261
string llvmBuilder = [{
261262
auto *inst = builder.CreateAlloca(
262263
$_resultType->getPointerElementType(), $arraySize);
@@ -280,6 +281,7 @@ def LLVM_GEPOp : LLVM_OneResultOp<"getelementptr", [NoSideEffect]>,
280281
LLVM_Builder<"$res = builder.CreateGEP($base, $indices);"> {
281282
let arguments = (ins LLVM_ScalarOrVectorOf<LLVM_AnyPointer>:$base,
282283
Variadic<LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>:$indices);
284+
let results = (outs LLVM_ScalarOrVectorOf<LLVM_AnyPointer>:$res);
283285
let assemblyFormat = [{
284286
$base `[` $indices `]` attr-dict `:` functional-type(operands, results)
285287
}];
@@ -291,6 +293,7 @@ def LLVM_LoadOp :
291293
let arguments = (ins LLVM_PointerTo<LLVM_LoadableType>:$addr,
292294
OptionalAttr<I64Attr>:$alignment, UnitAttr:$volatile_,
293295
UnitAttr:$nontemporal);
296+
let results = (outs LLVM_Type:$res);
294297
string llvmBuilder = [{
295298
auto *inst = builder.CreateLoad($addr, $volatile_);
296299
}] # setAlignmentCode # setNonTemporalMetadataCode # [{
@@ -330,52 +333,64 @@ def LLVM_StoreOp :
330333

331334
// Casts.
332335
class LLVM_CastOp<string mnemonic, string builderFunc, Type type,
333-
list<OpTrait> traits = []> :
336+
Type resultType, list<OpTrait> traits = []> :
334337
LLVM_OneResultOp<mnemonic,
335338
!listconcat([NoSideEffect], traits)>,
336339
LLVM_Builder<"$res = builder." # builderFunc # "($arg, $_resultType);"> {
337340
let arguments = (ins type:$arg);
341+
let results = (outs resultType:$res);
338342
let parser = [{ return mlir::impl::parseCastOp(parser, result); }];
339343
let printer = [{ mlir::impl::printCastOp(this->getOperation(), p); }];
340344
}
341345
def LLVM_BitcastOp : LLVM_CastOp<"bitcast", "CreateBitCast",
342-
LLVM_AnyNonAggregate>;
346+
LLVM_AnyNonAggregate, LLVM_AnyNonAggregate>;
343347
def LLVM_AddrSpaceCastOp : LLVM_CastOp<"addrspacecast", "CreateAddrSpaceCast",
348+
LLVM_ScalarOrVectorOf<LLVM_AnyPointer>,
344349
LLVM_ScalarOrVectorOf<LLVM_AnyPointer>>;
345350
def LLVM_IntToPtrOp : LLVM_CastOp<"inttoptr", "CreateIntToPtr",
346-
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
347-
def LLVM_PtrToIntOp : LLVM_CastOp<"ptrtoint", "CreatePtrToInt",
351+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>,
348352
LLVM_ScalarOrVectorOf<LLVM_AnyPointer>>;
353+
def LLVM_PtrToIntOp : LLVM_CastOp<"ptrtoint", "CreatePtrToInt",
354+
LLVM_ScalarOrVectorOf<LLVM_AnyPointer>,
355+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
349356
def LLVM_SExtOp : LLVM_CastOp<"sext", "CreateSExt",
357+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>,
350358
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
351359
def LLVM_ZExtOp : LLVM_CastOp<"zext", "CreateZExt",
360+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>,
352361
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
353362
def LLVM_TruncOp : LLVM_CastOp<"trunc", "CreateTrunc",
363+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>,
354364
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
355365
def LLVM_SIToFPOp : LLVM_CastOp<"sitofp", "CreateSIToFP",
356-
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
366+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>,
367+
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>>;
357368
def LLVM_UIToFPOp : LLVM_CastOp<"uitofp", "CreateUIToFP",
358-
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
359-
def LLVM_FPToSIOp : LLVM_CastOp<"fptosi", "CreateFPToSI",
369+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>,
360370
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>>;
371+
def LLVM_FPToSIOp : LLVM_CastOp<"fptosi", "CreateFPToSI",
372+
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>,
373+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
361374
def LLVM_FPToUIOp : LLVM_CastOp<"fptoui", "CreateFPToUI",
362-
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>>;
375+
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>,
376+
LLVM_ScalarOrVectorOf<LLVM_AnyInteger>>;
363377
def LLVM_FPExtOp : LLVM_CastOp<"fpext", "CreateFPExt",
378+
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>,
364379
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>>;
365380
def LLVM_FPTruncOp : LLVM_CastOp<"fptrunc", "CreateFPTrunc",
381+
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>,
366382
LLVM_ScalarOrVectorOf<LLVM_AnyFloat>>;
367383

368384
// Call-related operations.
369385
def LLVM_InvokeOp : LLVM_Op<"invoke", [
370386
AttrSizedOperandSegments,
371387
DeclareOpInterfaceMethods<BranchOpInterface>,
372-
Terminator
373-
]>,
374-
Results<(outs Variadic<LLVM_Type>)> {
388+
Terminator]> {
375389
let arguments = (ins OptionalAttr<FlatSymbolRefAttr>:$callee,
376390
Variadic<LLVM_Type>:$operands,
377391
Variadic<LLVM_Type>:$normalDestOperands,
378392
Variadic<LLVM_Type>:$unwindDestOperands);
393+
let results = (outs Variadic<LLVM_Type>);
379394
let successors = (successor AnySuccessor:$normalDest,
380395
AnySuccessor:$unwindDest);
381396

@@ -400,15 +415,16 @@ def LLVM_InvokeOp : LLVM_Op<"invoke", [
400415

401416
def LLVM_LandingpadOp : LLVM_OneResultOp<"landingpad"> {
402417
let arguments = (ins UnitAttr:$cleanup, Variadic<LLVM_Type>);
418+
let results = (outs LLVM_Type:$res);
403419
let verifier = [{ return ::verify(*this); }];
404420
let parser = [{ return parseLandingpadOp(parser, result); }];
405421
let printer = [{ printLandingpadOp(p, *this); }];
406422
}
407423

408-
def LLVM_CallOp : LLVM_Op<"call">,
409-
Results<(outs Variadic<LLVM_Type>)> {
424+
def LLVM_CallOp : LLVM_Op<"call"> {
410425
let arguments = (ins OptionalAttr<FlatSymbolRefAttr>:$callee,
411426
Variadic<LLVM_Type>);
427+
let results = (outs Variadic<LLVM_Type>);
412428
let builders = [
413429
OpBuilderDAG<(ins "LLVMFuncOp":$func, "ValueRange":$operands,
414430
CArg<"ArrayRef<NamedAttribute>", "{}">:$attributes),
@@ -426,6 +442,7 @@ def LLVM_CallOp : LLVM_Op<"call">,
426442
}
427443
def LLVM_ExtractElementOp : LLVM_OneResultOp<"extractelement", [NoSideEffect]> {
428444
let arguments = (ins LLVM_AnyVector:$vector, LLVM_AnyInteger:$position);
445+
let results = (outs LLVM_Type:$res);
429446
string llvmBuilder = [{
430447
$res = builder.CreateExtractElement($vector, $position);
431448
}];
@@ -437,6 +454,7 @@ def LLVM_ExtractElementOp : LLVM_OneResultOp<"extractelement", [NoSideEffect]> {
437454
}
438455
def LLVM_ExtractValueOp : LLVM_OneResultOp<"extractvalue", [NoSideEffect]> {
439456
let arguments = (ins LLVM_AnyAggregate:$container, ArrayAttr:$position);
457+
let results = (outs LLVM_Type:$res);
440458
string llvmBuilder = [{
441459
$res = builder.CreateExtractValue($container, extractPosition($position));
442460
}];
@@ -446,6 +464,7 @@ def LLVM_ExtractValueOp : LLVM_OneResultOp<"extractvalue", [NoSideEffect]> {
446464
def LLVM_InsertElementOp : LLVM_OneResultOp<"insertelement", [NoSideEffect]> {
447465
let arguments = (ins LLVM_AnyVector:$vector, LLVM_PrimitiveType:$value,
448466
LLVM_AnyInteger:$position);
467+
let results = (outs LLVM_AnyVector:$res);
449468
string llvmBuilder = [{
450469
$res = builder.CreateInsertElement($vector, $value, $position);
451470
}];
@@ -455,6 +474,7 @@ def LLVM_InsertElementOp : LLVM_OneResultOp<"insertelement", [NoSideEffect]> {
455474
def LLVM_InsertValueOp : LLVM_OneResultOp<"insertvalue", [NoSideEffect]> {
456475
let arguments = (ins LLVM_AnyAggregate:$container, LLVM_PrimitiveType:$value,
457476
ArrayAttr:$position);
477+
let results = (outs LLVM_AnyAggregate:$res);
458478
string llvmBuilder = [{
459479
$res = builder.CreateInsertValue($container, $value,
460480
extractPosition($position));
@@ -469,6 +489,7 @@ def LLVM_InsertValueOp : LLVM_OneResultOp<"insertvalue", [NoSideEffect]> {
469489
}
470490
def LLVM_ShuffleVectorOp : LLVM_OneResultOp<"shufflevector", [NoSideEffect]> {
471491
let arguments = (ins LLVM_AnyVector:$v1, LLVM_AnyVector:$v2, ArrayAttr:$mask);
492+
let results = (outs LLVM_AnyVector:$res);
472493
string llvmBuilder = [{
473494
SmallVector<unsigned, 4> position = extractPosition($mask);
474495
SmallVector<int, 4> mask(position.begin(), position.end());
@@ -499,6 +520,7 @@ def LLVM_SelectOp
499520
"$res = builder.CreateSelect($condition, $trueValue, $falseValue);"> {
500521
let arguments = (ins LLVM_ScalarOrVectorOf<LLVM_i1>:$condition,
501522
LLVM_Type:$trueValue, LLVM_Type:$falseValue);
523+
let results = (outs LLVM_Type:$res);
502524
let builders = [
503525
OpBuilderDAG<(ins "Value":$condition, "Value":$lhs, "Value":$rhs),
504526
[{
@@ -508,6 +530,7 @@ def LLVM_SelectOp
508530
}
509531
def LLVM_FreezeOp : LLVM_OneResultOp<"freeze", [SameOperandsAndResultType]> {
510532
let arguments = (ins LLVM_Type:$val);
533+
let results = (outs LLVM_Type:$res);
511534
let assemblyFormat = "$val attr-dict `:` type($val)";
512535
string llvmBuilder = "builder.CreateFreeze($val);";
513536
}
@@ -641,6 +664,7 @@ def Linkage : LLVM_EnumAttr<
641664

642665
def LLVM_AddressOfOp : LLVM_OneResultOp<"mlir.addressof"> {
643666
let arguments = (ins FlatSymbolRefAttr:$global_name);
667+
let results = (outs LLVM_Type:$res);
644668

645669
let summary = "Creates a pointer pointing to a global or a function";
646670

@@ -796,25 +820,26 @@ def LLVM_NullOp
796820
: LLVM_OneResultOp<"mlir.null", [NoSideEffect]>,
797821
LLVM_Builder<"$res = llvm::ConstantPointerNull::get("
798822
" cast<llvm::PointerType>($_resultType));"> {
823+
let results = (outs LLVM_AnyPointer:$res);
799824
let assemblyFormat = "attr-dict `:` type($res)";
800-
let verifier = [{ return ::verify(*this); }];
801825
}
802826

803827
def LLVM_UndefOp : LLVM_OneResultOp<"mlir.undef", [NoSideEffect]>,
804828
LLVM_Builder<"$res = llvm::UndefValue::get($_resultType);"> {
829+
let results = (outs LLVM_Type:$res);
805830
let assemblyFormat = "attr-dict `:` type($res)";
806831
}
807832
def LLVM_ConstantOp
808833
: LLVM_OneResultOp<"mlir.constant", [NoSideEffect]>,
809834
LLVM_Builder<"$res = getLLVMConstant($_resultType, $value, $_location);">
810835
{
811836
let arguments = (ins AnyAttr:$value);
837+
let results = (outs LLVM_Type:$res);
812838
let assemblyFormat = "`(` $value `)` attr-dict `:` type($res)";
813839
let verifier = [{ return ::verify(*this); }];
814840
}
815841

816-
def LLVM_DialectCastOp : LLVM_Op<"mlir.cast", [NoSideEffect]>,
817-
Results<(outs AnyType:$res)> {
842+
def LLVM_DialectCastOp : LLVM_Op<"mlir.cast", [NoSideEffect]> {
818843
let summary = "Type cast between LLVM dialect and Standard.";
819844
let description = [{
820845
llvm.mlir.cast op casts between Standard and LLVM dialects. It only changes
@@ -828,6 +853,7 @@ def LLVM_DialectCastOp : LLVM_Op<"mlir.cast", [NoSideEffect]>,
828853
llvm.mlir.cast %v : !llvm<"<2 x float>"> to vector<2xf32>
829854
}];
830855
let arguments = (ins AnyType:$in);
856+
let results = (outs AnyType:$res);
831857
let assemblyFormat = "$in attr-dict `:` type($in) `to` type($res)";
832858
let verifier = "return ::verify(*this);";
833859
}
@@ -951,6 +977,7 @@ def LLVM_MatrixColumnMajorLoadOp
951977
: LLVM_OneResultOp<"intr.matrix.column.major.load"> {
952978
let arguments = (ins LLVM_Type:$data, LLVM_Type:$stride, I1Attr:$isVolatile,
953979
I32Attr:$rows, I32Attr:$columns);
980+
let results = (outs LLVM_Type:$res);
954981
string llvmBuilder = [{
955982
llvm::MatrixBuilder<decltype(builder)> mb(builder);
956983
const llvm::DataLayout &dl =
@@ -997,6 +1024,7 @@ def LLVM_MatrixMultiplyOp
9971024
: LLVM_OneResultOp<"intr.matrix.multiply"> {
9981025
let arguments = (ins LLVM_Type:$lhs, LLVM_Type:$rhs, I32Attr:$lhs_rows,
9991026
I32Attr:$lhs_columns, I32Attr:$rhs_columns);
1027+
let results = (outs LLVM_Type:$res);
10001028
string llvmBuilder = [{
10011029
llvm::MatrixBuilder<decltype(builder)> mb(builder);
10021030
$res = mb.CreateMatrixMultiply(
@@ -1011,6 +1039,7 @@ def LLVM_MatrixMultiplyOp
10111039
/// `matrix`, as specified in the LLVM MatrixBuilder.
10121040
def LLVM_MatrixTransposeOp : LLVM_OneResultOp<"intr.matrix.transpose"> {
10131041
let arguments = (ins LLVM_Type:$matrix, I32Attr:$rows, I32Attr:$columns);
1042+
let results = (outs LLVM_Type:$res);
10141043
string llvmBuilder = [{
10151044
llvm::MatrixBuilder<decltype(builder)> mb(builder);
10161045
$res = mb.CreateMatrixTranspose(
@@ -1035,6 +1064,7 @@ def LLVM_GetActiveLaneMaskOp
10351064
def LLVM_MaskedLoadOp : LLVM_OneResultOp<"intr.masked.load"> {
10361065
let arguments = (ins LLVM_Type:$data, LLVM_Type:$mask,
10371066
Variadic<LLVM_Type>:$pass_thru, I32Attr:$alignment);
1067+
let results = (outs LLVM_Type:$res);
10381068
string llvmBuilder = [{
10391069
$res = $pass_thru.empty() ? builder.CreateMaskedLoad(
10401070
$data, llvm::Align($alignment), $mask) :
@@ -1061,6 +1091,7 @@ def LLVM_MaskedStoreOp : LLVM_ZeroResultOp<"intr.masked.store"> {
10611091
def LLVM_masked_gather : LLVM_OneResultOp<"intr.masked.gather"> {
10621092
let arguments = (ins LLVM_Type:$ptrs, LLVM_Type:$mask,
10631093
Variadic<LLVM_Type>:$pass_thru, I32Attr:$alignment);
1094+
let results = (outs LLVM_Type:$res);
10641095
string llvmBuilder = [{
10651096
$res = $pass_thru.empty() ? builder.CreateMaskedGather(
10661097
$ptrs, llvm::Align($alignment), $mask) :
@@ -1139,11 +1170,11 @@ def AtomicOrdering : I64EnumAttr<
11391170

11401171
def LLVM_AtomicRMWType : AnyTypeOf<[LLVM_AnyFloat, LLVM_AnyInteger]>;
11411172

1142-
def LLVM_AtomicRMWOp : LLVM_Op<"atomicrmw">,
1143-
Results<(outs LLVM_Type:$res)> {
1173+
def LLVM_AtomicRMWOp : LLVM_Op<"atomicrmw"> {
11441174
let arguments = (ins AtomicBinOp:$bin_op,
11451175
LLVM_PointerTo<LLVM_AtomicRMWType>:$ptr,
11461176
LLVM_AtomicRMWType:$val, AtomicOrdering:$ordering);
1177+
let results = (outs LLVM_AtomicRMWType:$res);
11471178
let llvmBuilder = [{
11481179
$res = builder.CreateAtomicRMW(getLLVMAtomicBinOp($bin_op), $ptr, $val,
11491180
getLLVMAtomicOrdering($ordering));
@@ -1154,12 +1185,24 @@ def LLVM_AtomicRMWOp : LLVM_Op<"atomicrmw">,
11541185
}
11551186

11561187
def LLVM_AtomicCmpXchgType : AnyTypeOf<[LLVM_AnyInteger, LLVM_AnyPointer]>;
1157-
1158-
def LLVM_AtomicCmpXchgOp : LLVM_Op<"cmpxchg">, Results<(outs LLVM_Type:$res)> {
1188+
def LLVM_AtomicCmpXchgResultType : Type<And<[
1189+
LLVM_AnyStruct.predicate,
1190+
CPred<"$_self.cast<::mlir::LLVM::LLVMStructType>().getBody().size() == 2">,
1191+
SubstLeaves<"$_self",
1192+
"$_self.cast<::mlir::LLVM::LLVMStructType>().getBody()[0]",
1193+
LLVM_AtomicCmpXchgType.predicate>,
1194+
SubstLeaves<"$_self",
1195+
"$_self.cast<::mlir::LLVM::LLVMStructType>().getBody()[1]",
1196+
LLVM_i1.predicate>]>,
1197+
"an LLVM struct type with any integer or pointer followed by a single-bit "
1198+
"integer">;
1199+
1200+
def LLVM_AtomicCmpXchgOp : LLVM_Op<"cmpxchg"> {
11591201
let arguments = (ins LLVM_PointerTo<LLVM_AtomicCmpXchgType>:$ptr,
11601202
LLVM_AtomicCmpXchgType:$cmp, LLVM_AtomicCmpXchgType:$val,
11611203
AtomicOrdering:$success_ordering,
11621204
AtomicOrdering:$failure_ordering);
1205+
let results = (outs LLVM_AtomicCmpXchgResultType:$res);
11631206
let llvmBuilder = [{
11641207
$res = builder.CreateAtomicCmpXchg($ptr, $cmp, $val,
11651208
getLLVMAtomicOrdering($success_ordering),

mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,18 +1510,6 @@ static LogicalResult verify(LLVMFuncOp op) {
15101510
return success();
15111511
}
15121512

1513-
//===----------------------------------------------------------------------===//
1514-
// Verification for LLVM::NullOp.
1515-
//===----------------------------------------------------------------------===//
1516-
1517-
// Only LLVM pointer types are supported.
1518-
static LogicalResult verify(LLVM::NullOp op) {
1519-
auto llvmType = op.getType().dyn_cast<LLVM::LLVMType>();
1520-
if (!llvmType || !llvmType.isPointerTy())
1521-
return op.emitOpError("expected LLVM IR pointer type");
1522-
return success();
1523-
}
1524-
15251513
//===----------------------------------------------------------------------===//
15261514
// Verification for LLVM::ConstantOp.
15271515
//===----------------------------------------------------------------------===//

mlir/test/Dialect/LLVMIR/invalid.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ func @invalid_vector_type_3(%arg0: !llvm.vec<4 x float>, %arg1: !llvm.i32, %arg2
339339
// -----
340340

341341
func @null_non_llvm_type() {
342-
// expected-error@+1 {{expected LLVM IR pointer type}}
342+
// expected-error@+1 {{must be LLVM pointer type, but got '!llvm.i32'}}
343343
llvm.mlir.null : !llvm.i32
344344
}
345345

0 commit comments

Comments
 (0)