brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.7 KiB · d6b2414 Raw
177 lines · plain
1; RUN: opt -S -passes=loop-rotate -verify-memoryssa < %s | FileCheck %s2; RUN: opt -S -passes='require<target-ir>,require<assumptions>,loop(loop-rotate)' < %s | FileCheck %s3; RUN: opt -S -passes='require<target-ir>,require<assumptions>,loop(loop-rotate)' -verify-memoryssa  < %s | FileCheck %s4 5target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-linux-gnu"7 8declare void @g(ptr)9 10define void @test_02(ptr nocapture %_pA) nounwind ssp {11; CHECK-LABEL: @test_02(12; CHECK: entry:13; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !2)14; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !215; CHECK: for.body:16; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)17; CHECK:   store i32 0, ptr %array, align 16, !noalias !518; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !7)19; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !720; CHECK: for.end:21 22entry:23  %array = alloca [20 x i32], align 1624  br label %for.cond25 26for.cond:                                         ; preds = %for.body, %entry27  %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]28  tail call void @llvm.experimental.noalias.scope.decl(metadata !2)29  store i32 42, ptr %_pA, align 16, !alias.scope !230  %cmp = icmp slt i32 %i.0, 10031  br i1 %cmp, label %for.body, label %for.end32 33for.body:                                         ; preds = %for.cond34  store i32 0, ptr %array, align 16, !noalias !235  %inc = add nsw i32 %i.0, 136  br label %for.cond37 38for.end:                                          ; preds = %for.cond39  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]40  call void @g(ptr %arrayidx.lcssa) nounwind41  ret void42}43 44define void @test_03(ptr nocapture %_pA) nounwind ssp {45; CHECK-LABEL: @test_03(46; CHECK: entry:47; CHECK: for.body:48; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)49; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !550; CHECK:   store i32 0, ptr %array, align 16, !noalias !551; CHECK: for.end:52 53entry:54  %array = alloca [20 x i32], align 1655  br label %for.cond56 57for.cond:                                         ; preds = %for.body, %entry58  %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]59  %cmp = icmp slt i32 %i.0, 10060  br i1 %cmp, label %for.body, label %for.end61 62for.body:                                         ; preds = %for.cond63  tail call void @llvm.experimental.noalias.scope.decl(metadata !2)64  store i32 42, ptr %_pA, align 16, !alias.scope !265  store i32 0, ptr %array, align 16, !noalias !266  %inc = add nsw i32 %i.0, 167  br label %for.cond68 69for.end:                                          ; preds = %for.cond70  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]71  call void @g(ptr %arrayidx.lcssa) nounwind72  ret void73}74 75define void @test_04(ptr nocapture %_pA) nounwind ssp {76; CHECK-LABEL: @test_04(77; CHECK: entry:78; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !9)79; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !980; CHECK: for.body:81; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)82; CHECK:   store i32 0, ptr %array, align 16, !noalias !583; CHECK:   store i32 43, ptr %_pA, align 16, !alias.scope !584; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !11)85; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !1186; CHECK: for.end:87entry:88  %array = alloca [20 x i32], align 1689  br label %for.cond90 91for.cond:                                         ; preds = %for.body, %entry92  %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]93  tail call void @llvm.experimental.noalias.scope.decl(metadata !2)94  store i32 42, ptr %_pA, align 16, !alias.scope !295  %cmp = icmp slt i32 %i.0, 10096  br i1 %cmp, label %for.body, label %for.end97 98for.body:                                         ; preds = %for.cond99  store i32 0, ptr %array, align 16, !noalias !2100  store i32 43, ptr %_pA, align 16, !alias.scope !2101  %inc = add nsw i32 %i.0, 1102  br label %for.cond103 104for.end:                                          ; preds = %for.cond105  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]106  call void @g(ptr %arrayidx.lcssa) nounwind107  ret void108}109 110define void @test_05(ptr nocapture %_pA) nounwind ssp {111; CHECK-LABEL: @test_05(112; CHECK: entry:113; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !13)114; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !13115; CHECK: for.body:116; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)117; CHECK:   store i32 0, ptr %array, align 16, !noalias !5118; CHECK:   store i32 43, ptr %_pA, align 16, !alias.scope !5119; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !15)120; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !15121; CHECK: for.end:122; CHECK:   store i32 44, ptr %_pA, align 16, !alias.scope !5123 124entry:125  %array = alloca [20 x i32], align 16126  br label %for.cond127 128for.cond:                                         ; preds = %for.body, %entry129  %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]130  tail call void @llvm.experimental.noalias.scope.decl(metadata !2)131  store i32 42, ptr %_pA, align 16, !alias.scope !2132  %cmp = icmp slt i32 %i.0, 100133  br i1 %cmp, label %for.body, label %for.end134 135for.body:                                         ; preds = %for.cond136  store i32 0, ptr %array, align 16, !noalias !2137  store i32 43, ptr %_pA, align 16, !alias.scope !2138  %inc = add nsw i32 %i.0, 1139  br label %for.cond140 141for.end:                                          ; preds = %for.cond142  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]143  store i32 44, ptr %_pA, align 16, !alias.scope !2144  call void @g(ptr %arrayidx.lcssa) nounwind145  ret void146}147 148; Function Attrs: inaccessiblememonly nounwind149declare void @llvm.experimental.noalias.scope.decl(metadata)150 151!llvm.module.flags = !{!0}152!llvm.ident = !{!1}153 154!0 = !{i32 1, !"wchar_size", i32 4}155!1 = !{!"clang"}156!2 = !{!3}157!3 = distinct !{!3, !4, !"test_loop_rotate_XX: pA"}158!4 = distinct !{!4, !"test_loop_rotate_XX"}159 160; CHECK: !0 = !{i32 1, !"wchar_size", i32 4}161; CHECK: !1 = !{!"clang"}162; CHECK: !2 = !{!3}163; CHECK: !3 = distinct !{!3, !4, !"test_loop_rotate_XX: pA:pre.rot"}164; CHECK: !4 = distinct !{!4, !"test_loop_rotate_XX"}165; CHECK: !5 = !{!6}166; CHECK: !6 = distinct !{!6, !4, !"test_loop_rotate_XX: pA"}167; CHECK: !7 = !{!8}168; CHECK: !8 = distinct !{!8, !4, !"test_loop_rotate_XX: pA:h.rot"}169; CHECK: !9 = !{!10}170; CHECK: !10 = distinct !{!10, !4, !"test_loop_rotate_XX: pA:pre.rot"}171; CHECK: !11 = !{!12}172; CHECK: !12 = distinct !{!12, !4, !"test_loop_rotate_XX: pA:h.rot"}173; CHECK: !13 = !{!14}174; CHECK: !14 = distinct !{!14, !4, !"test_loop_rotate_XX: pA:pre.rot"}175; CHECK: !15 = !{!16}176; CHECK: !16 = distinct !{!16, !4, !"test_loop_rotate_XX: pA:h.rot"}177