brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · a189c0e Raw
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