Sanjay Patel | 6963244 | 2016-03-25 20:12:25 +0000 | [diff] [blame] | 1 | ; NOTE: Assertions have been autogenerated by update_test_checks.py |
Duncan Sands | a3e3699 | 2011-05-02 16:27:02 +0000 | [diff] [blame] | 2 | ; RUN: opt < %s -instsimplify -S | FileCheck %s |
| 3 | |
| 4 | define i32 @select1(i32 %x, i1 %b) { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 5 | ; CHECK-LABEL: @select1( |
Sanjay Patel | 6963244 | 2016-03-25 20:12:25 +0000 | [diff] [blame] | 6 | ; CHECK: ret i32 0 |
| 7 | ; |
Duncan Sands | a3e3699 | 2011-05-02 16:27:02 +0000 | [diff] [blame] | 8 | %rhs = select i1 %b, i32 %x, i32 1 |
| 9 | %rem = srem i32 %x, %rhs |
| 10 | ret i32 %rem |
Duncan Sands | a3e3699 | 2011-05-02 16:27:02 +0000 | [diff] [blame] | 11 | } |
| 12 | |
| 13 | define i32 @select2(i32 %x, i1 %b) { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 14 | ; CHECK-LABEL: @select2( |
Sanjay Patel | 6963244 | 2016-03-25 20:12:25 +0000 | [diff] [blame] | 15 | ; CHECK: ret i32 0 |
| 16 | ; |
Duncan Sands | a3e3699 | 2011-05-02 16:27:02 +0000 | [diff] [blame] | 17 | %rhs = select i1 %b, i32 %x, i32 1 |
| 18 | %rem = urem i32 %x, %rhs |
| 19 | ret i32 %rem |
Duncan Sands | a3e3699 | 2011-05-02 16:27:02 +0000 | [diff] [blame] | 20 | } |
David Majnemer | ac717f0 | 2014-09-17 03:34:34 +0000 | [diff] [blame] | 21 | |
David Majnemer | b435a42 | 2014-09-17 04:16:35 +0000 | [diff] [blame] | 22 | define i32 @rem1(i32 %x, i32 %n) { |
| 23 | ; CHECK-LABEL: @rem1( |
Sanjay Patel | 6963244 | 2016-03-25 20:12:25 +0000 | [diff] [blame] | 24 | ; CHECK: [[MOD:%.*]] = srem i32 %x, %n |
| 25 | ; CHECK-NEXT: ret i32 [[MOD]] |
| 26 | ; |
David Majnemer | ac717f0 | 2014-09-17 03:34:34 +0000 | [diff] [blame] | 27 | %mod = srem i32 %x, %n |
| 28 | %mod1 = srem i32 %mod, %n |
| 29 | ret i32 %mod1 |
| 30 | } |
David Majnemer | b435a42 | 2014-09-17 04:16:35 +0000 | [diff] [blame] | 31 | |
| 32 | define i32 @rem2(i32 %x, i32 %n) { |
| 33 | ; CHECK-LABEL: @rem2( |
Sanjay Patel | 6963244 | 2016-03-25 20:12:25 +0000 | [diff] [blame] | 34 | ; CHECK: [[MOD:%.*]] = urem i32 %x, %n |
| 35 | ; CHECK-NEXT: ret i32 [[MOD]] |
| 36 | ; |
David Majnemer | b435a42 | 2014-09-17 04:16:35 +0000 | [diff] [blame] | 37 | %mod = urem i32 %x, %n |
| 38 | %mod1 = urem i32 %mod, %n |
| 39 | ret i32 %mod1 |
| 40 | } |
| 41 | |
| 42 | define i32 @rem3(i32 %x, i32 %n) { |
| 43 | ; CHECK-LABEL: @rem3( |
Sanjay Patel | 6963244 | 2016-03-25 20:12:25 +0000 | [diff] [blame] | 44 | ; CHECK: [[MOD:%.*]] = srem i32 %x, %n |
| 45 | ; CHECK-NEXT: [[MOD1:%.*]] = urem i32 [[MOD]], %n |
| 46 | ; CHECK-NEXT: ret i32 [[MOD1]] |
| 47 | ; |
David Majnemer | b435a42 | 2014-09-17 04:16:35 +0000 | [diff] [blame] | 48 | %mod = srem i32 %x, %n |
| 49 | %mod1 = urem i32 %mod, %n |
| 50 | ret i32 %mod1 |
| 51 | } |