xref: /llvm-project/llvm/test/CodeGen/PowerPC/rldimi.ll (revision a4558a4a53eda8d170bbd2c358d383bb0a13f91f)
1cc627828SQiu Chaofan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2cc627828SQiu Chaofan; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 | FileCheck %s
3cc627828SQiu Chaofan; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-ibm-aix -mcpu=pwr8 | FileCheck %s
4cc627828SQiu Chaofan
5cc627828SQiu Chaofandefine i64 @rldimi1(i64 %a) {
6cc627828SQiu Chaofan; CHECK-LABEL: rldimi1:
7cc627828SQiu Chaofan; CHECK:       # %bb.0: # %entry
8cc627828SQiu Chaofan; CHECK-NEXT:    rldimi 3, 3, 8, 0
9cc627828SQiu Chaofan; CHECK-NEXT:    blr
10cc627828SQiu Chaofanentry:
11cc627828SQiu Chaofan  %x0 = shl i64 %a, 8
12cc627828SQiu Chaofan  %x1 = and i64 %a, 255
13cc627828SQiu Chaofan  %x2 = or i64 %x0, %x1
14cc627828SQiu Chaofan  ret i64 %x2
15cc627828SQiu Chaofan}
16cc627828SQiu Chaofan
17cc627828SQiu Chaofandefine i64 @rldimi2(i64 %a) {
18cc627828SQiu Chaofan; CHECK-LABEL: rldimi2:
19cc627828SQiu Chaofan; CHECK:       # %bb.0: # %entry
20cc627828SQiu Chaofan; CHECK-NEXT:    mr 4, 3
21cc627828SQiu Chaofan; CHECK-NEXT:    rlwimi 4, 3, 8, 16, 23
22cc627828SQiu Chaofan; CHECK-NEXT:    rlwimi 4, 3, 16, 8, 15
23cc627828SQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 24, 0
24cc627828SQiu Chaofan; CHECK-NEXT:    mr 3, 4
25cc627828SQiu Chaofan; CHECK-NEXT:    blr
26cc627828SQiu Chaofanentry:
27cc627828SQiu Chaofan  %x0 = shl i64 %a, 8
28cc627828SQiu Chaofan  %x1 = and i64 %a, 255
29cc627828SQiu Chaofan  %x2 = or i64 %x0, %x1
30cc627828SQiu Chaofan  %x3 = shl i64 %x2, 16
31cc627828SQiu Chaofan  %x4 = and i64 %x2, 65535
32cc627828SQiu Chaofan  %x5 = or i64 %x3, %x4
33cc627828SQiu Chaofan  ret i64 %x5
34cc627828SQiu Chaofan}
35cc627828SQiu Chaofan
36cc627828SQiu Chaofandefine i64 @rldimi3(i64 %a) {
37cc627828SQiu Chaofan; CHECK-LABEL: rldimi3:
38cc627828SQiu Chaofan; CHECK:       # %bb.0: # %entry
39cc627828SQiu Chaofan; CHECK-NEXT:    rotldi 4, 3, 32
40cc627828SQiu Chaofan; CHECK-NEXT:    rlwimi 4, 3, 0, 24, 31
41cc627828SQiu Chaofan; CHECK-NEXT:    rlwimi 4, 3, 8, 16, 23
42cc627828SQiu Chaofan; CHECK-NEXT:    rlwimi 4, 3, 16, 8, 15
43cc627828SQiu Chaofan; CHECK-NEXT:    rlwimi 4, 3, 24, 0, 7
44cc627828SQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 40, 16
45cc627828SQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 48, 8
46cc627828SQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 56, 0
47cc627828SQiu Chaofan; CHECK-NEXT:    mr 3, 4
48cc627828SQiu Chaofan; CHECK-NEXT:    blr
49cc627828SQiu Chaofanentry:
50cc627828SQiu Chaofan  %0 = shl i64 %a, 8
51cc627828SQiu Chaofan  %1 = and i64 %a, 255
52cc627828SQiu Chaofan  %2 = or i64 %0, %1
53cc627828SQiu Chaofan  %3 = shl i64 %2, 16
54cc627828SQiu Chaofan  %4 = and i64 %2, 65535
55cc627828SQiu Chaofan  %5 = or i64 %3, %4
56cc627828SQiu Chaofan  %6 = shl i64 %5, 32
57cc627828SQiu Chaofan  %7 = and i64 %5, 4294967295
58cc627828SQiu Chaofan  %8 = or i64 %6, %7
59cc627828SQiu Chaofan  ret i64 %8
60cc627828SQiu Chaofan}
61906580baSQiu Chaofan
6265ae09eeSQiu Chaofandefine i64 @rldimi4(i64 %a) {
6365ae09eeSQiu Chaofan; CHECK-LABEL: rldimi4:
64906580baSQiu Chaofan; CHECK:       # %bb.0:
65906580baSQiu Chaofan; CHECK-NEXT:    rldimi 3, 3, 8, 0
66906580baSQiu Chaofan; CHECK-NEXT:    rldimi 3, 3, 16, 0
67906580baSQiu Chaofan; CHECK-NEXT:    rldimi 3, 3, 32, 0
68906580baSQiu Chaofan; CHECK-NEXT:    blr
69906580baSQiu Chaofan  %r1 = call i64 @llvm.ppc.rldimi(i64 %a, i64 %a, i32 8, i64 -256)
70906580baSQiu Chaofan  %r2 = call i64 @llvm.ppc.rldimi(i64 %r1, i64 %r1, i32 16, i64 -65536)
71906580baSQiu Chaofan  %r3 = call i64 @llvm.ppc.rldimi(i64 %r2, i64 %r2, i32 32, i64 -4294967296)
72906580baSQiu Chaofan  ret i64 %r3
73906580baSQiu Chaofan}
74906580baSQiu Chaofan
7565ae09eeSQiu Chaofandefine i64 @rldimi5(i64 %a, i64 %b) {
7665ae09eeSQiu Chaofan; CHECK-LABEL: rldimi5:
7765ae09eeSQiu Chaofan; CHECK:       # %bb.0:
7865ae09eeSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 8, 40
7965ae09eeSQiu Chaofan; CHECK-NEXT:    mr 3, 4
8065ae09eeSQiu Chaofan; CHECK-NEXT:    blr
8165ae09eeSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 8, i64 16776960) ; 0xffff << 8
8265ae09eeSQiu Chaofan  ret i64 %r
8365ae09eeSQiu Chaofan}
8465ae09eeSQiu Chaofan
8565ae09eeSQiu Chaofandefine i64 @rldimi6(i64 %a, i64 %b) {
8665ae09eeSQiu Chaofan; CHECK-LABEL: rldimi6:
8765ae09eeSQiu Chaofan; CHECK:       # %bb.0:
8865ae09eeSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 1
8965ae09eeSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 7, 41
9065ae09eeSQiu Chaofan; CHECK-NEXT:    mr 3, 4
9165ae09eeSQiu Chaofan; CHECK-NEXT:    blr
9265ae09eeSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 8, i64 8388480) ; 0xffff << 7
9365ae09eeSQiu Chaofan  ret i64 %r
9465ae09eeSQiu Chaofan}
9565ae09eeSQiu Chaofan
9665ae09eeSQiu Chaofandefine i64 @rldimi7(i64 %a, i64 %b) {
9765ae09eeSQiu Chaofan; CHECK-LABEL: rldimi7:
9865ae09eeSQiu Chaofan; CHECK:       # %bb.0:
9965ae09eeSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 63
10065ae09eeSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 9, 39
10165ae09eeSQiu Chaofan; CHECK-NEXT:    mr 3, 4
10265ae09eeSQiu Chaofan; CHECK-NEXT:    blr
10365ae09eeSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 8, i64 33553920) ; 0xffff << 9
10465ae09eeSQiu Chaofan  ret i64 %r
10565ae09eeSQiu Chaofan}
10665ae09eeSQiu Chaofan
10765ae09eeSQiu Chaofandefine i64 @rldimi8(i64 %a, i64 %b) {
10865ae09eeSQiu Chaofan; CHECK-LABEL: rldimi8:
10965ae09eeSQiu Chaofan; CHECK:       # %bb.0:
11065ae09eeSQiu Chaofan; CHECK-NEXT:    mr 3, 4
11165ae09eeSQiu Chaofan; CHECK-NEXT:    blr
11265ae09eeSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 0, i64 0)
11365ae09eeSQiu Chaofan  ret i64 %r
11465ae09eeSQiu Chaofan}
11565ae09eeSQiu Chaofan
11665ae09eeSQiu Chaofandefine i64 @rldimi9(i64 %a, i64 %b) {
11765ae09eeSQiu Chaofan; CHECK-LABEL: rldimi9:
11865ae09eeSQiu Chaofan; CHECK:       # %bb.0:
11965ae09eeSQiu Chaofan; CHECK-NEXT:    mr 3, 4
12065ae09eeSQiu Chaofan; CHECK-NEXT:    blr
12165ae09eeSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 63, i64 0)
12265ae09eeSQiu Chaofan  ret i64 %r
12365ae09eeSQiu Chaofan}
12465ae09eeSQiu Chaofan
12565ae09eeSQiu Chaofandefine i64 @rldimi10(i64 %a, i64 %b) {
12665ae09eeSQiu Chaofan; CHECK-LABEL: rldimi10:
12765ae09eeSQiu Chaofan; CHECK:       # %bb.0:
12865ae09eeSQiu Chaofan; CHECK-NEXT:    blr
12965ae09eeSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 0, i64 -1)
13065ae09eeSQiu Chaofan  ret i64 %r
13165ae09eeSQiu Chaofan}
13265ae09eeSQiu Chaofan
13365ae09eeSQiu Chaofandefine i64 @rldimi11(i64 %a, i64 %b) {
13465ae09eeSQiu Chaofan; CHECK-LABEL: rldimi11:
13565ae09eeSQiu Chaofan; CHECK:       # %bb.0:
13665ae09eeSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 8
13765ae09eeSQiu Chaofan; CHECK-NEXT:    blr
13865ae09eeSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 8, i64 -1)
13965ae09eeSQiu Chaofan  ret i64 %r
14065ae09eeSQiu Chaofan}
14165ae09eeSQiu Chaofan
142*a4558a4aSQiu Chaofandefine i64 @rldimi12(i64 %a, i64 %b) {
143*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi12:
144*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
145*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 20
146*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 44, 31
147*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
148*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
149*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 0, i64 18446726490113441791)
150*a4558a4aSQiu Chaofan  ret i64 %r
151*a4558a4aSQiu Chaofan}
152*a4558a4aSQiu Chaofan
153*a4558a4aSQiu Chaofandefine i64 @rldimi13(i64 %a, i64 %b) {
154*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi13:
155*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
156*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 62
157*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 32, 2
158*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
159*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
160*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 30, i64 4611686014132420608)
161*a4558a4aSQiu Chaofan  ret i64 %r
162*a4558a4aSQiu Chaofan}
163*a4558a4aSQiu Chaofan
164*a4558a4aSQiu Chaofandefine i64 @rldimi14(i64 %a, i64 %b) {
165*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi14:
166*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
167*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 23
168*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 53, 0
169*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
170*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
171*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18437736874454810624) ; mb=0, me=10
172*a4558a4aSQiu Chaofan  ret i64 %r
173*a4558a4aSQiu Chaofan}
174*a4558a4aSQiu Chaofan
175*a4558a4aSQiu Chaofandefine i64 @rldimi15(i64 %a, i64 %b) {
176*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi15:
177*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
178*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 36
179*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 40, 10
180*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
181*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
182*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18013298997854208) ; mb=10, me=23
183*a4558a4aSQiu Chaofan  ret i64 %r
184*a4558a4aSQiu Chaofan}
185*a4558a4aSQiu Chaofan
186*a4558a4aSQiu Chaofandefine i64 @rldimi16(i64 %a, i64 %b) {
187*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi16:
188*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
189*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 57
190*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 19, 10
191*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
192*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
193*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18014398508957696) ; mb=10, me=44
194*a4558a4aSQiu Chaofan  ret i64 %r
195*a4558a4aSQiu Chaofan}
196*a4558a4aSQiu Chaofan
197*a4558a4aSQiu Chaofandefine i64 @rldimi17(i64 %a, i64 %b) {
198*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi17:
199*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
200*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 43
201*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 33, 25
202*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
203*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
204*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 541165879296) ; mb=25, me=30
205*a4558a4aSQiu Chaofan  ret i64 %r
206*a4558a4aSQiu Chaofan}
207*a4558a4aSQiu Chaofan
208*a4558a4aSQiu Chaofandefine i64 @rldimi18(i64 %a, i64 %b) {
209*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi18:
210*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
211*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 57
212*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 19, 25
213*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
214*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
215*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 549755289600) ; mb=25, me=44
216*a4558a4aSQiu Chaofan  ret i64 %r
217*a4558a4aSQiu Chaofan}
218*a4558a4aSQiu Chaofan
219*a4558a4aSQiu Chaofandefine i64 @rldimi19(i64 %a, i64 %b) {
220*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi19:
221*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
222*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 57
223*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 19, 33
224*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
225*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
226*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 2146959360) ; mb=33, me=44
227*a4558a4aSQiu Chaofan  ret i64 %r
228*a4558a4aSQiu Chaofan}
229*a4558a4aSQiu Chaofan
230*a4558a4aSQiu Chaofandefine i64 @rldimi20(i64 %a, i64 %b) {
231*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi20:
232*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
233*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 23
234*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 53, 15
235*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
236*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
237*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18438299824408231935) ; mb=15, me=10
238*a4558a4aSQiu Chaofan  ret i64 %r
239*a4558a4aSQiu Chaofan}
240*a4558a4aSQiu Chaofan
241*a4558a4aSQiu Chaofandefine i64 @rldimi21(i64 %a, i64 %b) {
242*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi21:
243*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
244*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 23
245*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 53, 25
246*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
247*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
248*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18437737424210624511) ; mb=25, me=10
249*a4558a4aSQiu Chaofan  ret i64 %r
250*a4558a4aSQiu Chaofan}
251*a4558a4aSQiu Chaofan
252*a4558a4aSQiu Chaofandefine i64 @rldimi22(i64 %a, i64 %b) {
253*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi22:
254*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
255*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 34
256*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 42, 25
257*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
258*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
259*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18446740225418854399) ; mb=25, me=21
260*a4558a4aSQiu Chaofan  ret i64 %r
261*a4558a4aSQiu Chaofan}
262*a4558a4aSQiu Chaofan
263*a4558a4aSQiu Chaofandefine i64 @rldimi23(i64 %a, i64 %b) {
264*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi23:
265*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
266*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 23
267*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 53, 44
268*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
269*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
270*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18437736874455859199) ; mb=44, me=10
271*a4558a4aSQiu Chaofan  ret i64 %r
272*a4558a4aSQiu Chaofan}
273*a4558a4aSQiu Chaofan
274*a4558a4aSQiu Chaofandefine i64 @rldimi24(i64 %a, i64 %b) {
275*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi24:
276*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
277*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 38
278*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 38, 44
279*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
280*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
281*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18446743798832693247) ; mb=44, me=25
282*a4558a4aSQiu Chaofan  ret i64 %r
283*a4558a4aSQiu Chaofan}
284*a4558a4aSQiu Chaofan
285*a4558a4aSQiu Chaofandefine i64 @rldimi25(i64 %a, i64 %b) {
286*a4558a4aSQiu Chaofan; CHECK-LABEL: rldimi25:
287*a4558a4aSQiu Chaofan; CHECK:       # %bb.0:
288*a4558a4aSQiu Chaofan; CHECK-NEXT:    rotldi 3, 3, 48
289*a4558a4aSQiu Chaofan; CHECK-NEXT:    rldimi 4, 3, 28, 44
290*a4558a4aSQiu Chaofan; CHECK-NEXT:    mr 3, 4
291*a4558a4aSQiu Chaofan; CHECK-NEXT:    blr
292*a4558a4aSQiu Chaofan  %r = call i64 @llvm.ppc.rldimi(i64 %a, i64 %b, i32 12, i64 18446744073442164735) ; mb=44, me=35
293*a4558a4aSQiu Chaofan  ret i64 %r
294*a4558a4aSQiu Chaofan}
295*a4558a4aSQiu Chaofan
296906580baSQiu Chaofandeclare i64 @llvm.ppc.rldimi(i64, i64, i32 immarg, i64 immarg)
297