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

Adding basic support for recognizing and handling SIMD intrinsics as HW intrinsics #35421

Merged
merged 40 commits into from
May 5, 2020
Merged
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
703ab93
Adding basic support for recognizing and handling SIMD intrinsics as …
tannergooding Apr 23, 2020
32209f3
Applying formatting patch
tannergooding Apr 24, 2020
a5ad01c
Fixing a preprocessor concatenation for non windows
tannergooding Apr 24, 2020
3b5f8f4
Add a default case to workaround a compiler warning on FreeBSD
tannergooding Apr 24, 2020
8744b7b
Fixing a noway_assert to include GT_HWINTRINSIC
tannergooding Apr 24, 2020
4beacab
Fixing some asserts that were being triggered
tannergooding Apr 24, 2020
3af99b2
Use getSIMDVectorRegisterByteLength
tannergooding Apr 25, 2020
e229ca0
Applying formatting patch
tannergooding Apr 25, 2020
92ec83c
Fixing ARM64 to use the actual type size
tannergooding Apr 25, 2020
e9e7b89
Removing the [Intrinsic] attribute from some Vector2/3/4 methods whic…
tannergooding Apr 25, 2020
f788049
Updating SSE/SSE2 CompareGreaterThan and related functions to be tabl…
tannergooding Apr 25, 2020
0cf2a0b
Fixing the SimdAsHWIntrinsic relational operations to match the GT_SI…
tannergooding Apr 25, 2020
10e7235
Ensure that GT_HWINTRINSIC fixes the type for certain TYP_SIMD8
tannergooding Apr 25, 2020
9022d94
Fixing the SimdAsHWIntrinsic Vector<int>.op_Multiply support to match…
tannergooding Apr 26, 2020
16048cd
Fixing the SimdAsHWIntrinsic Vector2/3 Division to match the GT_SIMD …
tannergooding Apr 26, 2020
82d646e
Porting Abs, Min, and Max to use the SimdAsHWIntrinsic support
tannergooding Apr 26, 2020
ed399c4
Minor fixups to the SSE2 codepath
tannergooding Apr 26, 2020
1e57f6e
Applying formatting patch
tannergooding Apr 26, 2020
aaa9962
Fixing a check in lowering
tannergooding Apr 26, 2020
d22ecab
Mark SimdAsHWIntrinsic nodes so we can lookup the correct handle
tannergooding Apr 27, 2020
5830101
Adding the 3 operand overload for gtNewSimdAsHWIntrinsicNode
tannergooding Apr 27, 2020
4f02f57
Fixing BuildHWIntrinsic to properly take RMW into account
tannergooding Apr 28, 2020
39f5086
Fixing the rationalize handling of GT_HWINTRINSIC to account for SIMD…
tannergooding Apr 28, 2020
fe969fd
Fixing the importer to not create SIMD nodes if featureSIMD is disabled
tannergooding Apr 28, 2020
bf291c5
Fixing the SSE4.2 implementation of CompareLessThan<long>
tannergooding Apr 28, 2020
ef4a77c
Preserve the base type for subtraction/addition operations
tannergooding Apr 29, 2020
e1b5acb
Applying formatting patch
tannergooding Apr 29, 2020
1b837a6
Responding to PR feedback
tannergooding Apr 29, 2020
ac867ec
Fixing a copy/paste error under reinterpret cast
tannergooding Apr 30, 2020
7482c49
Fixing abs to expect 1 argument
tannergooding May 1, 2020
c7ef80d
Adding method comment headers that were missing
tannergooding May 1, 2020
e569d25
Removing unused table entries from SimdAsHWIntrinsic for Vector2/3/4
tannergooding May 1, 2020
991a838
Ensure we catch intrinsics from the Vector static class
tannergooding May 1, 2020
017fe54
Fixing SSSE3_Abs and AVX2_Abs to get the base type from the first arg…
tannergooding May 1, 2020
06bec3e
Ensure we adjust the class handle used for intrinsics from the Vector…
tannergooding May 1, 2020
bd6e87a
Ensure we populate the handle cache for clsHnd even if it isn't used
tannergooding May 1, 2020
341aac8
Fix where we grab the base type from for the static Vector class
tannergooding May 2, 2020
b6494ee
Fixing ConditionalSelect and improving the messages used for impClone…
tannergooding May 2, 2020
470f627
Ensure we clone the constVectorDup before using it
tannergooding May 2, 2020
03840fa
Applying formatting patch
tannergooding May 3, 2020
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
Prev Previous commit
Next Next commit
Fixing a noway_assert to include GT_HWINTRINSIC
  • Loading branch information
tannergooding committed Apr 26, 2020
commit 8744b7b56f53acb168d1487b6c5750383496d293
10 changes: 4 additions & 6 deletions src/coreclr/src/jit/flowgraph.cpp
Original file line number Diff line number Diff line change
@@ -22298,12 +22298,10 @@ void Compiler::fgNoteNonInlineCandidate(Statement* stmt, GenTreeCall* call)
*/
GenTree* Compiler::fgGetStructAsStructPtr(GenTree* tree)
{
noway_assert((tree->gtOper == GT_LCL_VAR) || (tree->gtOper == GT_FIELD) || (tree->gtOper == GT_IND) ||
(tree->gtOper == GT_BLK) || (tree->gtOper == GT_OBJ) || tree->OperIsSIMD() ||
// tree->gtOper == GT_CALL || cannot get address of call.
// tree->gtOper == GT_MKREFANY || inlining should've been aborted due to mkrefany opcode.
// tree->gtOper == GT_RET_EXPR || cannot happen after fgUpdateInlineReturnExpressionPlaceHolder
(tree->gtOper == GT_COMMA));
noway_assert(tree->OperIs(GT_LCL_VAR, GT_FIELD, GT_IND, GT_BLK, GT_OBJ, GT_COMMA) || tree->OperIsSIMD() || tree->OperIsHWIntrinsic());
// GT_CALL, cannot get address of call.
// GT_MKREFANY, inlining should've been aborted due to mkrefany opcode.
// GT_RET_EXPR, cannot happen after fgUpdateInlineReturnExpressionPlaceHolder

switch (tree->OperGet())
{