brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · f361d2b Raw
98 lines · plain
1; RUN: opt -passes=loop-unroll-and-jam -allow-unroll-and-jam -verify-loop-info < %s -S | FileCheck %s2; RUN: opt -passes='loop(loop-unroll-and-jam),verify<loops>' -allow-unroll-and-jam < %s -S | FileCheck %s3 4; Check that the newly created loops to not fail to be added to LI5; This test deliberately disables UnJ on the middle loop, performing it instead on the6; outer of 3 nested loops. The (new) inner loops need to be added to LI.7 8target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"9 10define i32 @test() {11; CHECK-LABEL: test12; CHECK:       for.cond17.preheader:13; CHECK:    br label %for.cond20.preheader14; CHECK:       for.cond20.preheader:15; CHECK:    br label %for.cond23.preheader16; CHECK:       for.cond23.preheader:17; CHECK:    br label %for.body2518; CHECK:       for.body25:19; CHECK:    br i1 [[CMP24:%.*]], label %for.body25, label %for.inc4520; CHECK:       for.inc45:21; CHECK:    br label %for.body25.122; CHECK:       for.inc48:23; CHECK:    br i1 [[CMP18_3:%.*]], label %for.cond20.preheader, label %for.end5024; CHECK:       for.end50:25; CHECK:    ret i32 026; CHECK:       for.body25.1:27; CHECK:    br i1 [[CMP24_1:%.*]], label %for.body25.1, label %for.inc45.128; CHECK:       for.inc45.1:29; CHECK:    br label %for.body25.230; CHECK:       for.body25.2:31; CHECK:    br i1 [[CMP24_2:%.*]], label %for.body25.2, label %for.inc45.232; CHECK:       for.inc45.2:33; CHECK:    br label %for.body25.334; CHECK:       for.body25.3:35; CHECK:    br i1 [[CMP24_3:%.*]], label %for.body25.3, label %for.inc45.336; CHECK:       for.inc45.3:37; CHECK:    br i1 [[CMP21_3:%.*]], label %for.cond23.preheader, label %for.inc4838;39entry:40  %A = alloca [8 x [8 x i32]], align 1641  %B = alloca [8 x [8 x i32]], align 1642  %C = alloca [8 x [8 x i32]], align 1643  br label %for.cond17.preheader44 45for.cond17.preheader:                             ; preds = %for.inc1446  br label %for.cond20.preheader47 48for.cond20.preheader:                             ; preds = %for.cond17.preheader, %for.inc4849  %i.13 = phi i32 [ 0, %for.cond17.preheader ], [ %inc49, %for.inc48 ]50  br label %for.cond23.preheader51 52for.cond23.preheader:                             ; preds = %for.cond20.preheader, %for.inc4553  %j.12 = phi i32 [ 0, %for.cond20.preheader ], [ %inc46, %for.inc45 ]54  br label %for.body2555 56for.body25:                                       ; preds = %for.cond23.preheader, %for.body2557  %k.01 = phi i32 [ 0, %for.cond23.preheader ], [ %inc43, %for.body25 ]58  %idxprom26 = zext i32 %i.13 to i6459  %idxprom28 = zext i32 %j.12 to i6460  %arrayidx29 = getelementptr inbounds [8 x [8 x i32]], ptr %C, i64 0, i64 %idxprom26, i64 %idxprom2861  %0 = load i32, ptr %arrayidx29, align 462  %idxprom30 = zext i32 %i.13 to i6463  %idxprom32 = zext i32 %k.01 to i6464  %arrayidx33 = getelementptr inbounds [8 x [8 x i32]], ptr %A, i64 0, i64 %idxprom30, i64 %idxprom3265  %1 = load i32, ptr %arrayidx33, align 466  %idxprom34 = zext i32 %k.01 to i6467  %idxprom36 = zext i32 %j.12 to i6468  %arrayidx37 = getelementptr inbounds [8 x [8 x i32]], ptr %B, i64 0, i64 %idxprom34, i64 %idxprom3669  %2 = load i32, ptr %arrayidx37, align 470  %mul = mul nsw i32 %1, %271  %add = add nsw i32 %0, %mul72  %idxprom38 = zext i32 %i.13 to i6473  %idxprom40 = zext i32 %j.12 to i6474  %arrayidx41 = getelementptr inbounds [8 x [8 x i32]], ptr %C, i64 0, i64 %idxprom38, i64 %idxprom4075  store i32 %add, ptr %arrayidx41, align 476  %inc43 = add nuw nsw i32 %k.01, 177  %cmp24 = icmp ult i32 %k.01, 778  br i1 %cmp24, label %for.body25, label %for.inc4579 80for.inc45:                                        ; preds = %for.body2581  %inc46 = add nuw nsw i32 %j.12, 182  %cmp21 = icmp ult i32 %j.12, 783  br i1 %cmp21, label %for.cond23.preheader, label %for.inc48, !llvm.loop !784 85for.inc48:                                        ; preds = %for.inc4586  %inc49 = add nuw nsw i32 %i.13, 187  %cmp18 = icmp ult i32 %i.13, 788  br i1 %cmp18, label %for.cond20.preheader, label %for.end50, !llvm.loop !589 90for.end50:                                        ; preds = %for.inc4891  ret i32 092}93 94!5 = distinct !{!5, !6}95!6 = !{!"llvm.loop.unroll_and_jam.count", i32 4}96!7 = distinct !{!7, !8}97!8 = !{!"llvm.loop.unroll_and_jam.disable"}98