blob: 52c6f906639249c1d12981af10d237d21cc637e9 [file] [log] [blame]
Akira Hatanaka7ba8a8d2011-09-30 18:51:46 +00001; RUN: llc -march=mips64el -mcpu=mips64r2 < %s | FileCheck %s
Akira Hatanaka61e256a2011-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 Hatanakab3811292011-09-30 17:19:21 +000026; CHECK: dsll ${{[0-9]+}}, ${{[0-9]+}}, 10
Akira Hatanaka61e256a2011-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 Hatanakab3811292011-09-30 17:19:21 +000033; CHECK: dsra ${{[0-9]+}}, ${{[0-9]+}}, 10
Akira Hatanaka61e256a2011-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 Hatanakab3811292011-09-30 17:19:21 +000040; CHECK: dsrl ${{[0-9]+}}, ${{[0-9]+}}, 10
Akira Hatanaka61e256a2011-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 Hatanaka2a232d82011-12-19 19:44:09 +000047; CHECK: dsll ${{[0-9]+}}, ${{[0-9]+}}, 40
Akira Hatanaka61e256a2011-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 Hatanaka2a232d82011-12-19 19:44:09 +000054; CHECK: dsra ${{[0-9]+}}, ${{[0-9]+}}, 40
Akira Hatanaka61e256a2011-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 Hatanaka2a232d82011-12-19 19:44:09 +000061; CHECK: dsrl ${{[0-9]+}}, ${{[0-9]+}}, 40
Akira Hatanaka61e256a2011-09-30 03:18:46 +000062 %shr = lshr i64 %a0, 40
63 ret i64 %shr
64}
Akira Hatanaka7ba8a8d2011-09-30 18:51:46 +000065
66define i64 @f9(i64 %a0, i64 %a1) nounwind readnone {
67entry:
Vasileios Kalintiris32177d62015-04-21 10:49:03 +000068; CHECK-NOT: sll
69; CHECK: drotrv
Akira Hatanaka7ba8a8d2011-09-30 18:51:46 +000070 %shr = lshr i64 %a0, %a1
71 %sub = sub i64 64, %a1
72 %shl = shl i64 %a0, %sub
73 %or = or i64 %shl, %shr
74 ret i64 %or
75}
76
77define i64 @f10(i64 %a0, i64 %a1) nounwind readnone {
78entry:
Vasileios Kalintiris32177d62015-04-21 10:49:03 +000079; CHECK-NOT: sll
80; CHECK: drotrv
Akira Hatanaka7ba8a8d2011-09-30 18:51:46 +000081 %shl = shl i64 %a0, %a1
82 %sub = sub i64 64, %a1
83 %shr = lshr i64 %a0, %sub
84 %or = or i64 %shr, %shl
85 ret i64 %or
86}
87
88define i64 @f11(i64 %a0) nounwind readnone {
89entry:
90; CHECK: drotr ${{[0-9]+}}, ${{[0-9]+}}, 10
91 %shr = lshr i64 %a0, 10
92 %shl = shl i64 %a0, 54
93 %or = or i64 %shr, %shl
94 ret i64 %or
95}
96
97define i64 @f12(i64 %a0) nounwind readnone {
98entry:
Akira Hatanaka2a232d82011-12-19 19:44:09 +000099; CHECK: drotr ${{[0-9]+}}, ${{[0-9]+}}, 54
Akira Hatanaka7ba8a8d2011-09-30 18:51:46 +0000100 %shl = shl i64 %a0, 10
101 %shr = lshr i64 %a0, 54
102 %or = or i64 %shl, %shr
103 ret i64 %or
104}
105
106