;; Basic test for multiple entry points.  The entry points have different
;; execution models and so can be trivially matched.
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Vertex %mainv "mainv" %vo %a
               OpEntryPoint Fragment %mainf "mainf" %color %vi
	       OpExecutionMode %mainf OriginUpperLeft
               OpSource ESSL 310
               OpName %mainv "mainv"
               OpName %mainf "mainf"
               OpName %a "a"
               OpName %vo "v"
               OpName %vi "v"
               OpName %color "color"
               OpDecorate %a Location 0
               OpDecorate %vo Location 0
               OpDecorate %vi Location 0
               OpDecorate %color Location 0
	       OpDecorate %color RelaxedPrecision
	       OpDecorate %vi RelaxedPrecision
               OpDecorate %12 RelaxedPrecision
               OpDecorate %13 RelaxedPrecision

       %void = OpTypeVoid
          %3 = OpTypeFunction %void
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4

%_ptr_Input_float = OpTypePointer Input %float
          %a = OpVariable %_ptr_Input_float Input
%_ptr_Output_float = OpTypePointer Output %float
         %vo = OpVariable %_ptr_Output_float Output
         %vi = OpVariable %_ptr_Input_float Input
%_ptr_Output_v4float = OpTypePointer Output %v4float
      %color = OpVariable %_ptr_Output_v4float Output

      %mainv = OpFunction %void None %3
          %5 = OpLabel
         %11 = OpLoad %float %a
               OpStore %vo %11
               OpReturn
               OpFunctionEnd

      %mainf = OpFunction %void None %3
          %6 = OpLabel
         %12 = OpLoad %float %vi
	 %13 = OpCompositeConstruct %v4float %12 %12 %12 %12
               OpStore %color %13
               OpReturn
               OpFunctionEnd
