Fix r194019 as requested by Eric Christopher.
[oota-llvm.git] / test / CodeGen / Mips / madd-msub.ll
1 ; RUN: llc -march=mips < %s | FileCheck %s -check-prefix=32
2 ; RUN: llc -march=mips -mattr=dsp < %s | FileCheck %s -check-prefix=DSP
3 ; RUN: llc -march=mips -mcpu=mips16 < %s
4
5 ; 32: madd ${{[0-9]+}}
6 ; DSP: madd $ac
7 define i64 @madd1(i32 %a, i32 %b, i32 %c) nounwind readnone {
8 entry:
9   %conv = sext i32 %a to i64
10   %conv2 = sext i32 %b to i64
11   %mul = mul nsw i64 %conv2, %conv
12   %conv4 = sext i32 %c to i64
13   %add = add nsw i64 %mul, %conv4
14   ret i64 %add
15 }
16
17 ; 32: maddu ${{[0-9]+}}
18 ; DSP: maddu $ac
19 define i64 @madd2(i32 %a, i32 %b, i32 %c) nounwind readnone {
20 entry:
21   %conv = zext i32 %a to i64
22   %conv2 = zext i32 %b to i64
23   %mul = mul nsw i64 %conv2, %conv
24   %conv4 = zext i32 %c to i64
25   %add = add nsw i64 %mul, %conv4
26   ret i64 %add
27 }
28
29 ; 32: madd ${{[0-9]+}}
30 ; DSP: madd $ac
31 define i64 @madd3(i32 %a, i32 %b, i64 %c) nounwind readnone {
32 entry:
33   %conv = sext i32 %a to i64
34   %conv2 = sext i32 %b to i64
35   %mul = mul nsw i64 %conv2, %conv
36   %add = add nsw i64 %mul, %c
37   ret i64 %add
38 }
39
40 ; 32: msub ${{[0-9]+}}
41 ; DSP: msub $ac
42 define i64 @msub1(i32 %a, i32 %b, i32 %c) nounwind readnone {
43 entry:
44   %conv = sext i32 %c to i64
45   %conv2 = sext i32 %a to i64
46   %conv4 = sext i32 %b to i64
47   %mul = mul nsw i64 %conv4, %conv2
48   %sub = sub nsw i64 %conv, %mul
49   ret i64 %sub
50 }
51
52 ; 32: msubu ${{[0-9]+}}
53 ; DSP: msubu $ac
54 define i64 @msub2(i32 %a, i32 %b, i32 %c) nounwind readnone {
55 entry:
56   %conv = zext i32 %c to i64
57   %conv2 = zext i32 %a to i64
58   %conv4 = zext i32 %b to i64
59   %mul = mul nsw i64 %conv4, %conv2
60   %sub = sub nsw i64 %conv, %mul
61   ret i64 %sub
62 }
63
64 ; 32: msub ${{[0-9]+}}
65 ; DSP: msub $ac
66 define i64 @msub3(i32 %a, i32 %b, i64 %c) nounwind readnone {
67 entry:
68   %conv = sext i32 %a to i64
69   %conv3 = sext i32 %b to i64
70   %mul = mul nsw i64 %conv3, %conv
71   %sub = sub nsw i64 %c, %mul
72   ret i64 %sub
73 }