diff options
author | Sanjay Patel <spatel@rotateright.com> | 2019-12-12 15:20:42 -0500 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2019-12-12 15:44:13 -0500 |
commit | 8963332c3327daa652ba3e26d35f9109b6991985 (patch) | |
tree | fec4e5f2d7f648aac684e5683b02f67e769b9b01 /lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/nested.cpp | |
parent | 27ec4abeac4dae65a307c4eb206110ba8c2ca2ce (diff) | |
download | bcm5719-llvm-8963332c3327daa652ba3e26d35f9109b6991985.tar.gz bcm5719-llvm-8963332c3327daa652ba3e26d35f9109b6991985.zip |
[DAGCombiner] fold shift-trunc-shift to shift-mask-trunc
This fold is done in IR by instcombine, and we have a special
form of it already here in DAGCombiner, but we want the more
general transform too:
https://rise4fun.com/Alive/3jZm
Name: general
Pre: (C1 + zext(C2) < 64)
%s = lshr i64 %x, C1
%t = trunc i64 %s to i16
%r = lshr i16 %t, C2
=>
%s2 = lshr i64 %x, C1 + zext(C2)
%a = and i64 %s2, zext((1 << (16 - C2)) - 1)
%r = trunc %a to i16
Name: special
Pre: C1 == 48
%s = lshr i64 %x, C1
%t = trunc i64 %s to i16
%r = lshr i16 %t, C2
=>
%s2 = lshr i64 %x, C1 + zext(C2)
%r = trunc %s2 to i16
...because D58017 exposes a regression without this fold.
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/nested.cpp')
0 files changed, 0 insertions, 0 deletions