| ; Test that upgrading shift instructions and constant expressions works |
| ; correctly. |
| ; RUN: llvm-upgrade < %s | grep {ashr i32 .X, 2} |
| ; RUN: llvm-upgrade < %s | grep {lshr i32 .X, 2} |
| ; RUN: llvm-upgrade < %s | grep {shl i32 .X, 2} |
| ; RUN: llvm-upgrade < %s | grep {ashr i32 .X, 6} |
| ; RUN: llvm-upgrade < %s | grep {lshr i32 .X, 1} |
| ; RUN: llvm-upgrade < %s | grep {shl i32 .X, 1} |
| |
| void %test(int %X) { |
| %A = ashr int %X, ubyte 2 |
| %B = lshr int %X, ubyte 2 |
| %C = shl int %X, ubyte 2 |
| %D = ashr int %X, ubyte trunc ( int shl (int 3, ubyte 1) to ubyte ) |
| %E = lshr int %X, ubyte trunc ( int ashr (int 3, ubyte 1) to ubyte ) |
| %F = shl int %X, ubyte trunc ( int lshr (int 3, ubyte 1) to ubyte ) |
| ret void |
| } |