blob: 186202141dcbd0eb1d68900f8013d035e44890c7 [file] [log] [blame]
Akira Hatanaka5832fc62013-06-26 18:48:17 +00001; RUN: llc -march=mipsel < %s | FileCheck %s -check-prefix=CHECK
Daniel Sanderse70897f2014-02-20 13:13:33 +00002; RUN: llc -march=mips64el < %s | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK64
Akira Hatanaka5832fc62013-06-26 18:48:17 +00003
Stephen Lind24ab202013-07-14 06:24:09 +00004; CHECK-LABEL: mul5_32:
Akira Hatanaka5832fc62013-06-26 18:48:17 +00005; CHECK: sll $[[R0:[0-9]+]], $4, 2
6; CHECK: addu ${{[0-9]+}}, $[[R0]], $4
7
8define i32 @mul5_32(i32 %a) {
9entry:
10 %mul = mul nsw i32 %a, 5
11 ret i32 %mul
12}
13
Stephen Lind24ab202013-07-14 06:24:09 +000014; CHECK-LABEL: mul27_32:
Akira Hatanaka5832fc62013-06-26 18:48:17 +000015; CHECK-DAG: sll $[[R0:[0-9]+]], $4, 2
16; CHECK-DAG: addu $[[R1:[0-9]+]], $[[R0]], $4
17; CHECK-DAG: sll $[[R2:[0-9]+]], $4, 5
18; CHECK: subu ${{[0-9]+}}, $[[R2]], $[[R1]]
19
20define i32 @mul27_32(i32 %a) {
21entry:
22 %mul = mul nsw i32 %a, 27
23 ret i32 %mul
24}
25
Stephen Lind24ab202013-07-14 06:24:09 +000026; CHECK-LABEL: muln2147483643_32:
Akira Hatanaka5832fc62013-06-26 18:48:17 +000027; CHECK-DAG: sll $[[R0:[0-9]+]], $4, 2
28; CHECK-DAG: addu $[[R1:[0-9]+]], $[[R0]], $4
29; CHECK-DAG: sll $[[R2:[0-9]+]], $4, 31
30; CHECK: addu ${{[0-9]+}}, $[[R2]], $[[R1]]
31
32define i32 @muln2147483643_32(i32 %a) {
33entry:
34 %mul = mul nsw i32 %a, -2147483643
35 ret i32 %mul
36}
37
Stephen Lind24ab202013-07-14 06:24:09 +000038; CHECK64-LABEL: muln9223372036854775805_64:
Akira Hatanaka8b5b1e02013-07-01 20:18:58 +000039; CHECK64-DAG: dsll $[[R0:[0-9]+]], $4, 1
40; CHECK64-DAG: daddu $[[R1:[0-9]+]], $[[R0]], $4
41; CHECK64-DAG: dsll $[[R2:[0-9]+]], $4, 63
42; CHECK64: daddu ${{[0-9]+}}, $[[R2]], $[[R1]]
Akira Hatanaka5832fc62013-06-26 18:48:17 +000043
44define i64 @muln9223372036854775805_64(i64 %a) {
45entry:
46 %mul = mul nsw i64 %a, -9223372036854775805
47 ret i64 %mul
48}