|
|
There is some few operations in our sum factorization code that should translate to good assembly code in order to have the overall code perform well. I have set up godbolt to study these for us:
|
|
|
|
|
|
* [`horizontal_add`](https://godbolt.org/#z:OYLghAFBqRAWIDGB7AJgUwKKoJYBdkAnAGhxAgCsQBGYgZ2QFdDF0QByAUgCYBmHAHaIANowydeAYRwBbGYLyFBAOjgTMnAAwBBLdtRMARsPQBqOERwAvZALwBDYQH17qVE4AsTgG4iIKATo8UycnGW4AVgA2VB4o03sASlNOAHYAIT1TbJCwyJjTPGoU3gARELl8pzhXdwAHVAh7YiSJTJ0c3JlqbgAOVELuEvKw8OindAAPRXtEPAAzHt6nBogi4mpEtqyc0O6%2BgbxeYYqZFzcnOkbRqsR7IIaqhqW1zeI8bi3edu1OwnQ8MwBKcnIhvHgrk55lEPGteF8fmlSno9AZGMYzBYlDY7I5zu4vHV7HhEHB0O5fMJ/LYgl18rFuPEkikMjtsgFaXslgNvI5GHU6uhCCcbuMpjM5os%2BitGs1TJtth0chzglyDqZecJhMgAO5CkWVcZ3B6oJ6oF6tb5s0wqrrcjWOTUGs61GUQTX8wUkB1a3VChHW21q/qmf50Z34t2jFZCmSMPDoN2azUbRLEH2agNK7L/QGEYHRsEQ9zQ2FhrO6VLInQovg4eamDDzQTkiC5bQANQAGhEeqFTMk0pIh430M2BOTTG3Qp2ez0AGL9rY1mt1huhADiADkAKqSfvqUzxIcj0IASS3ABVMAAZJySADyAFkAApnm%2BYABKKR0aIx5ksHEHGcV1lgUJRAhwRBqUCVUwl7bgGXiSZB1ZbNQwBIFTgQpx/lQRhWEjVYUMVStq10Ph0AEXB5hRHRxSFAsnEEYQW0bIwTD0UJiUUHBDHjRMnCnCBQmAARGGYgRWInUJ0244QdXsABPOhJOkwS5JcQg8HrKCcDxJxEmXbRRhwotIVLKc9gQgYZ2MtIfhzTD83bTgInSTQ3ORK0ayrVEOMxQDbGAyNdQEGDOXgnokNMEjfMc3YosQ0wFFjcl9ITZ0cNdYi5LkMz7ghHAcNWUy%2B0cHAxMICY6hwGERPyvtjTwBpLmKnoIBQvKZAKk02oQzq03lIyK06VLCBkdLiTMCQRka7giMacbJtwabut6oqSuueaXFYqqarq2EyoW5rWrodruAgZapoTIbjtBQqzouq67DS1bbvTT4jNIsbXomm6ZrKbDyouVZrve9B1qawrzq2hqevKvaBGq9Bavq%2B7TvcWGOvBjL0DunbMf6nG/pWvGho8EafpyXMsIx8ELPq3HporJE6P0AKAOxYK8VAnw/CDJKYpQlkEqcvNgSxaweZAi4vEpeGNoaLb8kGwduHSH9fk6HWuel3FZYJfmqXu8VCFmBYYUmQlGkmVNWb8lcOfREw9aA3mLmWIkSTJCkBZpOCEcQuJYtQsWMIlt2ZcjQliVJcljcV6GTRV6I1ZSDWtd1nWpfdw3PBWOPfcT03pnNyUrZtzr7dItmnZ4XgqJo0wAHoW9MWcEPYNNhA4CJ2GIAQOE0AfkA4YcNZ4TWGGYVgM94agB7wYfu%2BIeAkGQGRapMEgyGpLecB3kBgCiXhiGbYQE0IOhyEMFfiEMQR7EIJSOEX4gUDkKi8AfKTX/YEexAMAyHsAIYAJh764H%2BHMHA3h0A3wAQPKY6BEACTfgPVKvdEHvCUDIFePc%2BI30gGmZAdQdI0g4AAWhASwNQZQADWUlTCUIfLwAeM8WBsDeFg/ug975j3YJMXoURKEwlMMARAiAjzKGOBAbA%2BAiDz1oKYSQm9t76gbp8Je%2BC0z0JoJoTQxAsEeAHkPbBAj2EgEMcvRBRliBwOvjgWwIAPBAA%3D%3D)
|
|
|
* [`horizontal_add`](https://godbolt.org/#z:OYLghAFBqRAWIDGB7AJgUwKKoJYBdkAnAGhxAgCsQBGYgZ2QFdDF0QByAUgCYBmHAHaIANowydeAYRwBbGYLyFBAOjgTMnAAwBBLdtRMARsPQBqOERwAvZALwBDYQH17qVE4AsTgG4iIKATo8UycnGW4AVgA2VB4o03sASlNOAHYAIT1TbJCwyJjTPGoU3gARELl8pzhXdwAHVAh7YiSJTJ0c3JlqbgAOVELuEvKw8OindAAPRXtEPAAzHt6nBogi4mpEtqyc0O6%2BgbxeYYqZFzcnOkbRqsR7IIaqhqW1zeI8bi3edu1OwnQ8MwBKcnIhvHgrk55lEPGteF8fmlSno9AZGMYzBYlDY7I5zu4vHV7HhEHB0O5fMJ/LYgl18rFuPEkikMjtsgFaXslgNvI5GHU6uhCCcbuMpjM5os%2BitGs1TJtth0chzglyDqZecJhMgAO5CkWVcZ3B6oJ6oF6tb5s0wqrrcjWOTUGs61GUQTX8wUkB1a3VChHW21q/qmf50Z34t2jFZCmSMPDoN2azUbRLEH2agNK7L/QGEYHRsEQ9zQ2FhrO6VLInQovg4eamDDzQTkiC5bQANQAGhEeqFTMk0pIh430M2BOTTG3Qp2ez0AGL9rY1mt1huhADiADkAKqSfvqUzxIcj0IASS3ABVMAAZJySADyAFkAApnm%2BYABKKR0aIx5ksHEHGcV1lgUJRAhwRBqUCVUwl7bgGXiSZB1ZbNQwBIFTgQpx/lQRhWEjVYUMVStq10Ph0AEXB5hRVd%2BHXJxtz3A8pFMVI9HFIUCycQRhBbRsjBMPRQmJRQcEMeNEycKcIFCYABEYXiBH4idQnTUThB1ewAE86GU1TpI0lxCDwesoJwPEnESZdtFGHCi0hUspz2BCBhnWy0h%2BHNMPzdtOAidJNAC5ErRrKta14KiaLo/QhMxQDbGAyNdQEGDOXgnokNMEjwu83ZMsQ0wFFjclLITZ0cNdYiNLkBz7ghHAcNWey%2B0cHAFMICY6hwGE5LqvtjTwBpLianoIBQ2qZHqk1RoQia03lGyK06ErCBkMriTMCQRgG7giMaNaNtwLappmxrmuuPaXH4zrut62FWv2oaRroMbuAgI7NoTRantBBrXvez67FKk6fvTT4bNI1aQfW77trKbC2ouVYvrB9AzsGhq3su/rpra26BC69Aer6v6XvcHHxrR8r0F%2B66Kbm6nYeO2nFo8ZboZyXMsPJ8EnL6mmtorJFYr/EwAOxJK8VAnw/CDQrspQll8p8vNgSxaxpZAi4vEpPHzoaS78gWwduHSH9fk6a3Ja13EdYJOWqT%2B8VCFmBYYUmQlGkmVMRYilc4vRCXNaAmWLmWIkSTJCl5ZpOD8cQuIctQ1WMPV22w4dzwVmJUlySdg2sZNY3olNlJzctm3rdD7XI0JPOY8Ll3pjdyVPe9ia/dI0XA54KLqPrUwAHph9MWcEPYNNhA4CJ2GIAQOE0efkA4YdzZ4C2GGYVgK94ah57wJep%2BIeAkGQGQepMEgyGpS%2BcGvkAoMQahUmIZthATQg6HIQxj%2BIQwgh7CEB0hwA%2BxAUByCongB8KlQHsGXsQDAMh7ACGACYf%2BuB/hzBwN4dAP8EHzymOgRAUkwHzxKjPQh7wlAyGPtPCSP9IBpmQHUMyNIOAAFpJhPjPPuCePRTCcIfLwee28WBsDeFQueC9/6r3YJMXoUROEwmKogRA8pUhTmwPgIge9aCmEkBfK%2B%2Bp%2B6bEPvQ0%2BCBIEmJvuQGxD8hQgGAFEXg78H5fx/hAP%2B1DAECGAfA8BkCNp2FgcIeBiDkGoPQWwahWCSFmTwQQxBxDSEJnIaQEGVDEHiToYQhhhgmEQBYWwnAHD2CcJQSwNQZQADWKkhEiLEUwCRNBp6z3novah8jFHKNUcAdRR5lDHAgDoggwozHpiMffa%2Be9PgWPyVY8%2BMyhSkHscYxxhBnGpG4O4z%2BQovE%2BMQX4gJGTgnQLCRE%2BeUS0EYLiTgbBiT8H/1SWQ9g4DKH/1yZY/ihTwDFOIKw9hgQuFVNJDtepwhGmiPoC01gbTiDSM6XIjgvSVEeFMAMjRqRlBDFGbgcZ%2BipkbNmf3eECzl42WILUmgmhNCIo4B4ZF3SOBiJAPSo%2B%2BS0x4O/mUxeHggA%3D%3D)
|
|
|
|
|
|
* `transpose`
|
|
|
|