blob: 29c55c6bd97522710cf31caa8a4acd545e1d7bfa [file] [log] [blame]
Bob Wilsone8e72be2009-10-09 17:20:46 +00001; RUN: llc < %s -march=arm | FileCheck %s
2; RUN: llc < %s -march=arm -mattr=+vfp2 | FileCheck %s --check-prefix=CHECK-VFP
Chris Lattner0af617f2006-08-22 06:43:24 +00003
Reid Spencere3ff5ad2007-01-26 08:25:06 +00004define i32 @f1(i32 %a.s) {
Bob Wilsone8e72be2009-10-09 17:20:46 +00005;CHECK: f1:
6;CHECK: moveq
Rafael Espindola3c000bf2006-08-21 22:00:32 +00007entry:
Evan Cheng02b985c2007-01-19 09:20:23 +00008 %tmp = icmp eq i32 %a.s, 4
9 %tmp1.s = select i1 %tmp, i32 2, i32 3
10 ret i32 %tmp1.s
Rafael Espindola3c000bf2006-08-21 22:00:32 +000011}
Rafael Espindolaebdabda2006-09-21 13:06:26 +000012
Reid Spencere3ff5ad2007-01-26 08:25:06 +000013define i32 @f2(i32 %a.s) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000014;CHECK: f2:
15;CHECK: movgt
Rafael Espindolaebdabda2006-09-21 13:06:26 +000016entry:
Evan Cheng02b985c2007-01-19 09:20:23 +000017 %tmp = icmp sgt i32 %a.s, 4
18 %tmp1.s = select i1 %tmp, i32 2, i32 3
19 ret i32 %tmp1.s
Rafael Espindolaebdabda2006-09-21 13:06:26 +000020}
21
Reid Spencere3ff5ad2007-01-26 08:25:06 +000022define i32 @f3(i32 %a.s, i32 %b.s) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000023;CHECK: f3:
24;CHECK: movlt
Rafael Espindolaebdabda2006-09-21 13:06:26 +000025entry:
Evan Cheng02b985c2007-01-19 09:20:23 +000026 %tmp = icmp slt i32 %a.s, %b.s
27 %tmp1.s = select i1 %tmp, i32 2, i32 3
28 ret i32 %tmp1.s
Rafael Espindolaebdabda2006-09-21 13:06:26 +000029}
30
Reid Spencere3ff5ad2007-01-26 08:25:06 +000031define i32 @f4(i32 %a.s, i32 %b.s) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000032;CHECK: f4:
33;CHECK: movle
Rafael Espindolaebdabda2006-09-21 13:06:26 +000034entry:
Evan Cheng02b985c2007-01-19 09:20:23 +000035 %tmp = icmp sle i32 %a.s, %b.s
36 %tmp1.s = select i1 %tmp, i32 2, i32 3
37 ret i32 %tmp1.s
Rafael Espindolaebdabda2006-09-21 13:06:26 +000038}
39
Reid Spencere3ff5ad2007-01-26 08:25:06 +000040define i32 @f5(i32 %a.u, i32 %b.u) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000041;CHECK: f5:
42;CHECK: movls
Rafael Espindolaebdabda2006-09-21 13:06:26 +000043entry:
Evan Cheng02b985c2007-01-19 09:20:23 +000044 %tmp = icmp ule i32 %a.u, %b.u
45 %tmp1.s = select i1 %tmp, i32 2, i32 3
46 ret i32 %tmp1.s
Rafael Espindolaebdabda2006-09-21 13:06:26 +000047}
48
Reid Spencere3ff5ad2007-01-26 08:25:06 +000049define i32 @f6(i32 %a.u, i32 %b.u) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000050;CHECK: f6:
51;CHECK: movhi
Rafael Espindolaebdabda2006-09-21 13:06:26 +000052entry:
Evan Cheng02b985c2007-01-19 09:20:23 +000053 %tmp = icmp ugt i32 %a.u, %b.u
54 %tmp1.s = select i1 %tmp, i32 2, i32 3
55 ret i32 %tmp1.s
56}
57
Reid Spencere3ff5ad2007-01-26 08:25:06 +000058define double @f7(double %a, double %b) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000059;CHECK: f7:
60;CHECK: movlt
61;CHECK: movlt
62;CHECK-VFP: f7:
Jim Grosbache5165492009-11-09 00:11:35 +000063;CHECK-VFP: vmovmi
Evan Cheng02b985c2007-01-19 09:20:23 +000064 %tmp = fcmp olt double %a, 1.234e+00
65 %tmp1 = select i1 %tmp, double -1.000e+00, double %b
66 ret double %tmp1
Rafael Espindolaebdabda2006-09-21 13:06:26 +000067}