18107810cSJustin Bogner; RUN: opt -S -dxil-translate-metadata < %s | FileCheck %s 2*81ee3855SJustin Bogner; RUN: opt -S --passes="dxil-pretty-printer" < %s 2>&1 | FileCheck %s --check-prefix=PRINT 3607be386SChris Bieneman; RUN: llc %s --filetype=asm -o - < %s 2>&1 | FileCheck %s --check-prefixes=CHECK,PRINT 422018555SXiang Li 5618e5006SChris Bienemantarget datalayout = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64" 6b8615079SXiang Litarget triple = "dxil-pc-shadermodel6.0-library" 7618e5006SChris Bieneman 8618e5006SChris Bieneman%"class.hlsl::RWBuffer" = type { ptr } 9618e5006SChris Bieneman 1022018555SXiang Li 1122018555SXiang Li; PRINT:; Resource Bindings: 1222018555SXiang Li; PRINT-NEXT:; 1322018555SXiang Li; PRINT-NEXT:; Name Type Format Dim ID HLSL Bind Count 1422018555SXiang Li; PRINT-NEXT:; ------------------------------ ---------- ------- ----------- ------- -------------- ------ 1522018555SXiang Li; PRINT-NEXT:; UAV f16 buf U0 u0 1 1613163dd8SXiang Li; PRINT-NEXT:; UAV f32 buf U1 u1 1 1713163dd8SXiang Li; PRINT-NEXT:; UAV f64 buf U2 u2 1 1813163dd8SXiang Li; PRINT-NEXT:; UAV i1 buf U3 u3 2 1913163dd8SXiang Li; PRINT-NEXT:; UAV byte r/w U4 u5 1 2013163dd8SXiang Li; PRINT-NEXT:; UAV struct r/w U5 u6 1 2113163dd8SXiang Li; PRINT-NEXT:; UAV i32 buf U6 u7 1 2213163dd8SXiang Li; PRINT-NEXT:; UAV struct r/w U7 u8 1 2313163dd8SXiang Li; PRINT-NEXT:; UAV byte r/w U8 u9 1 2413163dd8SXiang Li; PRINT-NEXT:; UAV u64 buf U9 u10,space2 1 2522018555SXiang Li 26618e5006SChris Bieneman@Zero = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 27618e5006SChris Bieneman@One = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 28618e5006SChris Bieneman@Two = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 29618e5006SChris Bieneman@Three = local_unnamed_addr global [2 x %"class.hlsl::RWBuffer"] zeroinitializer, align 4 30618e5006SChris Bieneman@Four = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 31618e5006SChris Bieneman@Five = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 32618e5006SChris Bieneman@Six = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 33618e5006SChris Bieneman@Seven = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 34618e5006SChris Bieneman@Eight = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 35618e5006SChris Bieneman@Nine = local_unnamed_addr global %"class.hlsl::RWBuffer" zeroinitializer, align 4 36618e5006SChris Bieneman 37618e5006SChris Bieneman 38618e5006SChris Bieneman!hlsl.uavs = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} 39618e5006SChris Bieneman 404f54d715SJustin Bogner!0 = !{ptr @Zero, i32 10, i32 8, i1 false, i32 0, i32 0} 414f54d715SJustin Bogner!1 = !{ptr @One, i32 10, i32 9, i1 false, i32 1, i32 0} 424f54d715SJustin Bogner!2 = !{ptr @Two, i32 10, i32 10, i1 false, i32 2, i32 0} 434f54d715SJustin Bogner!3 = !{ptr @Three, i32 10, i32 1, i1 false, i32 3, i32 0} 444f54d715SJustin Bogner!4 = !{ptr @Four, i32 11, i32 2, i1 false, i32 5, i32 0} 454f54d715SJustin Bogner!5 = !{ptr @Five, i32 12, i32 3, i1 false, i32 6, i32 0} 464f54d715SJustin Bogner!6 = !{ptr @Six, i32 10, i32 4, i1 true, i32 7, i32 0} 474f54d715SJustin Bogner!7 = !{ptr @Seven, i32 12, i32 5, i1 true, i32 8, i32 0} 484f54d715SJustin Bogner!8 = !{ptr @Eight, i32 11, i32 6, i1 true, i32 9, i32 0} 494f54d715SJustin Bogner!9 = !{ptr @Nine, i32 10, i32 7, i1 false, i32 10, i32 2} 50618e5006SChris Bieneman 51618e5006SChris Bieneman; CHECK: !dx.resources = !{[[ResList:[!][0-9]+]]} 52618e5006SChris Bieneman 53618e5006SChris Bieneman; CHECK: [[ResList]] = !{null, [[UAVList:[!][0-9]+]], null, null} 54618e5006SChris Bieneman; CHECK: [[UAVList]] = !{[[Zero:[!][0-9]+]], [[One:[!][0-9]+]], 55618e5006SChris Bieneman; CHECK-SAME: [[Two:[!][0-9]+]], [[Three:[!][0-9]+]], [[Four:[!][0-9]+]], 56618e5006SChris Bieneman; CHECK-SAME: [[Five:[!][0-9]+]], [[Six:[!][0-9]+]], [[Seven:[!][0-9]+]], 57618e5006SChris Bieneman; CHECK-SAME: [[Eight:[!][0-9]+]], [[Nine:[!][0-9]+]]} 58618e5006SChris Bieneman; CHECK: [[Zero]] = !{i32 0, ptr @Zero, !"", i32 0, i32 0, i32 1, i32 10, i1 false, i1 false, i1 false, [[Half:[!][0-9]+]]} 59618e5006SChris Bieneman; CHECK: [[Half]] = !{i32 0, i32 8} 6013163dd8SXiang Li; CHECK: [[One]] = !{i32 1, ptr @One, !"", i32 0, i32 1, i32 1, i32 10, i1 false, i1 false, i1 false, [[Float:[!][0-9]+]]} 61618e5006SChris Bieneman; CHECK: [[Float]] = !{i32 0, i32 9} 6213163dd8SXiang Li; CHECK: [[Two]] = !{i32 2, ptr @Two, !"", i32 0, i32 2, i32 1, i32 10, i1 false, i1 false, i1 false, [[Double:[!][0-9]+]]} 63618e5006SChris Bieneman; CHECK: [[Double]] = !{i32 0, i32 10} 6413163dd8SXiang Li; CHECK: [[Three]] = !{i32 3, ptr @Three, !"", i32 0, i32 3, i32 2, i32 10, i1 false, i1 false, i1 false, [[Bool:[!][0-9]+]]} 65618e5006SChris Bieneman; CHECK: [[Bool]] = !{i32 0, i32 1} 6613163dd8SXiang Li; CHECK: [[Four]] = !{i32 4, ptr @Four, !"", i32 0, i32 5, i32 1, i32 11, i1 false, i1 false, i1 false, [[I16:[!][0-9]+]]} 67618e5006SChris Bieneman; CHECK: [[I16]] = !{i32 0, i32 2} 6813163dd8SXiang Li; CHECK: [[Five]] = !{i32 5, ptr @Five, !"", i32 0, i32 6, i32 1, i32 12, i1 false, i1 false, i1 false, [[U16:[!][0-9]+]]} 69618e5006SChris Bieneman; CHECK: [[U16]] = !{i32 0, i32 3} 7013163dd8SXiang Li; CHECK: [[Six]] = !{i32 6, ptr @Six, !"", i32 0, i32 7, i32 1, i32 10, i1 false, i1 false, i1 true, [[I32:[!][0-9]+]]} 71618e5006SChris Bieneman; CHECK: [[I32]] = !{i32 0, i32 4} 7213163dd8SXiang Li; CHECK: [[Seven]] = !{i32 7, ptr @Seven, !"", i32 0, i32 8, i32 1, i32 12, i1 false, i1 false, i1 true, [[U32:[!][0-9]+]]} 73618e5006SChris Bieneman; CHECK: [[U32]] = !{i32 0, i32 5} 7413163dd8SXiang Li; CHECK: [[Eight]] = !{i32 8, ptr @Eight, !"", i32 0, i32 9, i32 1, i32 11, i1 false, i1 false, i1 true, [[I64:[!][0-9]+]]} 75618e5006SChris Bieneman; CHECK: [[I64]] = !{i32 0, i32 6} 7613163dd8SXiang Li; CHECK: [[Nine]] = !{i32 9, ptr @Nine, !"", i32 2, i32 10, i32 1, i32 10, i1 false, i1 false, i1 false, [[U64:[!][0-9]+]]} 77618e5006SChris Bieneman; CHECK: [[U64]] = !{i32 0, i32 7} 78