brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · c23fde2 Raw
69 lines · plain
1; RUN: llc -mtriple=arc < %s | FileCheck %s2 3; CHECK-LABEL: copy4; CHECK-NOT: add5define void @copy(ptr inreg nocapture %p, ptr inreg nocapture readonly %q) {6entry:7  br label %while.cond8 9while.cond:                                       ; preds = %while.cond, %entry10  %p.addr.0 = phi ptr [ %p, %entry ], [ %incdec.ptr1, %while.cond ]11  %q.addr.0 = phi ptr [ %q, %entry ], [ %incdec.ptr, %while.cond ]12  %incdec.ptr = getelementptr inbounds i8, ptr %q.addr.0, i32 113  %0 = load i8, ptr %q.addr.0, align 114  %incdec.ptr1 = getelementptr inbounds i8, ptr %p.addr.0, i32 115  store i8 %0, ptr %p.addr.0, align 116  %tobool = icmp eq i8 %0, 017  br i1 %tobool, label %while.end, label %while.cond18 19while.end:                                        ; preds = %while.cond20  ret void21}22 23 24%struct._llist = type { ptr, ptr, i32 }25 26; CHECK-LABEL: neg127; CHECK-NOT:   std.ab28define void @neg1(ptr inreg nocapture %a, ptr inreg nocapture readonly %b, i32 inreg %n) {29entry:30  %cmp6 = icmp sgt i32 %n, 031  br i1 %cmp6, label %for.body, label %for.cond.cleanup32 33for.cond.cleanup:34  ret void35 36for.body:37  %i.07 = phi i32 [ %inc, %for.body ], [ 0, %entry ]38  %arrayidx = getelementptr inbounds i8, ptr %b, i32 %i.0739  %0 = load i8, ptr %arrayidx, align 140  %mul = mul nuw nsw i32 %i.07, 25741  %arrayidx1 = getelementptr inbounds i8, ptr %a, i32 %mul42  store i8 %0, ptr %arrayidx1, align 143  %inc = add nuw nsw i32 %i.07, 144  %exitcond = icmp eq i32 %inc, %n45  br i1 %exitcond, label %for.cond.cleanup, label %for.body46}47 48; CHECK-LABEL: neg249; CHECK-NOT:   st.ab50define void @neg2(ptr inreg %a, i32 inreg %n) {51entry:52  %cmp13 = icmp sgt i32 %n, 053  br i1 %cmp13, label %for.body, label %for.cond.cleanup54 55for.cond.cleanup:56  ret void57 58for.body:59  %i.014 = phi i32 [ %inc, %for.body ], [ 0, %entry ]60  %arrayidx = getelementptr inbounds %struct._llist, ptr %a, i32 %i.01461  %next = getelementptr inbounds %struct._llist, ptr %arrayidx, i32 0, i32 062  store ptr %arrayidx, ptr %next, align 463  %prev = getelementptr inbounds %struct._llist, ptr %a, i32 %i.014, i32 164  store ptr %arrayidx, ptr %prev, align 465  %inc = add nuw nsw i32 %i.014, 166  %exitcond = icmp eq i32 %inc, %n67  br i1 %exitcond, label %for.cond.cleanup, label %for.body68}69