Skip to content

Commit 484c027

Browse files
committed
Revert "[mlir][LLVMIR] Add operand bundle support for llvm.intr.assume (#112143)"
This reverts commit d8fadad. The commit breaks the following CI builds: - ppc64le-mlir-rhel-clang: https://lab.llvm.org/buildbot/#/builders/129/builds/7685 - ppc64le-flang-rhel-clang: https://lab.llvm.org/buildbot/#/builders/157/builds/10338
1 parent 49de154 commit 484c027

20 files changed

+77
-276
lines changed

mlir/include/mlir/Dialect/ArmSME/IR/ArmSMEIntrinsicOps.td

-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ class ArmSME_IntrOp<string mnemonic,
7171
/*bit requiresAccessGroup=*/0,
7272
/*bit requiresAliasAnalysis=*/0,
7373
/*bit requiresFastmath=*/0,
74-
/*bit requiresOpBundles=*/0,
7574
/*list<int> immArgPositions=*/immArgPositions,
7675
/*list<string> immArgAttrNames=*/immArgAttrNames>;
7776

mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.td

-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ def LLVM_Dialect : Dialect {
5959
static StringRef getStructRetAttrName() { return "llvm.sret"; }
6060
static StringRef getWriteOnlyAttrName() { return "llvm.writeonly"; }
6161
static StringRef getZExtAttrName() { return "llvm.zeroext"; }
62-
static StringRef getOpBundleSizesAttrName() { return "op_bundle_sizes"; }
63-
static StringRef getOpBundleTagsAttrName() { return "op_bundle_tags"; }
6462
// TODO Restrict the usage of this to parameter attributes once there is an
6563
// alternative way of modeling memory effects on FunctionOpInterface.
6664
/// Name of the attribute that will cause the creation of a readnone memory

mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td

+9-35
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@ def LLVM_Log2Op : LLVM_UnaryIntrOpF<"log2">;
120120
def LLVM_LogOp : LLVM_UnaryIntrOpF<"log">;
121121
def LLVM_Prefetch : LLVM_ZeroResultIntrOp<"prefetch", [0],
122122
/*traits=*/[], /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
123-
/*requiresOpBundles=*/0, /*immArgPositions=*/[1, 2, 3],
124-
/*immArgAttrNames=*/["rw", "hint", "cache"]
123+
/*immArgPositions=*/[1, 2, 3], /*immArgAttrNames=*/["rw", "hint", "cache"]
125124
> {
126125
let arguments = (ins LLVM_AnyPointer:$addr, I32Attr:$rw, I32Attr:$hint, I32Attr:$cache);
127126
}
@@ -177,8 +176,7 @@ class LLVM_MemcpyIntrOpBase<string name> :
177176
DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
178177
DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
179178
/*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
180-
/*requiresOpBundles=*/0, /*immArgPositions=*/[3],
181-
/*immArgAttrNames=*/["isVolatile"]> {
179+
/*immArgPositions=*/[3], /*immArgAttrNames=*/["isVolatile"]> {
182180
dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
183181
Arg<LLVM_AnyPointer,"",[MemRead]>:$src,
184182
AnySignlessInteger:$len, I1Attr:$isVolatile);
@@ -208,8 +206,7 @@ def LLVM_MemcpyInlineOp :
208206
DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
209207
DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
210208
/*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
211-
/*requiresOpBundles=*/0, /*immArgPositions=*/[2, 3],
212-
/*immArgAttrNames=*/["len", "isVolatile"]> {
209+
/*immArgPositions=*/[2, 3], /*immArgAttrNames=*/["len", "isVolatile"]> {
213210
dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
214211
Arg<LLVM_AnyPointer,"",[MemRead]>:$src,
215212
APIntAttr:$len, I1Attr:$isVolatile);
@@ -235,8 +232,7 @@ def LLVM_MemsetOp : LLVM_ZeroResultIntrOp<"memset", [0, 2],
235232
DeclareOpInterfaceMethods<DestructurableAccessorOpInterface>,
236233
DeclareOpInterfaceMethods<SafeMemorySlotAccessOpInterface>],
237234
/*requiresAccessGroup=*/1, /*requiresAliasAnalysis=*/1,
238-
/*requiresOpBundles=*/0, /*immArgPositions=*/[3],
239-
/*immArgAttrNames=*/["isVolatile"]> {
235+
/*immArgPositions=*/[3], /*immArgAttrNames=*/["isVolatile"]> {
240236
dag args = (ins Arg<LLVM_AnyPointer,"",[MemWrite]>:$dst,
241237
I8:$val, AnySignlessInteger:$len, I1Attr:$isVolatile);
242238
// Append the alias attributes defined by LLVM_IntrOpBase.
@@ -290,8 +286,7 @@ def LLVM_NoAliasScopeDeclOp
290286
class LLVM_LifetimeBaseOp<string opName> : LLVM_ZeroResultIntrOp<opName, [1],
291287
[DeclareOpInterfaceMethods<PromotableOpInterface>],
292288
/*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
293-
/*requiresOpBundles=*/0, /*immArgPositions=*/[0],
294-
/*immArgAttrNames=*/["size"]> {
289+
/*immArgPositions=*/[0], /*immArgAttrNames=*/["size"]> {
295290
let arguments = (ins I64Attr:$size, LLVM_AnyPointer:$ptr);
296291
let assemblyFormat = "$size `,` $ptr attr-dict `:` qualified(type($ptr))";
297292
}
@@ -311,8 +306,7 @@ def LLVM_InvariantStartOp : LLVM_OneResultIntrOp<"invariant.start", [], [1],
311306
def LLVM_InvariantEndOp : LLVM_ZeroResultIntrOp<"invariant.end", [2],
312307
[DeclareOpInterfaceMethods<PromotableOpInterface>],
313308
/*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
314-
/*requiresOpBundles=*/0, /*immArgPositions=*/[1],
315-
/*immArgAttrNames=*/["size"]> {
309+
/*immArgPositions=*/[1], /*immArgAttrNames=*/["size"]> {
316310
let arguments = (ins LLVM_DefaultPointer:$start,
317311
I64Attr:$size,
318312
LLVM_AnyPointer:$ptr);
@@ -374,7 +368,7 @@ class LLVM_ConstrainedIntr<string mnem, int numArgs,
374368
SmallVector<Value> mlirOperands;
375369
SmallVector<NamedAttribute> mlirAttrs;
376370
if (failed(moduleImport.convertIntrinsicArguments(
377-
llvmOperands.take_front( }] # numArgs # [{), {}, false,
371+
llvmOperands.take_front( }] # numArgs # [{),
378372
{}, {}, mlirOperands, mlirAttrs))) {
379373
return failure();
380374
}
@@ -435,26 +429,7 @@ def LLVM_USHLSat : LLVM_BinarySameArgsIntrOpI<"ushl.sat">;
435429
//
436430

437431
def LLVM_AssumeOp
438-
: LLVM_ZeroResultIntrOp<"assume", /*overloadedOperands=*/[], /*traits=*/[],
439-
/*requiresAccessGroup=*/0,
440-
/*requiresAliasAnalysis=*/0,
441-
/*requiresOpBundles=*/1> {
442-
dag args = (ins I1:$cond);
443-
let arguments = !con(args, opBundleArgs);
444-
445-
let assemblyFormat = [{
446-
$cond
447-
( custom<OpBundles>($op_bundle_operands, type($op_bundle_operands),
448-
$op_bundle_tags)^ )?
449-
`:` type($cond) attr-dict
450-
}];
451-
452-
let builders = [
453-
OpBuilder<(ins "Value":$cond)>
454-
];
455-
456-
let hasVerifier = 1;
457-
}
432+
: LLVM_ZeroResultIntrOp<"assume", []>, Arguments<(ins I1:$cond)>;
458433

459434
def LLVM_SSACopyOp : LLVM_OneResultIntrOp<"ssa.copy", [], [0],
460435
[Pure, SameOperandsAndResultType]> {
@@ -1017,8 +992,7 @@ def LLVM_DebugTrap : LLVM_ZeroResultIntrOp<"debugtrap">;
1017992
def LLVM_UBSanTrap : LLVM_ZeroResultIntrOp<"ubsantrap",
1018993
/*overloadedOperands=*/[], /*traits=*/[],
1019994
/*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
1020-
/*requiresOpBundles=*/0, /*immArgPositions=*/[0],
1021-
/*immArgAttrNames=*/["failureKind"]> {
995+
/*immArgPositions=*/[0], /*immArgAttrNames=*/["failureKind"]> {
1022996
let arguments = (ins I8Attr:$failureKind);
1023997
}
1024998

mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td

+6-19
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ class LLVM_IntrOpBase<Dialect dialect, string opName, string enumName,
291291
list<int> overloadedResults, list<int> overloadedOperands,
292292
list<Trait> traits, int numResults,
293293
bit requiresAccessGroup = 0, bit requiresAliasAnalysis = 0,
294-
bit requiresFastmath = 0, bit requiresOpBundles = 0,
294+
bit requiresFastmath = 0,
295295
list<int> immArgPositions = [],
296296
list<string> immArgAttrNames = []>
297297
: LLVM_OpBase<dialect, opName, !listconcat(
@@ -313,12 +313,6 @@ class LLVM_IntrOpBase<Dialect dialect, string opName, string enumName,
313313
OptionalAttr<LLVM_AliasScopeArrayAttr>:$noalias_scopes,
314314
OptionalAttr<LLVM_TBAATagArrayAttr>:$tbaa),
315315
(ins )));
316-
dag opBundleArgs = !if(!gt(requiresOpBundles, 0),
317-
(ins VariadicOfVariadic<LLVM_Type,
318-
"op_bundle_sizes">:$op_bundle_operands,
319-
DenseI32ArrayAttr:$op_bundle_sizes,
320-
OptionalAttr<ArrayAttr>:$op_bundle_tags),
321-
(ins ));
322316
string llvmEnumName = enumName;
323317
string overloadedResultsCpp = "{" # !interleave(overloadedResults, ", ") # "}";
324318
string overloadedOperandsCpp = "{" # !interleave(overloadedOperands, ", ") # "}";
@@ -342,8 +336,6 @@ class LLVM_IntrOpBase<Dialect dialect, string opName, string enumName,
342336
SmallVector<NamedAttribute> mlirAttrs;
343337
if (failed(moduleImport.convertIntrinsicArguments(
344338
llvmOperands,
345-
llvmOpBundles,
346-
}] # !if(!gt(requiresOpBundles, 0), "true", "false") # [{,
347339
}] # immArgPositionsCpp # [{,
348340
}] # immArgAttrNamesCpp # [{,
349341
mlirOperands,
@@ -389,14 +381,12 @@ class LLVM_IntrOp<string mnem, list<int> overloadedResults,
389381
list<int> overloadedOperands, list<Trait> traits,
390382
int numResults, bit requiresAccessGroup = 0,
391383
bit requiresAliasAnalysis = 0, bit requiresFastmath = 0,
392-
bit requiresOpBundles = 0,
393384
list<int> immArgPositions = [],
394385
list<string> immArgAttrNames = []>
395386
: LLVM_IntrOpBase<LLVM_Dialect, "intr." # mnem, !subst(".", "_", mnem),
396387
overloadedResults, overloadedOperands, traits,
397388
numResults, requiresAccessGroup, requiresAliasAnalysis,
398-
requiresFastmath, requiresOpBundles, immArgPositions,
399-
immArgAttrNames>;
389+
requiresFastmath, immArgPositions, immArgAttrNames>;
400390

401391
// Base class for LLVM intrinsic operations returning no results. Places the
402392
// intrinsic into the LLVM dialect and prefixes its name with "intr.".
@@ -416,13 +406,11 @@ class LLVM_ZeroResultIntrOp<string mnem, list<int> overloadedOperands = [],
416406
list<Trait> traits = [],
417407
bit requiresAccessGroup = 0,
418408
bit requiresAliasAnalysis = 0,
419-
bit requiresOpBundles = 0,
420409
list<int> immArgPositions = [],
421410
list<string> immArgAttrNames = []>
422411
: LLVM_IntrOp<mnem, [], overloadedOperands, traits, /*numResults=*/0,
423412
requiresAccessGroup, requiresAliasAnalysis,
424-
/*requiresFastMath=*/0, requiresOpBundles, immArgPositions,
425-
immArgAttrNames>;
413+
/*requiresFastMath=*/0, immArgPositions, immArgAttrNames>;
426414

427415
// Base class for LLVM intrinsic operations returning one result. Places the
428416
// intrinsic into the LLVM dialect and prefixes its name with "intr.". This is
@@ -434,12 +422,11 @@ class LLVM_OneResultIntrOp<string mnem, list<int> overloadedResults = [],
434422
list<int> overloadedOperands = [],
435423
list<Trait> traits = [],
436424
bit requiresFastmath = 0,
437-
list<int> immArgPositions = [],
438-
list<string> immArgAttrNames = []>
425+
list<int> immArgPositions = [],
426+
list<string> immArgAttrNames = []>
439427
: LLVM_IntrOp<mnem, overloadedResults, overloadedOperands, traits, 1,
440428
/*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0,
441-
requiresFastmath, /*requiresOpBundles=*/0, immArgPositions,
442-
immArgAttrNames>;
429+
requiresFastmath, immArgPositions, immArgAttrNames>;
443430

444431
def LLVM_OneResultOpBuilder :
445432
OpBuilder<(ins "Type":$resultType, "ValueRange":$operands,

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

+15-3
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,11 @@ def LLVM_InvokeOp : LLVM_Op<"invoke", [
559559
VariadicOfVariadic<LLVM_Type,
560560
"op_bundle_sizes">:$op_bundle_operands,
561561
DenseI32ArrayAttr:$op_bundle_sizes,
562-
OptionalAttr<ArrayAttr>:$op_bundle_tags);
562+
DefaultValuedProperty<
563+
ArrayProperty<StringProperty, "operand bundle tags">,
564+
"ArrayRef<std::string>{}",
565+
"SmallVector<std::string>{}"
566+
>:$op_bundle_tags);
563567
let results = (outs Optional<LLVM_Type>:$result);
564568
let successors = (successor AnySuccessor:$normalDest,
565569
AnySuccessor:$unwindDest);
@@ -674,7 +678,11 @@ def LLVM_CallOp : LLVM_MemAccessOpBase<"call",
674678
VariadicOfVariadic<LLVM_Type,
675679
"op_bundle_sizes">:$op_bundle_operands,
676680
DenseI32ArrayAttr:$op_bundle_sizes,
677-
OptionalAttr<ArrayAttr>:$op_bundle_tags);
681+
DefaultValuedProperty<
682+
ArrayProperty<StringProperty, "operand bundle tags">,
683+
"ArrayRef<std::string>{}",
684+
"SmallVector<std::string>{}"
685+
>:$op_bundle_tags);
678686
// Append the aliasing related attributes defined in LLVM_MemAccessOpBase.
679687
let arguments = !con(args, aliasAttrs);
680688
let results = (outs Optional<LLVM_Type>:$result);
@@ -1922,7 +1930,11 @@ def LLVM_CallIntrinsicOp
19221930
VariadicOfVariadic<LLVM_Type,
19231931
"op_bundle_sizes">:$op_bundle_operands,
19241932
DenseI32ArrayAttr:$op_bundle_sizes,
1925-
OptionalAttr<ArrayAttr>:$op_bundle_tags);
1933+
DefaultValuedProperty<
1934+
ArrayProperty<StringProperty, "operand bundle tags">,
1935+
"ArrayRef<std::string>{}",
1936+
"SmallVector<std::string>{}"
1937+
>:$op_bundle_tags);
19261938
let results = (outs Optional<LLVM_Type>:$results);
19271939
let llvmBuilder = [{
19281940
return convertCallLLVMIntrinsicOp(op, builder, moduleTranslation);

mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class ROCDL_IntrOp<string mnemonic, list<int> overloadedResults,
9898
LLVM_IntrOpBase<ROCDL_Dialect, mnemonic,
9999
"amdgcn_" # !subst(".", "_", mnemonic), overloadedResults,
100100
overloadedOperands, traits, numResults, requiresAccessGroup,
101-
requiresAliasAnalysis, 0, 0, immArgPositions, immArgAttrNames>;
101+
requiresAliasAnalysis, 0, immArgPositions, immArgAttrNames>;
102102

103103
//===----------------------------------------------------------------------===//
104104
// ROCDL special register op definitions

mlir/include/mlir/Target/LLVMIR/ModuleImport.h

-2
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,6 @@ class ModuleImport {
243243
/// corresponding MLIR attribute names.
244244
LogicalResult
245245
convertIntrinsicArguments(ArrayRef<llvm::Value *> values,
246-
ArrayRef<llvm::OperandBundleUse> opBundles,
247-
bool requiresOpBundles,
248246
ArrayRef<unsigned> immArgPositions,
249247
ArrayRef<StringLiteral> immArgAttrNames,
250248
SmallVectorImpl<Value> &valuesOut,

0 commit comments

Comments
 (0)