diff options
author | Simon Pilgrim <RKSimon@users.noreply.github.com> | 2024-02-11 15:02:27 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-11 15:02:27 +0000 |
commit | b45de48be24695b613f48ed21bb35f844454193b (patch) | |
tree | 27a3e473f0970e1e8be798bbfb59a43f2a32e581 /clang/lib/Basic/Module.cpp | |
parent | e3f684d86b308bc2576d813aad1a230aa6b295ab (diff) | |
download | llvm-b45de48be24695b613f48ed21bb35f844454193b.zip llvm-b45de48be24695b613f48ed21bb35f844454193b.tar.gz llvm-b45de48be24695b613f48ed21bb35f844454193b.tar.bz2 |
[MVE] Expand64BitShift - handle all constant shift amounts less than 32 (#81261)
Expand64BitShift was always dropping to generic shift legalization if the shift amount type was larger than i64, even if the constant shift amount was actually very small. I've adjusted the constant bounds checks to work with APInt types so we can always perform the comparison.
This results in the MVE long shift instructions being used more often, and it looks like this is preventing some additional combines from happening. This could be addressed in the future.
This came about while I was trying to extend the DAGTypeLegalizer::ExpandShift* helpers and need to move to consistently using the legal shift amount types instead of reusing the shift amount type from the original wider shift.
Diffstat (limited to 'clang/lib/Basic/Module.cpp')
0 files changed, 0 insertions, 0 deletions