; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 94
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %21 "vs_main" %12 %15 %17 %19
OpEntryPoint Fragment %49 "fs_main" %43 %46 %48
OpExecutionMode %49 OriginUpperLeft
%3 = OpString "debug-symbol-simple.wgsl"
OpSource Unknown 0 %3 "struct VertexInput {
    @location(0) position: vec3<f32>,
    @location(1) color: vec3<f32>,
};

struct VertexOutput {
    @builtin(position) clip_position: vec4<f32>,
    @location(0) color: vec3<f32>,
};

@vertex
fn vs_main(
    model: VertexInput,
) -> VertexOutput {
    var out: VertexOutput;
    out.color = model.color;
    out.clip_position = vec4<f32>(model.position, 1.0);
    return out;
}

// Fragment shader

@fragment
fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
    var color = in.color;
    for (var i = 0; i < 10; i += 1) {
        var ii = f32(i);
        color.x += ii*0.001;
        color.y += ii*0.002;
    }

    return vec4<f32>(color, 1.0);
}"
OpMemberName %6 0 "position"
OpMemberName %6 1 "color"
OpName %6 "VertexInput"
OpMemberName %8 0 "clip_position"
OpMemberName %8 1 "color"
OpName %8 "VertexOutput"
OpName %12 "position"
OpName %15 "color"
OpName %17 "clip_position"
OpName %19 "color"
OpName %21 "vs_main"
OpName %24 "out"
OpName %43 "clip_position"
OpName %46 "color"
OpName %49 "fs_main"
OpName %55 "color"
OpName %57 "i"
OpName %59 "ii"
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 16
OpMemberDecorate %8 0 Offset 0
OpMemberDecorate %8 1 Offset 16
OpDecorate %12 Location 0
OpDecorate %15 Location 1
OpDecorate %17 BuiltIn Position
OpDecorate %19 Location 0
OpDecorate %43 BuiltIn FragCoord
OpDecorate %46 Location 0
OpDecorate %48 Location 0
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%5 = OpTypeVector %4 3
%6 = OpTypeStruct %5 %5
%7 = OpTypeVector %4 4
%8 = OpTypeStruct %7 %5
%9 = OpTypeInt 32 1
%13 = OpTypePointer Input %5
%12 = OpVariable  %13  Input
%15 = OpVariable  %13  Input
%18 = OpTypePointer Output %7
%17 = OpVariable  %18  Output
%20 = OpTypePointer Output %5
%19 = OpVariable  %20  Output
%22 = OpTypeFunction %2
%23 = OpConstant  %4  1.0
%25 = OpTypePointer Function %8
%26 = OpConstantNull  %8
%28 = OpTypePointer Function %5
%31 = OpTypeInt 32 0
%30 = OpConstant  %31  1
%33 = OpTypePointer Function %7
%36 = OpConstant  %31  0
%44 = OpTypePointer Input %7
%43 = OpVariable  %44  Input
%46 = OpVariable  %13  Input
%48 = OpVariable  %18  Output
%50 = OpConstant  %9  0
%51 = OpConstant  %9  10
%52 = OpConstant  %4  0.001
%53 = OpConstant  %4  0.002
%54 = OpConstant  %9  1
%56 = OpConstantNull  %5
%58 = OpTypePointer Function %9
%60 = OpTypePointer Function %4
%61 = OpConstantNull  %4
%69 = OpTypeBool
%77 = OpTypePointer Function %4
%21 = OpFunction  %2  None %22
%10 = OpLabel
%24 = OpVariable  %25  Function %26
%14 = OpLoad  %5  %12
%16 = OpLoad  %5  %15
%11 = OpCompositeConstruct  %6  %14 %16
OpBranch %27
%27 = OpLabel
OpLine %3 16 5
%29 = OpCompositeExtract  %5  %11 1
OpLine %3 16 5
%32 = OpAccessChain  %28  %24 %30
OpStore %32 %29
OpLine %3 17 5
%34 = OpCompositeExtract  %5  %11 0
OpLine %3 17 25
%35 = OpCompositeConstruct  %7  %34 %23
OpLine %3 17 5
%37 = OpAccessChain  %33  %24 %36
OpStore %37 %35
OpLine %3 1 1
%38 = OpLoad  %8  %24
%39 = OpCompositeExtract  %7  %38 0
OpStore %17 %39
%40 = OpCompositeExtract  %5  %38 1
OpStore %19 %40
OpReturn
OpFunctionEnd
%49 = OpFunction  %2  None %22
%41 = OpLabel
%55 = OpVariable  %28  Function %56
%57 = OpVariable  %58  Function %50
%59 = OpVariable  %60  Function %61
%45 = OpLoad  %7  %43
%47 = OpLoad  %5  %46
%42 = OpCompositeConstruct  %8  %45 %47
OpBranch %62
%62 = OpLabel
OpLine %3 25 17
%63 = OpCompositeExtract  %5  %42 1
OpLine %3 25 5
OpStore %55 %63
OpBranch %64
%64 = OpLabel
OpLine %3 26 5
OpLoopMerge %65 %67 None
OpBranch %66
%66 = OpLabel
OpLine %3 1 1
%68 = OpLoad  %9  %57
OpLine %3 26 21
%70 = OpSLessThan  %69  %68 %51
OpLine %3 26 20
OpSelectionMerge %71 None
OpBranchConditional %70 %71 %72
%72 = OpLabel
OpBranch %65
%71 = OpLabel
OpBranch %73
%73 = OpLabel
OpLine %3 27 18
%75 = OpLoad  %9  %57
%76 = OpConvertSToF  %4  %75
OpLine %3 27 9
OpStore %59 %76
OpLine %3 28 9
%78 = OpLoad  %4  %59
OpLine %3 28 9
%79 = OpFMul  %4  %78 %52
%80 = OpAccessChain  %77  %55 %36
%81 = OpLoad  %4  %80
%82 = OpFAdd  %4  %81 %79
OpLine %3 28 9
%83 = OpAccessChain  %77  %55 %36
OpStore %83 %82
OpLine %3 29 9
%84 = OpLoad  %4  %59
OpLine %3 29 9
%85 = OpFMul  %4  %84 %53
%86 = OpAccessChain  %77  %55 %30
%87 = OpLoad  %4  %86
%88 = OpFAdd  %4  %87 %85
OpLine %3 29 9
%89 = OpAccessChain  %77  %55 %30
OpStore %89 %88
OpBranch %74
%74 = OpLabel
OpBranch %67
%67 = OpLabel
OpLine %3 26 29
%90 = OpLoad  %9  %57
%91 = OpIAdd  %9  %90 %54
OpLine %3 26 29
OpStore %57 %91
OpBranch %64
%65 = OpLabel
OpLine %3 1 1
%92 = OpLoad  %5  %55
OpLine %3 32 12
%93 = OpCompositeConstruct  %7  %92 %23
OpStore %48 %93
OpReturn
OpFunctionEnd