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
Details
- Reviewers
atanasyan - Commits
- rGcc999c9546e5: [MIPS] Fix lowering of irregular vector arguments
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Apply the TRUNCATE + BITCAST strategy everywhere, at least on MIPS the generated code is noticeably better.
Comment Actions
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?
Comment Actions
That's update_llc_test_checks.py collapsing tests showing the same output, eg. MIPS64R5 and MIPS64R5EL.
Comment Actions
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"?
Comment Actions
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.