// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <stdint.h>

#if 0
priority.comp
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 22

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 1 1 1
                              Source GLSL 420
                              SourceExtension  "GL_ARB_compute_shader"
                              SourceExtension  "GL_ARB_separate_shader_objects"
                              Name 4  "main"
                              Name 8  "i"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Function 6(int)
               9:      6(int) Constant 0
              16:      6(int) Constant 100
              17:             TypeBool
              20:      6(int) Constant 1
         4(main):           2 Function None 3
               5:             Label
            8(i):      7(ptr) Variable Function
                              Store 8(i) 9
                              Branch 10
              10:             Label
                              LoopMerge 12 13 None
                              Branch 14
              14:             Label
              15:      6(int) Load 8(i)
              18:    17(bool) SLessThan 15 16
                              BranchConditional 18 11 12
              11:               Label
                                Branch 13
              13:               Label
              19:      6(int)   Load 8(i)
              21:      6(int)   IAdd 19 20
                                Store 8(i) 21
                                Branch 10
              12:             Label
                              Return
                              FunctionEnd
#endif

static const uint32_t priority_comp[143] = {
    0x07230203, 0x00010000, 0x00080002, 0x00000016, 0x00000000, 0x00020011, 0x00000001, 0x0006000b,
    0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001,
    0x0005000f, 0x00000005, 0x00000004, 0x6e69616d, 0x00000000, 0x00060010, 0x00000004, 0x00000011,
    0x00000001, 0x00000001, 0x00000001, 0x00030003, 0x00000002, 0x000001a4, 0x00070004, 0x415f4c47,
    0x635f4252, 0x75706d6f, 0x735f6574, 0x65646168, 0x00000072, 0x00090004, 0x415f4c47, 0x735f4252,
    0x72617065, 0x5f657461, 0x64616873, 0x6f5f7265, 0x63656a62, 0x00007374, 0x00040005, 0x00000004,
    0x6e69616d, 0x00000000, 0x00030005, 0x00000008, 0x00000069, 0x00020013, 0x00000002, 0x00030021,
    0x00000003, 0x00000002, 0x00040015, 0x00000006, 0x00000020, 0x00000001, 0x00040020, 0x00000007,
    0x00000007, 0x00000006, 0x0004002b, 0x00000006, 0x00000009, 0x00000000, 0x0004002b, 0x00000006,
    0x00000010, 0x00000064, 0x00020014, 0x00000011, 0x0004002b, 0x00000006, 0x00000014, 0x00000001,
    0x00050036, 0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200f8, 0x00000005, 0x0004003b,
    0x00000007, 0x00000008, 0x00000007, 0x0003003e, 0x00000008, 0x00000009, 0x000200f9, 0x0000000a,
    0x000200f8, 0x0000000a, 0x000400f6, 0x0000000c, 0x0000000d, 0x00000000, 0x000200f9, 0x0000000e,
    0x000200f8, 0x0000000e, 0x0004003d, 0x00000006, 0x0000000f, 0x00000008, 0x000500b1, 0x00000011,
    0x00000012, 0x0000000f, 0x00000010, 0x000400fa, 0x00000012, 0x0000000b, 0x0000000c, 0x000200f8,
    0x0000000b, 0x000200f9, 0x0000000d, 0x000200f8, 0x0000000d, 0x0004003d, 0x00000006, 0x00000013,
    0x00000008, 0x00050080, 0x00000006, 0x00000015, 0x00000013, 0x00000014, 0x0003003e, 0x00000008,
    0x00000015, 0x000200f9, 0x0000000a, 0x000200f8, 0x0000000c, 0x000100fd, 0x00010038,
};
