|
5 | 5 | ; RUN: | FileCheck -check-prefixes=CHECK,SFB %s
|
6 | 6 |
|
7 | 7 | define signext i32 @sdiv2_32(i32 signext %0) {
|
8 |
| -; NOSFB-LABEL: sdiv2_32: |
9 |
| -; NOSFB: # %bb.0: |
10 |
| -; NOSFB-NEXT: srliw a1, a0, 31 |
11 |
| -; NOSFB-NEXT: add a0, a0, a1 |
12 |
| -; NOSFB-NEXT: sraiw a0, a0, 1 |
13 |
| -; NOSFB-NEXT: ret |
14 |
| -; |
15 |
| -; SFB-LABEL: sdiv2_32: |
16 |
| -; SFB: # %bb.0: |
17 |
| -; SFB-NEXT: bgez a0, .LBB0_2 |
18 |
| -; SFB-NEXT: # %bb.1: |
19 |
| -; SFB-NEXT: addi a0, a0, 1 |
20 |
| -; SFB-NEXT: .LBB0_2: |
21 |
| -; SFB-NEXT: sraiw a0, a0, 1 |
22 |
| -; SFB-NEXT: ret |
| 8 | +; CHECK-LABEL: sdiv2_32: |
| 9 | +; CHECK: # %bb.0: |
| 10 | +; CHECK-NEXT: srliw a1, a0, 31 |
| 11 | +; CHECK-NEXT: add a0, a0, a1 |
| 12 | +; CHECK-NEXT: sraiw a0, a0, 1 |
| 13 | +; CHECK-NEXT: ret |
23 | 14 | %res = sdiv i32 %0, 2
|
24 | 15 | ret i32 %res
|
25 | 16 | }
|
26 | 17 |
|
27 | 18 | define signext i32 @sdivneg2_32(i32 signext %0) {
|
28 |
| -; NOSFB-LABEL: sdivneg2_32: |
29 |
| -; NOSFB: # %bb.0: |
30 |
| -; NOSFB-NEXT: srliw a1, a0, 31 |
31 |
| -; NOSFB-NEXT: add a0, a0, a1 |
32 |
| -; NOSFB-NEXT: sraiw a0, a0, 1 |
33 |
| -; NOSFB-NEXT: neg a0, a0 |
34 |
| -; NOSFB-NEXT: ret |
35 |
| -; |
36 |
| -; SFB-LABEL: sdivneg2_32: |
37 |
| -; SFB: # %bb.0: |
38 |
| -; SFB-NEXT: bgez a0, .LBB1_2 |
39 |
| -; SFB-NEXT: # %bb.1: |
40 |
| -; SFB-NEXT: addi a0, a0, 1 |
41 |
| -; SFB-NEXT: .LBB1_2: |
42 |
| -; SFB-NEXT: sraiw a0, a0, 1 |
43 |
| -; SFB-NEXT: neg a0, a0 |
44 |
| -; SFB-NEXT: ret |
| 19 | +; CHECK-LABEL: sdivneg2_32: |
| 20 | +; CHECK: # %bb.0: |
| 21 | +; CHECK-NEXT: srliw a1, a0, 31 |
| 22 | +; CHECK-NEXT: add a0, a0, a1 |
| 23 | +; CHECK-NEXT: sraiw a0, a0, 1 |
| 24 | +; CHECK-NEXT: neg a0, a0 |
| 25 | +; CHECK-NEXT: ret |
45 | 26 | %res = sdiv i32 %0, -2
|
46 | 27 | ret i32 %res
|
47 | 28 | }
|
48 | 29 |
|
49 | 30 | define i64 @sdiv2_64(i64 %0) {
|
50 |
| -; NOSFB-LABEL: sdiv2_64: |
51 |
| -; NOSFB: # %bb.0: |
52 |
| -; NOSFB-NEXT: srli a1, a0, 63 |
53 |
| -; NOSFB-NEXT: add a0, a0, a1 |
54 |
| -; NOSFB-NEXT: srai a0, a0, 1 |
55 |
| -; NOSFB-NEXT: ret |
56 |
| -; |
57 |
| -; SFB-LABEL: sdiv2_64: |
58 |
| -; SFB: # %bb.0: |
59 |
| -; SFB-NEXT: bgez a0, .LBB2_2 |
60 |
| -; SFB-NEXT: # %bb.1: |
61 |
| -; SFB-NEXT: addi a0, a0, 1 |
62 |
| -; SFB-NEXT: .LBB2_2: |
63 |
| -; SFB-NEXT: srai a0, a0, 1 |
64 |
| -; SFB-NEXT: ret |
| 31 | +; CHECK-LABEL: sdiv2_64: |
| 32 | +; CHECK: # %bb.0: |
| 33 | +; CHECK-NEXT: srli a1, a0, 63 |
| 34 | +; CHECK-NEXT: add a0, a0, a1 |
| 35 | +; CHECK-NEXT: srai a0, a0, 1 |
| 36 | +; CHECK-NEXT: ret |
65 | 37 | %res = sdiv i64 %0, 2
|
66 | 38 | ret i64 %res
|
67 | 39 | }
|
68 | 40 |
|
69 | 41 | define i64 @sdivneg2_64(i64 %0) {
|
70 |
| -; NOSFB-LABEL: sdivneg2_64: |
71 |
| -; NOSFB: # %bb.0: |
72 |
| -; NOSFB-NEXT: srli a1, a0, 63 |
73 |
| -; NOSFB-NEXT: add a0, a0, a1 |
74 |
| -; NOSFB-NEXT: srai a0, a0, 1 |
75 |
| -; NOSFB-NEXT: neg a0, a0 |
76 |
| -; NOSFB-NEXT: ret |
77 |
| -; |
78 |
| -; SFB-LABEL: sdivneg2_64: |
79 |
| -; SFB: # %bb.0: |
80 |
| -; SFB-NEXT: bgez a0, .LBB3_2 |
81 |
| -; SFB-NEXT: # %bb.1: |
82 |
| -; SFB-NEXT: addi a0, a0, 1 |
83 |
| -; SFB-NEXT: .LBB3_2: |
84 |
| -; SFB-NEXT: srai a0, a0, 1 |
85 |
| -; SFB-NEXT: neg a0, a0 |
86 |
| -; SFB-NEXT: ret |
| 42 | +; CHECK-LABEL: sdivneg2_64: |
| 43 | +; CHECK: # %bb.0: |
| 44 | +; CHECK-NEXT: srli a1, a0, 63 |
| 45 | +; CHECK-NEXT: add a0, a0, a1 |
| 46 | +; CHECK-NEXT: srai a0, a0, 1 |
| 47 | +; CHECK-NEXT: neg a0, a0 |
| 48 | +; CHECK-NEXT: ret |
87 | 49 | %res = sdiv i64 %0, -2
|
88 | 50 | ret i64 %res
|
89 | 51 | }
|
90 | 52 |
|
91 | 53 | define signext i32 @srem2_32(i32 signext %0) {
|
92 |
| -; NOSFB-LABEL: srem2_32: |
93 |
| -; NOSFB: # %bb.0: |
94 |
| -; NOSFB-NEXT: srliw a1, a0, 31 |
95 |
| -; NOSFB-NEXT: add a1, a1, a0 |
96 |
| -; NOSFB-NEXT: andi a1, a1, -2 |
97 |
| -; NOSFB-NEXT: subw a0, a0, a1 |
98 |
| -; NOSFB-NEXT: ret |
99 |
| -; |
100 |
| -; SFB-LABEL: srem2_32: |
101 |
| -; SFB: # %bb.0: |
102 |
| -; SFB-NEXT: mv a1, a0 |
103 |
| -; SFB-NEXT: bgez a0, .LBB4_2 |
104 |
| -; SFB-NEXT: # %bb.1: |
105 |
| -; SFB-NEXT: addi a1, a0, 1 |
106 |
| -; SFB-NEXT: .LBB4_2: |
107 |
| -; SFB-NEXT: andi a1, a1, -2 |
108 |
| -; SFB-NEXT: subw a0, a0, a1 |
109 |
| -; SFB-NEXT: ret |
| 54 | +; CHECK-LABEL: srem2_32: |
| 55 | +; CHECK: # %bb.0: |
| 56 | +; CHECK-NEXT: srliw a1, a0, 31 |
| 57 | +; CHECK-NEXT: add a1, a1, a0 |
| 58 | +; CHECK-NEXT: andi a1, a1, -2 |
| 59 | +; CHECK-NEXT: subw a0, a0, a1 |
| 60 | +; CHECK-NEXT: ret |
110 | 61 | %res = srem i32 %0, 2
|
111 | 62 | ret i32 %res
|
112 | 63 | }
|
113 | 64 |
|
114 | 65 | define signext i32 @sremneg2_32(i32 signext %0) {
|
115 |
| -; NOSFB-LABEL: sremneg2_32: |
116 |
| -; NOSFB: # %bb.0: |
117 |
| -; NOSFB-NEXT: srliw a1, a0, 31 |
118 |
| -; NOSFB-NEXT: add a1, a1, a0 |
119 |
| -; NOSFB-NEXT: andi a1, a1, -2 |
120 |
| -; NOSFB-NEXT: subw a0, a0, a1 |
121 |
| -; NOSFB-NEXT: ret |
122 |
| -; |
123 |
| -; SFB-LABEL: sremneg2_32: |
124 |
| -; SFB: # %bb.0: |
125 |
| -; SFB-NEXT: mv a1, a0 |
126 |
| -; SFB-NEXT: bgez a0, .LBB5_2 |
127 |
| -; SFB-NEXT: # %bb.1: |
128 |
| -; SFB-NEXT: addi a1, a0, 1 |
129 |
| -; SFB-NEXT: .LBB5_2: |
130 |
| -; SFB-NEXT: andi a1, a1, -2 |
131 |
| -; SFB-NEXT: subw a0, a0, a1 |
132 |
| -; SFB-NEXT: ret |
| 66 | +; CHECK-LABEL: sremneg2_32: |
| 67 | +; CHECK: # %bb.0: |
| 68 | +; CHECK-NEXT: srliw a1, a0, 31 |
| 69 | +; CHECK-NEXT: add a1, a1, a0 |
| 70 | +; CHECK-NEXT: andi a1, a1, -2 |
| 71 | +; CHECK-NEXT: subw a0, a0, a1 |
| 72 | +; CHECK-NEXT: ret |
133 | 73 | %res = srem i32 %0, -2
|
134 | 74 | ret i32 %res
|
135 | 75 | }
|
136 | 76 |
|
137 | 77 | define i64 @srem2_64(i64 %0) {
|
138 |
| -; NOSFB-LABEL: srem2_64: |
139 |
| -; NOSFB: # %bb.0: |
140 |
| -; NOSFB-NEXT: srli a1, a0, 63 |
141 |
| -; NOSFB-NEXT: add a1, a1, a0 |
142 |
| -; NOSFB-NEXT: andi a1, a1, -2 |
143 |
| -; NOSFB-NEXT: sub a0, a0, a1 |
144 |
| -; NOSFB-NEXT: ret |
145 |
| -; |
146 |
| -; SFB-LABEL: srem2_64: |
147 |
| -; SFB: # %bb.0: |
148 |
| -; SFB-NEXT: mv a1, a0 |
149 |
| -; SFB-NEXT: bgez a0, .LBB6_2 |
150 |
| -; SFB-NEXT: # %bb.1: |
151 |
| -; SFB-NEXT: addi a1, a0, 1 |
152 |
| -; SFB-NEXT: .LBB6_2: |
153 |
| -; SFB-NEXT: andi a1, a1, -2 |
154 |
| -; SFB-NEXT: sub a0, a0, a1 |
155 |
| -; SFB-NEXT: ret |
| 78 | +; CHECK-LABEL: srem2_64: |
| 79 | +; CHECK: # %bb.0: |
| 80 | +; CHECK-NEXT: srli a1, a0, 63 |
| 81 | +; CHECK-NEXT: add a1, a1, a0 |
| 82 | +; CHECK-NEXT: andi a1, a1, -2 |
| 83 | +; CHECK-NEXT: sub a0, a0, a1 |
| 84 | +; CHECK-NEXT: ret |
156 | 85 | %res = srem i64 %0, 2
|
157 | 86 | ret i64 %res
|
158 | 87 | }
|
159 | 88 |
|
160 | 89 | define i64 @sremneg2_64(i64 %0) {
|
161 |
| -; NOSFB-LABEL: sremneg2_64: |
162 |
| -; NOSFB: # %bb.0: |
163 |
| -; NOSFB-NEXT: srli a1, a0, 63 |
164 |
| -; NOSFB-NEXT: add a1, a1, a0 |
165 |
| -; NOSFB-NEXT: andi a1, a1, -2 |
166 |
| -; NOSFB-NEXT: sub a0, a0, a1 |
167 |
| -; NOSFB-NEXT: ret |
168 |
| -; |
169 |
| -; SFB-LABEL: sremneg2_64: |
170 |
| -; SFB: # %bb.0: |
171 |
| -; SFB-NEXT: mv a1, a0 |
172 |
| -; SFB-NEXT: bgez a0, .LBB7_2 |
173 |
| -; SFB-NEXT: # %bb.1: |
174 |
| -; SFB-NEXT: addi a1, a0, 1 |
175 |
| -; SFB-NEXT: .LBB7_2: |
176 |
| -; SFB-NEXT: andi a1, a1, -2 |
177 |
| -; SFB-NEXT: sub a0, a0, a1 |
178 |
| -; SFB-NEXT: ret |
| 90 | +; CHECK-LABEL: sremneg2_64: |
| 91 | +; CHECK: # %bb.0: |
| 92 | +; CHECK-NEXT: srli a1, a0, 63 |
| 93 | +; CHECK-NEXT: add a1, a1, a0 |
| 94 | +; CHECK-NEXT: andi a1, a1, -2 |
| 95 | +; CHECK-NEXT: sub a0, a0, a1 |
| 96 | +; CHECK-NEXT: ret |
179 | 97 | %res = srem i64 %0, -2
|
180 | 98 | ret i64 %res
|
181 | 99 | }
|
|
0 commit comments