1 ; This test makes sure that div instructions are properly eliminated.
4 ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep div
13 uint %test2(uint %A) {
14 %B = div uint %A, 8 ; => Shift
19 %B = div int 0, %A ; => 0, don't need to keep traps
24 %B = div int %A, -1 ; 0-A
28 uint %test5(uint %A) {
29 %B = div uint %A, 4294967280
30 %C = div uint %B, 4294967292
34 bool %test6(uint %A) {
36 %C = seteq uint %B, 0 ; A < 123
40 bool %test7(uint %A) {
42 %C = seteq uint %B, 2 ; A >= 20 && A < 30
46 bool %test8(ubyte %A) {
47 %B = div ubyte %A, 123
48 %C = seteq ubyte %B, 2 ; A >= 246
52 bool %test9(ubyte %A) {
53 %B = div ubyte %A, 123
54 %C = setne ubyte %B, 2 ; A < 246
58 uint %test10(uint %X, bool %C) {
59 %V = select bool %C, uint 64, uint 8
64 int %test11(int %X, bool %C) {
65 %A = select bool %C, int 1024, int 32