Skip to content

Commit 5e5e98e

Browse files
authored
AMDGPU: Cleanup MAIFrag predicate code (#77734)
Move the complex predicates into separate variables.
1 parent c185a66 commit 5e5e98e

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

llvm/lib/Target/AMDGPU/VOP3PInstructions.td

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -593,13 +593,29 @@ class MAIFrag<SDPatternOperator Op, code pred> : PatFrag <
593593
pred
594594
>;
595595

596-
let GISelPredicateCode = [{ return MF.getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs(); }] in
597-
class AgprMAIFrag<SDPatternOperator Op> :
598-
MAIFrag<Op, [{ return MF->getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs(); }]>;
596+
defvar MayNeedAGPRs = [{
597+
return MF->getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs();
598+
}];
599599

600-
let GISelPredicateCode = [{ return !MF.getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs(); }] in
601-
class VgprMAIFrag<SDPatternOperator Op> :
602-
MAIFrag<Op, [{ return !MF->getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs(); }]>;
600+
defvar MayNeedAGPRs_gisel = [{
601+
return MF.getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs();
602+
}];
603+
604+
defvar MayNotNeedAGPRs = [{
605+
return !MF->getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs();
606+
}];
607+
608+
defvar MayNotNeedAGPRs_gisel = [{
609+
return !MF.getInfo<SIMachineFunctionInfo>()->mayNeedAGPRs();
610+
}];
611+
612+
class AgprMAIFrag<SDPatternOperator Op> : MAIFrag<Op, MayNeedAGPRs> {
613+
let GISelPredicateCode = MayNeedAGPRs_gisel;
614+
}
615+
616+
class VgprMAIFrag<SDPatternOperator Op> : MAIFrag<Op, MayNotNeedAGPRs> {
617+
let GISelPredicateCode = MayNotNeedAGPRs_gisel;
618+
}
603619

604620
let SubtargetPredicate = HasMAIInsts in {
605621

0 commit comments

Comments
 (0)