Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARM64-SVE: refactor lsra buildHWIntrinsic #107459

Open
wants to merge 34 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
2733b54
Add BuildConditionalSelectHWIntrinsic()
a74nh Sep 3, 2024
9c75beb
Add GetRMWOp()
a74nh Sep 3, 2024
bb908a5
Use GetDelayFreeOp() in BuildConditionalSelectWithEmbeddedOp()
a74nh Sep 3, 2024
23e08ff
simplify op2 handling
a74nh Sep 4, 2024
866bacd
Add getVectorAddrOperand()
a74nh Sep 4, 2024
442fc1f
Add getConsecutiveRegistersOperand
a74nh Sep 4, 2024
3ce31aa
Add BuildOperand()
a74nh Sep 4, 2024
323ce4b
Use BuildOperand for op1
a74nh Sep 4, 2024
eaa535c
Add buildHWIntrinsicImmediate
a74nh Sep 4, 2024
ec4efdb
Add getOperandCandidates()
a74nh Sep 5, 2024
8caedea
Remove BuildOperand()
a74nh Sep 5, 2024
99c53eb
remove delayFreeMultiple
a74nh Sep 5, 2024
1b30f92
Fixes from other PRs to be removed
a74nh Aug 27, 2024
861831d
Fix formatting
a74nh Sep 6, 2024
686749e
Use BuildHWIntrinsicImmediate for conditional select
a74nh Sep 9, 2024
1f8ed58
Remove IsRMW
a74nh Sep 9, 2024
2041f6f
Replace BuildConditionalSelectWithEmbeddedOp() with BuildEmbeddedOper…
a74nh Sep 6, 2024
c27b446
Revert "Fixes from other PRs to be removed"
a74nh Sep 9, 2024
0d8cf9b
Move functions
a74nh Sep 9, 2024
cb99816
Move functions
a74nh Sep 9, 2024
f5d34ac
Remove failing unary tests
a74nh Sep 9, 2024
357281e
Fix opNum type
a74nh Sep 9, 2024
00c33e8
Revert "Remove failing unary tests"
a74nh Sep 9, 2024
e58f641
Remove cases from getDelayFreeOperand that are handled by default
a74nh Sep 11, 2024
8682f0a
Merge main
a74nh Sep 11, 2024
faa608b
review cleanups
a74nh Sep 12, 2024
a4da945
Simplify masks in getOperandCandidates()
a74nh Sep 13, 2024
3d9e997
Remove IsMaskedOperation()
a74nh Sep 13, 2024
0b45899
Check for optional embedded masks in getDelayFreeOperand
a74nh Sep 13, 2024
bfece55
Merge main
a74nh Sep 16, 2024
e5cbb40
Merge main
a74nh Sep 26, 2024
7e3dd12
Only call BuildDelayFreeUses when register types match
a74nh Sep 26, 2024
f40079f
Merge main
a74nh Sep 27, 2024
df8263b
Assert only on Arm64
a74nh Sep 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions src/coreclr/jit/hwintrinsic.h
Original file line number Diff line number Diff line change
Expand Up @@ -948,12 +948,6 @@ struct HWIntrinsicInfo
return (flags & HW_Flag_Scalable) != 0;
}

static bool IsMaskedOperation(NamedIntrinsic id)
{
const HWIntrinsicFlag flags = lookupFlags(id);
return IsLowMaskedOperation(id) || IsOptionalEmbeddedMaskedOperation(id) || IsExplicitMaskedOperation(id);
}

static bool IsLowMaskedOperation(NamedIntrinsic id)
{
const HWIntrinsicFlag flags = lookupFlags(id);
Expand Down
8 changes: 7 additions & 1 deletion src/coreclr/jit/lsra.h
Original file line number Diff line number Diff line change
Expand Up @@ -1418,7 +1418,11 @@ class LinearScan : public LinearScanInterface
return nextConsecutiveRefPositionMap;
}
FORCEINLINE RefPosition* getNextConsecutiveRefPosition(RefPosition* refPosition);
void getLowVectorOperandAndCandidates(HWIntrinsic intrin, size_t* operandNum, SingleTypeRegSet* candidates);
SingleTypeRegSet getOperandCandidates(GenTreeHWIntrinsic* intrinsicTree, HWIntrinsic intrin, size_t opNum);
GenTree* getDelayFreeOperand(GenTreeHWIntrinsic* intrinsicTree, bool embedded = false);
GenTree* getVectorAddrOperand(GenTreeHWIntrinsic* intrinsicTree);
GenTree* getConsecutiveRegistersOperand(const HWIntrinsic intrin, bool* destIsConsecutive);
GenTreeHWIntrinsic* getEmbeddedMaskOperand(const HWIntrinsic intrin);
#endif

#ifdef DEBUG
Expand Down Expand Up @@ -2031,6 +2035,8 @@ class LinearScan : public LinearScanInterface
#ifdef TARGET_ARM64
int BuildConsecutiveRegistersForUse(GenTree* treeNode, GenTree* rmwNode = nullptr);
void BuildConsecutiveRegistersForDef(GenTree* treeNode, int fieldCount);
void BuildHWIntrinsicImmediate(GenTreeHWIntrinsic* intrinsicTree, const HWIntrinsic intrin);
int BuildEmbeddedOperandUses(GenTreeHWIntrinsic* embeddedOpNode, GenTree* embeddedDelayFreeOp);
#endif // TARGET_ARM64
#endif // FEATURE_HW_INTRINSICS

Expand Down
Loading
Loading