112 lines · plain
1; RUN: llc < %s -mtriple=bpfel -mcpu=v1 | FileCheck %s2 3define zeroext i16 @add(ptr 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.body7 8for.body: ; preds = %for.body, %entry9 %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]11 %arrayidx = getelementptr i16, ptr %a, i16 %i.010 ; <ptr> [#uses=1]12; CHECK-LABEL: add:13; CHECK: r{{[0-9]+}} += r{{[0-9]+}}14 %tmp4 = load i16, ptr %arrayidx ; <i16> [#uses=1]15 %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.body19 20for.end: ; preds = %for.body, %entry21 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]22 ret i16 %sum.0.lcssa23}24 25define zeroext i16 @sub(ptr 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.body29 30for.body: ; preds = %for.body, %entry31 %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]33 %arrayidx = getelementptr i16, ptr %a, i16 %i.010 ; <ptr> [#uses=1]34; CHECK-LABEL: sub:35; CHECK: r{{[0-9]+}} -= r{{[0-9]+}}36 %tmp4 = load i16, ptr %arrayidx ; <i16> [#uses=1]37 %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.body41 42for.end: ; preds = %for.body, %entry43 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]44 ret i16 %sum.0.lcssa45}46 47define zeroext i16 @or(ptr 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.body51 52for.body: ; preds = %for.body, %entry53 %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]55 %arrayidx = getelementptr i16, ptr %a, i16 %i.010 ; <ptr> [#uses=1]56; CHECK-LABEL: or:57; CHECK: r{{[0-9]+}} |= r{{[0-9]+}}58 %tmp4 = load i16, ptr %arrayidx ; <i16> [#uses=1]59 %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.body63 64for.end: ; preds = %for.body, %entry65 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]66 ret i16 %sum.0.lcssa67}68 69define zeroext i16 @xor(ptr 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.body73 74for.body: ; preds = %for.body, %entry75 %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]77 %arrayidx = getelementptr i16, ptr %a, i16 %i.010 ; <ptr> [#uses=1]78; CHECK-LABEL: xor:79; CHECK: r{{[0-9]+}} ^= r{{[0-9]+}}80 %tmp4 = load i16, ptr %arrayidx ; <i16> [#uses=1]81 %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.body85 86for.end: ; preds = %for.body, %entry87 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]88 ret i16 %sum.0.lcssa89}90 91define zeroext i16 @and(ptr 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.body95 96for.body: ; preds = %for.body, %entry97 %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]99 %arrayidx = getelementptr i16, ptr %a, i16 %i.010 ; <ptr> [#uses=1]100; CHECK-LABEL: and:101; CHECK: r{{[0-9]+}} &= r{{[0-9]+}}102 %tmp4 = load i16, ptr %arrayidx ; <i16> [#uses=1]103 %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.body107 108for.end: ; preds = %for.body, %entry109 %sum.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ] ; <i16> [#uses=1]110 ret i16 %sum.0.lcssa111}112