@@ -551,7 +551,15 @@ def LLVM_InvokeOp : LLVM_Op<"invoke", [
551
551
Variadic<LLVM_Type>:$normalDestOperands,
552
552
Variadic<LLVM_Type>:$unwindDestOperands,
553
553
OptionalAttr<DenseI32ArrayAttr>:$branch_weights,
554
- DefaultValuedAttr<CConv, "CConv::C">:$CConv);
554
+ DefaultValuedAttr<CConv, "CConv::C">:$CConv,
555
+ VariadicOfVariadic<LLVM_Type,
556
+ "op_bundle_sizes">:$op_bundle_operands,
557
+ DenseI32ArrayAttr:$op_bundle_sizes,
558
+ DefaultValuedProperty<
559
+ ArrayProperty<StringProperty, "operand bundle tags">,
560
+ "ArrayRef<std::string>{}",
561
+ "SmallVector<std::string>{}"
562
+ >:$op_bundle_tags);
555
563
let results = (outs Optional<LLVM_Type>:$result);
556
564
let successors = (successor AnySuccessor:$normalDest,
557
565
AnySuccessor:$unwindDest);
@@ -587,7 +595,8 @@ def LLVM_LandingpadOp : LLVM_Op<"landingpad"> {
587
595
//===----------------------------------------------------------------------===//
588
596
589
597
def LLVM_CallOp : LLVM_MemAccessOpBase<"call",
590
- [DeclareOpInterfaceMethods<FastmathFlagsInterface>,
598
+ [AttrSizedOperandSegments,
599
+ DeclareOpInterfaceMethods<FastmathFlagsInterface>,
591
600
DeclareOpInterfaceMethods<CallOpInterface>,
592
601
DeclareOpInterfaceMethods<SymbolUserOpInterface>,
593
602
DeclareOpInterfaceMethods<BranchWeightOpInterface>]> {
@@ -641,8 +650,15 @@ def LLVM_CallOp : LLVM_MemAccessOpBase<"call",
641
650
OptionalAttr<LLVM_MemoryEffectsAttr>:$memory_effects,
642
651
OptionalAttr<UnitAttr>:$convergent,
643
652
OptionalAttr<UnitAttr>:$no_unwind,
644
- OptionalAttr<UnitAttr>:$will_return
645
- );
653
+ OptionalAttr<UnitAttr>:$will_return,
654
+ VariadicOfVariadic<LLVM_Type,
655
+ "op_bundle_sizes">:$op_bundle_operands,
656
+ DenseI32ArrayAttr:$op_bundle_sizes,
657
+ DefaultValuedProperty<
658
+ ArrayProperty<StringProperty, "operand bundle tags">,
659
+ "ArrayRef<std::string>{}",
660
+ "SmallVector<std::string>{}"
661
+ >:$op_bundle_tags);
646
662
// Append the aliasing related attributes defined in LLVM_MemAccessOpBase.
647
663
let arguments = !con(args, aliasAttrs);
648
664
let results = (outs Optional<LLVM_Type>:$result);
@@ -662,6 +678,7 @@ def LLVM_CallOp : LLVM_MemAccessOpBase<"call",
662
678
OpBuilder<(ins "LLVMFunctionType":$calleeType, "StringRef":$callee,
663
679
CArg<"ValueRange", "{}">:$args)>
664
680
];
681
+ let hasVerifier = 1;
665
682
let hasCustomAssemblyFormat = 1;
666
683
let extraClassDeclaration = [{
667
684
/// Returns the callee function type.
@@ -1875,21 +1892,34 @@ def LLVM_InlineAsmOp : LLVM_Op<"inline_asm", [DeclareOpInterfaceMethods<MemoryEf
1875
1892
1876
1893
def LLVM_CallIntrinsicOp
1877
1894
: LLVM_Op<"call_intrinsic",
1878
- [DeclareOpInterfaceMethods<FastmathFlagsInterface>]> {
1895
+ [AttrSizedOperandSegments,
1896
+ DeclareOpInterfaceMethods<FastmathFlagsInterface>]> {
1879
1897
let summary = "Call to an LLVM intrinsic function.";
1880
1898
let description = [{
1881
1899
Call the specified llvm intrinsic. If the intrinsic is overloaded, use
1882
1900
the MLIR function type of this op to determine which intrinsic to call.
1883
1901
}];
1884
1902
let arguments = (ins StrAttr:$intrin, Variadic<LLVM_Type>:$args,
1885
1903
DefaultValuedAttr<LLVM_FastmathFlagsAttr,
1886
- "{}">:$fastmathFlags);
1904
+ "{}">:$fastmathFlags,
1905
+ VariadicOfVariadic<LLVM_Type,
1906
+ "op_bundle_sizes">:$op_bundle_operands,
1907
+ DenseI32ArrayAttr:$op_bundle_sizes,
1908
+ DefaultValuedProperty<
1909
+ ArrayProperty<StringProperty, "operand bundle tags">,
1910
+ "ArrayRef<std::string>{}",
1911
+ "SmallVector<std::string>{}"
1912
+ >:$op_bundle_tags);
1887
1913
let results = (outs Optional<LLVM_Type>:$results);
1888
1914
let llvmBuilder = [{
1889
1915
return convertCallLLVMIntrinsicOp(op, builder, moduleTranslation);
1890
1916
}];
1891
1917
let assemblyFormat = [{
1892
- $intrin `(` $args `)` `:` functional-type($args, $results) attr-dict
1918
+ $intrin `(` $args `)`
1919
+ ( custom<OpBundles>($op_bundle_operands, type($op_bundle_operands),
1920
+ $op_bundle_tags)^ )?
1921
+ `:` functional-type($args, $results)
1922
+ attr-dict
1893
1923
}];
1894
1924
1895
1925
let hasVerifier = 1;
0 commit comments