brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · a680513 Raw
127 lines · plain
1; RUN: llc -mtriple=hexagon -mv67t -debug-only=pipeliner < %s 2>&1 | FileCheck %s2; REQUIRES: asserts3 4; Test that the artificial dependencies have been created.5 6; CHECK: Ord  Latency=0 Artificial7 8define void @bkfir(ptr nocapture readonly %in, ptr nocapture readonly %coefs, i32 %tap, i32 %length, ptr nocapture %out) local_unnamed_addr #0 {9entry:10  %cmp141 = icmp sgt i32 %length, 011  br i1 %cmp141, label %for.body.lr.ph, label %for.end5212 13for.body.lr.ph:14  %cmp8127 = icmp sgt i32 %tap, 015  br i1 %cmp8127, label %for.body.us.preheader, label %for.body.lr.ph.split16 17for.body.us.preheader:18  br label %for.body.us19 20for.body.us:21  %add.ptr.us.phi = phi ptr [ %add.ptr.us.inc, %for.cond7.for.end_crit_edge.us ], [ %in, %for.body.us.preheader ]22  %i.0143.us = phi i32 [ %add51.us, %for.cond7.for.end_crit_edge.us ], [ 0, %for.body.us.preheader ]23  %optr.0142.us = phi ptr [ %incdec.ptr49.us, %for.cond7.for.end_crit_edge.us ], [ %out, %for.body.us.preheader ]24  %incdec.ptr.us = getelementptr inbounds i32, ptr %add.ptr.us.phi, i32 225  %0 = load i64, ptr %add.ptr.us.phi, align 826  %incdec.ptr1.us = getelementptr inbounds i32, ptr %add.ptr.us.phi, i32 427  %1 = load i64, ptr %incdec.ptr.us, align 828  %_Q6V64_internal_union.sroa.0.0.extract.trunc.us = trunc i64 %1 to i3229  %_Q6V64_internal_union2.sroa.3.0.extract.shift.us = lshr i64 %0, 3230  %_Q6V64_internal_union2.sroa.3.0.extract.trunc.us = trunc i64 %_Q6V64_internal_union2.sroa.3.0.extract.shift.us to i3231  %2 = tail call i64 @llvm.hexagon.A2.combinew(i32 %_Q6V64_internal_union.sroa.0.0.extract.trunc.us, i32 %_Q6V64_internal_union2.sroa.3.0.extract.trunc.us)32  %add.ptr.us.inc = getelementptr i32, ptr %add.ptr.us.phi, i32 433  br label %for.body9.us34 35for.body9.us:36  %j.0137.us = phi i32 [ 0, %for.body.us ], [ %add.us, %for.body9.us ]37  %x0x1.0136.us = phi i64 [ %0, %for.body.us ], [ %5, %for.body9.us ]38  %x2x3.0135.us = phi i64 [ %1, %for.body.us ], [ %6, %for.body9.us ]39  %x1x2.0134.us = phi i64 [ %2, %for.body.us ], [ %8, %for.body9.us ]40  %iptrD.0133.us = phi ptr [ %incdec.ptr1.us, %for.body.us ], [ %incdec.ptr13.us, %for.body9.us ]41  %iptrC.0132.us = phi ptr [ %coefs, %for.body.us ], [ %incdec.ptr11.us, %for.body9.us ]42  %sum0.0131.us = phi i64 [ 0, %for.body.us ], [ %13, %for.body9.us ]43  %sum1.0130.us = phi i64 [ 0, %for.body.us ], [ %14, %for.body9.us ]44  %sum2.0129.us = phi i64 [ 0, %for.body.us ], [ %15, %for.body9.us ]45  %sum3.0128.us = phi i64 [ 0, %for.body.us ], [ %16, %for.body9.us ]46  %incdec.ptr10.us = getelementptr inbounds i64, ptr %iptrC.0132.us, i32 147  %3 = load i64, ptr %iptrC.0132.us, align 848  %incdec.ptr11.us = getelementptr inbounds i64, ptr %iptrC.0132.us, i32 249  %4 = load i64, ptr %incdec.ptr10.us, align 850  %incdec.ptr12.us = getelementptr inbounds i64, ptr %iptrD.0133.us, i32 151  %5 = load i64, ptr %iptrD.0133.us, align 852  %incdec.ptr13.us = getelementptr inbounds i64, ptr %iptrD.0133.us, i32 253  %6 = load i64, ptr %incdec.ptr12.us, align 854  %_Q6V64_internal_union14.sroa.0.0.extract.trunc.us = trunc i64 %5 to i3255  %_Q6V64_internal_union14.sroa.4.0.extract.shift.us = lshr i64 %5, 3256  %_Q6V64_internal_union19.sroa.3.0.extract.shift.us = lshr i64 %x2x3.0135.us, 3257  %_Q6V64_internal_union19.sroa.3.0.extract.trunc.us = trunc i64 %_Q6V64_internal_union19.sroa.3.0.extract.shift.us to i3258  %7 = tail call i64 @llvm.hexagon.A2.combinew(i32 %_Q6V64_internal_union14.sroa.0.0.extract.trunc.us, i32 %_Q6V64_internal_union19.sroa.3.0.extract.trunc.us)59  %_Q6V64_internal_union24.sroa.0.0.extract.trunc.us = trunc i64 %6 to i3260  %_Q6V64_internal_union29.sroa.3.0.extract.trunc.us = trunc i64 %_Q6V64_internal_union14.sroa.4.0.extract.shift.us to i3261  %8 = tail call i64 @llvm.hexagon.A2.combinew(i32 %_Q6V64_internal_union24.sroa.0.0.extract.trunc.us, i32 %_Q6V64_internal_union29.sroa.3.0.extract.trunc.us)62  %9 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %sum0.0131.us, i64 %x0x1.0136.us, i64 %3)63  %10 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %sum1.0130.us, i64 %x1x2.0134.us, i64 %3)64  %11 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %sum2.0129.us, i64 %x2x3.0135.us, i64 %3)65  %12 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %sum3.0128.us, i64 %7, i64 %3)66  %13 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %9, i64 %x2x3.0135.us, i64 %4)67  %14 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %10, i64 %7, i64 %4)68  %15 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %11, i64 %5, i64 %4)69  %16 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %12, i64 %8, i64 %4)70  %add.us = add nuw nsw i32 %j.0137.us, 471  %cmp8.us = icmp slt i32 %add.us, %tap72  br i1 %cmp8.us, label %for.body9.us, label %for.cond7.for.end_crit_edge.us73 74for.cond7.for.end_crit_edge.us:75  %17 = ashr i64 %13, 3976  %18 = ashr i64 %14, 3977  %19 = ashr i64 %15, 3978  %20 = ashr i64 %16, 3979  %21 = tail call i32 @llvm.hexagon.A2.sat(i64 %17)80  %22 = tail call i32 @llvm.hexagon.A2.sat(i64 %18)81  %23 = tail call i32 @llvm.hexagon.A2.sat(i64 %19)82  %24 = tail call i32 @llvm.hexagon.A2.sat(i64 %20)83  %_Q6V64_internal_union34.sroa.4.0.insert.ext.us = zext i32 %22 to i6484  %_Q6V64_internal_union34.sroa.4.0.insert.shift.us = shl nuw i64 %_Q6V64_internal_union34.sroa.4.0.insert.ext.us, 3285  %_Q6V64_internal_union34.sroa.0.0.insert.ext.us = zext i32 %21 to i6486  %_Q6V64_internal_union34.sroa.0.0.insert.insert.us = or i64 %_Q6V64_internal_union34.sroa.4.0.insert.shift.us, %_Q6V64_internal_union34.sroa.0.0.insert.ext.us87  %incdec.ptr41.us = getelementptr inbounds i64, ptr %optr.0142.us, i32 188  store i64 %_Q6V64_internal_union34.sroa.0.0.insert.insert.us, ptr %optr.0142.us, align 889  %_Q6V64_internal_union42.sroa.4.0.insert.ext.us = zext i32 %24 to i6490  %_Q6V64_internal_union42.sroa.4.0.insert.shift.us = shl nuw i64 %_Q6V64_internal_union42.sroa.4.0.insert.ext.us, 3291  %_Q6V64_internal_union42.sroa.0.0.insert.ext.us = zext i32 %23 to i6492  %_Q6V64_internal_union42.sroa.0.0.insert.insert.us = or i64 %_Q6V64_internal_union42.sroa.4.0.insert.shift.us, %_Q6V64_internal_union42.sroa.0.0.insert.ext.us93  %incdec.ptr49.us = getelementptr inbounds i64, ptr %optr.0142.us, i32 294  store i64 %_Q6V64_internal_union42.sroa.0.0.insert.insert.us, ptr %incdec.ptr41.us, align 895  %add51.us = add nuw nsw i32 %i.0143.us, 496  %cmp.us = icmp slt i32 %add51.us, %length97  br i1 %cmp.us, label %for.body.us, label %for.end5298 99for.body.lr.ph.split:100  %25 = tail call i32 @llvm.hexagon.A2.sat(i64 0)101  %_Q6V64_internal_union34.sroa.4.0.insert.ext = zext i32 %25 to i64102  %_Q6V64_internal_union34.sroa.4.0.insert.shift = shl nuw i64 %_Q6V64_internal_union34.sroa.4.0.insert.ext, 32103  %_Q6V64_internal_union34.sroa.0.0.insert.insert = or i64 %_Q6V64_internal_union34.sroa.4.0.insert.shift, %_Q6V64_internal_union34.sroa.4.0.insert.ext104  br label %for.body105 106for.body:107  %i.0143 = phi i32 [ 0, %for.body.lr.ph.split ], [ %add51, %for.body ]108  %optr.0142 = phi ptr [ %out, %for.body.lr.ph.split ], [ %incdec.ptr49, %for.body ]109  %incdec.ptr41 = getelementptr inbounds i64, ptr %optr.0142, i32 1110  store i64 %_Q6V64_internal_union34.sroa.0.0.insert.insert, ptr %optr.0142, align 8111  %incdec.ptr49 = getelementptr inbounds i64, ptr %optr.0142, i32 2112  store i64 %_Q6V64_internal_union34.sroa.0.0.insert.insert, ptr %incdec.ptr41, align 8113  %add51 = add nuw nsw i32 %i.0143, 4114  %cmp = icmp slt i32 %add51, %length115  br i1 %cmp, label %for.body, label %for.end52116 117for.end52:118  ret void119}120 121declare i64 @llvm.hexagon.A2.combinew(i32, i32) #1122declare i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64, i64, i64) #1123declare i32 @llvm.hexagon.A2.sat(i64) #1124 125attributes #0 = { nounwind "target-cpu"="hexagonv67t" "target-features"="+audio" }126attributes #1 = { nounwind readnone }127