brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · 1e27a44 Raw
112 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2;3; Check that we no longer generate 4 inserts.4; CHECK: combine(r{{[0-9]+}}.l,r{{[0-9]+}}.l)5; CHECK: combine(r{{[0-9]+}}.l,r{{[0-9]+}}.l)6; CHECK-NOT: insert7 8target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-v64:64:64-v32:32:32-a0:0-n16:32"9target triple = "hexagon"10 11%struct.a = type { i16 }12 13define i32 @fun(ptr nocapture %pData, i64 %c, ptr nocapture %d, ptr nocapture %e, ptr nocapture %f) #0 {14entry:15  %0 = load i16, ptr %pData, align 2, !tbaa !016  %conv185 = sext i16 %0 to i3217  %shr86 = ashr i32 %conv185, 218  %cmp87 = icmp sgt i32 %shr86, 019  br i1 %cmp87, label %for.body.lr.ph, label %for.end20 21for.body.lr.ph:                                   ; preds = %entry22  %h.sroa.0.0.extract.trunc = trunc i64 %c to i3223  %sext = shl i32 %h.sroa.0.0.extract.trunc, 1624  %conv8 = ashr exact i32 %sext, 1625  %l.sroa.2.4.extract.shift = lshr i64 %c, 3226  %sext76 = ashr i32 %h.sroa.0.0.extract.trunc, 1627  %m.sroa.2.6.extract.shift = lshr i64 %c, 4828  %sext7980 = shl nuw nsw i64 %l.sroa.2.4.extract.shift, 1629  %sext79 = trunc i64 %sext7980 to i3230  %conv38 = ashr exact i32 %sext79, 1631  %sext8283 = shl nuw nsw i64 %m.sroa.2.6.extract.shift, 1632  %sext82 = trunc i64 %sext8283 to i3233  %conv53 = ashr exact i32 %sext82, 1634  br label %for.body35 36for.body:                                         ; preds = %for.body.lr.ph, %for.body37  %arrayidx.phi = phi ptr [ %d, %for.body.lr.ph ], [ %arrayidx.inc, %for.body ]38  %arrayidx30.phi = phi ptr [ %f, %for.body.lr.ph ], [ %arrayidx30.inc, %for.body ]39  %arrayidx60.phi = phi ptr [ %e, %for.body.lr.ph ], [ %arrayidx60.inc, %for.body ]40  %j.088.pmt = phi i32 [ 0, %for.body.lr.ph ], [ %inc.pmt, %for.body ]41  %1 = load i64, ptr %arrayidx.phi, align 8, !tbaa !142  %n_union3.sroa.0.0.extract.trunc = trunc i64 %1 to i3243  %n_union3.sroa.1.4.extract.shift = lshr i64 %1, 3244  %2 = tail call i64 @llvm.hexagon.M2.dpmpyss.s0(i32 %n_union3.sroa.0.0.extract.trunc, i32 %conv8)45  %3 = tail call i64 @llvm.hexagon.S2.asl.r.p(i64 %2, i32 -25)46  %conv9 = trunc i64 %3 to i3247  %4 = tail call i32 @llvm.hexagon.A2.sath(i32 %conv9)48  %n_union13.sroa.1.4.extract.trunc = trunc i64 %n_union3.sroa.1.4.extract.shift to i3249  %5 = tail call i64 @llvm.hexagon.M2.dpmpyss.s0(i32 %n_union13.sroa.1.4.extract.trunc, i32 %sext76)50  %6 = tail call i64 @llvm.hexagon.S2.asl.r.p(i64 %5, i32 -25)51  %conv24 = trunc i64 %6 to i3252  %7 = tail call i32 @llvm.hexagon.A2.sath(i32 %conv24)53  %8 = load i64, ptr %arrayidx30.phi, align 8, !tbaa !154  %n_union28.sroa.0.0.extract.trunc = trunc i64 %8 to i3255  %n_union28.sroa.1.4.extract.shift = lshr i64 %8, 3256  %9 = tail call i64 @llvm.hexagon.M2.dpmpyss.s0(i32 %n_union28.sroa.0.0.extract.trunc, i32 %conv38)57  %10 = tail call i64 @llvm.hexagon.S2.asl.r.p(i64 %9, i32 -25)58  %conv39 = trunc i64 %10 to i3259  %11 = tail call i32 @llvm.hexagon.A2.sath(i32 %conv39)60  %n_union43.sroa.1.4.extract.trunc = trunc i64 %n_union28.sroa.1.4.extract.shift to i3261  %12 = tail call i64 @llvm.hexagon.M2.dpmpyss.s0(i32 %n_union43.sroa.1.4.extract.trunc, i32 %conv53)62  %13 = tail call i64 @llvm.hexagon.S2.asl.r.p(i64 %12, i32 -25)63  %conv54 = trunc i64 %13 to i3264  %14 = tail call i32 @llvm.hexagon.A2.sath(i32 %conv54)65  %n_union.sroa.3.6.insert.ext = zext i32 %14 to i6466  %n_union.sroa.3.6.insert.shift = shl i64 %n_union.sroa.3.6.insert.ext, 4867  %conv40.mask = and i32 %11, 6553568  %n_union.sroa.2.4.insert.ext = zext i32 %conv40.mask to i6469  %n_union.sroa.2.4.insert.shift = shl nuw nsw i64 %n_union.sroa.2.4.insert.ext, 3270  %conv25.mask = and i32 %7, 6553571  %n_union.sroa.1.2.insert.ext = zext i32 %conv25.mask to i6472  %n_union.sroa.1.2.insert.shift = shl nuw nsw i64 %n_union.sroa.1.2.insert.ext, 1673  %conv10.mask = and i32 %4, 6553574  %n_union.sroa.0.0.insert.ext = zext i32 %conv10.mask to i6475  %n_union.sroa.2.4.insert.insert = or i64 %n_union.sroa.1.2.insert.shift, %n_union.sroa.0.0.insert.ext76  %n_union.sroa.1.2.insert.insert = or i64 %n_union.sroa.2.4.insert.insert, %n_union.sroa.2.4.insert.shift77  %n_union.sroa.0.0.insert.insert = or i64 %n_union.sroa.1.2.insert.insert, %n_union.sroa.3.6.insert.shift78  %15 = load i64, ptr %arrayidx60.phi, align 8, !tbaa !179  %16 = tail call i64 @llvm.hexagon.A2.vaddhs(i64 %15, i64 %n_union.sroa.0.0.insert.insert)80  store i64 %16, ptr %arrayidx60.phi, align 8, !tbaa !181  %inc.pmt = add i32 %j.088.pmt, 182  %17 = load i16, ptr %pData, align 2, !tbaa !083  %conv1 = sext i16 %17 to i3284  %shr = ashr i32 %conv1, 285  %cmp = icmp slt i32 %inc.pmt, %shr86  %arrayidx.inc = getelementptr i64, ptr %arrayidx.phi, i32 187  %arrayidx30.inc = getelementptr i64, ptr %arrayidx30.phi, i32 188  %arrayidx60.inc = getelementptr i64, ptr %arrayidx60.phi, i32 189  br i1 %cmp, label %for.body, label %for.end.loopexit90 91for.end.loopexit:                                 ; preds = %for.body92  br label %for.end93 94for.end:                                          ; preds = %for.end.loopexit, %entry95  ret i32 096}97 98declare i32 @llvm.hexagon.A2.sath(i32) #199 100declare i64 @llvm.hexagon.S2.asl.r.p(i64, i32) #1101 102declare i64 @llvm.hexagon.M2.dpmpyss.s0(i32, i32) #1103 104declare i64 @llvm.hexagon.A2.vaddhs(i64, i64) #1105 106attributes #0 = { nounwind "fp-contract-model"="standard" "frame-pointer"="non-leaf" "realign-stack" "relocation-model"="static" "ssp-buffers-size"="8" }107attributes #1 = { nounwind readnone }108 109!0 = !{!"short", !1}110!1 = !{!"omnipotent char", !2}111!2 = !{!"Simple C/C++ TBAA"}112