[InstCombine] cttz(sext(x)) -> cttz(zext(x))
authorDávid Bolvanský <david.bolvansky@gmail.com>
Mon, 3 May 2021 21:59:19 +0000 (23:59 +0200)
committerDávid Bolvanský <david.bolvansky@gmail.com>
Mon, 3 May 2021 21:59:30 +0000 (23:59 +0200)
commit08c08577f94fd7efd2a670d0e5c3c6f72882fa0a
tree474b9e2aa841d735a81b884320aa33ffc8835ad7
parent1c1406f24d8b1c8ebec76c516ea969072d24cc75
[InstCombine] cttz(sext(x)) -> cttz(zext(x))

```

----------------------------------------
define i32 @src(i16 %x, i1 %b) {
%0:
  %z = sext i16 %x to i32
  %p = cttz i32 %z, %b
  ret i32 %p
}
=>
define i32 @tgt(i16 %x, i1 %b) {
%0:
  %z = zext i16 %x to i32
  %p = cttz i32 %z, %b
  ret i32 %p
}
Transformation seems to be correct!
```

https://alive2.llvm.org/ce/z/evomeg

Reviewed By: spatel

Differential Revision: https://reviews.llvm.org/D101764
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/test/Transforms/InstCombine/cttz.ll