; This test makes sure that div instructions are properly eliminated.
;

; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep div
; END.

implementation

int %test1(int %A) {
	%B = div int %A, 1
	ret int %B
}

uint %test2(uint %A) {
	%B = div uint %A, 8   ; => Shift
	ret uint %B
}

int %test3(int %A) {
	%B = div int 0, %A    ; => 0, don't need to keep traps
	ret int %B
}

int %test4(int %A) {
	%B = div int %A, -1    ; 0-A
	ret int %B
}

uint %test5(uint %A) {
	%B = div uint %A, 4294967280
	%C = div uint %B, 4294967292
	ret uint %C
}

bool %test6(uint %A) {
	%B = div uint %A, 123
	%C = seteq uint %B, 0   ; A < 123
	ret bool %C
} 

bool %test7(uint %A) {
	%B = div uint %A, 10
	%C = seteq uint %B, 2    ; A >= 20 && A < 30
	ret bool %C
}

bool %test8(ubyte %A) {
	%B = div ubyte %A, 123
	%C = seteq ubyte %B, 2   ; A >= 246
	ret bool %C
} 

bool %test9(ubyte %A) {
	%B = div ubyte %A, 123
	%C = setne ubyte %B, 2   ; A < 246
	ret bool %C
} 

uint %test10(uint %X, bool %C) {
        %V = select bool %C, uint 64, uint 8
        %R = udiv uint %X, %V
        ret uint %R
}

int %test11(int %X, bool %C) {
        %A = select bool %C, int 1024, int 32
        %B = udiv int %X, %A
        ret int %B
}
