blob: 00be54b3bac57d9e793bea3eec2481e87a7c4be4 [file] [log] [blame]
Alexei Starovoitov8cf9a4c2015-06-05 16:11:14 +00001; RUN: llc < %s -march=bpfel | FileCheck %s
Alexei Starovoitove4c8c802015-01-24 17:51:26 +00002
3define zeroext i16 @add(i16* nocapture %a, i16 zeroext %n) nounwind readonly {
4entry:
5 %cmp8 = icmp eq i16 %n, 0 ; <i1> [#uses=1]
6 br i1 %cmp8, label %for.end, label %for.body
7
8for.body: ; preds = %for.body, %entry
9 %i.010 = phi i16 [ 0, %entry ], [ %inc, %for.body ] ; <i16> [#uses=2]
10 %sum.09 = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
David Blaikie79e6c742015-02-27 19:29:02 +000011 %arrayidx = getelementptr i16, i16* %a, i16 %i.010 ; <i16*> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000012; CHECK-LABEL: add:
13; CHECK: add r{{[0-9]+}}, r{{[0-9]+}}
David Blaikiea79ac142015-02-27 21:17:42 +000014 %tmp4 = load i16, i16* %arrayidx ; <i16> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000015 %add = add i16 %tmp4, %sum.09 ; <i16> [#uses=2]
16 %inc = add i16 %i.010, 1 ; <i16> [#uses=2]
17 %exitcond = icmp eq i16 %inc, %n ; <i1> [#uses=1]
18 br i1 %exitcond, label %for.end, label %for.body
19
20for.end: ; preds = %for.body, %entry
21 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
22 ret i16 %sum.0.lcssa
23}
24
25define zeroext i16 @sub(i16* nocapture %a, i16 zeroext %n) nounwind readonly {
26entry:
27 %cmp8 = icmp eq i16 %n, 0 ; <i1> [#uses=1]
28 br i1 %cmp8, label %for.end, label %for.body
29
30for.body: ; preds = %for.body, %entry
31 %i.010 = phi i16 [ 0, %entry ], [ %inc, %for.body ] ; <i16> [#uses=2]
32 %sum.09 = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
David Blaikie79e6c742015-02-27 19:29:02 +000033 %arrayidx = getelementptr i16, i16* %a, i16 %i.010 ; <i16*> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000034; CHECK-LABEL: sub:
35; CHECK: sub r{{[0-9]+}}, r{{[0-9]+}}
David Blaikiea79ac142015-02-27 21:17:42 +000036 %tmp4 = load i16, i16* %arrayidx ; <i16> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000037 %add = sub i16 %tmp4, %sum.09 ; <i16> [#uses=2]
38 %inc = add i16 %i.010, 1 ; <i16> [#uses=2]
39 %exitcond = icmp eq i16 %inc, %n ; <i1> [#uses=1]
40 br i1 %exitcond, label %for.end, label %for.body
41
42for.end: ; preds = %for.body, %entry
43 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
44 ret i16 %sum.0.lcssa
45}
46
47define zeroext i16 @or(i16* nocapture %a, i16 zeroext %n) nounwind readonly {
48entry:
49 %cmp8 = icmp eq i16 %n, 0 ; <i1> [#uses=1]
50 br i1 %cmp8, label %for.end, label %for.body
51
52for.body: ; preds = %for.body, %entry
53 %i.010 = phi i16 [ 0, %entry ], [ %inc, %for.body ] ; <i16> [#uses=2]
54 %sum.09 = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
David Blaikie79e6c742015-02-27 19:29:02 +000055 %arrayidx = getelementptr i16, i16* %a, i16 %i.010 ; <i16*> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000056; CHECK-LABEL: or:
57; CHECK: or r{{[0-9]+}}, r{{[0-9]+}}
David Blaikiea79ac142015-02-27 21:17:42 +000058 %tmp4 = load i16, i16* %arrayidx ; <i16> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000059 %add = or i16 %tmp4, %sum.09 ; <i16> [#uses=2]
60 %inc = add i16 %i.010, 1 ; <i16> [#uses=2]
61 %exitcond = icmp eq i16 %inc, %n ; <i1> [#uses=1]
62 br i1 %exitcond, label %for.end, label %for.body
63
64for.end: ; preds = %for.body, %entry
65 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
66 ret i16 %sum.0.lcssa
67}
68
69define zeroext i16 @xor(i16* nocapture %a, i16 zeroext %n) nounwind readonly {
70entry:
71 %cmp8 = icmp eq i16 %n, 0 ; <i1> [#uses=1]
72 br i1 %cmp8, label %for.end, label %for.body
73
74for.body: ; preds = %for.body, %entry
75 %i.010 = phi i16 [ 0, %entry ], [ %inc, %for.body ] ; <i16> [#uses=2]
76 %sum.09 = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
David Blaikie79e6c742015-02-27 19:29:02 +000077 %arrayidx = getelementptr i16, i16* %a, i16 %i.010 ; <i16*> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000078; CHECK-LABEL: xor:
79; CHECK: xor r{{[0-9]+}}, r{{[0-9]+}}
David Blaikiea79ac142015-02-27 21:17:42 +000080 %tmp4 = load i16, i16* %arrayidx ; <i16> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000081 %add = xor i16 %tmp4, %sum.09 ; <i16> [#uses=2]
82 %inc = add i16 %i.010, 1 ; <i16> [#uses=2]
83 %exitcond = icmp eq i16 %inc, %n ; <i1> [#uses=1]
84 br i1 %exitcond, label %for.end, label %for.body
85
86for.end: ; preds = %for.body, %entry
87 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
88 ret i16 %sum.0.lcssa
89}
90
91define zeroext i16 @and(i16* nocapture %a, i16 zeroext %n) nounwind readonly {
92entry:
93 %cmp8 = icmp eq i16 %n, 0 ; <i1> [#uses=1]
94 br i1 %cmp8, label %for.end, label %for.body
95
96for.body: ; preds = %for.body, %entry
97 %i.010 = phi i16 [ 0, %entry ], [ %inc, %for.body ] ; <i16> [#uses=2]
98 %sum.09 = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
David Blaikie79e6c742015-02-27 19:29:02 +000099 %arrayidx = getelementptr i16, i16* %a, i16 %i.010 ; <i16*> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +0000100; CHECK-LABEL: and:
101; CHECK: and r{{[0-9]+}}, r{{[0-9]+}}
David Blaikiea79ac142015-02-27 21:17:42 +0000102 %tmp4 = load i16, i16* %arrayidx ; <i16> [#uses=1]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +0000103 %add = and i16 %tmp4, %sum.09 ; <i16> [#uses=2]
104 %inc = add i16 %i.010, 1 ; <i16> [#uses=2]
105 %exitcond = icmp eq i16 %inc, %n ; <i1> [#uses=1]
106 br i1 %exitcond, label %for.end, label %for.body
107
108for.end: ; preds = %for.body, %entry
109 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]
110 ret i16 %sum.0.lcssa
111}