blob: 6776e631f1da3da916954f78c7412b806fa75b1c [file] [log] [blame]
Saleem Abdulrasool72587352014-04-03 16:01:44 +00001; RUN: llc -mtriple=arm-eabi -mattr=+v6t2 %s -o - | FileCheck %s
2; RUN: llc -mtriple=arm-eabi -mattr=+v6t2 -arm-use-mulops=false %s -o - \
3; RUN: | FileCheck %s -check-prefix=NO_MULOPS
Evan Chenge63b0e62009-07-06 22:05:45 +00004
5define i32 @f1(i32 %a, i32 %b, i32 %c) {
6 %tmp1 = mul i32 %a, %b
7 %tmp2 = sub i32 %c, %tmp1
8 ret i32 %tmp2
9}
10
11; sub doesn't commute, so no mls for this one
12define i32 @f2(i32 %a, i32 %b, i32 %c) {
13 %tmp1 = mul i32 %a, %b
14 %tmp2 = sub i32 %tmp1, %c
15 ret i32 %tmp2
16}
Edward O'Callaghan15dd4622009-11-22 11:45:44 +000017
Stephen Lind24ab202013-07-14 06:24:09 +000018; CHECK-LABEL: f1:
Edward O'Callaghan15dd4622009-11-22 11:45:44 +000019; CHECK: mls r0, r0, r1, r2
Stephen Lind24ab202013-07-14 06:24:09 +000020; NO_MULOPS-LABEL: f1:
Bob Wilsone8a549c2012-09-29 21:43:49 +000021; NO_MULOPS: mul r0, r0, r1
22; NO_MULOPS-NEXT: sub r0, r2, r0
23
Stephen Lind24ab202013-07-14 06:24:09 +000024; CHECK-LABEL: f2:
Bob Wilsone8a549c2012-09-29 21:43:49 +000025; CHECK: mul r0, r0, r1
26; CHECK-NEXT: sub r0, r0, r2
Stephen Lind24ab202013-07-14 06:24:09 +000027; NO_MULOPS-LABEL: f2:
Bob Wilsone8a549c2012-09-29 21:43:49 +000028; NO_MULOPS: mul r0, r0, r1
29; NO_MULOPS-NEXT: sub r0, r0, r2