1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
; RUN: opt -S --dxil-prepare %s | FileCheck %s
; Test that only metadata nodes that are valid in DXIL are allowed through
target triple = "dxilv1.0-unknown-shadermodel6.0-compute"
; Function Attrs: noinline nounwind memory(readwrite, inaccessiblemem: none)
define void @main(i32* %ptr) {
entry:
; metadata ID changes to 0 once the current !0 and !1 are removed
; since they aren't in the allowlist. range needs a payload.
; CHECK: %val = load i32, ptr %ptr, align 4, !range [[RANGEMD:![0-9]+]]
%val = load i32, ptr %ptr, align 4, !range !2
%cmp.i = icmp ult i32 1, 2
; Ensure that the !llvm.loop metadata node gets dropped.
; CHECK: br i1 %cmp.i, label %_Z4mainDv3_j.exit, label %_Z4mainDv3_j.exit{{$}}
br i1 %cmp.i, label %_Z4mainDv3_j.exit, label %_Z4mainDv3_j.exit, !llvm.loop !0
_Z4mainDv3_j.exit: ; preds = %for.body.i, %entry
ret void
}
; These next check lines check that only the range metadata remains
; No more metadata should be necessary, the rest (the current 0 and 1)
; should be removed.
; CHECK-NOT: !{!"llvm.loop.mustprogress"}
; CHECK: [[RANGEMD]] = !{i32 1, i32 5}
; CHECK-NOT: !{!"llvm.loop.mustprogress"}
!0 = distinct !{!0, !1}
!1 = !{!"llvm.loop.mustprogress"}
!2 = !{i32 1, i32 5}
|