summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine/shift-sra.ll
blob: 43a4ebdfd2c981c4be7f046242e6b4cf422568d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine -disable-output &&
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'lshr int' | wc -l | grep 2 &&
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep ashr

int %test1(int %X, ubyte %A) {
	%Y = shr int %X, ubyte %A  ; can be logical shift.
	%Z = and int %Y, 1
	ret int %Z
}

int %test2(ubyte %tmp) {
        %tmp3 = cast ubyte %tmp to int
        %tmp4 = add int %tmp3, 7
        %tmp5 = ashr int %tmp4, ubyte 3   ; lshr
        ret int %tmp5
}