-
Notifications
You must be signed in to change notification settings - Fork 69
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
Remove class Wide #1731
Remove class Wide #1731
Conversation
Three years late to this analysis, but inspecting the generated code for the ??R?$PolynomialInMonomialBasis@V?$Multivector@V?$Quantity@U?$Dimensions@$00$0A@$0A@$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@principia@@U?$Frame@W4Frame_SolarSystemTag@serialization@principia@@$0A@$00$01@internal_frame@geometry@4@$00@internal_grassmann@geometry@principia@@V?$Quantity@U?$Dimensions@$0A@$0A@$00$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@4@$0BA@UEstrinEvaluator@internal_polynomial_evaluators@numerics@4@@internal_polynomial@numerics@principia@@UEBA?AV?$Multivector@V?$Quantity@U?$Dimensions@$00$0A@$0A@$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@principia@@U?$Frame@W4Frame_SolarSystemTag@serialization@principia@@$0A@$00$01@internal_frame@geometry@4@$00@internal_grassmann@geometry@3@AEBV?$Quantity@U?$Dimensions@$0A@$0A@$00$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@3@@Z PROC ; principia::numerics::internal_polynomial::PolynomialInMonomialBasis<principia::geometry::internal_grassmann::Multivector<principia::quantities::internal_quantities::Quantity<principia::quantities::internal_dimensions::Dimensions<1,0,0,0,0,0,0,0> >,principia::geometry::internal_frame::Frame<enum principia::serialization::Frame_SolarSystemTag,0,1,2>,1>,principia::quantities::internal_quantities::Quantity<principia::quantities::internal_dimensions::Dimensions<0,0,1,0,0,0,0,0> >,16,principia::numerics::internal_polynomial_evaluators::EstrinEvaluator>::operator(), COMDAT
; 424 : operator()(Argument const& argument) const {
$LN415:
sub rsp, 104 ; 00000068H
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\quantities_body.hpp
; 71 : return Quantity(magnitude_ - right.magnitude_);
movsd xmm1, QWORD PTR [r8]
subsd xmm1, QWORD PTR [rcx+560]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm0, XMMWORD PTR [rcx+512]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 180 : return std::get<low>(coefficients);
movups xmm5, XMMWORD PTR [rcx+32]
movaps XMMWORD PTR [rsp+80], xmm6
movaps XMMWORD PTR [rsp+64], xmm7
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
movups xmm7, XMMWORD PTR [rcx+544]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_body.hpp
; 425 : return Evaluator<Value, Difference<Argument>, degree_>::Evaluate(
movaps xmm2, xmm1
mulsd xmm2, xmm1
movaps XMMWORD PTR [rsp+48], xmm8
movaps XMMWORD PTR [rsp+32], xmm9
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
movaps xmm9, xmm1
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm1, XMMWORD PTR [rcx+448]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 44 : SquareGenerator<Argument, n - 1>::Evaluate(argument);
movaps xmm3, xmm2
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
unpcklpd xmm9, xmm9
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm9
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
movaps xmm8, xmm2
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 44 : SquareGenerator<Argument, n - 1>::Evaluate(argument);
mulsd xmm3, xmm2
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
movups xmm2, XMMWORD PTR [rcx+416]
addsd xmm7, xmm0
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm9
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
movups xmm0, XMMWORD PTR [rcx+480]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 44 : SquareGenerator<Argument, n - 1>::Evaluate(argument);
movaps xmm4, xmm3
movaps XMMWORD PTR [rsp+16], xmm10
movaps XMMWORD PTR [rsp], xmm11
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
movaps xmm6, xmm3
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 44 : SquareGenerator<Argument, n - 1>::Evaluate(argument);
mulsd xmm4, xmm3
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm1, XMMWORD PTR [rcx+320]
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
movups xmm3, XMMWORD PTR [rcx+288]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 180 : return std::get<low>(coefficients);
movups xmm11, XMMWORD PTR [rcx+16]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
unpcklpd xmm8, xmm8
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 44 : SquareGenerator<Argument, n - 1>::Evaluate(argument);
movaps xmm10, xmm4
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm8
mulsd xmm1, xmm9
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
unpcklpd xmm6, xmm6
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm7, xmm0
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 44 : SquareGenerator<Argument, n - 1>::Evaluate(argument);
mulsd xmm10, xmm4
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm0, XMMWORD PTR [rcx+384]
mulsd xmm0, xmm9
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
unpcklpd xmm4, xmm4
unpcklpd xmm10, xmm10
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm5, xmm10
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm2, xmm0
movups xmm0, XMMWORD PTR [rcx+352]
addsd xmm0, xmm1
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm1, XMMWORD PTR [rcx+192]
mulsd xmm1, xmm9
mulsd xmm0, xmm8
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm2, xmm0
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm0, XMMWORD PTR [rcx+256]
mulsd xmm0, xmm9
mulsd xmm2, xmm6
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm3, xmm0
movups xmm0, XMMWORD PTR [rcx+224]
addsd xmm0, xmm1
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm1, XMMWORD PTR [rcx+64]
mulsd xmm1, xmm9
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm7, xmm2
movups xmm2, XMMWORD PTR [rcx+160]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm8
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm3, xmm0
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movups xmm0, XMMWORD PTR [rcx+128]
mulsd xmm0, xmm9
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm2, xmm0
movups xmm0, XMMWORD PTR [rcx+96]
addsd xmm0, xmm1
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm8
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm2, xmm0
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movaps xmm0, xmm9
mulpd xmm0, XMMWORD PTR [rcx+112]
mulsd xmm2, xmm6
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm0, XMMWORD PTR [rcx+144]
addsd xmm3, xmm2
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movaps xmm2, xmm9
mulpd xmm2, XMMWORD PTR [rcx+48]
mulsd xmm3, xmm4
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm2, XMMWORD PTR [rcx+80]
addsd xmm7, xmm3
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm2, xmm8
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm7, xmm5
addpd xmm2, xmm0
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_body.hpp
; 425 : return Evaluator<Value, Difference<Argument>, degree_>::Evaluate(
mov rax, rdx
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movaps xmm1, xmm9
movaps xmm0, xmm9
mulpd xmm1, XMMWORD PTR [rcx+176]
mulpd xmm0, XMMWORD PTR [rcx+240]
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+208]
addpd xmm0, XMMWORD PTR [rcx+272]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm8
mulpd xmm2, xmm6
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, xmm0
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movaps xmm0, xmm9
mulpd xmm0, XMMWORD PTR [rcx+368]
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm2, xmm1
addpd xmm0, XMMWORD PTR [rcx+400]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movaps xmm1, xmm9
mulpd xmm1, XMMWORD PTR [rcx+304]
mulpd xmm11, xmm10
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+336]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm2, xmm4
mulpd xmm1, xmm8
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, xmm0
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movaps xmm0, xmm9
mulpd xmm0, XMMWORD PTR [rcx+432]
mulpd xmm9, XMMWORD PTR [rcx+496]
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm0, XMMWORD PTR [rcx+464]
addpd xmm9, XMMWORD PTR [rcx+528]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm0, xmm8
mulpd xmm1, xmm6
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm0, xmm9
addpd xmm1, xmm0
addpd xmm2, xmm1
addpd xmm2, xmm11
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\grassmann_body.hpp
; 21 : : coordinates_(coordinates) {}
movups XMMWORD PTR [rdx], xmm2
movups XMMWORD PTR [rdx+16], xmm7
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_body.hpp
; 427 : }
movaps xmm6, XMMWORD PTR [rsp+80]
movaps xmm7, XMMWORD PTR [rsp+64]
movaps xmm8, XMMWORD PTR [rsp+48]
movaps xmm9, XMMWORD PTR [rsp+32]
movaps xmm10, XMMWORD PTR [rsp+16]
movaps xmm11, XMMWORD PTR [rsp]
add rsp, 104 ; 00000068H
ret 0 ??R?$PolynomialInMonomialBasis@V?$Multivector@V?$Quantity@U?$Dimensions@$00$0A@$0A@$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@principia@@U?$Frame@W4Frame_SolarSystemTag@serialization@principia@@$0A@$00$01@internal_frame@geometry@4@$00@internal_grassmann@geometry@principia@@V?$Quantity@U?$Dimensions@$0A@$0A@$00$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@4@$0BA@UHornerEvaluator@internal_polynomial_evaluators@numerics@4@@internal_polynomial@numerics@principia@@UEBA?AV?$Multivector@V?$Quantity@U?$Dimensions@$00$0A@$0A@$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@principia@@U?$Frame@W4Frame_SolarSystemTag@serialization@principia@@$0A@$00$01@internal_frame@geometry@4@$00@internal_grassmann@geometry@3@AEBV?$Quantity@U?$Dimensions@$0A@$0A@$00$0A@$0A@$0A@$0A@$0A@@internal_dimensions@quantities@principia@@@internal_quantities@quantities@3@@Z PROC ; principia::numerics::internal_polynomial::PolynomialInMonomialBasis<principia::geometry::internal_grassmann::Multivector<principia::quantities::internal_quantities::Quantity<principia::quantities::internal_dimensions::Dimensions<1,0,0,0,0,0,0,0> >,principia::geometry::internal_frame::Frame<enum principia::serialization::Frame_SolarSystemTag,0,1,2>,1>,principia::quantities::internal_quantities::Quantity<principia::quantities::internal_dimensions::Dimensions<0,0,1,0,0,0,0,0> >,16,principia::numerics::internal_polynomial_evaluators::HornerEvaluator>::operator(), COMDAT
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\quantities_body.hpp
; 71 : return Quantity(magnitude_ - right.magnitude_);
movsd xmm3, QWORD PTR [r8]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_evaluators_body.hpp
; 295 : return std::get<degree>(coefficients);
movups xmm1, XMMWORD PTR [rcx+32]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
movups xmm0, XMMWORD PTR [rcx+64]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\quantities_body.hpp
; 71 : return Quantity(magnitude_ - right.magnitude_);
subsd xmm3, QWORD PTR [rcx+560]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
movups xmm2, XMMWORD PTR [rcx+544]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\quantities\wide_body.hpp
; 12 : return _mm_set1_pd(x.magnitude_);
unpcklpd xmm3, xmm3
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
movups xmm1, XMMWORD PTR [rcx+96]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm1, xmm0
movups xmm0, XMMWORD PTR [rcx+128]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
movups xmm1, XMMWORD PTR [rcx+160]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm1, xmm0
movups xmm0, XMMWORD PTR [rcx+192]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
movups xmm1, XMMWORD PTR [rcx+224]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm1, xmm0
movups xmm0, XMMWORD PTR [rcx+256]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
movups xmm1, XMMWORD PTR [rcx+288]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm1, xmm0
movups xmm0, XMMWORD PTR [rcx+320]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
movups xmm1, XMMWORD PTR [rcx+352]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm1, xmm0
movups xmm0, XMMWORD PTR [rcx+384]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
movups xmm1, XMMWORD PTR [rcx+416]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm1, xmm0
movups xmm0, XMMWORD PTR [rcx+448]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
movups xmm1, XMMWORD PTR [rcx+480]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm1, xmm0
movups xmm0, XMMWORD PTR [rcx+512]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulsd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addsd xmm0, xmm1
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
movaps xmm1, xmm3
mulpd xmm1, XMMWORD PTR [rcx+16]
mulsd xmm0, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+48]
addsd xmm2, xmm0
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+80]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+112]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+144]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+176]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+208]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+240]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+272]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+304]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+336]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+368]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+400]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+432]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+464]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_body.hpp
; 425 : return Evaluator<Value, Difference<Argument>, degree_>::Evaluate(
mov rax, rdx
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\r3_element_body.hpp
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+496]
; 257 : return R3Element<Product<LScalar, RScalar>>(_mm_mul_pd(right.xy, left_128d),
mulpd xmm1, xmm3
; 229 : return R3Element<Scalar>(_mm_add_pd(left.xy, right.xy),
addpd xmm1, XMMWORD PTR [rcx+528]
; File C:\Users\robin\Projects\mockingbirdnest\Principia\geometry\grassmann_body.hpp
; 21 : : coordinates_(coordinates) {}
movups XMMWORD PTR [rdx], xmm1
movups XMMWORD PTR [rdx+16], xmm2
; File C:\Users\robin\Projects\mockingbirdnest\Principia\numerics\polynomial_body.hpp
; 427 : }
ret 0 |
It didn't give us the speed-up that we were hoping for, and it was making the code a bit clunky. If someone wants to resurrect it, the full implementation is in pleroy/WideOp2.