blob: 2c02987f739281bd01ff19bc83535d7a5fbd269d [file] [log] [blame]
; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-vulkan-unknown %s -o - | FileCheck %s
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan-unknown %s -o - -filetype=obj | spirv-val %}
; CHECK-DAG: OpDecorate %[[#INPUT:]] BuiltIn FragCoord
; CHECK-DAG: OpDecorate %[[#OUTPUT:]] Location 0
; CHECK-DAG: %[[#float:]] = OpTypeFloat 32
; CHECK-DAG: %[[#v4:]] = OpTypeVector %[[#float]] 4
; CHECK-DAG: %[[#ptr_i:]] = OpTypePointer Input %[[#v4]]
; CHECK-DAG: %[[#ptr_o:]] = OpTypePointer Output %[[#v4]]
; CHECK-DAG: %[[#INPUT]] = OpVariable %[[#ptr_i]] Input
; CHECK-DAG: %[[#OUTPUT]] = OpVariable %[[#ptr_o]] Output
@SV_Position = external hidden thread_local addrspace(7) externally_initialized constant <4 x float>, !spirv.Decorations !0
@A0 = external hidden thread_local addrspace(8) global <4 x float>, !spirv.Decorations !2
define void @main() #1 {
entry:
%0 = load <4 x float>, ptr addrspace(7) @SV_Position, align 16
store <4 x float> %0, ptr addrspace(8) @A0, align 16
ret void
; CHECK: %[[#TMP:]] = OpLoad %[[#v4]] %[[#INPUT]] Aligned 16
; CHECK: OpStore %[[#OUTPUT]] %[[#TMP]] Aligned 16
}
!0 = !{!1}
!1 = !{i32 11, i32 15}
!2 = !{!3}
!3 = !{i32 30, i32 0}