blob: 9b57cbebd50e1d9a60eeef66f2ef095d12d66ddd [file] [edit]
; RUN: llc -O0 -filetype=obj %s -o %t.dxbc
; RUN: obj2yaml %t.dxbc | FileCheck %s --check-prefix=PARTS
; RUN: obj2yaml %t.dxbc | yaml2obj | obj2yaml | FileCheck %s --check-prefix=PARTS
; RUN: llc -O2 -filetype=obj %s -o - | obj2yaml | FileCheck %s --check-prefix=PARTS
target triple = "dxil-pc-shadermodel6.8-vertex"
define void @main() #0 {
%p = call <4 x float> @llvm.dx.load.input.v4f32(i32 0, i32 0, i8 0, i32 poison)
%uv = call <2 x float> @llvm.dx.load.input.v2f32(i32 1, i32 0, i8 0, i32 poison)
%u = extractelement <2 x float> %uv, i32 0
call void @llvm.dx.store.output.v4f32(i32 0, i32 0, i8 0, <4 x float> %p)
call void @llvm.dx.store.output.f32(i32 1, i32 0, i8 0, float %u)
call void @llvm.dx.store.output.v2f32(i32 2, i32 0, i8 0, <2 x float> %uv)
ret void
}
attributes #0 = { "hlsl.shader"="vertex" }
!dx.valver = !{!20}
!20 = !{i32 1, i32 8}
!dx.semantic.signatures = !{!0}
!0 = !{ptr @main, !1, !2}
!1 = !{!3, !4}
!2 = !{!5, !6, !7}
!3 = !{i32 0, !"POSITION", i32 9, i32 0, !10, i32 0, i32 1, i8 4, i32 0, i8 0, i8 0, i8 0, i32 0}
!4 = !{i32 1, !"TEXCOORD", i32 9, i32 0, !10, i32 0, i32 1, i8 2, i32 1, i8 0, i8 0, i8 0, i32 0}
; The metadata keeps the source spelling, but OSG1 must use SV_Position.
!5 = !{i32 0, !"SV_POSITION", i32 9, i32 3, !10, i32 0, i32 1, i8 4, i32 0, i8 0, i8 0, i8 0, i32 0}
!6 = !{i32 1, !"A", i32 9, i32 0, !10, i32 0, i32 1, i8 1, i32 1, i8 0, i8 0, i8 0, i32 0}
!7 = !{i32 2, !"B", i32 9, i32 0, !10, i32 0, i32 1, i8 2, i32 1, i8 1, i8 0, i8 0, i32 0}
!10 = !{i32 0}
; PARTS: Name: ISG1
; PARTS: Name: POSITION
; PARTS: SystemValue: Undefined
; PARTS-NEXT: CompType: Float32
; PARTS-NEXT: Register: 0
; PARTS-NEXT: Mask: 15
; PARTS-NEXT: ExclusiveMask: 15
; PARTS: Name: TEXCOORD
; PARTS: Register: 1
; PARTS-NEXT: Mask: 3
; PARTS-NEXT: ExclusiveMask: 3
; PARTS: Name: OSG1
; PARTS: Name: SV_Position
; PARTS: SystemValue: Position
; PARTS: Register: 0
; PARTS-NEXT: Mask: 15
; PARTS-NEXT: ExclusiveMask: 0
; PARTS: Name: A
; PARTS: Register: 1
; PARTS-NEXT: Mask: 1
; PARTS-NEXT: ExclusiveMask: 14
; PARTS: Name: B
; PARTS: Register: 1
; PARTS-NEXT: Mask: 6
; PARTS-NEXT: ExclusiveMask: 9
; PARTS: Name: PSV0
; PARTS: OutputPositionPresent: 1
; PARTS: SigInputVectors: 2
; PARTS: SigOutputVectors: [ 2, 0, 0, 0 ]
; PARTS: SigInputElements:
; PARTS: Name: POSITION
; PARTS: SigOutputElements:
; PARTS: Kind: Position
; PARTS: Name: B
; PARTS: StartRow: 1
; PARTS-NEXT: Cols: 2
; PARTS-NEXT: StartCol: 1
; PARTS: InputOutputMap: