blob: b1b555513d8a41954938447d551503e11af1197d [file] [log] [blame]
Chris Lattner74e95472002-05-06 05:43:36 +00001; This test makes sure that these instructions are properly eliminated.
2;
3
Misha Brukmanedf4bab2003-09-16 15:29:54 +00004; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep rem
Chris Lattner74e95472002-05-06 05:43:36 +00005
6implementation
7
Chris Lattnerc5fccf32003-02-18 19:28:47 +00008int %test1(int %A) {
Chris Lattner74e95472002-05-06 05:43:36 +00009 %B = rem int %A, 1 ; ISA constant 0
10 ret int %B
11}
12
Chris Lattnerc5fccf32003-02-18 19:28:47 +000013int %test2(int %A) { ; 0 % X = 0, we don't need ot preserve traps
14 %B = rem int 0, %A
15 ret int %B
16}
17
18uint %test3(uint %A) {
19 %B = rem uint %A, 8 ; & 7
20 ret uint %B
21}
Chris Lattnereca92d32004-07-06 07:38:00 +000022
23bool %test3(int %A) {
24 %B = rem int %A, -8 ; & 7
25 %C = setne int %B, 0
26 ret bool %C
27}
Chris Lattner9803a0a2004-12-12 21:40:22 +000028
29uint %test4(uint %X, bool %C) {
30 %V = select bool %C, uint 1, uint 8
31 %R = rem uint %X, %V
32 ret uint %R
33}
Chris Lattnerb624bb52006-02-05 07:52:47 +000034
35uint %test5(uint %X, ubyte %B) {
36 %Amt = shl uint 32, ubyte %B
37 %V = rem uint %X, %Amt
38 ret uint %V
39}
40