brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · e29af05 Raw
259 lines · plain
1; RUN: llc -mtriple=spirv-unknown-vulkan-compute -O0 -verify-machineinstrs %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan-compute %s -o - -filetype=obj | spirv-val %}3 4; CHECK-DAG: OpName %[[#For:]] "for_loop"5; CHECK-DAG: OpName %[[#While:]] "while_loop"6; CHECK-DAG: OpName %[[#DoWhile:]] "do_while_loop"7; CHECK-DAG: OpName %[[#Disable:]] "unroll_disable"8; CHECK-DAG: OpName %[[#Count:]] "unroll_count"9; CHECK-DAG: OpName %[[#Full:]] "unroll_full"10; CHECK-DAG: OpName %[[#FullCount:]] "unroll_full_count"11; CHECK-DAG: OpName %[[#EnableDisable:]] "unroll_enable_disable"12 13; CHECK: %[[#For]] = OpFunction14; CHECK: OpLoopMerge %[[#]] %[[#]] Unroll15 16; CHECK: %[[#While]] = OpFunction17; CHECK: OpLoopMerge %[[#]] %[[#]] Unroll18 19; CHECK: %[[#DoWhile]] = OpFunction20; CHECK: OpLoopMerge %[[#]] %[[#]] Unroll21 22; CHECK: %[[#Disable]] = OpFunction23; CHECK: OpLoopMerge %[[#]] %[[#]] DontUnroll24 25; CHECK: %[[#Count]] = OpFunction26; CHECK: OpLoopMerge %[[#]] %[[#]] PartialCount 427 28; CHECK: %[[#Full]] = OpFunction29; CHECK: OpLoopMerge %[[#]] %[[#]] Unroll30 31; CHECK: %[[#FullCount]] = OpFunction32; CHECK: OpLoopMerge %[[#]] %[[#]] Unroll|PartialCount 433 34; CHECK: %[[#EnableDisable]] = OpFunction35; CHECK: OpLoopMerge %[[#]] %[[#]] DontUnroll36; CHECK-NOT: Unroll|DontUnroll37; CHECK-NOT: DontUnroll|Unroll38 39define dso_local void @for_loop(ptr noundef %0, i32 noundef %1) {40  %3 = alloca ptr, align 841  %4 = alloca i32, align 442  %5 = alloca i32, align 443  store ptr %0, ptr %3, align 844  store i32 %1, ptr %4, align 445  store i32 0, ptr %5, align 446  br label %647 486:                                                ; preds = %15, %249  %7 = load i32, ptr %5, align 450  %8 = load i32, ptr %4, align 451  %9 = icmp slt i32 %7, %852  br i1 %9, label %10, label %1853 5410:                                               ; preds = %655  %11 = load i32, ptr %5, align 456  %12 = load ptr, ptr %3, align 857  %13 = load i32, ptr %12, align 458  %14 = add nsw i32 %13, %1159  store i32 %14, ptr %12, align 460  br label %1561 6215:                                               ; preds = %1063  %16 = load i32, ptr %5, align 464  %17 = add nsw i32 %16, 165  store i32 %17, ptr %5, align 466  br label %6, !llvm.loop !167 6818:                                               ; preds = %669  ret void70}71 72define dso_local void @while_loop(ptr noundef %0, i32 noundef %1) {73  %3 = alloca ptr, align 874  %4 = alloca i32, align 475  %5 = alloca i32, align 476  store ptr %0, ptr %3, align 877  store i32 %1, ptr %4, align 478  store i32 0, ptr %5, align 479  br label %680 816:                                                ; preds = %10, %282  %7 = load i32, ptr %5, align 483  %8 = load i32, ptr %4, align 484  %9 = icmp slt i32 %7, %885  br i1 %9, label %10, label %1786 8710:                                               ; preds = %688  %11 = load i32, ptr %5, align 489  %12 = load ptr, ptr %3, align 890  %13 = load i32, ptr %12, align 491  %14 = add nsw i32 %13, %1192  store i32 %14, ptr %12, align 493  %15 = load i32, ptr %5, align 494  %16 = add nsw i32 %15, 195  store i32 %16, ptr %5, align 496  br label %6, !llvm.loop !397 9817:                                               ; preds = %699  ret void100}101 102define dso_local void @do_while_loop(ptr noundef %0, i32 noundef %1) {103  %3 = alloca ptr, align 8104  %4 = alloca i32, align 4105  %5 = alloca i32, align 4106  store ptr %0, ptr %3, align 8107  store i32 %1, ptr %4, align 4108  store i32 0, ptr %5, align 4109  br label %6110 1116:                                                ; preds = %13, %2112  %7 = load i32, ptr %5, align 4113  %8 = load ptr, ptr %3, align 8114  %9 = load i32, ptr %8, align 4115  %10 = add nsw i32 %9, %7116  store i32 %10, ptr %8, align 4117  %11 = load i32, ptr %5, align 4118  %12 = add nsw i32 %11, 1119  store i32 %12, ptr %5, align 4120  br label %13121 12213:                                               ; preds = %6123  %14 = load i32, ptr %5, align 4124  %15 = load i32, ptr %4, align 4125  %16 = icmp slt i32 %14, %15126  br i1 %16, label %6, label %17, !llvm.loop !4127 12817:                                               ; preds = %13129  ret void130}131 132define dso_local void @unroll_disable(i32 noundef %0) {133  %2 = alloca i32, align 4134  %3 = alloca i32, align 4135  store i32 %0, ptr %2, align 4136  store i32 0, ptr %3, align 4137  br label %4138 1394:                                                ; preds = %7, %1140  %5 = load i32, ptr %3, align 4141  %6 = add nsw i32 %5, 1142  store i32 %6, ptr %3, align 4143  br label %7144 1457:                                                ; preds = %4146  %8 = load i32, ptr %3, align 4147  %9 = load i32, ptr %2, align 4148  %10 = icmp slt i32 %8, %9149  br i1 %10, label %4, label %11, !llvm.loop !5150 15111:                                               ; preds = %7152  ret void153}154 155define dso_local void @unroll_count(i32 noundef %0) {156  %2 = alloca i32, align 4157  %3 = alloca i32, align 4158  store i32 %0, ptr %2, align 4159  store i32 0, ptr %3, align 4160  br label %4161 1624:                                                ; preds = %7, %1163  %5 = load i32, ptr %3, align 4164  %6 = add nsw i32 %5, 1165  store i32 %6, ptr %3, align 4166  br label %7167 1687:                                                ; preds = %4169  %8 = load i32, ptr %3, align 4170  %9 = load i32, ptr %2, align 4171  %10 = icmp slt i32 %8, %9172  br i1 %10, label %4, label %11, !llvm.loop !7173 17411:                                               ; preds = %7175  ret void176}177 178define dso_local void @unroll_full(i32 noundef %0) {179  %2 = alloca i32, align 4180  %3 = alloca i32, align 4181  store i32 %0, ptr %2, align 4182  store i32 0, ptr %3, align 4183  br label %4184 1854:                                                ; preds = %7, %1186  %5 = load i32, ptr %3, align 4187  %6 = add nsw i32 %5, 1188  store i32 %6, ptr %3, align 4189  br label %7190 1917:                                                ; preds = %4192  %8 = load i32, ptr %3, align 4193  %9 = load i32, ptr %2, align 4194  %10 = icmp slt i32 %8, %9195  br i1 %10, label %4, label %11, !llvm.loop !9196 19711:                                               ; preds = %7198  ret void199}200 201define dso_local void @unroll_full_count(i32 noundef %0) {202  %2 = alloca i32, align 4203  %3 = alloca i32, align 4204  store i32 %0, ptr %2, align 4205  store i32 0, ptr %3, align 4206  br label %4207 2084:                                                ; preds = %7, %1209  %5 = load i32, ptr %3, align 4210  %6 = add nsw i32 %5, 1211  store i32 %6, ptr %3, align 4212  br label %7213 2147:                                                ; preds = %4215  %8 = load i32, ptr %3, align 4216  %9 = load i32, ptr %2, align 4217  %10 = icmp slt i32 %8, %9218  br i1 %10, label %4, label %11, !llvm.loop !11219 22011:                                               ; preds = %7221  ret void222}223 224define dso_local void @unroll_enable_disable(i32 noundef %0) {225  %2 = alloca i32, align 4226  %3 = alloca i32, align 4227  store i32 %0, ptr %2, align 4228  store i32 0, ptr %3, align 4229  br label %4230 2314:                                                ; preds = %7, %1232  %5 = load i32, ptr %3, align 4233  %6 = add nsw i32 %5, 1234  store i32 %6, ptr %3, align 4235  br label %7236 2377:                                                ; preds = %4238  %8 = load i32, ptr %3, align 4239  %9 = load i32, ptr %2, align 4240  %10 = icmp slt i32 %8, %9241  br i1 %10, label %4, label %11, !llvm.loop !12242 24311:                                               ; preds = %7244  ret void245}246 247!1 = distinct !{!1, !2}248!2 = !{!"llvm.loop.unroll.enable"}249!3 = distinct !{!3, !2}250!4 = distinct !{!4, !2}251!5 = distinct !{!5, !6}252!6 = !{!"llvm.loop.unroll.disable"}253!7 = distinct !{!7, !8}254!8 = !{!"llvm.loop.unroll.count", i32 4}255!9 = distinct !{!9, !10}256!10 = !{!"llvm.loop.unroll.full"}257!11 = distinct !{!11, !10, !8}258!12 = distinct !{!12, !2, !6}259