The code deciding how to split the vector in register-sized integers used the integer division operator, thus rounding down the result.
Correct the computation for irregularly-sized types (non-power-of-two, non multiple of 8) by rounding the division result upwards.
Details
- Reviewers
atanasyan - Commits
- rGcc999c9546e5: [MIPS] Fix lowering of irregular vector arguments
Diff Detail
Event Timeline
Apply the TRUNCATE + BITCAST strategy everywhere, at least on MIPS the generated code is noticeably better.
I have not checked the patch carefully yet. But it looks like some tests was removed. For example MIPS64R5EL-LABEL: i8_2... Is it intended?
That's update_llc_test_checks.py collapsing tests showing the same output, eg. MIPS64R5 and MIPS64R5EL.
I see. Thanks. One more question - is it possible to split the patch: one for "fixing a couple of rounding issues" and another for "Introducing a few more conversion rules"?
Sure. I'll have the first one introduce the SelectionDAG rules and the second one introduce the fixes for the MIPS codegen together with the various tests.
clang-format: please reformat the code