spv.intrinsicsSpirvInstruction.vert
Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 30

                              Capability Shader
                              Capability Int64
                              Capability ShaderClockKHR
                              Extension  "SPV_AMD_shader_trinary_minmax"
                              Extension  "SPV_KHR_shader_clock"
               1:             ExtInstImport  "GLSL.std.450"
              28:             ExtInstImport  "SPV_AMD_shader_trinary_minmax"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 9 13 18 21
                              Source GLSL 450
                              SourceExtension  "GL_ARB_gpu_shader_int64"
                              SourceExtension  "GL_EXT_spirv_intrinsics"
                              Name 4  "main"
                              Name 9  "uvec2Out"
                              Name 13  "i64Out"
                              Name 18  "vec2Out"
                              Name 21  "vec3In"
                              Decorate 9(uvec2Out) Location 0
                              Decorate 13(i64Out) Location 1
                              Decorate 18(vec2Out) Location 2
                              Decorate 21(vec3In) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 2
               8:             TypePointer Output 7(ivec2)
     9(uvec2Out):      8(ptr) Variable Output
              11:             TypeInt 64 1
              12:             TypePointer Output 11(int64_t)
      13(i64Out):     12(ptr) Variable Output
              15:             TypeFloat 32
              16:             TypeVector 15(float) 2
              17:             TypePointer Output 16(fvec2)
     18(vec2Out):     17(ptr) Variable Output
              19:             TypeVector 15(float) 3
              20:             TypePointer Input 19(fvec3)
      21(vec3In):     20(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              10:    7(ivec2) ReadClockKHR
                              Store 9(uvec2Out) 10
              14: 11(int64_t) ReadClockKHR
                              Store 13(i64Out) 14
              22:   19(fvec3) Load 21(vec3In)
              23:   16(fvec2) VectorShuffle 22 22 0 1
              24:   19(fvec3) Load 21(vec3In)
              25:   16(fvec2) VectorShuffle 24 24 1 2
              26:   19(fvec3) Load 21(vec3In)
              27:   16(fvec2) VectorShuffle 26 26 2 0
              29:   16(fvec2) ExtInst 28(SPV_AMD_shader_trinary_minmax) 1(FMin3AMD) 23 25 27
                              Store 18(vec2Out) 29
                              Return
                              FunctionEnd
