96 lines · plain
1; RUN: split-file %s %t2; RUN: opt -S --dxil-translate-metadata %t/count.ll | FileCheck %t/count.ll3; RUN: opt -S --dxil-translate-metadata %t/disable.ll | FileCheck %t/disable.ll4; RUN: opt -S --dxil-translate-metadata %t/full.ll | FileCheck %t/full.ll5 6;--- count.ll7 8; Test that we collapse a self-referential chain and allow a unroll.count hint9 10target triple = "dxilv1.0-unknown-shadermodel6.0-library"11 12define void @example_loop(i32 %n) {13entry:14 br label %loop.header15 16loop.header:17 %i = phi i32 [ 0, %entry ], [ %i.next, %loop.body ]18 %cmp = icmp slt i32 %i, %n19 br i1 %cmp, label %loop.body, label %exit20 21loop.body:22 %i.next = add nsw i32 %i, 123 ; CHECK: br label %loop.header, !llvm.loop ![[#LOOP_MD:]]24 br label %loop.header, !llvm.loop !025 26exit:27 ret void28}29 30; CHECK: ![[#LOOP_MD]] = distinct !{![[#LOOP_MD]], ![[#COUNT:]]}31; CHECK: ![[#COUNT]] = !{!"llvm.loop.unroll.count", i6 4}32 33!0 = !{!0, !1}34!1 = !{!1, !2}35!2 = !{!"llvm.loop.unroll.count", i6 4}36 37;--- disable.ll38 39; Test that we allow a disable hint40 41target triple = "dxilv1.0-unknown-shadermodel6.0-library"42 43define void @example_loop(i32 %n) {44entry:45 br label %loop.header46 47loop.header:48 %i = phi i32 [ 0, %entry ], [ %i.next, %loop.body ]49 %cmp = icmp slt i32 %i, %n50 br i1 %cmp, label %loop.body, label %exit51 52loop.body:53 %i.next = add nsw i32 %i, 154 ; CHECK: br label %loop.header, !llvm.loop ![[#LOOP_MD:]]55 br label %loop.header, !llvm.loop !056 57exit:58 ret void59}60 61; CHECK: ![[#LOOP_MD]] = distinct !{![[#LOOP_MD]], ![[#DISABLE:]]}62; CHECK: ![[#DISABLE]] = !{!"llvm.loop.unroll.disable"}63 64!0 = !{!0, !1}65!1 = !{!"llvm.loop.unroll.disable"}66 67;--- full.ll68 69; Test that we allow a full hint70 71target triple = "dxilv1.0-unknown-shadermodel6.0-library"72 73define void @example_loop(i32 %n) {74entry:75 br label %loop.header76 77loop.header:78 %i = phi i32 [ 0, %entry ], [ %i.next, %loop.body ]79 %cmp = icmp slt i32 %i, %n80 br i1 %cmp, label %loop.body, label %exit81 82loop.body:83 %i.next = add nsw i32 %i, 184 ; CHECK: br label %loop.header, !llvm.loop ![[#LOOP_MD:]]85 br label %loop.header, !llvm.loop !086 87exit:88 ret void89}90 91; CHECK: ![[#LOOP_MD]] = distinct !{![[#LOOP_MD]], ![[#FULL:]]}92; CHECK: ![[#FULL]] = !{!"llvm.loop.unroll.full"}93 94!0 = !{!0, !1}95!1 = !{!"llvm.loop.unroll.full"}96