@smake/eigen 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2023 Zang Ruochen <zangruochen@loongson.cn>
|
|
5
|
+
// Copyright (C) 2024 XiWei Gu <guxiwei-hf@loongson.cn>
|
|
6
|
+
//
|
|
7
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
8
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
9
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
10
|
+
|
|
11
|
+
#ifndef EIGEN_TYPE_CASTING_LSX_H
|
|
12
|
+
#define EIGEN_TYPE_CASTING_LSX_H
|
|
13
|
+
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "../../InternalHeaderCheck.h"
|
|
16
|
+
|
|
17
|
+
namespace Eigen {
|
|
18
|
+
|
|
19
|
+
namespace internal {
|
|
20
|
+
|
|
21
|
+
//==============================================================================
|
|
22
|
+
// preinterpret
|
|
23
|
+
//==============================================================================
|
|
24
|
+
template <>
|
|
25
|
+
EIGEN_STRONG_INLINE Packet4f preinterpret<Packet4f, Packet4i>(const Packet4i& a) {
|
|
26
|
+
return (__m128)((__m128i)a);
|
|
27
|
+
}
|
|
28
|
+
template <>
|
|
29
|
+
EIGEN_STRONG_INLINE Packet4f preinterpret<Packet4f, Packet4ui>(const Packet4ui& a) {
|
|
30
|
+
return (__m128)((__m128i)a);
|
|
31
|
+
}
|
|
32
|
+
template <>
|
|
33
|
+
EIGEN_STRONG_INLINE Packet2d preinterpret<Packet2d, Packet2l>(const Packet2l& a) {
|
|
34
|
+
return (__m128d)((__m128i)a);
|
|
35
|
+
}
|
|
36
|
+
template <>
|
|
37
|
+
EIGEN_STRONG_INLINE Packet2d preinterpret<Packet2d, Packet2ul>(const Packet2ul& a) {
|
|
38
|
+
return (__m128d)((__m128i)a);
|
|
39
|
+
}
|
|
40
|
+
template <>
|
|
41
|
+
EIGEN_STRONG_INLINE Packet2d preinterpret<Packet2d, Packet4i>(const Packet4i& a) {
|
|
42
|
+
return (__m128d)((__m128i)a);
|
|
43
|
+
}
|
|
44
|
+
template <>
|
|
45
|
+
EIGEN_STRONG_INLINE Packet16c preinterpret<Packet16c, Packet16uc>(const Packet16uc& a) {
|
|
46
|
+
return (__m128i)a;
|
|
47
|
+
}
|
|
48
|
+
template <>
|
|
49
|
+
EIGEN_STRONG_INLINE Packet8s preinterpret<Packet8s, Packet8us>(const Packet8us& a) {
|
|
50
|
+
return (__m128i)a;
|
|
51
|
+
}
|
|
52
|
+
template <>
|
|
53
|
+
EIGEN_STRONG_INLINE Packet4i preinterpret<Packet4i, Packet4f>(const Packet4f& a) {
|
|
54
|
+
return (__m128i)a;
|
|
55
|
+
}
|
|
56
|
+
template <>
|
|
57
|
+
EIGEN_STRONG_INLINE Packet4i preinterpret<Packet4i, Packet4ui>(const Packet4ui& a) {
|
|
58
|
+
return (__m128i)a;
|
|
59
|
+
}
|
|
60
|
+
template <>
|
|
61
|
+
EIGEN_STRONG_INLINE Packet4i preinterpret<Packet4i, Packet2d>(const Packet2d& a) {
|
|
62
|
+
return (__m128i)a;
|
|
63
|
+
}
|
|
64
|
+
template <>
|
|
65
|
+
EIGEN_STRONG_INLINE Packet2l preinterpret<Packet2l, Packet2d>(const Packet2d& a) {
|
|
66
|
+
return (__m128i)a;
|
|
67
|
+
}
|
|
68
|
+
template <>
|
|
69
|
+
EIGEN_STRONG_INLINE Packet16uc preinterpret<Packet16uc, Packet16c>(const Packet16c& a) {
|
|
70
|
+
return (__m128i)a;
|
|
71
|
+
}
|
|
72
|
+
template <>
|
|
73
|
+
EIGEN_STRONG_INLINE Packet8us preinterpret<Packet8us, Packet8s>(const Packet8s& a) {
|
|
74
|
+
return (__m128i)a;
|
|
75
|
+
}
|
|
76
|
+
template <>
|
|
77
|
+
EIGEN_STRONG_INLINE Packet4ui preinterpret<Packet4ui, Packet4f>(const Packet4f& a) {
|
|
78
|
+
return (__m128i)a;
|
|
79
|
+
}
|
|
80
|
+
template <>
|
|
81
|
+
EIGEN_STRONG_INLINE Packet4ui preinterpret<Packet4ui, Packet4i>(const Packet4i& a) {
|
|
82
|
+
return (__m128i)a;
|
|
83
|
+
}
|
|
84
|
+
template <>
|
|
85
|
+
EIGEN_STRONG_INLINE Packet2ul preinterpret<Packet2ul, Packet2d>(const Packet2d& a) {
|
|
86
|
+
return (__m128i)a;
|
|
87
|
+
}
|
|
88
|
+
template <>
|
|
89
|
+
EIGEN_STRONG_INLINE Packet2ul preinterpret<Packet2ul, Packet2l>(const Packet2l& a) {
|
|
90
|
+
return (__m128i)a;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
template <>
|
|
94
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet4f, Packet2l>(const Packet4f& a) {
|
|
95
|
+
Packet2d tmp = __lsx_vfcvtl_d_s(a);
|
|
96
|
+
return __lsx_vftint_l_d(tmp);
|
|
97
|
+
}
|
|
98
|
+
template <>
|
|
99
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet4f, Packet2ul>(const Packet4f& a) {
|
|
100
|
+
Packet2d tmp = __lsx_vfcvtl_d_s(a);
|
|
101
|
+
return __lsx_vftint_lu_d(tmp);
|
|
102
|
+
}
|
|
103
|
+
template <>
|
|
104
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet4f, Packet4i>(const Packet4f& a) {
|
|
105
|
+
return __lsx_vftint_w_s(a);
|
|
106
|
+
}
|
|
107
|
+
template <>
|
|
108
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet4f, Packet4ui>(const Packet4f& a) {
|
|
109
|
+
return __lsx_vftint_wu_s(a);
|
|
110
|
+
}
|
|
111
|
+
template <>
|
|
112
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet4f, Packet8s>(const Packet4f& a, const Packet4f& b) {
|
|
113
|
+
return __lsx_vssrlni_h_w(__lsx_vftint_w_s(a), __lsx_vftint_w_s(b), 0);
|
|
114
|
+
}
|
|
115
|
+
template <>
|
|
116
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet4f, Packet8us>(const Packet4f& a, const Packet4f& b) {
|
|
117
|
+
return __lsx_vssrlni_hu_w(__lsx_vftint_wu_s(a), __lsx_vftint_wu_s(b), 0);
|
|
118
|
+
}
|
|
119
|
+
template <>
|
|
120
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet4f, Packet16c>(const Packet4f& a, const Packet4f& b, const Packet4f& c,
|
|
121
|
+
const Packet4f& d) {
|
|
122
|
+
Packet8s tmp1 = __lsx_vssrlni_h_w(__lsx_vftint_w_s(a), __lsx_vftint_w_s(b), 0);
|
|
123
|
+
Packet8s tmp2 = __lsx_vssrlni_h_w(__lsx_vftint_w_s(c), __lsx_vftint_w_s(d), 0);
|
|
124
|
+
return __lsx_vssrlni_b_h((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
125
|
+
}
|
|
126
|
+
template <>
|
|
127
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet4f, Packet16uc>(const Packet4f& a, const Packet4f& b, const Packet4f& c,
|
|
128
|
+
const Packet4f& d) {
|
|
129
|
+
Packet8us tmp1 = __lsx_vssrlni_hu_w(__lsx_vftint_wu_s(a), __lsx_vftint_wu_s(b), 0);
|
|
130
|
+
Packet8us tmp2 = __lsx_vssrlni_hu_w(__lsx_vftint_wu_s(c), __lsx_vftint_wu_s(d), 0);
|
|
131
|
+
return __lsx_vssrlni_bu_h((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
template <>
|
|
135
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet16c, Packet4f>(const Packet16c& a) {
|
|
136
|
+
Packet8s tmp1 = __lsx_vsllwil_h_b((__m128i)a, 0);
|
|
137
|
+
Packet4i tmp2 = __lsx_vsllwil_w_h((__m128i)tmp1, 0);
|
|
138
|
+
return __lsx_vffint_s_w(tmp2);
|
|
139
|
+
}
|
|
140
|
+
template <>
|
|
141
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet16c, Packet2l>(const Packet16c& a) {
|
|
142
|
+
Packet8s tmp1 = __lsx_vsllwil_h_b((__m128i)a, 0);
|
|
143
|
+
Packet4i tmp2 = __lsx_vsllwil_w_h((__m128i)tmp1, 0);
|
|
144
|
+
return __lsx_vsllwil_d_w((__m128i)tmp2, 0);
|
|
145
|
+
}
|
|
146
|
+
template <>
|
|
147
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet16c, Packet2ul>(const Packet16c& a) {
|
|
148
|
+
Packet8s tmp1 = __lsx_vsllwil_h_b((__m128i)a, 0);
|
|
149
|
+
Packet4i tmp2 = __lsx_vsllwil_w_h((__m128i)tmp1, 0);
|
|
150
|
+
return (Packet2ul)__lsx_vsllwil_d_w((__m128i)tmp2, 0);
|
|
151
|
+
}
|
|
152
|
+
template <>
|
|
153
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet16c, Packet4i>(const Packet16c& a) {
|
|
154
|
+
Packet8s tmp1 = __lsx_vsllwil_h_b((__m128i)a, 0);
|
|
155
|
+
return __lsx_vsllwil_w_h((__m128i)tmp1, 0);
|
|
156
|
+
}
|
|
157
|
+
template <>
|
|
158
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet16c, Packet4ui>(const Packet16c& a) {
|
|
159
|
+
Packet8s tmp1 = __lsx_vsllwil_h_b((__m128i)a, 0);
|
|
160
|
+
return (Packet4ui)__lsx_vsllwil_w_h((__m128i)tmp1, 0);
|
|
161
|
+
}
|
|
162
|
+
template <>
|
|
163
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet16c, Packet8s>(const Packet16c& a) {
|
|
164
|
+
return __lsx_vsllwil_h_b((__m128i)a, 0);
|
|
165
|
+
}
|
|
166
|
+
template <>
|
|
167
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet16c, Packet8us>(const Packet16c& a) {
|
|
168
|
+
return (Packet8us)__lsx_vsllwil_h_b((__m128i)a, 0);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
template <>
|
|
172
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet16uc, Packet4f>(const Packet16uc& a) {
|
|
173
|
+
Packet8us tmp1 = __lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
174
|
+
Packet4ui tmp2 = __lsx_vsllwil_wu_hu((__m128i)tmp1, 0);
|
|
175
|
+
return __lsx_vffint_s_wu(tmp2);
|
|
176
|
+
}
|
|
177
|
+
template <>
|
|
178
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet16uc, Packet2ul>(const Packet16uc& a) {
|
|
179
|
+
Packet8us tmp1 = __lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
180
|
+
Packet4ui tmp2 = __lsx_vsllwil_wu_hu((__m128i)tmp1, 0);
|
|
181
|
+
return __lsx_vsllwil_du_wu((__m128i)tmp2, 0);
|
|
182
|
+
}
|
|
183
|
+
template <>
|
|
184
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet16uc, Packet2l>(const Packet16uc& a) {
|
|
185
|
+
Packet8us tmp1 = __lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
186
|
+
Packet4ui tmp2 = __lsx_vsllwil_wu_hu((__m128i)tmp1, 0);
|
|
187
|
+
return (Packet2l)__lsx_vsllwil_du_wu((__m128i)tmp2, 0);
|
|
188
|
+
}
|
|
189
|
+
template <>
|
|
190
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet16uc, Packet4ui>(const Packet16uc& a) {
|
|
191
|
+
Packet8us tmp1 = __lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
192
|
+
return __lsx_vsllwil_wu_hu((__m128i)tmp1, 0);
|
|
193
|
+
}
|
|
194
|
+
template <>
|
|
195
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet16uc, Packet4i>(const Packet16uc& a) {
|
|
196
|
+
Packet8us tmp1 = __lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
197
|
+
return (Packet4i)__lsx_vsllwil_wu_hu((__m128i)tmp1, 0);
|
|
198
|
+
}
|
|
199
|
+
template <>
|
|
200
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet16uc, Packet8us>(const Packet16uc& a) {
|
|
201
|
+
return __lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
202
|
+
}
|
|
203
|
+
template <>
|
|
204
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet16uc, Packet8s>(const Packet16uc& a) {
|
|
205
|
+
return (Packet8s)__lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
template <>
|
|
209
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet8s, Packet4f>(const Packet8s& a) {
|
|
210
|
+
Packet4i tmp1 = __lsx_vsllwil_w_h((__m128i)a, 0);
|
|
211
|
+
return __lsx_vffint_s_w(tmp1);
|
|
212
|
+
}
|
|
213
|
+
template <>
|
|
214
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet8s, Packet2l>(const Packet8s& a) {
|
|
215
|
+
Packet4i tmp1 = __lsx_vsllwil_w_h((__m128i)a, 0);
|
|
216
|
+
return __lsx_vsllwil_d_w((__m128i)tmp1, 0);
|
|
217
|
+
}
|
|
218
|
+
template <>
|
|
219
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet8s, Packet2ul>(const Packet8s& a) {
|
|
220
|
+
Packet4i tmp1 = __lsx_vsllwil_w_h((__m128i)a, 0);
|
|
221
|
+
return (Packet2ul)__lsx_vsllwil_d_w((__m128i)tmp1, 0);
|
|
222
|
+
}
|
|
223
|
+
template <>
|
|
224
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet8s, Packet4i>(const Packet8s& a) {
|
|
225
|
+
return __lsx_vsllwil_w_h((__m128i)a, 0);
|
|
226
|
+
}
|
|
227
|
+
template <>
|
|
228
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet8s, Packet4ui>(const Packet8s& a) {
|
|
229
|
+
return (Packet4ui)__lsx_vsllwil_w_h((__m128i)a, 0);
|
|
230
|
+
}
|
|
231
|
+
template <>
|
|
232
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet8s, Packet16c>(const Packet8s& a, const Packet8s& b) {
|
|
233
|
+
return __lsx_vssrlni_b_h((__m128i)a, (__m128i)b, 0);
|
|
234
|
+
}
|
|
235
|
+
template <>
|
|
236
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet8s, Packet16uc>(const Packet8s& a, const Packet8s& b) {
|
|
237
|
+
return (Packet16uc)__lsx_vssrlni_b_h((__m128i)a, (__m128i)b, 0);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
template <>
|
|
241
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet8us, Packet4f>(const Packet8us& a) {
|
|
242
|
+
Packet4ui tmp1 = __lsx_vsllwil_wu_hu((__m128i)a, 0);
|
|
243
|
+
return __lsx_vffint_s_wu(tmp1);
|
|
244
|
+
}
|
|
245
|
+
template <>
|
|
246
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet8us, Packet2ul>(const Packet8us& a) {
|
|
247
|
+
Packet4ui tmp1 = __lsx_vsllwil_wu_hu((__m128i)a, 0);
|
|
248
|
+
return __lsx_vsllwil_du_wu((__m128i)tmp1, 0);
|
|
249
|
+
}
|
|
250
|
+
template <>
|
|
251
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet8us, Packet2l>(const Packet8us& a) {
|
|
252
|
+
Packet4ui tmp1 = __lsx_vsllwil_wu_hu((__m128i)a, 0);
|
|
253
|
+
return (Packet2l)__lsx_vsllwil_du_wu((__m128i)tmp1, 0);
|
|
254
|
+
}
|
|
255
|
+
template <>
|
|
256
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet8us, Packet4ui>(const Packet8us& a) {
|
|
257
|
+
return __lsx_vsllwil_wu_hu((__m128i)a, 0);
|
|
258
|
+
}
|
|
259
|
+
template <>
|
|
260
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet8us, Packet4i>(const Packet8us& a) {
|
|
261
|
+
return (Packet4i)__lsx_vsllwil_wu_hu((__m128i)a, 0);
|
|
262
|
+
}
|
|
263
|
+
template <>
|
|
264
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet8us, Packet16uc>(const Packet8us& a, const Packet8us& b) {
|
|
265
|
+
return __lsx_vssrlni_bu_h((__m128i)a, (__m128i)b, 0);
|
|
266
|
+
}
|
|
267
|
+
template <>
|
|
268
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet8us, Packet16c>(const Packet8us& a, const Packet8us& b) {
|
|
269
|
+
return (Packet16c)__lsx_vssrlni_bu_h((__m128i)a, (__m128i)b, 0);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
template <>
|
|
273
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet4i, Packet4f>(const Packet4i& a) {
|
|
274
|
+
return __lsx_vffint_s_w(a);
|
|
275
|
+
}
|
|
276
|
+
template <>
|
|
277
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet4i, Packet2l>(const Packet4i& a) {
|
|
278
|
+
return __lsx_vsllwil_d_w((__m128i)a, 0);
|
|
279
|
+
}
|
|
280
|
+
template <>
|
|
281
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet4i, Packet2ul>(const Packet4i& a) {
|
|
282
|
+
return (Packet2ul)__lsx_vsllwil_d_w((__m128i)a, 0);
|
|
283
|
+
}
|
|
284
|
+
template <>
|
|
285
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet4i, Packet8s>(const Packet4i& a, const Packet4i& b) {
|
|
286
|
+
return __lsx_vssrlni_h_w((__m128i)a, (__m128i)b, 0);
|
|
287
|
+
}
|
|
288
|
+
template <>
|
|
289
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet4i, Packet8us>(const Packet4i& a, const Packet4i& b) {
|
|
290
|
+
return (Packet8us)__lsx_vssrlni_h_w((__m128i)a, (__m128i)b, 0);
|
|
291
|
+
}
|
|
292
|
+
template <>
|
|
293
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet4i, Packet16c>(const Packet4i& a, const Packet4i& b, const Packet4i& c,
|
|
294
|
+
const Packet4i& d) {
|
|
295
|
+
Packet8s tmp1 = __lsx_vssrlni_h_w((__m128i)a, (__m128i)b, 0);
|
|
296
|
+
Packet8s tmp2 = __lsx_vssrlni_h_w((__m128i)c, (__m128i)d, 0);
|
|
297
|
+
return __lsx_vssrlni_b_h((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
298
|
+
}
|
|
299
|
+
template <>
|
|
300
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet4i, Packet16uc>(const Packet4i& a, const Packet4i& b, const Packet4i& c,
|
|
301
|
+
const Packet4i& d) {
|
|
302
|
+
Packet8s tmp1 = __lsx_vssrlni_h_w((__m128i)a, (__m128i)b, 0);
|
|
303
|
+
Packet8s tmp2 = __lsx_vssrlni_h_w((__m128i)c, (__m128i)d, 0);
|
|
304
|
+
return (Packet16uc)__lsx_vssrlni_b_h((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
template <>
|
|
308
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet4ui, Packet4f>(const Packet4ui& a) {
|
|
309
|
+
return __lsx_vffint_s_wu(a);
|
|
310
|
+
}
|
|
311
|
+
template <>
|
|
312
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet4ui, Packet2ul>(const Packet4ui& a) {
|
|
313
|
+
return __lsx_vsllwil_du_wu((__m128i)a, 0);
|
|
314
|
+
}
|
|
315
|
+
template <>
|
|
316
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet4ui, Packet2l>(const Packet4ui& a) {
|
|
317
|
+
return (Packet2l)__lsx_vsllwil_du_wu((__m128i)a, 0);
|
|
318
|
+
}
|
|
319
|
+
template <>
|
|
320
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet4ui, Packet8us>(const Packet4ui& a, const Packet4ui& b) {
|
|
321
|
+
return __lsx_vssrlni_hu_w((__m128i)a, (__m128i)b, 0);
|
|
322
|
+
}
|
|
323
|
+
template <>
|
|
324
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet4ui, Packet8s>(const Packet4ui& a, const Packet4ui& b) {
|
|
325
|
+
return (Packet8s)__lsx_vssrlni_hu_w((__m128i)a, (__m128i)b, 0);
|
|
326
|
+
}
|
|
327
|
+
template <>
|
|
328
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet4ui, Packet16uc>(const Packet4ui& a, const Packet4ui& b, const Packet4ui& c,
|
|
329
|
+
const Packet4ui& d) {
|
|
330
|
+
Packet8us tmp1 = __lsx_vssrlni_hu_w((__m128i)a, (__m128i)b, 0);
|
|
331
|
+
Packet8us tmp2 = __lsx_vssrlni_hu_w((__m128i)c, (__m128i)d, 0);
|
|
332
|
+
return __lsx_vssrlni_bu_h((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
333
|
+
}
|
|
334
|
+
template <>
|
|
335
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet4ui, Packet16c>(const Packet4ui& a, const Packet4ui& b, const Packet4ui& c,
|
|
336
|
+
const Packet4ui& d) {
|
|
337
|
+
Packet8us tmp1 = __lsx_vssrlni_hu_w((__m128i)a, (__m128i)b, 0);
|
|
338
|
+
Packet8us tmp2 = __lsx_vssrlni_hu_w((__m128i)c, (__m128i)d, 0);
|
|
339
|
+
return (Packet16c)__lsx_vssrlni_bu_h((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
template <>
|
|
343
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet2l, Packet4f>(const Packet2l& a, const Packet2l& b) {
|
|
344
|
+
return __lsx_vffint_s_w(__lsx_vssrlni_w_d((__m128i)a, (__m128i)b, 0));
|
|
345
|
+
}
|
|
346
|
+
template <>
|
|
347
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet2l, Packet4i>(const Packet2l& a, const Packet2l& b) {
|
|
348
|
+
return __lsx_vssrlni_w_d((__m128i)a, (__m128i)b, 0);
|
|
349
|
+
}
|
|
350
|
+
template <>
|
|
351
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet2l, Packet4ui>(const Packet2l& a, const Packet2l& b) {
|
|
352
|
+
return (Packet4ui)__lsx_vssrlni_w_d((__m128i)a, (__m128i)b, 0);
|
|
353
|
+
}
|
|
354
|
+
template <>
|
|
355
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet2l, Packet8s>(const Packet2l& a, const Packet2l& b, const Packet2l& c,
|
|
356
|
+
const Packet2l& d) {
|
|
357
|
+
Packet4i tmp1 = __lsx_vssrlni_w_d((__m128i)a, (__m128i)b, 0);
|
|
358
|
+
Packet4i tmp2 = __lsx_vssrlni_w_d((__m128i)c, (__m128i)d, 0);
|
|
359
|
+
return __lsx_vssrlni_h_w((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
360
|
+
}
|
|
361
|
+
template <>
|
|
362
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet2l, Packet8us>(const Packet2l& a, const Packet2l& b, const Packet2l& c,
|
|
363
|
+
const Packet2l& d) {
|
|
364
|
+
Packet4i tmp1 = __lsx_vssrlni_w_d((__m128i)a, (__m128i)b, 0);
|
|
365
|
+
Packet4i tmp2 = __lsx_vssrlni_w_d((__m128i)c, (__m128i)d, 0);
|
|
366
|
+
return (Packet8us)__lsx_vssrlni_h_w((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
367
|
+
}
|
|
368
|
+
template <>
|
|
369
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet2l, Packet16c>(const Packet2l& a, const Packet2l& b, const Packet2l& c,
|
|
370
|
+
const Packet2l& d, const Packet2l& e, const Packet2l& f,
|
|
371
|
+
const Packet2l& g, const Packet2l& h) {
|
|
372
|
+
const Packet8s abcd = pcast<Packet2l, Packet8s>(a, b, c, d);
|
|
373
|
+
const Packet8s efgh = pcast<Packet2l, Packet8s>(e, f, g, h);
|
|
374
|
+
return __lsx_vssrlni_b_h((__m128i)abcd, (__m128i)efgh, 0);
|
|
375
|
+
}
|
|
376
|
+
template <>
|
|
377
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet2l, Packet16uc>(const Packet2l& a, const Packet2l& b, const Packet2l& c,
|
|
378
|
+
const Packet2l& d, const Packet2l& e, const Packet2l& f,
|
|
379
|
+
const Packet2l& g, const Packet2l& h) {
|
|
380
|
+
const Packet8us abcd = pcast<Packet2l, Packet8us>(a, b, c, d);
|
|
381
|
+
const Packet8us efgh = pcast<Packet2l, Packet8us>(e, f, g, h);
|
|
382
|
+
return __lsx_vssrlni_bu_h((__m128i)abcd, (__m128i)efgh, 0);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
template <>
|
|
386
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet2ul, Packet4f>(const Packet2ul& a, const Packet2ul& b) {
|
|
387
|
+
return __lsx_vffint_s_wu(__lsx_vssrlni_w_d((__m128i)a, (__m128i)b, 0));
|
|
388
|
+
}
|
|
389
|
+
template <>
|
|
390
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet2ul, Packet4ui>(const Packet2ul& a, const Packet2ul& b) {
|
|
391
|
+
return __lsx_vssrlni_wu_d((__m128i)a, (__m128i)b, 0);
|
|
392
|
+
}
|
|
393
|
+
template <>
|
|
394
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet2ul, Packet4i>(const Packet2ul& a, const Packet2ul& b) {
|
|
395
|
+
return (Packet4i)__lsx_vssrlni_wu_d((__m128i)a, (__m128i)b, 0);
|
|
396
|
+
}
|
|
397
|
+
template <>
|
|
398
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet2ul, Packet8us>(const Packet2ul& a, const Packet2ul& b, const Packet2ul& c,
|
|
399
|
+
const Packet2ul& d) {
|
|
400
|
+
Packet4ui tmp1 = __lsx_vssrlni_wu_d((__m128i)a, (__m128i)b, 0);
|
|
401
|
+
Packet4ui tmp2 = __lsx_vssrlni_wu_d((__m128i)c, (__m128i)d, 0);
|
|
402
|
+
return __lsx_vssrlni_hu_w((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
403
|
+
}
|
|
404
|
+
template <>
|
|
405
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet2ul, Packet8s>(const Packet2ul& a, const Packet2ul& b, const Packet2ul& c,
|
|
406
|
+
const Packet2ul& d) {
|
|
407
|
+
Packet4ui tmp1 = __lsx_vssrlni_wu_d((__m128i)a, (__m128i)b, 0);
|
|
408
|
+
Packet4ui tmp2 = __lsx_vssrlni_wu_d((__m128i)c, (__m128i)d, 0);
|
|
409
|
+
return (Packet8s)__lsx_vssrlni_hu_w((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
410
|
+
}
|
|
411
|
+
template <>
|
|
412
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet2ul, Packet16uc>(const Packet2ul& a, const Packet2ul& b, const Packet2ul& c,
|
|
413
|
+
const Packet2ul& d, const Packet2ul& e, const Packet2ul& f,
|
|
414
|
+
const Packet2ul& g, const Packet2ul& h) {
|
|
415
|
+
const Packet8s abcd = pcast<Packet2ul, Packet8s>(a, b, c, d);
|
|
416
|
+
const Packet8s efgh = pcast<Packet2ul, Packet8s>(e, f, g, h);
|
|
417
|
+
return __lsx_vssrlni_b_h((__m128i)abcd, (__m128i)efgh, 0);
|
|
418
|
+
}
|
|
419
|
+
template <>
|
|
420
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet2ul, Packet16c>(const Packet2ul& a, const Packet2ul& b, const Packet2ul& c,
|
|
421
|
+
const Packet2ul& d, const Packet2ul& e, const Packet2ul& f,
|
|
422
|
+
const Packet2ul& g, const Packet2ul& h) {
|
|
423
|
+
const Packet8us abcd = pcast<Packet2ul, Packet8us>(a, b, c, d);
|
|
424
|
+
const Packet8us efgh = pcast<Packet2ul, Packet8us>(e, f, g, h);
|
|
425
|
+
return __lsx_vssrlni_bu_h((__m128i)abcd, (__m128i)efgh, 0);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
template <>
|
|
429
|
+
EIGEN_STRONG_INLINE Packet4f pcast<Packet2d, Packet4f>(const Packet2d& a, const Packet2d& b) {
|
|
430
|
+
return __lsx_vfcvt_s_d(b, a);
|
|
431
|
+
}
|
|
432
|
+
template <>
|
|
433
|
+
EIGEN_STRONG_INLINE Packet2l pcast<Packet2d, Packet2l>(const Packet2d& a) {
|
|
434
|
+
return __lsx_vftint_l_d(a);
|
|
435
|
+
}
|
|
436
|
+
template <>
|
|
437
|
+
EIGEN_STRONG_INLINE Packet2ul pcast<Packet2d, Packet2ul>(const Packet2d& a) {
|
|
438
|
+
return __lsx_vftint_lu_d(a);
|
|
439
|
+
}
|
|
440
|
+
template <>
|
|
441
|
+
EIGEN_STRONG_INLINE Packet4i pcast<Packet2d, Packet4i>(const Packet2d& a, const Packet2d& b) {
|
|
442
|
+
return __lsx_vssrlni_w_d(__lsx_vftint_l_d(a), __lsx_vftint_l_d(b), 0);
|
|
443
|
+
}
|
|
444
|
+
template <>
|
|
445
|
+
EIGEN_STRONG_INLINE Packet4ui pcast<Packet2d, Packet4ui>(const Packet2d& a, const Packet2d& b) {
|
|
446
|
+
return __lsx_vssrlni_wu_d(__lsx_vftint_lu_d(a), __lsx_vftint_lu_d(b), 0);
|
|
447
|
+
}
|
|
448
|
+
template <>
|
|
449
|
+
EIGEN_STRONG_INLINE Packet8s pcast<Packet2d, Packet8s>(const Packet2d& a, const Packet2d& b, const Packet2d& c,
|
|
450
|
+
const Packet2d& d) {
|
|
451
|
+
Packet4i tmp1 = __lsx_vssrlni_w_d(__lsx_vftint_l_d(a), __lsx_vftint_l_d(b), 0);
|
|
452
|
+
Packet4i tmp2 = __lsx_vssrlni_w_d(__lsx_vftint_l_d(c), __lsx_vftint_l_d(d), 0);
|
|
453
|
+
return __lsx_vssrlni_h_w((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
454
|
+
}
|
|
455
|
+
template <>
|
|
456
|
+
EIGEN_STRONG_INLINE Packet8us pcast<Packet2d, Packet8us>(const Packet2d& a, const Packet2d& b, const Packet2d& c,
|
|
457
|
+
const Packet2d& d) {
|
|
458
|
+
Packet4ui tmp1 = __lsx_vssrlni_wu_d(__lsx_vftint_lu_d(a), __lsx_vftint_lu_d(b), 0);
|
|
459
|
+
Packet4ui tmp2 = __lsx_vssrlni_wu_d(__lsx_vftint_lu_d(c), __lsx_vftint_lu_d(d), 0);
|
|
460
|
+
return __lsx_vssrlni_hu_w((__m128i)tmp1, (__m128i)tmp2, 0);
|
|
461
|
+
}
|
|
462
|
+
template <>
|
|
463
|
+
EIGEN_STRONG_INLINE Packet16c pcast<Packet2d, Packet16c>(const Packet2d& a, const Packet2d& b, const Packet2d& c,
|
|
464
|
+
const Packet2d& d, const Packet2d& e, const Packet2d& f,
|
|
465
|
+
const Packet2d& g, const Packet2d& h) {
|
|
466
|
+
const Packet8s abcd = pcast<Packet2d, Packet8s>(a, b, c, d);
|
|
467
|
+
const Packet8s efgh = pcast<Packet2d, Packet8s>(e, f, g, h);
|
|
468
|
+
return __lsx_vssrlni_b_h((__m128i)abcd, (__m128i)efgh, 0);
|
|
469
|
+
}
|
|
470
|
+
template <>
|
|
471
|
+
EIGEN_STRONG_INLINE Packet16uc pcast<Packet2d, Packet16uc>(const Packet2d& a, const Packet2d& b, const Packet2d& c,
|
|
472
|
+
const Packet2d& d, const Packet2d& e, const Packet2d& f,
|
|
473
|
+
const Packet2d& g, const Packet2d& h) {
|
|
474
|
+
const Packet8us abcd = pcast<Packet2d, Packet8us>(a, b, c, d);
|
|
475
|
+
const Packet8us efgh = pcast<Packet2d, Packet8us>(e, f, g, h);
|
|
476
|
+
return __lsx_vssrlni_bu_h((__m128i)abcd, (__m128i)efgh, 0);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
template <>
|
|
480
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet4f, Packet2d>(const Packet4f& a) {
|
|
481
|
+
return __lsx_vfcvtl_d_s(a);
|
|
482
|
+
}
|
|
483
|
+
template <>
|
|
484
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet16c, Packet2d>(const Packet16c& a) {
|
|
485
|
+
Packet8s tmp1 = __lsx_vsllwil_h_b((__m128i)a, 0);
|
|
486
|
+
Packet4i tmp2 = __lsx_vsllwil_w_h((__m128i)tmp1, 0);
|
|
487
|
+
return __lsx_vffint_d_l(__lsx_vsllwil_d_w((__m128i)tmp2, 0));
|
|
488
|
+
}
|
|
489
|
+
template <>
|
|
490
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet16uc, Packet2d>(const Packet16uc& a) {
|
|
491
|
+
Packet8us tmp1 = __lsx_vsllwil_hu_bu((__m128i)a, 0);
|
|
492
|
+
Packet4ui tmp2 = __lsx_vsllwil_wu_hu((__m128i)tmp1, 0);
|
|
493
|
+
return __lsx_vffint_d_lu(__lsx_vsllwil_du_wu((__m128i)tmp2, 0));
|
|
494
|
+
}
|
|
495
|
+
template <>
|
|
496
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet8s, Packet2d>(const Packet8s& a) {
|
|
497
|
+
Packet4i tmp = __lsx_vsllwil_w_h((__m128i)a, 0);
|
|
498
|
+
return __lsx_vffint_d_l(__lsx_vsllwil_d_w((__m128i)tmp, 0));
|
|
499
|
+
}
|
|
500
|
+
template <>
|
|
501
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet8us, Packet2d>(const Packet8us& a) {
|
|
502
|
+
Packet4ui tmp = __lsx_vsllwil_wu_hu((__m128i)a, 0);
|
|
503
|
+
return __lsx_vffint_d_lu(__lsx_vsllwil_du_wu((__m128i)tmp, 0));
|
|
504
|
+
}
|
|
505
|
+
template <>
|
|
506
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet4i, Packet2d>(const Packet4i& a) {
|
|
507
|
+
return __lsx_vffint_d_l(__lsx_vsllwil_d_w((__m128i)a, 0));
|
|
508
|
+
}
|
|
509
|
+
template <>
|
|
510
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet4ui, Packet2d>(const Packet4ui& a) {
|
|
511
|
+
return __lsx_vffint_d_lu(__lsx_vsllwil_du_wu((__m128i)a, 0));
|
|
512
|
+
}
|
|
513
|
+
template <>
|
|
514
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet2l, Packet2d>(const Packet2l& a) {
|
|
515
|
+
return __lsx_vffint_d_l(a);
|
|
516
|
+
}
|
|
517
|
+
template <>
|
|
518
|
+
EIGEN_STRONG_INLINE Packet2d pcast<Packet2ul, Packet2d>(const Packet2ul& a) {
|
|
519
|
+
return __lsx_vffint_d_lu(a);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
} // end namespace internal
|
|
523
|
+
|
|
524
|
+
} // end namespace Eigen
|
|
525
|
+
|
|
526
|
+
#endif // EIGEN_TYPE_CASTING_LSX_H
|