-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Implement SVE2 Rounded Arithmetic Intrinsics #117719
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
Conversation
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Preliminary pass LGTM, though CI is blocked by the merge conflicts I introduced (sorry about that)
src/tests/JIT/HardwareIntrinsics/Arm/Shared/_SveBinaryOpDifferentRetTypeTestTemplate.template
Outdated
Show resolved
Hide resolved
Includes: * AddRoundedHighNarrowingEven, AddRoundedHighNarrowingOdd * FusedAddRoundedHalving * SubtractRoundedHighNarrowingEven, SubtractRoundedHighNarrowingOdd
438ae64
to
e08f278
Compare
dynamic a = op1; | ||
dynamic b = op2; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tannergooding what would be the best way to disable these tests on native AOT? I don't want to disable the entire project but whatever calls into the codepaths with dynamic
keyword is unsupportable. Outerloop is failing with stacks like
System.ArgumentNullException: Value cannot be null. (Parameter 'key')
at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) + 0x3c8
at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) + 0x10
at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.VisitSAVE(ExprBinOp) + 0x5c
at Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Dispatch(Expr) + 0x408
at Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.Rewrite(ExprBinOp, Expression[]) + 0x6c
at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder, Expression[], DynamicMetaObject[], DynamicMetaObject&) + 0x1d4
at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(ICSharpBinder, Expression[], DynamicMetaObject[], DynamicMetaObject&) + 0x58
at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(ICSharpBinder, RuntimeBinder, DynamicMetaObject[], IEnumerable`1, DynamicMetaObject) + 0x490
at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[], ReadOnlyCollection`1, LabelTarget) + 0x148
at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1, Object[]) + 0x94
at HardwareIntrinsics_Arm_ro!<BaseAddress>+0x3e90d4c
at System.Reflection.DynamicInvokeInfo.InvokeWithFewArguments(IntPtr, Byte&, Byte&, Object[], BinderBundle, Boolean) + 0xd0
--- End of stack trace from previous location ---
at System.Linq.Expressions.Interpreter.ExceptionHelpers.UnwrapAndRethrow(TargetInvocationException) + 0x18
at System.Linq.Expressions.Interpreter.MethodInfoCallInstruction.Run(InterpretedFrame) + 0x1cc
at System.Linq.Expressions.Interpreter.Interpreter.Run(InterpretedFrame) + 0x48
at System.Linq.Expressions.Interpreter.LightLambda.Run(Object[] arguments) + 0x8c
at HardwareIntrinsics_Arm_ro!<BaseAddress>+0x3ce7ac0
at JIT.HardwareIntrinsics.Arm.Helpers.AddRoundedHighNarrowing[W,N](W op1, W op2) + 0xa4
at JIT.HardwareIntrinsics.Arm._AdvSimd.SimpleBinaryOpTest__AddRoundedHighNarrowingLower_Vector64_Byte.ValidateResult(UInt16[] left, UInt16[] right, Byte[] result, String method) + 0x90
at JIT.HardwareIntrinsics.Arm._AdvSimd.Program.AddRoundedHighNarrowingLower_Vector64_Byte() + 0x3c
at Program.<<Main>$>g__TestExecutor987|0_988(StreamWriter tempLogSw, StreamWriter statsCsvSw, Program.<>c__DisplayClass0_0&) + 0x114
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tannergooding what would be the best way to disable these tests on native AOT? I don't want to disable the entire project but whatever calls into the codepaths with
dynamic
keyword is unsupportable. Outerloop is failing with stacks like
Given AdvSimd works on AOT then we definitely should be testing on it. @snickolls-arm could you take a look at removing the dynamic
keyword from this file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you take a look at removing the dynamic keyword from this file.
For cases like this, I think you can use Convert.ToUInt64()
to do the cast without dynamic
.
Includes: