[PATCH] D36679: [InstCombine] Added support for: trunc(ashr(mul(sext(...), sext(...))) -> ashr(mul(...))
Sanjay Patel via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 14 08:49:47 PDT 2017
spatel added inline comments.
================
Comment at: lib/Transforms/InstCombine/InstCombineShifts.cpp:562-565
// (X >>u C) << C --> X & (-1 << C)
- if (match(Op0, m_LShr(m_Value(X), m_Specific(Op1)))) {
+ // (X >>s C) << C --> X & (-1 << C)
+ if (match(Op0, m_LShr(m_Value(X), m_Specific(Op1))) ||
+ match(Op0, m_AShr(m_Value(X), m_Specific(Op1)))) {
----------------
Use 'm_Shr' to reduce the code. This change is independent of anything else, so I think it should go in first.
http://rise4fun.com/Alive/lBi
Here's a test you can use for that patch:
```
define i8 @shishi(i8 %x) {
%a = ashr i8 %x, 6
%b = shl i8 %a, 6
%extra_use_of_a = mul i8 %a, 5
%r = sdiv i8 %extra_use_of_a, %b
ret i8 %r
}
```
https://reviews.llvm.org/D36679
More information about the llvm-commits
mailing list