blob: 45d1c9532276d0b43f047e5f83f6d51bb7cd2c4b [file] [log] [blame]
Akira Hatanakac7bafe92011-09-30 18:51:46 +00001; RUN: llc -march=mips64el -mcpu=mips64r2 < %s | FileCheck %s
Akira Hatanaka25a7d942011-09-30 03:18:46 +00002
3define i64 @f0(i64 %a0, i64 %a1) nounwind readnone {
4entry:
5; CHECK: dsllv
6 %shl = shl i64 %a0, %a1
7 ret i64 %shl
8}
9
10define i64 @f1(i64 %a0, i64 %a1) nounwind readnone {
11entry:
12; CHECK: dsrav
13 %shr = ashr i64 %a0, %a1
14 ret i64 %shr
15}
16
17define i64 @f2(i64 %a0, i64 %a1) nounwind readnone {
18entry:
19; CHECK: dsrlv
20 %shr = lshr i64 %a0, %a1
21 ret i64 %shr
22}
23
24define i64 @f3(i64 %a0) nounwind readnone {
25entry:
Akira Hatanakad80c13b2011-09-30 17:19:21 +000026; CHECK: dsll ${{[0-9]+}}, ${{[0-9]+}}, 10
Akira Hatanaka25a7d942011-09-30 03:18:46 +000027 %shl = shl i64 %a0, 10
28 ret i64 %shl
29}
30
31define i64 @f4(i64 %a0) nounwind readnone {
32entry:
Akira Hatanakad80c13b2011-09-30 17:19:21 +000033; CHECK: dsra ${{[0-9]+}}, ${{[0-9]+}}, 10
Akira Hatanaka25a7d942011-09-30 03:18:46 +000034 %shr = ashr i64 %a0, 10
35 ret i64 %shr
36}
37
38define i64 @f5(i64 %a0) nounwind readnone {
39entry:
Akira Hatanakad80c13b2011-09-30 17:19:21 +000040; CHECK: dsrl ${{[0-9]+}}, ${{[0-9]+}}, 10
Akira Hatanaka25a7d942011-09-30 03:18:46 +000041 %shr = lshr i64 %a0, 10
42 ret i64 %shr
43}
44
45define i64 @f6(i64 %a0) nounwind readnone {
46entry:
Akira Hatanakaee973142011-12-19 19:44:09 +000047; CHECK: dsll ${{[0-9]+}}, ${{[0-9]+}}, 40
Akira Hatanaka25a7d942011-09-30 03:18:46 +000048 %shl = shl i64 %a0, 40
49 ret i64 %shl
50}
51
52define i64 @f7(i64 %a0) nounwind readnone {
53entry:
Akira Hatanakaee973142011-12-19 19:44:09 +000054; CHECK: dsra ${{[0-9]+}}, ${{[0-9]+}}, 40
Akira Hatanaka25a7d942011-09-30 03:18:46 +000055 %shr = ashr i64 %a0, 40
56 ret i64 %shr
57}
58
59define i64 @f8(i64 %a0) nounwind readnone {
60entry:
Akira Hatanakaee973142011-12-19 19:44:09 +000061; CHECK: dsrl ${{[0-9]+}}, ${{[0-9]+}}, 40
Akira Hatanaka25a7d942011-09-30 03:18:46 +000062 %shr = lshr i64 %a0, 40
63 ret i64 %shr
64}
Akira Hatanakac7bafe92011-09-30 18:51:46 +000065
66define i64 @f9(i64 %a0, i64 %a1) nounwind readnone {
67entry:
68; CHECK: drotrv
69 %shr = lshr i64 %a0, %a1
70 %sub = sub i64 64, %a1
71 %shl = shl i64 %a0, %sub
72 %or = or i64 %shl, %shr
73 ret i64 %or
74}
75
76define i64 @f10(i64 %a0, i64 %a1) nounwind readnone {
77entry:
78; CHECK: drotrv
79 %shl = shl i64 %a0, %a1
80 %sub = sub i64 64, %a1
81 %shr = lshr i64 %a0, %sub
82 %or = or i64 %shr, %shl
83 ret i64 %or
84}
85
86define i64 @f11(i64 %a0) nounwind readnone {
87entry:
88; CHECK: drotr ${{[0-9]+}}, ${{[0-9]+}}, 10
89 %shr = lshr i64 %a0, 10
90 %shl = shl i64 %a0, 54
91 %or = or i64 %shr, %shl
92 ret i64 %or
93}
94
95define i64 @f12(i64 %a0) nounwind readnone {
96entry:
Akira Hatanakaee973142011-12-19 19:44:09 +000097; CHECK: drotr ${{[0-9]+}}, ${{[0-9]+}}, 54
Akira Hatanakac7bafe92011-09-30 18:51:46 +000098 %shl = shl i64 %a0, 10
99 %shr = lshr i64 %a0, 54
100 %or = or i64 %shl, %shr
101 ret i64 %or
102}
103
104