gen75_pack.h revision 10e230b6
110e230b6Smaya/*
210e230b6Smaya * Copyright (C) 2016 Intel Corporation
310e230b6Smaya *
410e230b6Smaya * Permission is hereby granted, free of charge, to any person obtaining a
510e230b6Smaya * copy of this software and associated documentation files (the "Software"),
610e230b6Smaya * to deal in the Software without restriction, including without limitation
710e230b6Smaya * the rights to use, copy, modify, merge, publish, distribute, sublicense,
810e230b6Smaya * and/or sell copies of the Software, and to permit persons to whom the
910e230b6Smaya * Software is furnished to do so, subject to the following conditions:
1010e230b6Smaya *
1110e230b6Smaya * The above copyright notice and this permission notice (including the next
1210e230b6Smaya * paragraph) shall be included in all copies or substantial portions of the
1310e230b6Smaya * Software.
1410e230b6Smaya *
1510e230b6Smaya * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1610e230b6Smaya * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1710e230b6Smaya * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1810e230b6Smaya * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1910e230b6Smaya * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
2010e230b6Smaya * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
2110e230b6Smaya * IN THE SOFTWARE.
2210e230b6Smaya */
2310e230b6Smaya
2410e230b6Smaya
2510e230b6Smaya/* Instructions, enums and structures for HSW.
2610e230b6Smaya *
2710e230b6Smaya * This file has been generated, do not hand edit.
2810e230b6Smaya */
2910e230b6Smaya
3010e230b6Smaya#ifndef GEN75_PACK_H
3110e230b6Smaya#define GEN75_PACK_H
3210e230b6Smaya
3310e230b6Smaya#include <stdio.h>
3410e230b6Smaya#include <stdint.h>
3510e230b6Smaya#include <stdbool.h>
3610e230b6Smaya#include <assert.h>
3710e230b6Smaya#include <math.h>
3810e230b6Smaya
3910e230b6Smaya#ifndef __gen_validate_value
4010e230b6Smaya#define __gen_validate_value(x)
4110e230b6Smaya#endif
4210e230b6Smaya
4310e230b6Smaya#ifndef __gen_field_functions
4410e230b6Smaya#define __gen_field_functions
4510e230b6Smaya
4610e230b6Smaya#ifdef NDEBUG
4710e230b6Smaya#define NDEBUG_UNUSED __attribute__((unused))
4810e230b6Smaya#else
4910e230b6Smaya#define NDEBUG_UNUSED
5010e230b6Smaya#endif
5110e230b6Smaya
5210e230b6Smayaunion __gen_value {
5310e230b6Smaya   float f;
5410e230b6Smaya   uint32_t dw;
5510e230b6Smaya};
5610e230b6Smaya
5710e230b6Smayastatic inline uint64_t
5810e230b6Smaya__gen_mbo(uint32_t start, uint32_t end)
5910e230b6Smaya{
6010e230b6Smaya   return (~0ull >> (64 - (end - start + 1))) << start;
6110e230b6Smaya}
6210e230b6Smaya
6310e230b6Smayastatic inline uint64_t
6410e230b6Smaya__gen_uint(uint64_t v, uint32_t start, NDEBUG_UNUSED uint32_t end)
6510e230b6Smaya{
6610e230b6Smaya   __gen_validate_value(v);
6710e230b6Smaya
6810e230b6Smaya#ifndef NDEBUG
6910e230b6Smaya   const int width = end - start + 1;
7010e230b6Smaya   if (width < 64) {
7110e230b6Smaya      const uint64_t max = (1ull << width) - 1;
7210e230b6Smaya      assert(v <= max);
7310e230b6Smaya   }
7410e230b6Smaya#endif
7510e230b6Smaya
7610e230b6Smaya   return v << start;
7710e230b6Smaya}
7810e230b6Smaya
7910e230b6Smayastatic inline uint64_t
8010e230b6Smaya__gen_sint(int64_t v, uint32_t start, uint32_t end)
8110e230b6Smaya{
8210e230b6Smaya   const int width = end - start + 1;
8310e230b6Smaya
8410e230b6Smaya   __gen_validate_value(v);
8510e230b6Smaya
8610e230b6Smaya#ifndef NDEBUG
8710e230b6Smaya   if (width < 64) {
8810e230b6Smaya      const int64_t max = (1ll << (width - 1)) - 1;
8910e230b6Smaya      const int64_t min = -(1ll << (width - 1));
9010e230b6Smaya      assert(min <= v && v <= max);
9110e230b6Smaya   }
9210e230b6Smaya#endif
9310e230b6Smaya
9410e230b6Smaya   const uint64_t mask = ~0ull >> (64 - width);
9510e230b6Smaya
9610e230b6Smaya   return (v & mask) << start;
9710e230b6Smaya}
9810e230b6Smaya
9910e230b6Smayastatic inline uint64_t
10010e230b6Smaya__gen_offset(uint64_t v, NDEBUG_UNUSED uint32_t start, NDEBUG_UNUSED uint32_t end)
10110e230b6Smaya{
10210e230b6Smaya   __gen_validate_value(v);
10310e230b6Smaya#ifndef NDEBUG
10410e230b6Smaya   uint64_t mask = (~0ull >> (64 - (end - start + 1))) << start;
10510e230b6Smaya
10610e230b6Smaya   assert((v & ~mask) == 0);
10710e230b6Smaya#endif
10810e230b6Smaya
10910e230b6Smaya   return v;
11010e230b6Smaya}
11110e230b6Smaya
11210e230b6Smayastatic inline uint32_t
11310e230b6Smaya__gen_float(float v)
11410e230b6Smaya{
11510e230b6Smaya   __gen_validate_value(v);
11610e230b6Smaya   return ((union __gen_value) { .f = (v) }).dw;
11710e230b6Smaya}
11810e230b6Smaya
11910e230b6Smayastatic inline uint64_t
12010e230b6Smaya__gen_sfixed(float v, uint32_t start, uint32_t end, uint32_t fract_bits)
12110e230b6Smaya{
12210e230b6Smaya   __gen_validate_value(v);
12310e230b6Smaya
12410e230b6Smaya   const float factor = (1 << fract_bits);
12510e230b6Smaya
12610e230b6Smaya#ifndef NDEBUG
12710e230b6Smaya   const float max = ((1 << (end - start)) - 1) / factor;
12810e230b6Smaya   const float min = -(1 << (end - start)) / factor;
12910e230b6Smaya   assert(min <= v && v <= max);
13010e230b6Smaya#endif
13110e230b6Smaya
13210e230b6Smaya   const int64_t int_val = llroundf(v * factor);
13310e230b6Smaya   const uint64_t mask = ~0ull >> (64 - (end - start + 1));
13410e230b6Smaya
13510e230b6Smaya   return (int_val & mask) << start;
13610e230b6Smaya}
13710e230b6Smaya
13810e230b6Smayastatic inline uint64_t
13910e230b6Smaya__gen_ufixed(float v, uint32_t start, NDEBUG_UNUSED uint32_t end, uint32_t fract_bits)
14010e230b6Smaya{
14110e230b6Smaya   __gen_validate_value(v);
14210e230b6Smaya
14310e230b6Smaya   const float factor = (1 << fract_bits);
14410e230b6Smaya
14510e230b6Smaya#ifndef NDEBUG
14610e230b6Smaya   const float max = ((1 << (end - start + 1)) - 1) / factor;
14710e230b6Smaya   const float min = 0.0f;
14810e230b6Smaya   assert(min <= v && v <= max);
14910e230b6Smaya#endif
15010e230b6Smaya
15110e230b6Smaya   const uint64_t uint_val = llroundf(v * factor);
15210e230b6Smaya
15310e230b6Smaya   return uint_val << start;
15410e230b6Smaya}
15510e230b6Smaya
15610e230b6Smaya#ifndef __gen_address_type
15710e230b6Smaya#error #define __gen_address_type before including this file
15810e230b6Smaya#endif
15910e230b6Smaya
16010e230b6Smaya#ifndef __gen_user_data
16110e230b6Smaya#error #define __gen_combine_address before including this file
16210e230b6Smaya#endif
16310e230b6Smaya
16410e230b6Smaya#undef NDEBUG_UNUSED
16510e230b6Smaya
16610e230b6Smaya#endif
16710e230b6Smaya
16810e230b6Smaya
16910e230b6Smayaenum GEN75_3D_Color_Buffer_Blend_Factor {
17010e230b6Smaya   BLENDFACTOR_ONE                      =      1,
17110e230b6Smaya   BLENDFACTOR_SRC_COLOR                =      2,
17210e230b6Smaya   BLENDFACTOR_SRC_ALPHA                =      3,
17310e230b6Smaya   BLENDFACTOR_DST_ALPHA                =      4,
17410e230b6Smaya   BLENDFACTOR_DST_COLOR                =      5,
17510e230b6Smaya   BLENDFACTOR_SRC_ALPHA_SATURATE       =      6,
17610e230b6Smaya   BLENDFACTOR_CONST_COLOR              =      7,
17710e230b6Smaya   BLENDFACTOR_CONST_ALPHA              =      8,
17810e230b6Smaya   BLENDFACTOR_SRC1_COLOR               =      9,
17910e230b6Smaya   BLENDFACTOR_SRC1_ALPHA               =     10,
18010e230b6Smaya   BLENDFACTOR_ZERO                     =     17,
18110e230b6Smaya   BLENDFACTOR_INV_SRC_COLOR            =     18,
18210e230b6Smaya   BLENDFACTOR_INV_SRC_ALPHA            =     19,
18310e230b6Smaya   BLENDFACTOR_INV_DST_ALPHA            =     20,
18410e230b6Smaya   BLENDFACTOR_INV_DST_COLOR            =     21,
18510e230b6Smaya   BLENDFACTOR_INV_CONST_COLOR          =     23,
18610e230b6Smaya   BLENDFACTOR_INV_CONST_ALPHA          =     24,
18710e230b6Smaya   BLENDFACTOR_INV_SRC1_COLOR           =     25,
18810e230b6Smaya   BLENDFACTOR_INV_SRC1_ALPHA           =     26,
18910e230b6Smaya};
19010e230b6Smaya
19110e230b6Smayaenum GEN75_3D_Color_Buffer_Blend_Function {
19210e230b6Smaya   BLENDFUNCTION_ADD                    =      0,
19310e230b6Smaya   BLENDFUNCTION_SUBTRACT               =      1,
19410e230b6Smaya   BLENDFUNCTION_REVERSE_SUBTRACT       =      2,
19510e230b6Smaya   BLENDFUNCTION_MIN                    =      3,
19610e230b6Smaya   BLENDFUNCTION_MAX                    =      4,
19710e230b6Smaya};
19810e230b6Smaya
19910e230b6Smayaenum GEN75_3D_Compare_Function {
20010e230b6Smaya   COMPAREFUNCTION_ALWAYS               =      0,
20110e230b6Smaya   COMPAREFUNCTION_NEVER                =      1,
20210e230b6Smaya   COMPAREFUNCTION_LESS                 =      2,
20310e230b6Smaya   COMPAREFUNCTION_EQUAL                =      3,
20410e230b6Smaya   COMPAREFUNCTION_LEQUAL               =      4,
20510e230b6Smaya   COMPAREFUNCTION_GREATER              =      5,
20610e230b6Smaya   COMPAREFUNCTION_NOTEQUAL             =      6,
20710e230b6Smaya   COMPAREFUNCTION_GEQUAL               =      7,
20810e230b6Smaya};
20910e230b6Smaya
21010e230b6Smayaenum GEN75_3D_Logic_Op_Function {
21110e230b6Smaya   LOGICOP_CLEAR                        =      0,
21210e230b6Smaya   LOGICOP_NOR                          =      1,
21310e230b6Smaya   LOGICOP_AND_INVERTED                 =      2,
21410e230b6Smaya   LOGICOP_COPY_INVERTED                =      3,
21510e230b6Smaya   LOGICOP_AND_REVERSE                  =      4,
21610e230b6Smaya   LOGICOP_INVERT                       =      5,
21710e230b6Smaya   LOGICOP_XOR                          =      6,
21810e230b6Smaya   LOGICOP_NAND                         =      7,
21910e230b6Smaya   LOGICOP_AND                          =      8,
22010e230b6Smaya   LOGICOP_EQUIV                        =      9,
22110e230b6Smaya   LOGICOP_NOOP                         =     10,
22210e230b6Smaya   LOGICOP_OR_INVERTED                  =     11,
22310e230b6Smaya   LOGICOP_COPY                         =     12,
22410e230b6Smaya   LOGICOP_OR_REVERSE                   =     13,
22510e230b6Smaya   LOGICOP_OR                           =     14,
22610e230b6Smaya   LOGICOP_SET                          =     15,
22710e230b6Smaya};
22810e230b6Smaya
22910e230b6Smayaenum GEN75_3D_Prim_Topo_Type {
23010e230b6Smaya   _3DPRIM_POINTLIST                    =      1,
23110e230b6Smaya   _3DPRIM_LINELIST                     =      2,
23210e230b6Smaya   _3DPRIM_LINESTRIP                    =      3,
23310e230b6Smaya   _3DPRIM_TRILIST                      =      4,
23410e230b6Smaya   _3DPRIM_TRISTRIP                     =      5,
23510e230b6Smaya   _3DPRIM_TRIFAN                       =      6,
23610e230b6Smaya   _3DPRIM_QUADLIST                     =      7,
23710e230b6Smaya   _3DPRIM_QUADSTRIP                    =      8,
23810e230b6Smaya   _3DPRIM_LINELIST_ADJ                 =      9,
23910e230b6Smaya   _3DPRIM_LINESTRIP_ADJ                =     10,
24010e230b6Smaya   _3DPRIM_TRILIST_ADJ                  =     11,
24110e230b6Smaya   _3DPRIM_TRISTRIP_ADJ                 =     12,
24210e230b6Smaya   _3DPRIM_TRISTRIP_REVERSE             =     13,
24310e230b6Smaya   _3DPRIM_POLYGON                      =     14,
24410e230b6Smaya   _3DPRIM_RECTLIST                     =     15,
24510e230b6Smaya   _3DPRIM_LINELOOP                     =     16,
24610e230b6Smaya   _3DPRIM_POINTLIST_BF                 =     17,
24710e230b6Smaya   _3DPRIM_LINESTRIP_CONT               =     18,
24810e230b6Smaya   _3DPRIM_LINESTRIP_BF                 =     19,
24910e230b6Smaya   _3DPRIM_LINESTRIP_CONT_BF            =     20,
25010e230b6Smaya   _3DPRIM_TRIFAN_NOSTIPPLE             =     22,
25110e230b6Smaya   _3DPRIM_PATCHLIST_1                  =     32,
25210e230b6Smaya   _3DPRIM_PATCHLIST_2                  =     33,
25310e230b6Smaya   _3DPRIM_PATCHLIST_3                  =     34,
25410e230b6Smaya   _3DPRIM_PATCHLIST_4                  =     35,
25510e230b6Smaya   _3DPRIM_PATCHLIST_5                  =     36,
25610e230b6Smaya   _3DPRIM_PATCHLIST_6                  =     37,
25710e230b6Smaya   _3DPRIM_PATCHLIST_7                  =     38,
25810e230b6Smaya   _3DPRIM_PATCHLIST_8                  =     39,
25910e230b6Smaya   _3DPRIM_PATCHLIST_9                  =     40,
26010e230b6Smaya   _3DPRIM_PATCHLIST_10                 =     41,
26110e230b6Smaya   _3DPRIM_PATCHLIST_11                 =     42,
26210e230b6Smaya   _3DPRIM_PATCHLIST_12                 =     43,
26310e230b6Smaya   _3DPRIM_PATCHLIST_13                 =     44,
26410e230b6Smaya   _3DPRIM_PATCHLIST_14                 =     45,
26510e230b6Smaya   _3DPRIM_PATCHLIST_15                 =     46,
26610e230b6Smaya   _3DPRIM_PATCHLIST_16                 =     47,
26710e230b6Smaya   _3DPRIM_PATCHLIST_17                 =     48,
26810e230b6Smaya   _3DPRIM_PATCHLIST_18                 =     49,
26910e230b6Smaya   _3DPRIM_PATCHLIST_19                 =     50,
27010e230b6Smaya   _3DPRIM_PATCHLIST_20                 =     51,
27110e230b6Smaya   _3DPRIM_PATCHLIST_21                 =     52,
27210e230b6Smaya   _3DPRIM_PATCHLIST_22                 =     53,
27310e230b6Smaya   _3DPRIM_PATCHLIST_23                 =     54,
27410e230b6Smaya   _3DPRIM_PATCHLIST_24                 =     55,
27510e230b6Smaya   _3DPRIM_PATCHLIST_25                 =     56,
27610e230b6Smaya   _3DPRIM_PATCHLIST_26                 =     57,
27710e230b6Smaya   _3DPRIM_PATCHLIST_27                 =     58,
27810e230b6Smaya   _3DPRIM_PATCHLIST_28                 =     59,
27910e230b6Smaya   _3DPRIM_PATCHLIST_29                 =     60,
28010e230b6Smaya   _3DPRIM_PATCHLIST_30                 =     61,
28110e230b6Smaya   _3DPRIM_PATCHLIST_31                 =     62,
28210e230b6Smaya   _3DPRIM_PATCHLIST_32                 =     63,
28310e230b6Smaya};
28410e230b6Smaya
28510e230b6Smayaenum GEN75_3D_Stencil_Operation {
28610e230b6Smaya   STENCILOP_KEEP                       =      0,
28710e230b6Smaya   STENCILOP_ZERO                       =      1,
28810e230b6Smaya   STENCILOP_REPLACE                    =      2,
28910e230b6Smaya   STENCILOP_INCRSAT                    =      3,
29010e230b6Smaya   STENCILOP_DECRSAT                    =      4,
29110e230b6Smaya   STENCILOP_INCR                       =      5,
29210e230b6Smaya   STENCILOP_DECR                       =      6,
29310e230b6Smaya   STENCILOP_INVERT                     =      7,
29410e230b6Smaya};
29510e230b6Smaya
29610e230b6Smayaenum GEN75_3D_Vertex_Component_Control {
29710e230b6Smaya   VFCOMP_NOSTORE                       =      0,
29810e230b6Smaya   VFCOMP_STORE_SRC                     =      1,
29910e230b6Smaya   VFCOMP_STORE_0                       =      2,
30010e230b6Smaya   VFCOMP_STORE_1_FP                    =      3,
30110e230b6Smaya   VFCOMP_STORE_1_INT                   =      4,
30210e230b6Smaya   VFCOMP_STORE_VID                     =      5,
30310e230b6Smaya   VFCOMP_STORE_IID                     =      6,
30410e230b6Smaya   VFCOMP_STORE_PID                     =      7,
30510e230b6Smaya};
30610e230b6Smaya
30710e230b6Smayaenum GEN75_ShaderChannelSelect {
30810e230b6Smaya   SCS_ZERO                             =      0,
30910e230b6Smaya   SCS_ONE                              =      1,
31010e230b6Smaya   SCS_RED                              =      4,
31110e230b6Smaya   SCS_GREEN                            =      5,
31210e230b6Smaya   SCS_BLUE                             =      6,
31310e230b6Smaya   SCS_ALPHA                            =      7,
31410e230b6Smaya};
31510e230b6Smaya
31610e230b6Smayaenum GEN75_TextureCoordinateMode {
31710e230b6Smaya   TCM_WRAP                             =      0,
31810e230b6Smaya   TCM_MIRROR                           =      1,
31910e230b6Smaya   TCM_CLAMP                            =      2,
32010e230b6Smaya   TCM_CUBE                             =      3,
32110e230b6Smaya   TCM_CLAMP_BORDER                     =      4,
32210e230b6Smaya   TCM_MIRROR_ONCE                      =      5,
32310e230b6Smaya};
32410e230b6Smaya
32510e230b6Smaya#define GEN75_3DSTATE_CONSTANT_BODY_length      6
32610e230b6Smayastruct GEN75_3DSTATE_CONSTANT_BODY {
32710e230b6Smaya   uint32_t                             ReadLength[4];
32810e230b6Smaya   uint32_t                             MOCS;
32910e230b6Smaya   __gen_address_type                   Buffer[4];
33010e230b6Smaya};
33110e230b6Smaya
33210e230b6Smayastatic inline void
33310e230b6SmayaGEN75_3DSTATE_CONSTANT_BODY_pack(__attribute__((unused)) __gen_user_data *data,
33410e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
33510e230b6Smaya                                 __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_BODY * restrict values)
33610e230b6Smaya{
33710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
33810e230b6Smaya
33910e230b6Smaya   dw[0] =
34010e230b6Smaya      __gen_uint(values->ReadLength[0], 0, 15) |
34110e230b6Smaya      __gen_uint(values->ReadLength[1], 16, 31);
34210e230b6Smaya
34310e230b6Smaya   dw[1] =
34410e230b6Smaya      __gen_uint(values->ReadLength[2], 0, 15) |
34510e230b6Smaya      __gen_uint(values->ReadLength[3], 16, 31);
34610e230b6Smaya
34710e230b6Smaya   const uint32_t v2 =
34810e230b6Smaya      __gen_uint(values->MOCS, 0, 4);
34910e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->Buffer[0], v2);
35010e230b6Smaya
35110e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->Buffer[1], 0);
35210e230b6Smaya
35310e230b6Smaya   dw[4] = __gen_combine_address(data, &dw[4], values->Buffer[2], 0);
35410e230b6Smaya
35510e230b6Smaya   dw[5] = __gen_combine_address(data, &dw[5], values->Buffer[3], 0);
35610e230b6Smaya}
35710e230b6Smaya
35810e230b6Smaya#define GEN75_BINDING_TABLE_EDIT_ENTRY_length      1
35910e230b6Smayastruct GEN75_BINDING_TABLE_EDIT_ENTRY {
36010e230b6Smaya   uint64_t                             SurfaceStatePointer;
36110e230b6Smaya   uint32_t                             BindingTableIndex;
36210e230b6Smaya};
36310e230b6Smaya
36410e230b6Smayastatic inline void
36510e230b6SmayaGEN75_BINDING_TABLE_EDIT_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
36610e230b6Smaya                                    __attribute__((unused)) void * restrict dst,
36710e230b6Smaya                                    __attribute__((unused)) const struct GEN75_BINDING_TABLE_EDIT_ENTRY * restrict values)
36810e230b6Smaya{
36910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
37010e230b6Smaya
37110e230b6Smaya   dw[0] =
37210e230b6Smaya      __gen_offset(values->SurfaceStatePointer, 0, 15) |
37310e230b6Smaya      __gen_uint(values->BindingTableIndex, 16, 23);
37410e230b6Smaya}
37510e230b6Smaya
37610e230b6Smaya#define GEN75_BINDING_TABLE_STATE_length       1
37710e230b6Smayastruct GEN75_BINDING_TABLE_STATE {
37810e230b6Smaya   uint64_t                             SurfaceStatePointer;
37910e230b6Smaya};
38010e230b6Smaya
38110e230b6Smayastatic inline void
38210e230b6SmayaGEN75_BINDING_TABLE_STATE_pack(__attribute__((unused)) __gen_user_data *data,
38310e230b6Smaya                               __attribute__((unused)) void * restrict dst,
38410e230b6Smaya                               __attribute__((unused)) const struct GEN75_BINDING_TABLE_STATE * restrict values)
38510e230b6Smaya{
38610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
38710e230b6Smaya
38810e230b6Smaya   dw[0] =
38910e230b6Smaya      __gen_offset(values->SurfaceStatePointer, 5, 31);
39010e230b6Smaya}
39110e230b6Smaya
39210e230b6Smaya#define GEN75_BLEND_STATE_ENTRY_length         2
39310e230b6Smayastruct GEN75_BLEND_STATE_ENTRY {
39410e230b6Smaya   enum GEN75_3D_Color_Buffer_Blend_Factor DestinationBlendFactor;
39510e230b6Smaya   enum GEN75_3D_Color_Buffer_Blend_Factor SourceBlendFactor;
39610e230b6Smaya   enum GEN75_3D_Color_Buffer_Blend_Function ColorBlendFunction;
39710e230b6Smaya   enum GEN75_3D_Color_Buffer_Blend_Factor DestinationAlphaBlendFactor;
39810e230b6Smaya   enum GEN75_3D_Color_Buffer_Blend_Factor SourceAlphaBlendFactor;
39910e230b6Smaya   enum GEN75_3D_Color_Buffer_Blend_Function AlphaBlendFunction;
40010e230b6Smaya   bool                                 IndependentAlphaBlendEnable;
40110e230b6Smaya   bool                                 ColorBufferBlendEnable;
40210e230b6Smaya   bool                                 PostBlendColorClampEnable;
40310e230b6Smaya   bool                                 PreBlendColorClampEnable;
40410e230b6Smaya   uint32_t                             ColorClampRange;
40510e230b6Smaya#define COLORCLAMP_UNORM                         0
40610e230b6Smaya#define COLORCLAMP_SNORM                         1
40710e230b6Smaya#define COLORCLAMP_RTFORMAT                      2
40810e230b6Smaya   uint32_t                             YDitherOffset;
40910e230b6Smaya   uint32_t                             XDitherOffset;
41010e230b6Smaya   bool                                 ColorDitherEnable;
41110e230b6Smaya   enum GEN75_3D_Compare_Function       AlphaTestFunction;
41210e230b6Smaya   bool                                 AlphaTestEnable;
41310e230b6Smaya   enum GEN75_3D_Logic_Op_Function      LogicOpFunction;
41410e230b6Smaya   bool                                 LogicOpEnable;
41510e230b6Smaya   bool                                 WriteDisableBlue;
41610e230b6Smaya   bool                                 WriteDisableGreen;
41710e230b6Smaya   bool                                 WriteDisableRed;
41810e230b6Smaya   bool                                 WriteDisableAlpha;
41910e230b6Smaya   bool                                 AlphaToCoverageDitherEnable;
42010e230b6Smaya   bool                                 AlphaToOneEnable;
42110e230b6Smaya   bool                                 AlphaToCoverageEnable;
42210e230b6Smaya};
42310e230b6Smaya
42410e230b6Smayastatic inline void
42510e230b6SmayaGEN75_BLEND_STATE_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
42610e230b6Smaya                             __attribute__((unused)) void * restrict dst,
42710e230b6Smaya                             __attribute__((unused)) const struct GEN75_BLEND_STATE_ENTRY * restrict values)
42810e230b6Smaya{
42910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
43010e230b6Smaya
43110e230b6Smaya   dw[0] =
43210e230b6Smaya      __gen_uint(values->DestinationBlendFactor, 0, 4) |
43310e230b6Smaya      __gen_uint(values->SourceBlendFactor, 5, 9) |
43410e230b6Smaya      __gen_uint(values->ColorBlendFunction, 11, 13) |
43510e230b6Smaya      __gen_uint(values->DestinationAlphaBlendFactor, 15, 19) |
43610e230b6Smaya      __gen_uint(values->SourceAlphaBlendFactor, 20, 24) |
43710e230b6Smaya      __gen_uint(values->AlphaBlendFunction, 26, 28) |
43810e230b6Smaya      __gen_uint(values->IndependentAlphaBlendEnable, 30, 30) |
43910e230b6Smaya      __gen_uint(values->ColorBufferBlendEnable, 31, 31);
44010e230b6Smaya
44110e230b6Smaya   dw[1] =
44210e230b6Smaya      __gen_uint(values->PostBlendColorClampEnable, 0, 0) |
44310e230b6Smaya      __gen_uint(values->PreBlendColorClampEnable, 1, 1) |
44410e230b6Smaya      __gen_uint(values->ColorClampRange, 2, 3) |
44510e230b6Smaya      __gen_uint(values->YDitherOffset, 8, 9) |
44610e230b6Smaya      __gen_uint(values->XDitherOffset, 10, 11) |
44710e230b6Smaya      __gen_uint(values->ColorDitherEnable, 12, 12) |
44810e230b6Smaya      __gen_uint(values->AlphaTestFunction, 13, 15) |
44910e230b6Smaya      __gen_uint(values->AlphaTestEnable, 16, 16) |
45010e230b6Smaya      __gen_uint(values->LogicOpFunction, 18, 21) |
45110e230b6Smaya      __gen_uint(values->LogicOpEnable, 22, 22) |
45210e230b6Smaya      __gen_uint(values->WriteDisableBlue, 24, 24) |
45310e230b6Smaya      __gen_uint(values->WriteDisableGreen, 25, 25) |
45410e230b6Smaya      __gen_uint(values->WriteDisableRed, 26, 26) |
45510e230b6Smaya      __gen_uint(values->WriteDisableAlpha, 27, 27) |
45610e230b6Smaya      __gen_uint(values->AlphaToCoverageDitherEnable, 29, 29) |
45710e230b6Smaya      __gen_uint(values->AlphaToOneEnable, 30, 30) |
45810e230b6Smaya      __gen_uint(values->AlphaToCoverageEnable, 31, 31);
45910e230b6Smaya}
46010e230b6Smaya
46110e230b6Smaya#define GEN75_BLEND_STATE_length               0
46210e230b6Smayastruct GEN75_BLEND_STATE {
46310e230b6Smaya   /* variable length fields follow */
46410e230b6Smaya};
46510e230b6Smaya
46610e230b6Smayastatic inline void
46710e230b6SmayaGEN75_BLEND_STATE_pack(__attribute__((unused)) __gen_user_data *data,
46810e230b6Smaya                       __attribute__((unused)) void * restrict dst,
46910e230b6Smaya                       __attribute__((unused)) const struct GEN75_BLEND_STATE * restrict values)
47010e230b6Smaya{
47110e230b6Smaya}
47210e230b6Smaya
47310e230b6Smaya#define GEN75_CC_VIEWPORT_length               2
47410e230b6Smayastruct GEN75_CC_VIEWPORT {
47510e230b6Smaya   float                                MinimumDepth;
47610e230b6Smaya   float                                MaximumDepth;
47710e230b6Smaya};
47810e230b6Smaya
47910e230b6Smayastatic inline void
48010e230b6SmayaGEN75_CC_VIEWPORT_pack(__attribute__((unused)) __gen_user_data *data,
48110e230b6Smaya                       __attribute__((unused)) void * restrict dst,
48210e230b6Smaya                       __attribute__((unused)) const struct GEN75_CC_VIEWPORT * restrict values)
48310e230b6Smaya{
48410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
48510e230b6Smaya
48610e230b6Smaya   dw[0] =
48710e230b6Smaya      __gen_float(values->MinimumDepth);
48810e230b6Smaya
48910e230b6Smaya   dw[1] =
49010e230b6Smaya      __gen_float(values->MaximumDepth);
49110e230b6Smaya}
49210e230b6Smaya
49310e230b6Smaya#define GEN75_COLOR_CALC_STATE_length          6
49410e230b6Smayastruct GEN75_COLOR_CALC_STATE {
49510e230b6Smaya   uint32_t                             AlphaTestFormat;
49610e230b6Smaya#define ALPHATEST_UNORM8                         0
49710e230b6Smaya#define ALPHATEST_FLOAT32                        1
49810e230b6Smaya   bool                                 RoundDisableFunctionDisable;
49910e230b6Smaya   uint32_t                             BackfaceStencilReferenceValue;
50010e230b6Smaya   uint32_t                             StencilReferenceValue;
50110e230b6Smaya   uint32_t                             AlphaReferenceValueAsUNORM8;
50210e230b6Smaya   float                                AlphaReferenceValueAsFLOAT32;
50310e230b6Smaya   float                                BlendConstantColorRed;
50410e230b6Smaya   float                                BlendConstantColorGreen;
50510e230b6Smaya   float                                BlendConstantColorBlue;
50610e230b6Smaya   float                                BlendConstantColorAlpha;
50710e230b6Smaya};
50810e230b6Smaya
50910e230b6Smayastatic inline void
51010e230b6SmayaGEN75_COLOR_CALC_STATE_pack(__attribute__((unused)) __gen_user_data *data,
51110e230b6Smaya                            __attribute__((unused)) void * restrict dst,
51210e230b6Smaya                            __attribute__((unused)) const struct GEN75_COLOR_CALC_STATE * restrict values)
51310e230b6Smaya{
51410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
51510e230b6Smaya
51610e230b6Smaya   dw[0] =
51710e230b6Smaya      __gen_uint(values->AlphaTestFormat, 0, 0) |
51810e230b6Smaya      __gen_uint(values->RoundDisableFunctionDisable, 15, 15) |
51910e230b6Smaya      __gen_uint(values->BackfaceStencilReferenceValue, 16, 23) |
52010e230b6Smaya      __gen_uint(values->StencilReferenceValue, 24, 31);
52110e230b6Smaya
52210e230b6Smaya   dw[1] =
52310e230b6Smaya      __gen_uint(values->AlphaReferenceValueAsUNORM8, 0, 31) |
52410e230b6Smaya      __gen_float(values->AlphaReferenceValueAsFLOAT32);
52510e230b6Smaya
52610e230b6Smaya   dw[2] =
52710e230b6Smaya      __gen_float(values->BlendConstantColorRed);
52810e230b6Smaya
52910e230b6Smaya   dw[3] =
53010e230b6Smaya      __gen_float(values->BlendConstantColorGreen);
53110e230b6Smaya
53210e230b6Smaya   dw[4] =
53310e230b6Smaya      __gen_float(values->BlendConstantColorBlue);
53410e230b6Smaya
53510e230b6Smaya   dw[5] =
53610e230b6Smaya      __gen_float(values->BlendConstantColorAlpha);
53710e230b6Smaya}
53810e230b6Smaya
53910e230b6Smaya#define GEN75_DEPTH_STENCIL_STATE_length       3
54010e230b6Smayastruct GEN75_DEPTH_STENCIL_STATE {
54110e230b6Smaya   enum GEN75_3D_Stencil_Operation      BackfaceStencilPassDepthPassOp;
54210e230b6Smaya   enum GEN75_3D_Stencil_Operation      BackfaceStencilPassDepthFailOp;
54310e230b6Smaya   enum GEN75_3D_Stencil_Operation      BackfaceStencilFailOp;
54410e230b6Smaya   enum GEN75_3D_Compare_Function       BackfaceStencilTestFunction;
54510e230b6Smaya   bool                                 DoubleSidedStencilEnable;
54610e230b6Smaya   bool                                 StencilBufferWriteEnable;
54710e230b6Smaya   enum GEN75_3D_Stencil_Operation      StencilPassDepthPassOp;
54810e230b6Smaya   enum GEN75_3D_Stencil_Operation      StencilPassDepthFailOp;
54910e230b6Smaya   enum GEN75_3D_Stencil_Operation      StencilFailOp;
55010e230b6Smaya   enum GEN75_3D_Compare_Function       StencilTestFunction;
55110e230b6Smaya   bool                                 StencilTestEnable;
55210e230b6Smaya   uint32_t                             BackfaceStencilWriteMask;
55310e230b6Smaya   uint32_t                             BackfaceStencilTestMask;
55410e230b6Smaya   uint32_t                             StencilWriteMask;
55510e230b6Smaya   uint32_t                             StencilTestMask;
55610e230b6Smaya   bool                                 DepthBufferWriteEnable;
55710e230b6Smaya   enum GEN75_3D_Compare_Function       DepthTestFunction;
55810e230b6Smaya   bool                                 DepthTestEnable;
55910e230b6Smaya};
56010e230b6Smaya
56110e230b6Smayastatic inline void
56210e230b6SmayaGEN75_DEPTH_STENCIL_STATE_pack(__attribute__((unused)) __gen_user_data *data,
56310e230b6Smaya                               __attribute__((unused)) void * restrict dst,
56410e230b6Smaya                               __attribute__((unused)) const struct GEN75_DEPTH_STENCIL_STATE * restrict values)
56510e230b6Smaya{
56610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
56710e230b6Smaya
56810e230b6Smaya   dw[0] =
56910e230b6Smaya      __gen_uint(values->BackfaceStencilPassDepthPassOp, 3, 5) |
57010e230b6Smaya      __gen_uint(values->BackfaceStencilPassDepthFailOp, 6, 8) |
57110e230b6Smaya      __gen_uint(values->BackfaceStencilFailOp, 9, 11) |
57210e230b6Smaya      __gen_uint(values->BackfaceStencilTestFunction, 12, 14) |
57310e230b6Smaya      __gen_uint(values->DoubleSidedStencilEnable, 15, 15) |
57410e230b6Smaya      __gen_uint(values->StencilBufferWriteEnable, 18, 18) |
57510e230b6Smaya      __gen_uint(values->StencilPassDepthPassOp, 19, 21) |
57610e230b6Smaya      __gen_uint(values->StencilPassDepthFailOp, 22, 24) |
57710e230b6Smaya      __gen_uint(values->StencilFailOp, 25, 27) |
57810e230b6Smaya      __gen_uint(values->StencilTestFunction, 28, 30) |
57910e230b6Smaya      __gen_uint(values->StencilTestEnable, 31, 31);
58010e230b6Smaya
58110e230b6Smaya   dw[1] =
58210e230b6Smaya      __gen_uint(values->BackfaceStencilWriteMask, 0, 7) |
58310e230b6Smaya      __gen_uint(values->BackfaceStencilTestMask, 8, 15) |
58410e230b6Smaya      __gen_uint(values->StencilWriteMask, 16, 23) |
58510e230b6Smaya      __gen_uint(values->StencilTestMask, 24, 31);
58610e230b6Smaya
58710e230b6Smaya   dw[2] =
58810e230b6Smaya      __gen_uint(values->DepthBufferWriteEnable, 26, 26) |
58910e230b6Smaya      __gen_uint(values->DepthTestFunction, 27, 29) |
59010e230b6Smaya      __gen_uint(values->DepthTestEnable, 31, 31);
59110e230b6Smaya}
59210e230b6Smaya
59310e230b6Smaya#define GEN75_GATHER_CONSTANT_ENTRY_length      1
59410e230b6Smayastruct GEN75_GATHER_CONSTANT_ENTRY {
59510e230b6Smaya   uint32_t                             BindingTableIndexOffset;
59610e230b6Smaya   uint32_t                             ChannelMask;
59710e230b6Smaya   uint64_t                             ConstantBufferOffset;
59810e230b6Smaya};
59910e230b6Smaya
60010e230b6Smayastatic inline void
60110e230b6SmayaGEN75_GATHER_CONSTANT_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
60210e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
60310e230b6Smaya                                 __attribute__((unused)) const struct GEN75_GATHER_CONSTANT_ENTRY * restrict values)
60410e230b6Smaya{
60510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
60610e230b6Smaya
60710e230b6Smaya   dw[0] =
60810e230b6Smaya      __gen_uint(values->BindingTableIndexOffset, 0, 3) |
60910e230b6Smaya      __gen_uint(values->ChannelMask, 4, 7) |
61010e230b6Smaya      __gen_offset(values->ConstantBufferOffset, 8, 15);
61110e230b6Smaya}
61210e230b6Smaya
61310e230b6Smaya#define GEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT_length      3
61410e230b6Smayastruct GEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT {
61510e230b6Smaya   bool                                 MBErrorConcealmentPSliceWeightPredictionDisable;
61610e230b6Smaya   bool                                 MBErrorConcealmentPSliceMotionVectorsOverrideDisable;
61710e230b6Smaya   bool                                 MBErrorConcealmentBSpatialWeightPredictionDisable;
61810e230b6Smaya   bool                                 MBErrorConcealmentBSpatialMotionVectorsOverrideDisable;
61910e230b6Smaya   uint32_t                             MBErrorConcealmentBSpatialPredictionMode;
62010e230b6Smaya   bool                                 MBHeaderErrorHandling;
62110e230b6Smaya   bool                                 EntropyErrorHandling;
62210e230b6Smaya   bool                                 MPRErrorHandling;
62310e230b6Smaya   bool                                 BSDPrematureCompleteErrorHandling;
62410e230b6Smaya   uint32_t                             ConcealmentPictureID;
62510e230b6Smaya   bool                                 MBErrorConcealmentBTemporalWeightPredictionDisable;
62610e230b6Smaya   bool                                 MBErrorConcealmentBTemporalMotionVectorsOverrideEnable;
62710e230b6Smaya   uint32_t                             MBErrorConcealmentBTemporalPredictionMode;
62810e230b6Smaya   bool                                 IntraPredMode4x48x8LumaErrorControl;
62910e230b6Smaya   uint32_t                             InitCurrentMBNumber;
63010e230b6Smaya   uint32_t                             ConcealmentMethod;
63110e230b6Smaya   uint32_t                             FirstMBBitOffset;
63210e230b6Smaya   bool                                 LastSlice;
63310e230b6Smaya   bool                                 EmulationPreventionBytePresent;
63410e230b6Smaya   bool                                 FixPrevMBSkipped;
63510e230b6Smaya   uint32_t                             FirstMBByteOffsetofSliceDataorSliceHeader;
63610e230b6Smaya   bool                                 IntraPredictionErrorControl;
63710e230b6Smaya   bool                                 Intra8x84x4PredictionErrorConcealmentControl;
63810e230b6Smaya   uint32_t                             BSliceTemporalInterConcealmentMode;
63910e230b6Smaya   uint32_t                             BSliceSpatialInterConcealmentMode;
64010e230b6Smaya   uint32_t                             BSliceInterDirectTypeConcealmentMode;
64110e230b6Smaya   uint32_t                             BSliceConcealmentMode;
64210e230b6Smaya#define IntraConcealment                         1
64310e230b6Smaya#define InterConcealment                         0
64410e230b6Smaya   uint32_t                             PSliceInterConcealmentMode;
64510e230b6Smaya   uint32_t                             PSliceConcealmentMode;
64610e230b6Smaya#define IntraConcealment                         1
64710e230b6Smaya#define InterConcealment                         0
64810e230b6Smaya   uint32_t                             ConcealmentReferencePictureFieldBit;
64910e230b6Smaya   uint32_t                             ISliceConcealmentMode;
65010e230b6Smaya#define IntraConcealment                         1
65110e230b6Smaya#define InterConcealment                         0
65210e230b6Smaya};
65310e230b6Smaya
65410e230b6Smayastatic inline void
65510e230b6SmayaGEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT_pack(__attribute__((unused)) __gen_user_data *data,
65610e230b6Smaya                                                          __attribute__((unused)) void * restrict dst,
65710e230b6Smaya                                                          __attribute__((unused)) const struct GEN75_INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT * restrict values)
65810e230b6Smaya{
65910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
66010e230b6Smaya
66110e230b6Smaya   dw[0] =
66210e230b6Smaya      __gen_uint(values->MBErrorConcealmentPSliceWeightPredictionDisable, 0, 0) |
66310e230b6Smaya      __gen_uint(values->MBErrorConcealmentPSliceMotionVectorsOverrideDisable, 1, 1) |
66410e230b6Smaya      __gen_uint(values->MBErrorConcealmentBSpatialWeightPredictionDisable, 3, 3) |
66510e230b6Smaya      __gen_uint(values->MBErrorConcealmentBSpatialMotionVectorsOverrideDisable, 4, 4) |
66610e230b6Smaya      __gen_uint(values->MBErrorConcealmentBSpatialPredictionMode, 6, 7) |
66710e230b6Smaya      __gen_uint(values->MBHeaderErrorHandling, 8, 8) |
66810e230b6Smaya      __gen_uint(values->EntropyErrorHandling, 10, 10) |
66910e230b6Smaya      __gen_uint(values->MPRErrorHandling, 12, 12) |
67010e230b6Smaya      __gen_uint(values->BSDPrematureCompleteErrorHandling, 14, 14) |
67110e230b6Smaya      __gen_uint(values->ConcealmentPictureID, 16, 21) |
67210e230b6Smaya      __gen_uint(values->MBErrorConcealmentBTemporalWeightPredictionDisable, 24, 24) |
67310e230b6Smaya      __gen_uint(values->MBErrorConcealmentBTemporalMotionVectorsOverrideEnable, 25, 25) |
67410e230b6Smaya      __gen_uint(values->MBErrorConcealmentBTemporalPredictionMode, 27, 28) |
67510e230b6Smaya      __gen_uint(values->IntraPredMode4x48x8LumaErrorControl, 29, 29) |
67610e230b6Smaya      __gen_uint(values->InitCurrentMBNumber, 30, 30) |
67710e230b6Smaya      __gen_uint(values->ConcealmentMethod, 31, 31);
67810e230b6Smaya
67910e230b6Smaya   dw[1] =
68010e230b6Smaya      __gen_uint(values->FirstMBBitOffset, 0, 2) |
68110e230b6Smaya      __gen_uint(values->LastSlice, 3, 3) |
68210e230b6Smaya      __gen_uint(values->EmulationPreventionBytePresent, 4, 4) |
68310e230b6Smaya      __gen_uint(values->FixPrevMBSkipped, 7, 7) |
68410e230b6Smaya      __gen_uint(values->FirstMBByteOffsetofSliceDataorSliceHeader, 16, 31);
68510e230b6Smaya
68610e230b6Smaya   dw[2] =
68710e230b6Smaya      __gen_uint(values->IntraPredictionErrorControl, 0, 0) |
68810e230b6Smaya      __gen_uint(values->Intra8x84x4PredictionErrorConcealmentControl, 1, 1) |
68910e230b6Smaya      __gen_uint(values->BSliceTemporalInterConcealmentMode, 4, 6) |
69010e230b6Smaya      __gen_uint(values->BSliceSpatialInterConcealmentMode, 8, 10) |
69110e230b6Smaya      __gen_uint(values->BSliceInterDirectTypeConcealmentMode, 12, 13) |
69210e230b6Smaya      __gen_uint(values->BSliceConcealmentMode, 15, 15) |
69310e230b6Smaya      __gen_uint(values->PSliceInterConcealmentMode, 16, 18) |
69410e230b6Smaya      __gen_uint(values->PSliceConcealmentMode, 23, 23) |
69510e230b6Smaya      __gen_uint(values->ConcealmentReferencePictureFieldBit, 24, 29) |
69610e230b6Smaya      __gen_uint(values->ISliceConcealmentMode, 31, 31);
69710e230b6Smaya}
69810e230b6Smaya
69910e230b6Smaya#define GEN75_INTERFACE_DESCRIPTOR_DATA_length      8
70010e230b6Smayastruct GEN75_INTERFACE_DESCRIPTOR_DATA {
70110e230b6Smaya   uint64_t                             KernelStartPointer;
70210e230b6Smaya   bool                                 SoftwareExceptionEnable;
70310e230b6Smaya   bool                                 MaskStackExceptionEnable;
70410e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
70510e230b6Smaya   uint32_t                             FloatingPointMode;
70610e230b6Smaya#define IEEE754                                  0
70710e230b6Smaya#define Alternate                                1
70810e230b6Smaya   uint32_t                             ThreadPriority;
70910e230b6Smaya#define NormalPriority                           0
71010e230b6Smaya#define HighPriority                             1
71110e230b6Smaya   bool                                 SingleProgramFlow;
71210e230b6Smaya   uint32_t                             SamplerCount;
71310e230b6Smaya#define Nosamplersused                           0
71410e230b6Smaya#define Between1and4samplersused                 1
71510e230b6Smaya#define Between5and8samplersused                 2
71610e230b6Smaya#define Between9and12samplersused                3
71710e230b6Smaya#define Between13and16samplersused               4
71810e230b6Smaya   uint64_t                             SamplerStatePointer;
71910e230b6Smaya   uint32_t                             BindingTableEntryCount;
72010e230b6Smaya   uint64_t                             BindingTablePointer;
72110e230b6Smaya   uint32_t                             ConstantURBEntryReadLength;
72210e230b6Smaya   uint32_t                             NumberofThreadsinGPGPUThreadGroup;
72310e230b6Smaya   uint32_t                             SharedLocalMemorySize;
72410e230b6Smaya   bool                                 BarrierEnable;
72510e230b6Smaya   uint32_t                             RoundingMode;
72610e230b6Smaya#define RTNE                                     0
72710e230b6Smaya#define RU                                       1
72810e230b6Smaya#define RD                                       2
72910e230b6Smaya#define RTZ                                      3
73010e230b6Smaya   uint32_t                             CrossThreadConstantDataReadLength;
73110e230b6Smaya};
73210e230b6Smaya
73310e230b6Smayastatic inline void
73410e230b6SmayaGEN75_INTERFACE_DESCRIPTOR_DATA_pack(__attribute__((unused)) __gen_user_data *data,
73510e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
73610e230b6Smaya                                     __attribute__((unused)) const struct GEN75_INTERFACE_DESCRIPTOR_DATA * restrict values)
73710e230b6Smaya{
73810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
73910e230b6Smaya
74010e230b6Smaya   dw[0] =
74110e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 31);
74210e230b6Smaya
74310e230b6Smaya   dw[1] =
74410e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
74510e230b6Smaya      __gen_uint(values->MaskStackExceptionEnable, 11, 11) |
74610e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
74710e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
74810e230b6Smaya      __gen_uint(values->ThreadPriority, 17, 17) |
74910e230b6Smaya      __gen_uint(values->SingleProgramFlow, 18, 18);
75010e230b6Smaya
75110e230b6Smaya   dw[2] =
75210e230b6Smaya      __gen_uint(values->SamplerCount, 2, 4) |
75310e230b6Smaya      __gen_offset(values->SamplerStatePointer, 5, 31);
75410e230b6Smaya
75510e230b6Smaya   dw[3] =
75610e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 0, 4) |
75710e230b6Smaya      __gen_offset(values->BindingTablePointer, 5, 15);
75810e230b6Smaya
75910e230b6Smaya   dw[4] =
76010e230b6Smaya      __gen_uint(values->ConstantURBEntryReadLength, 16, 31);
76110e230b6Smaya
76210e230b6Smaya   dw[5] =
76310e230b6Smaya      __gen_uint(values->NumberofThreadsinGPGPUThreadGroup, 0, 7) |
76410e230b6Smaya      __gen_uint(values->SharedLocalMemorySize, 16, 20) |
76510e230b6Smaya      __gen_uint(values->BarrierEnable, 21, 21) |
76610e230b6Smaya      __gen_uint(values->RoundingMode, 22, 23);
76710e230b6Smaya
76810e230b6Smaya   dw[6] =
76910e230b6Smaya      __gen_uint(values->CrossThreadConstantDataReadLength, 0, 7);
77010e230b6Smaya
77110e230b6Smaya   dw[7] = 0;
77210e230b6Smaya}
77310e230b6Smaya
77410e230b6Smaya#define GEN75_MEMORY_OBJECT_CONTROL_STATE_length      1
77510e230b6Smayastruct GEN75_MEMORY_OBJECT_CONTROL_STATE {
77610e230b6Smaya   uint32_t                             L3CacheabilityControlL3CC;
77710e230b6Smaya   uint32_t                             LLCeLLCCacheabilityControlLLCCC;
77810e230b6Smaya};
77910e230b6Smaya
78010e230b6Smayastatic inline void
78110e230b6SmayaGEN75_MEMORY_OBJECT_CONTROL_STATE_pack(__attribute__((unused)) __gen_user_data *data,
78210e230b6Smaya                                       __attribute__((unused)) void * restrict dst,
78310e230b6Smaya                                       __attribute__((unused)) const struct GEN75_MEMORY_OBJECT_CONTROL_STATE * restrict values)
78410e230b6Smaya{
78510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
78610e230b6Smaya
78710e230b6Smaya   dw[0] =
78810e230b6Smaya      __gen_uint(values->L3CacheabilityControlL3CC, 0, 0) |
78910e230b6Smaya      __gen_uint(values->LLCeLLCCacheabilityControlLLCCC, 1, 2);
79010e230b6Smaya}
79110e230b6Smaya
79210e230b6Smaya#define GEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION_length      2
79310e230b6Smayastruct GEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION {
79410e230b6Smaya   uint32_t                             FirstMBBitOffset;
79510e230b6Smaya   bool                                 LastMB;
79610e230b6Smaya   bool                                 LastPicSlice;
79710e230b6Smaya   uint32_t                             SliceConcealmentType;
79810e230b6Smaya   uint32_t                             SliceConcealmentOverride;
79910e230b6Smaya   uint32_t                             MBCount;
80010e230b6Smaya   uint32_t                             SliceVerticalPosition;
80110e230b6Smaya   uint32_t                             SliceHorizontalPosition;
80210e230b6Smaya   uint32_t                             NextSliceHorizontalPosition;
80310e230b6Smaya   uint32_t                             NextSliceVerticalPosition;
80410e230b6Smaya   uint32_t                             QuantizerScaleCode;
80510e230b6Smaya};
80610e230b6Smaya
80710e230b6Smayastatic inline void
80810e230b6SmayaGEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION_pack(__attribute__((unused)) __gen_user_data *data,
80910e230b6Smaya                                                        __attribute__((unused)) void * restrict dst,
81010e230b6Smaya                                                        __attribute__((unused)) const struct GEN75_MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION * restrict values)
81110e230b6Smaya{
81210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
81310e230b6Smaya
81410e230b6Smaya   dw[0] =
81510e230b6Smaya      __gen_uint(values->FirstMBBitOffset, 0, 2) |
81610e230b6Smaya      __gen_uint(values->LastMB, 3, 3) |
81710e230b6Smaya      __gen_uint(values->LastPicSlice, 5, 5) |
81810e230b6Smaya      __gen_uint(values->SliceConcealmentType, 6, 6) |
81910e230b6Smaya      __gen_uint(values->SliceConcealmentOverride, 7, 7) |
82010e230b6Smaya      __gen_uint(values->MBCount, 8, 15) |
82110e230b6Smaya      __gen_uint(values->SliceVerticalPosition, 16, 23) |
82210e230b6Smaya      __gen_uint(values->SliceHorizontalPosition, 24, 31);
82310e230b6Smaya
82410e230b6Smaya   dw[1] =
82510e230b6Smaya      __gen_uint(values->NextSliceHorizontalPosition, 0, 7) |
82610e230b6Smaya      __gen_uint(values->NextSliceVerticalPosition, 8, 16) |
82710e230b6Smaya      __gen_uint(values->QuantizerScaleCode, 24, 28);
82810e230b6Smaya}
82910e230b6Smaya
83010e230b6Smaya#define GEN75_MI_MATH_ALU_INSTRUCTION_length      1
83110e230b6Smayastruct GEN75_MI_MATH_ALU_INSTRUCTION {
83210e230b6Smaya   uint32_t                             Operand2;
83310e230b6Smaya#define MI_ALU_REG0                              0
83410e230b6Smaya#define MI_ALU_REG1                              1
83510e230b6Smaya#define MI_ALU_REG2                              2
83610e230b6Smaya#define MI_ALU_REG3                              3
83710e230b6Smaya#define MI_ALU_REG4                              4
83810e230b6Smaya#define MI_ALU_REG5                              5
83910e230b6Smaya#define MI_ALU_REG6                              6
84010e230b6Smaya#define MI_ALU_REG7                              7
84110e230b6Smaya#define MI_ALU_REG8                              8
84210e230b6Smaya#define MI_ALU_REG9                              9
84310e230b6Smaya#define MI_ALU_REG10                             10
84410e230b6Smaya#define MI_ALU_REG11                             11
84510e230b6Smaya#define MI_ALU_REG12                             12
84610e230b6Smaya#define MI_ALU_REG13                             13
84710e230b6Smaya#define MI_ALU_REG14                             14
84810e230b6Smaya#define MI_ALU_REG15                             15
84910e230b6Smaya#define MI_ALU_SRCA                              32
85010e230b6Smaya#define MI_ALU_SRCB                              33
85110e230b6Smaya#define MI_ALU_ACCU                              49
85210e230b6Smaya#define MI_ALU_ZF                                50
85310e230b6Smaya#define MI_ALU_CF                                51
85410e230b6Smaya   uint32_t                             Operand1;
85510e230b6Smaya#define MI_ALU_REG0                              0
85610e230b6Smaya#define MI_ALU_REG1                              1
85710e230b6Smaya#define MI_ALU_REG2                              2
85810e230b6Smaya#define MI_ALU_REG3                              3
85910e230b6Smaya#define MI_ALU_REG4                              4
86010e230b6Smaya#define MI_ALU_REG5                              5
86110e230b6Smaya#define MI_ALU_REG6                              6
86210e230b6Smaya#define MI_ALU_REG7                              7
86310e230b6Smaya#define MI_ALU_REG8                              8
86410e230b6Smaya#define MI_ALU_REG9                              9
86510e230b6Smaya#define MI_ALU_REG10                             10
86610e230b6Smaya#define MI_ALU_REG11                             11
86710e230b6Smaya#define MI_ALU_REG12                             12
86810e230b6Smaya#define MI_ALU_REG13                             13
86910e230b6Smaya#define MI_ALU_REG14                             14
87010e230b6Smaya#define MI_ALU_REG15                             15
87110e230b6Smaya#define MI_ALU_SRCA                              32
87210e230b6Smaya#define MI_ALU_SRCB                              33
87310e230b6Smaya#define MI_ALU_ACCU                              49
87410e230b6Smaya#define MI_ALU_ZF                                50
87510e230b6Smaya#define MI_ALU_CF                                51
87610e230b6Smaya   uint32_t                             ALUOpcode;
87710e230b6Smaya#define MI_ALU_NOOP                              0
87810e230b6Smaya#define MI_ALU_LOAD                              128
87910e230b6Smaya#define MI_ALU_LOADINV                           1152
88010e230b6Smaya#define MI_ALU_LOAD0                             129
88110e230b6Smaya#define MI_ALU_LOAD1                             1153
88210e230b6Smaya#define MI_ALU_ADD                               256
88310e230b6Smaya#define MI_ALU_SUB                               257
88410e230b6Smaya#define MI_ALU_AND                               258
88510e230b6Smaya#define MI_ALU_OR                                259
88610e230b6Smaya#define MI_ALU_XOR                               260
88710e230b6Smaya#define MI_ALU_STORE                             384
88810e230b6Smaya#define MI_ALU_STOREINV                          1408
88910e230b6Smaya};
89010e230b6Smaya
89110e230b6Smayastatic inline void
89210e230b6SmayaGEN75_MI_MATH_ALU_INSTRUCTION_pack(__attribute__((unused)) __gen_user_data *data,
89310e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
89410e230b6Smaya                                   __attribute__((unused)) const struct GEN75_MI_MATH_ALU_INSTRUCTION * restrict values)
89510e230b6Smaya{
89610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
89710e230b6Smaya
89810e230b6Smaya   dw[0] =
89910e230b6Smaya      __gen_uint(values->Operand2, 0, 9) |
90010e230b6Smaya      __gen_uint(values->Operand1, 10, 19) |
90110e230b6Smaya      __gen_uint(values->ALUOpcode, 20, 31);
90210e230b6Smaya}
90310e230b6Smaya
90410e230b6Smaya#define GEN75_PALETTE_ENTRY_length             1
90510e230b6Smayastruct GEN75_PALETTE_ENTRY {
90610e230b6Smaya   uint32_t                             Blue;
90710e230b6Smaya   uint32_t                             Green;
90810e230b6Smaya   uint32_t                             Red;
90910e230b6Smaya   uint32_t                             Alpha;
91010e230b6Smaya};
91110e230b6Smaya
91210e230b6Smayastatic inline void
91310e230b6SmayaGEN75_PALETTE_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
91410e230b6Smaya                         __attribute__((unused)) void * restrict dst,
91510e230b6Smaya                         __attribute__((unused)) const struct GEN75_PALETTE_ENTRY * restrict values)
91610e230b6Smaya{
91710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
91810e230b6Smaya
91910e230b6Smaya   dw[0] =
92010e230b6Smaya      __gen_uint(values->Blue, 0, 7) |
92110e230b6Smaya      __gen_uint(values->Green, 8, 15) |
92210e230b6Smaya      __gen_uint(values->Red, 16, 23) |
92310e230b6Smaya      __gen_uint(values->Alpha, 24, 31);
92410e230b6Smaya}
92510e230b6Smaya
92610e230b6Smaya#define GEN75_RENDER_SURFACE_STATE_length      8
92710e230b6Smayastruct GEN75_RENDER_SURFACE_STATE {
92810e230b6Smaya   bool                                 CubeFaceEnablePositiveZ;
92910e230b6Smaya   bool                                 CubeFaceEnableNegativeZ;
93010e230b6Smaya   bool                                 CubeFaceEnablePositiveY;
93110e230b6Smaya   bool                                 CubeFaceEnableNegativeY;
93210e230b6Smaya   bool                                 CubeFaceEnablePositiveX;
93310e230b6Smaya   bool                                 CubeFaceEnableNegativeX;
93410e230b6Smaya   uint32_t                             MediaBoundaryPixelMode;
93510e230b6Smaya#define NORMAL_MODE                              0
93610e230b6Smaya#define PROGRESSIVE_FRAME                        2
93710e230b6Smaya#define INTERLACED_FRAME                         3
93810e230b6Smaya   uint32_t                             RenderCacheReadWriteMode;
93910e230b6Smaya   uint32_t                             SurfaceArraySpacing;
94010e230b6Smaya#define ARYSPC_FULL                              0
94110e230b6Smaya#define ARYSPC_LOD0                              1
94210e230b6Smaya   uint32_t                             VerticalLineStrideOffset;
94310e230b6Smaya   uint32_t                             VerticalLineStride;
94410e230b6Smaya   uint32_t                             TileWalk;
94510e230b6Smaya#define TILEWALK_XMAJOR                          0
94610e230b6Smaya#define TILEWALK_YMAJOR                          1
94710e230b6Smaya   bool                                 TiledSurface;
94810e230b6Smaya   uint32_t                             SurfaceHorizontalAlignment;
94910e230b6Smaya#define HALIGN_4                                 0
95010e230b6Smaya#define HALIGN_8                                 1
95110e230b6Smaya   uint32_t                             SurfaceVerticalAlignment;
95210e230b6Smaya#define VALIGN_2                                 0
95310e230b6Smaya#define VALIGN_4                                 1
95410e230b6Smaya   uint32_t                             SurfaceFormat;
95510e230b6Smaya   bool                                 SurfaceArray;
95610e230b6Smaya   uint32_t                             SurfaceType;
95710e230b6Smaya#define SURFTYPE_1D                              0
95810e230b6Smaya#define SURFTYPE_2D                              1
95910e230b6Smaya#define SURFTYPE_3D                              2
96010e230b6Smaya#define SURFTYPE_CUBE                            3
96110e230b6Smaya#define SURFTYPE_BUFFER                          4
96210e230b6Smaya#define SURFTYPE_STRBUF                          5
96310e230b6Smaya#define SURFTYPE_NULL                            7
96410e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
96510e230b6Smaya   uint32_t                             Width;
96610e230b6Smaya   uint32_t                             Height;
96710e230b6Smaya   uint32_t                             SurfacePitch;
96810e230b6Smaya   uint32_t                             IntegerSurfaceFormat;
96910e230b6Smaya   uint32_t                             Depth;
97010e230b6Smaya   uint32_t                             MultisamplePositionPaletteIndex;
97110e230b6Smaya   uint32_t                             StrbufMinimumArrayElement;
97210e230b6Smaya   uint32_t                             NumberofMultisamples;
97310e230b6Smaya#define MULTISAMPLECOUNT_1                       0
97410e230b6Smaya#define MULTISAMPLECOUNT_4                       2
97510e230b6Smaya#define MULTISAMPLECOUNT_8                       3
97610e230b6Smaya   uint32_t                             MultisampledSurfaceStorageFormat;
97710e230b6Smaya#define MSFMT_MSS                                0
97810e230b6Smaya#define MSFMT_DEPTH_STENCIL                      1
97910e230b6Smaya   uint32_t                             RenderTargetViewExtent;
98010e230b6Smaya   uint32_t                             MinimumArrayElement;
98110e230b6Smaya   uint32_t                             RenderTargetRotation;
98210e230b6Smaya#define RTROTATE_0DEG                            0
98310e230b6Smaya#define RTROTATE_90DEG                           1
98410e230b6Smaya#define RTROTATE_270DEG                          3
98510e230b6Smaya   uint32_t                             MIPCountLOD;
98610e230b6Smaya   uint32_t                             SurfaceMinLOD;
98710e230b6Smaya   uint32_t                             MOCS;
98810e230b6Smaya   uint32_t                             YOffset;
98910e230b6Smaya   uint32_t                             XOffset;
99010e230b6Smaya   bool                                 MCSEnable;
99110e230b6Smaya   uint32_t                             YOffsetforUVPlane;
99210e230b6Smaya   bool                                 AppendCounterEnable;
99310e230b6Smaya   uint32_t                             AuxiliarySurfacePitch;
99410e230b6Smaya   __gen_address_type                   AppendCounterAddress;
99510e230b6Smaya   __gen_address_type                   AuxiliarySurfaceBaseAddress;
99610e230b6Smaya   uint32_t                             XOffsetforUVPlane;
99710e230b6Smaya   uint32_t                             ReservedMBZ;
99810e230b6Smaya   float                                ResourceMinLOD;
99910e230b6Smaya   enum GEN75_ShaderChannelSelect       ShaderChannelSelectAlpha;
100010e230b6Smaya   enum GEN75_ShaderChannelSelect       ShaderChannelSelectBlue;
100110e230b6Smaya   enum GEN75_ShaderChannelSelect       ShaderChannelSelectGreen;
100210e230b6Smaya   enum GEN75_ShaderChannelSelect       ShaderChannelSelectRed;
100310e230b6Smaya   uint32_t                             AlphaClearColor;
100410e230b6Smaya   uint32_t                             BlueClearColor;
100510e230b6Smaya   uint32_t                             GreenClearColor;
100610e230b6Smaya   uint32_t                             RedClearColor;
100710e230b6Smaya};
100810e230b6Smaya
100910e230b6Smayastatic inline void
101010e230b6SmayaGEN75_RENDER_SURFACE_STATE_pack(__attribute__((unused)) __gen_user_data *data,
101110e230b6Smaya                                __attribute__((unused)) void * restrict dst,
101210e230b6Smaya                                __attribute__((unused)) const struct GEN75_RENDER_SURFACE_STATE * restrict values)
101310e230b6Smaya{
101410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
101510e230b6Smaya
101610e230b6Smaya   dw[0] =
101710e230b6Smaya      __gen_uint(values->CubeFaceEnablePositiveZ, 0, 0) |
101810e230b6Smaya      __gen_uint(values->CubeFaceEnableNegativeZ, 1, 1) |
101910e230b6Smaya      __gen_uint(values->CubeFaceEnablePositiveY, 2, 2) |
102010e230b6Smaya      __gen_uint(values->CubeFaceEnableNegativeY, 3, 3) |
102110e230b6Smaya      __gen_uint(values->CubeFaceEnablePositiveX, 4, 4) |
102210e230b6Smaya      __gen_uint(values->CubeFaceEnableNegativeX, 5, 5) |
102310e230b6Smaya      __gen_uint(values->MediaBoundaryPixelMode, 6, 7) |
102410e230b6Smaya      __gen_uint(values->RenderCacheReadWriteMode, 8, 8) |
102510e230b6Smaya      __gen_uint(values->SurfaceArraySpacing, 10, 10) |
102610e230b6Smaya      __gen_uint(values->VerticalLineStrideOffset, 11, 11) |
102710e230b6Smaya      __gen_uint(values->VerticalLineStride, 12, 12) |
102810e230b6Smaya      __gen_uint(values->TileWalk, 13, 13) |
102910e230b6Smaya      __gen_uint(values->TiledSurface, 14, 14) |
103010e230b6Smaya      __gen_uint(values->SurfaceHorizontalAlignment, 15, 15) |
103110e230b6Smaya      __gen_uint(values->SurfaceVerticalAlignment, 16, 17) |
103210e230b6Smaya      __gen_uint(values->SurfaceFormat, 18, 26) |
103310e230b6Smaya      __gen_uint(values->SurfaceArray, 28, 28) |
103410e230b6Smaya      __gen_uint(values->SurfaceType, 29, 31);
103510e230b6Smaya
103610e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->SurfaceBaseAddress, 0);
103710e230b6Smaya
103810e230b6Smaya   dw[2] =
103910e230b6Smaya      __gen_uint(values->Width, 0, 13) |
104010e230b6Smaya      __gen_uint(values->Height, 16, 29);
104110e230b6Smaya
104210e230b6Smaya   dw[3] =
104310e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 17) |
104410e230b6Smaya      __gen_uint(values->IntegerSurfaceFormat, 18, 20) |
104510e230b6Smaya      __gen_uint(values->Depth, 21, 31);
104610e230b6Smaya
104710e230b6Smaya   dw[4] =
104810e230b6Smaya      __gen_uint(values->MultisamplePositionPaletteIndex, 0, 2) |
104910e230b6Smaya      __gen_uint(values->StrbufMinimumArrayElement, 0, 26) |
105010e230b6Smaya      __gen_uint(values->NumberofMultisamples, 3, 5) |
105110e230b6Smaya      __gen_uint(values->MultisampledSurfaceStorageFormat, 6, 6) |
105210e230b6Smaya      __gen_uint(values->RenderTargetViewExtent, 7, 17) |
105310e230b6Smaya      __gen_uint(values->MinimumArrayElement, 18, 28) |
105410e230b6Smaya      __gen_uint(values->RenderTargetRotation, 29, 30);
105510e230b6Smaya
105610e230b6Smaya   dw[5] =
105710e230b6Smaya      __gen_uint(values->MIPCountLOD, 0, 3) |
105810e230b6Smaya      __gen_uint(values->SurfaceMinLOD, 4, 7) |
105910e230b6Smaya      __gen_uint(values->MOCS, 16, 19) |
106010e230b6Smaya      __gen_uint(values->YOffset, 20, 23) |
106110e230b6Smaya      __gen_uint(values->XOffset, 25, 31);
106210e230b6Smaya
106310e230b6Smaya   const uint32_t v6 =
106410e230b6Smaya      __gen_uint(values->MCSEnable, 0, 0) |
106510e230b6Smaya      __gen_uint(values->YOffsetforUVPlane, 0, 13) |
106610e230b6Smaya      __gen_uint(values->AppendCounterEnable, 1, 1) |
106710e230b6Smaya      __gen_uint(values->AuxiliarySurfacePitch, 3, 11) |
106810e230b6Smaya      __gen_uint(values->XOffsetforUVPlane, 16, 29) |
106910e230b6Smaya      __gen_uint(values->ReservedMBZ, 30, 31);
107010e230b6Smaya   dw[6] = __gen_combine_address(data, &dw[6], values->AuxiliarySurfaceBaseAddress, v6);
107110e230b6Smaya
107210e230b6Smaya   dw[7] =
107310e230b6Smaya      __gen_ufixed(values->ResourceMinLOD, 0, 11, 8) |
107410e230b6Smaya      __gen_uint(values->ShaderChannelSelectAlpha, 16, 18) |
107510e230b6Smaya      __gen_uint(values->ShaderChannelSelectBlue, 19, 21) |
107610e230b6Smaya      __gen_uint(values->ShaderChannelSelectGreen, 22, 24) |
107710e230b6Smaya      __gen_uint(values->ShaderChannelSelectRed, 25, 27) |
107810e230b6Smaya      __gen_uint(values->AlphaClearColor, 28, 28) |
107910e230b6Smaya      __gen_uint(values->BlueClearColor, 29, 29) |
108010e230b6Smaya      __gen_uint(values->GreenClearColor, 30, 30) |
108110e230b6Smaya      __gen_uint(values->RedClearColor, 31, 31);
108210e230b6Smaya}
108310e230b6Smaya
108410e230b6Smaya#define GEN75_SAMPLER_BORDER_COLOR_STATE_length     20
108510e230b6Smayastruct GEN75_SAMPLER_BORDER_COLOR_STATE {
108610e230b6Smaya   float                                BorderColorFloatRed;
108710e230b6Smaya   float                                BorderColorFloatGreen;
108810e230b6Smaya   float                                BorderColorFloatBlue;
108910e230b6Smaya   float                                BorderColorFloatAlpha;
109010e230b6Smaya   uint32_t                             BorderColor8bitRed;
109110e230b6Smaya   uint32_t                             BorderColor16bitRed;
109210e230b6Smaya   uint32_t                             BorderColor32bitRed;
109310e230b6Smaya   uint32_t                             BorderColor8bitGreen;
109410e230b6Smaya   uint32_t                             BorderColor8bitBlue;
109510e230b6Smaya   uint32_t                             BorderColor16bitGreen;
109610e230b6Smaya   uint32_t                             BorderColor8bitAlpha;
109710e230b6Smaya   uint32_t                             BorderColor32bitGreen;
109810e230b6Smaya   uint32_t                             BorderColor16bitBlue;
109910e230b6Smaya   uint32_t                             BorderColor32bitBlue;
110010e230b6Smaya   uint32_t                             BorderColor16bitAlpha;
110110e230b6Smaya   uint32_t                             BorderColor32bitAlpha;
110210e230b6Smaya};
110310e230b6Smaya
110410e230b6Smayastatic inline void
110510e230b6SmayaGEN75_SAMPLER_BORDER_COLOR_STATE_pack(__attribute__((unused)) __gen_user_data *data,
110610e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
110710e230b6Smaya                                      __attribute__((unused)) const struct GEN75_SAMPLER_BORDER_COLOR_STATE * restrict values)
110810e230b6Smaya{
110910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
111010e230b6Smaya
111110e230b6Smaya   dw[0] =
111210e230b6Smaya      __gen_float(values->BorderColorFloatRed);
111310e230b6Smaya
111410e230b6Smaya   dw[1] =
111510e230b6Smaya      __gen_float(values->BorderColorFloatGreen);
111610e230b6Smaya
111710e230b6Smaya   dw[2] =
111810e230b6Smaya      __gen_float(values->BorderColorFloatBlue);
111910e230b6Smaya
112010e230b6Smaya   dw[3] =
112110e230b6Smaya      __gen_float(values->BorderColorFloatAlpha);
112210e230b6Smaya
112310e230b6Smaya   dw[4] = 0;
112410e230b6Smaya
112510e230b6Smaya   dw[5] = 0;
112610e230b6Smaya
112710e230b6Smaya   dw[6] = 0;
112810e230b6Smaya
112910e230b6Smaya   dw[7] = 0;
113010e230b6Smaya
113110e230b6Smaya   dw[8] = 0;
113210e230b6Smaya
113310e230b6Smaya   dw[9] = 0;
113410e230b6Smaya
113510e230b6Smaya   dw[10] = 0;
113610e230b6Smaya
113710e230b6Smaya   dw[11] = 0;
113810e230b6Smaya
113910e230b6Smaya   dw[12] = 0;
114010e230b6Smaya
114110e230b6Smaya   dw[13] = 0;
114210e230b6Smaya
114310e230b6Smaya   dw[14] = 0;
114410e230b6Smaya
114510e230b6Smaya   dw[15] = 0;
114610e230b6Smaya
114710e230b6Smaya   dw[16] =
114810e230b6Smaya      __gen_uint(values->BorderColor8bitRed, 0, 7) |
114910e230b6Smaya      __gen_uint(values->BorderColor16bitRed, 0, 15) |
115010e230b6Smaya      __gen_uint(values->BorderColor32bitRed, 0, 31) |
115110e230b6Smaya      __gen_uint(values->BorderColor8bitGreen, 8, 15) |
115210e230b6Smaya      __gen_uint(values->BorderColor8bitBlue, 16, 23) |
115310e230b6Smaya      __gen_uint(values->BorderColor16bitGreen, 16, 31) |
115410e230b6Smaya      __gen_uint(values->BorderColor8bitAlpha, 24, 31);
115510e230b6Smaya
115610e230b6Smaya   dw[17] =
115710e230b6Smaya      __gen_uint(values->BorderColor32bitGreen, 0, 31);
115810e230b6Smaya
115910e230b6Smaya   dw[18] =
116010e230b6Smaya      __gen_uint(values->BorderColor16bitBlue, 0, 15) |
116110e230b6Smaya      __gen_uint(values->BorderColor32bitBlue, 0, 31) |
116210e230b6Smaya      __gen_uint(values->BorderColor16bitAlpha, 16, 31);
116310e230b6Smaya
116410e230b6Smaya   dw[19] =
116510e230b6Smaya      __gen_uint(values->BorderColor32bitAlpha, 0, 31);
116610e230b6Smaya}
116710e230b6Smaya
116810e230b6Smaya#define GEN75_SAMPLER_STATE_length             4
116910e230b6Smayastruct GEN75_SAMPLER_STATE {
117010e230b6Smaya   uint32_t                             AnisotropicAlgorithm;
117110e230b6Smaya#define LEGACY                                   0
117210e230b6Smaya#define EWAApproximation                         1
117310e230b6Smaya   float                                TextureLODBias;
117410e230b6Smaya   uint32_t                             MinModeFilter;
117510e230b6Smaya#define MAPFILTER_NEAREST                        0
117610e230b6Smaya#define MAPFILTER_LINEAR                         1
117710e230b6Smaya#define MAPFILTER_ANISOTROPIC                    2
117810e230b6Smaya#define MAPFILTER_MONO                           6
117910e230b6Smaya   uint32_t                             MagModeFilter;
118010e230b6Smaya#define MAPFILTER_NEAREST                        0
118110e230b6Smaya#define MAPFILTER_LINEAR                         1
118210e230b6Smaya#define MAPFILTER_ANISOTROPIC                    2
118310e230b6Smaya#define MAPFILTER_MONO                           6
118410e230b6Smaya   uint32_t                             MipModeFilter;
118510e230b6Smaya#define MIPFILTER_NONE                           0
118610e230b6Smaya#define MIPFILTER_NEAREST                        1
118710e230b6Smaya#define MIPFILTER_LINEAR                         3
118810e230b6Smaya   float                                BaseMipLevel;
118910e230b6Smaya   uint32_t                             LODPreClampEnable;
119010e230b6Smaya#define CLAMP_ENABLE_OGL                         1
119110e230b6Smaya   uint32_t                             TextureBorderColorMode;
119210e230b6Smaya#define DX10OGL                                  0
119310e230b6Smaya#define DX9                                      1
119410e230b6Smaya   bool                                 SamplerDisable;
119510e230b6Smaya   uint32_t                             CubeSurfaceControlMode;
119610e230b6Smaya#define PROGRAMMED                               0
119710e230b6Smaya#define OVERRIDE                                 1
119810e230b6Smaya   uint32_t                             ShadowFunction;
119910e230b6Smaya#define PREFILTEROPALWAYS                        0
120010e230b6Smaya#define PREFILTEROPNEVER                         1
120110e230b6Smaya#define PREFILTEROPLESS                          2
120210e230b6Smaya#define PREFILTEROPEQUAL                         3
120310e230b6Smaya#define PREFILTEROPLEQUAL                        4
120410e230b6Smaya#define PREFILTEROPGREATER                       5
120510e230b6Smaya#define PREFILTEROPNOTEQUAL                      6
120610e230b6Smaya#define PREFILTEROPGEQUAL                        7
120710e230b6Smaya   float                                MaxLOD;
120810e230b6Smaya   float                                MinLOD;
120910e230b6Smaya   uint64_t                             BorderColorPointer;
121010e230b6Smaya   enum GEN75_TextureCoordinateMode     TCZAddressControlMode;
121110e230b6Smaya   enum GEN75_TextureCoordinateMode     TCYAddressControlMode;
121210e230b6Smaya   enum GEN75_TextureCoordinateMode     TCXAddressControlMode;
121310e230b6Smaya   bool                                 NonnormalizedCoordinateEnable;
121410e230b6Smaya   uint32_t                             TrilinearFilterQuality;
121510e230b6Smaya#define FULL                                     0
121610e230b6Smaya#define TRIQUAL_HIGHMAG_CLAMP_MIPFILTER          1
121710e230b6Smaya#define MED                                      2
121810e230b6Smaya#define LOW                                      3
121910e230b6Smaya   bool                                 RAddressMinFilterRoundingEnable;
122010e230b6Smaya   bool                                 RAddressMagFilterRoundingEnable;
122110e230b6Smaya   bool                                 VAddressMinFilterRoundingEnable;
122210e230b6Smaya   bool                                 VAddressMagFilterRoundingEnable;
122310e230b6Smaya   bool                                 UAddressMinFilterRoundingEnable;
122410e230b6Smaya   bool                                 UAddressMagFilterRoundingEnable;
122510e230b6Smaya   uint32_t                             MaximumAnisotropy;
122610e230b6Smaya#define RATIO21                                  0
122710e230b6Smaya#define RATIO41                                  1
122810e230b6Smaya#define RATIO61                                  2
122910e230b6Smaya#define RATIO81                                  3
123010e230b6Smaya#define RATIO101                                 4
123110e230b6Smaya#define RATIO121                                 5
123210e230b6Smaya#define RATIO141                                 6
123310e230b6Smaya#define RATIO161                                 7
123410e230b6Smaya   uint32_t                             ChromaKeyMode;
123510e230b6Smaya#define KEYFILTER_KILL_ON_ANY_MATCH              0
123610e230b6Smaya#define KEYFILTER_REPLACE_BLACK                  1
123710e230b6Smaya   uint32_t                             ChromaKeyIndex;
123810e230b6Smaya   bool                                 ChromaKeyEnable;
123910e230b6Smaya};
124010e230b6Smaya
124110e230b6Smayastatic inline void
124210e230b6SmayaGEN75_SAMPLER_STATE_pack(__attribute__((unused)) __gen_user_data *data,
124310e230b6Smaya                         __attribute__((unused)) void * restrict dst,
124410e230b6Smaya                         __attribute__((unused)) const struct GEN75_SAMPLER_STATE * restrict values)
124510e230b6Smaya{
124610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
124710e230b6Smaya
124810e230b6Smaya   dw[0] =
124910e230b6Smaya      __gen_uint(values->AnisotropicAlgorithm, 0, 0) |
125010e230b6Smaya      __gen_sfixed(values->TextureLODBias, 1, 13, 8) |
125110e230b6Smaya      __gen_uint(values->MinModeFilter, 14, 16) |
125210e230b6Smaya      __gen_uint(values->MagModeFilter, 17, 19) |
125310e230b6Smaya      __gen_uint(values->MipModeFilter, 20, 21) |
125410e230b6Smaya      __gen_ufixed(values->BaseMipLevel, 22, 26, 1) |
125510e230b6Smaya      __gen_uint(values->LODPreClampEnable, 28, 28) |
125610e230b6Smaya      __gen_uint(values->TextureBorderColorMode, 29, 29) |
125710e230b6Smaya      __gen_uint(values->SamplerDisable, 31, 31);
125810e230b6Smaya
125910e230b6Smaya   dw[1] =
126010e230b6Smaya      __gen_uint(values->CubeSurfaceControlMode, 0, 0) |
126110e230b6Smaya      __gen_uint(values->ShadowFunction, 1, 3) |
126210e230b6Smaya      __gen_ufixed(values->MaxLOD, 8, 19, 8) |
126310e230b6Smaya      __gen_ufixed(values->MinLOD, 20, 31, 8);
126410e230b6Smaya
126510e230b6Smaya   dw[2] =
126610e230b6Smaya      __gen_offset(values->BorderColorPointer, 5, 31);
126710e230b6Smaya
126810e230b6Smaya   dw[3] =
126910e230b6Smaya      __gen_uint(values->TCZAddressControlMode, 0, 2) |
127010e230b6Smaya      __gen_uint(values->TCYAddressControlMode, 3, 5) |
127110e230b6Smaya      __gen_uint(values->TCXAddressControlMode, 6, 8) |
127210e230b6Smaya      __gen_uint(values->NonnormalizedCoordinateEnable, 10, 10) |
127310e230b6Smaya      __gen_uint(values->TrilinearFilterQuality, 11, 12) |
127410e230b6Smaya      __gen_uint(values->RAddressMinFilterRoundingEnable, 13, 13) |
127510e230b6Smaya      __gen_uint(values->RAddressMagFilterRoundingEnable, 14, 14) |
127610e230b6Smaya      __gen_uint(values->VAddressMinFilterRoundingEnable, 15, 15) |
127710e230b6Smaya      __gen_uint(values->VAddressMagFilterRoundingEnable, 16, 16) |
127810e230b6Smaya      __gen_uint(values->UAddressMinFilterRoundingEnable, 17, 17) |
127910e230b6Smaya      __gen_uint(values->UAddressMagFilterRoundingEnable, 18, 18) |
128010e230b6Smaya      __gen_uint(values->MaximumAnisotropy, 19, 21) |
128110e230b6Smaya      __gen_uint(values->ChromaKeyMode, 22, 22) |
128210e230b6Smaya      __gen_uint(values->ChromaKeyIndex, 23, 24) |
128310e230b6Smaya      __gen_uint(values->ChromaKeyEnable, 25, 25);
128410e230b6Smaya}
128510e230b6Smaya
128610e230b6Smaya#define GEN75_SCISSOR_RECT_length              2
128710e230b6Smayastruct GEN75_SCISSOR_RECT {
128810e230b6Smaya   uint32_t                             ScissorRectangleXMin;
128910e230b6Smaya   uint32_t                             ScissorRectangleYMin;
129010e230b6Smaya   uint32_t                             ScissorRectangleXMax;
129110e230b6Smaya   uint32_t                             ScissorRectangleYMax;
129210e230b6Smaya};
129310e230b6Smaya
129410e230b6Smayastatic inline void
129510e230b6SmayaGEN75_SCISSOR_RECT_pack(__attribute__((unused)) __gen_user_data *data,
129610e230b6Smaya                        __attribute__((unused)) void * restrict dst,
129710e230b6Smaya                        __attribute__((unused)) const struct GEN75_SCISSOR_RECT * restrict values)
129810e230b6Smaya{
129910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
130010e230b6Smaya
130110e230b6Smaya   dw[0] =
130210e230b6Smaya      __gen_uint(values->ScissorRectangleXMin, 0, 15) |
130310e230b6Smaya      __gen_uint(values->ScissorRectangleYMin, 16, 31);
130410e230b6Smaya
130510e230b6Smaya   dw[1] =
130610e230b6Smaya      __gen_uint(values->ScissorRectangleXMax, 0, 15) |
130710e230b6Smaya      __gen_uint(values->ScissorRectangleYMax, 16, 31);
130810e230b6Smaya}
130910e230b6Smaya
131010e230b6Smaya#define GEN75_SF_CLIP_VIEWPORT_length         16
131110e230b6Smayastruct GEN75_SF_CLIP_VIEWPORT {
131210e230b6Smaya   float                                ViewportMatrixElementm00;
131310e230b6Smaya   float                                ViewportMatrixElementm11;
131410e230b6Smaya   float                                ViewportMatrixElementm22;
131510e230b6Smaya   float                                ViewportMatrixElementm30;
131610e230b6Smaya   float                                ViewportMatrixElementm31;
131710e230b6Smaya   float                                ViewportMatrixElementm32;
131810e230b6Smaya   float                                XMinClipGuardband;
131910e230b6Smaya   float                                XMaxClipGuardband;
132010e230b6Smaya   float                                YMinClipGuardband;
132110e230b6Smaya   float                                YMaxClipGuardband;
132210e230b6Smaya};
132310e230b6Smaya
132410e230b6Smayastatic inline void
132510e230b6SmayaGEN75_SF_CLIP_VIEWPORT_pack(__attribute__((unused)) __gen_user_data *data,
132610e230b6Smaya                            __attribute__((unused)) void * restrict dst,
132710e230b6Smaya                            __attribute__((unused)) const struct GEN75_SF_CLIP_VIEWPORT * restrict values)
132810e230b6Smaya{
132910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
133010e230b6Smaya
133110e230b6Smaya   dw[0] =
133210e230b6Smaya      __gen_float(values->ViewportMatrixElementm00);
133310e230b6Smaya
133410e230b6Smaya   dw[1] =
133510e230b6Smaya      __gen_float(values->ViewportMatrixElementm11);
133610e230b6Smaya
133710e230b6Smaya   dw[2] =
133810e230b6Smaya      __gen_float(values->ViewportMatrixElementm22);
133910e230b6Smaya
134010e230b6Smaya   dw[3] =
134110e230b6Smaya      __gen_float(values->ViewportMatrixElementm30);
134210e230b6Smaya
134310e230b6Smaya   dw[4] =
134410e230b6Smaya      __gen_float(values->ViewportMatrixElementm31);
134510e230b6Smaya
134610e230b6Smaya   dw[5] =
134710e230b6Smaya      __gen_float(values->ViewportMatrixElementm32);
134810e230b6Smaya
134910e230b6Smaya   dw[6] = 0;
135010e230b6Smaya
135110e230b6Smaya   dw[7] = 0;
135210e230b6Smaya
135310e230b6Smaya   dw[8] =
135410e230b6Smaya      __gen_float(values->XMinClipGuardband);
135510e230b6Smaya
135610e230b6Smaya   dw[9] =
135710e230b6Smaya      __gen_float(values->XMaxClipGuardband);
135810e230b6Smaya
135910e230b6Smaya   dw[10] =
136010e230b6Smaya      __gen_float(values->YMinClipGuardband);
136110e230b6Smaya
136210e230b6Smaya   dw[11] =
136310e230b6Smaya      __gen_float(values->YMaxClipGuardband);
136410e230b6Smaya
136510e230b6Smaya   dw[12] = 0;
136610e230b6Smaya
136710e230b6Smaya   dw[13] = 0;
136810e230b6Smaya
136910e230b6Smaya   dw[14] = 0;
137010e230b6Smaya
137110e230b6Smaya   dw[15] = 0;
137210e230b6Smaya}
137310e230b6Smaya
137410e230b6Smaya#define GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_length      1
137510e230b6Smayastruct GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL {
137610e230b6Smaya   uint32_t                             SourceAttribute;
137710e230b6Smaya   uint32_t                             SwizzleSelect;
137810e230b6Smaya#define INPUTATTR                                0
137910e230b6Smaya#define INPUTATTR_FACING                         1
138010e230b6Smaya#define INPUTATTR_W                              2
138110e230b6Smaya#define INPUTATTR_FACING_W                       3
138210e230b6Smaya   uint32_t                             ConstantSource;
138310e230b6Smaya#define CONST_0000                               0
138410e230b6Smaya#define CONST_0001_FLOAT                         1
138510e230b6Smaya#define CONST_1111_FLOAT                         2
138610e230b6Smaya#define PRIM_ID                                  3
138710e230b6Smaya   uint32_t                             SwizzleControlMode;
138810e230b6Smaya   bool                                 ComponentOverrideX;
138910e230b6Smaya   bool                                 ComponentOverrideY;
139010e230b6Smaya   bool                                 ComponentOverrideZ;
139110e230b6Smaya   bool                                 ComponentOverrideW;
139210e230b6Smaya};
139310e230b6Smaya
139410e230b6Smayastatic inline void
139510e230b6SmayaGEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(__attribute__((unused)) __gen_user_data *data,
139610e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
139710e230b6Smaya                                      __attribute__((unused)) const struct GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL * restrict values)
139810e230b6Smaya{
139910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
140010e230b6Smaya
140110e230b6Smaya   dw[0] =
140210e230b6Smaya      __gen_uint(values->SourceAttribute, 0, 4) |
140310e230b6Smaya      __gen_uint(values->SwizzleSelect, 6, 7) |
140410e230b6Smaya      __gen_uint(values->ConstantSource, 9, 10) |
140510e230b6Smaya      __gen_uint(values->SwizzleControlMode, 11, 11) |
140610e230b6Smaya      __gen_uint(values->ComponentOverrideX, 12, 12) |
140710e230b6Smaya      __gen_uint(values->ComponentOverrideY, 13, 13) |
140810e230b6Smaya      __gen_uint(values->ComponentOverrideZ, 14, 14) |
140910e230b6Smaya      __gen_uint(values->ComponentOverrideW, 15, 15);
141010e230b6Smaya}
141110e230b6Smaya
141210e230b6Smaya#define GEN75_SO_DECL_length                   1
141310e230b6Smayastruct GEN75_SO_DECL {
141410e230b6Smaya   uint32_t                             ComponentMask;
141510e230b6Smaya   uint32_t                             RegisterIndex;
141610e230b6Smaya   uint32_t                             HoleFlag;
141710e230b6Smaya   uint32_t                             OutputBufferSlot;
141810e230b6Smaya};
141910e230b6Smaya
142010e230b6Smayastatic inline void
142110e230b6SmayaGEN75_SO_DECL_pack(__attribute__((unused)) __gen_user_data *data,
142210e230b6Smaya                   __attribute__((unused)) void * restrict dst,
142310e230b6Smaya                   __attribute__((unused)) const struct GEN75_SO_DECL * restrict values)
142410e230b6Smaya{
142510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
142610e230b6Smaya
142710e230b6Smaya   dw[0] =
142810e230b6Smaya      __gen_uint(values->ComponentMask, 0, 3) |
142910e230b6Smaya      __gen_uint(values->RegisterIndex, 4, 9) |
143010e230b6Smaya      __gen_uint(values->HoleFlag, 11, 11) |
143110e230b6Smaya      __gen_uint(values->OutputBufferSlot, 12, 13);
143210e230b6Smaya}
143310e230b6Smaya
143410e230b6Smaya#define GEN75_SO_DECL_ENTRY_length             2
143510e230b6Smayastruct GEN75_SO_DECL_ENTRY {
143610e230b6Smaya   struct GEN75_SO_DECL                 Stream0Decl;
143710e230b6Smaya   struct GEN75_SO_DECL                 Stream1Decl;
143810e230b6Smaya   struct GEN75_SO_DECL                 Stream2Decl;
143910e230b6Smaya   struct GEN75_SO_DECL                 Stream3Decl;
144010e230b6Smaya};
144110e230b6Smaya
144210e230b6Smayastatic inline void
144310e230b6SmayaGEN75_SO_DECL_ENTRY_pack(__attribute__((unused)) __gen_user_data *data,
144410e230b6Smaya                         __attribute__((unused)) void * restrict dst,
144510e230b6Smaya                         __attribute__((unused)) const struct GEN75_SO_DECL_ENTRY * restrict values)
144610e230b6Smaya{
144710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
144810e230b6Smaya
144910e230b6Smaya   uint32_t v0_0;
145010e230b6Smaya   GEN75_SO_DECL_pack(data, &v0_0, &values->Stream0Decl);
145110e230b6Smaya
145210e230b6Smaya   uint32_t v0_1;
145310e230b6Smaya   GEN75_SO_DECL_pack(data, &v0_1, &values->Stream1Decl);
145410e230b6Smaya
145510e230b6Smaya   dw[0] =
145610e230b6Smaya      __gen_uint(v0_0, 0, 15) |
145710e230b6Smaya      __gen_uint(v0_1, 16, 31);
145810e230b6Smaya
145910e230b6Smaya   uint32_t v1_0;
146010e230b6Smaya   GEN75_SO_DECL_pack(data, &v1_0, &values->Stream2Decl);
146110e230b6Smaya
146210e230b6Smaya   uint32_t v1_1;
146310e230b6Smaya   GEN75_SO_DECL_pack(data, &v1_1, &values->Stream3Decl);
146410e230b6Smaya
146510e230b6Smaya   dw[1] =
146610e230b6Smaya      __gen_uint(v1_0, 0, 15) |
146710e230b6Smaya      __gen_uint(v1_1, 16, 31);
146810e230b6Smaya}
146910e230b6Smaya
147010e230b6Smaya#define GEN75_VERTEX_BUFFER_STATE_length       4
147110e230b6Smayastruct GEN75_VERTEX_BUFFER_STATE {
147210e230b6Smaya   uint32_t                             BufferPitch;
147310e230b6Smaya   bool                                 VertexFetchInvalidate;
147410e230b6Smaya   bool                                 NullVertexBuffer;
147510e230b6Smaya   bool                                 AddressModifyEnable;
147610e230b6Smaya   uint32_t                             MOCS;
147710e230b6Smaya   uint32_t                             BufferAccessType;
147810e230b6Smaya#define VERTEXDATA                               0
147910e230b6Smaya#define INSTANCEDATA                             1
148010e230b6Smaya   uint32_t                             VertexBufferIndex;
148110e230b6Smaya   __gen_address_type                   BufferStartingAddress;
148210e230b6Smaya   __gen_address_type                   EndAddress;
148310e230b6Smaya   uint32_t                             InstanceDataStepRate;
148410e230b6Smaya};
148510e230b6Smaya
148610e230b6Smayastatic inline void
148710e230b6SmayaGEN75_VERTEX_BUFFER_STATE_pack(__attribute__((unused)) __gen_user_data *data,
148810e230b6Smaya                               __attribute__((unused)) void * restrict dst,
148910e230b6Smaya                               __attribute__((unused)) const struct GEN75_VERTEX_BUFFER_STATE * restrict values)
149010e230b6Smaya{
149110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
149210e230b6Smaya
149310e230b6Smaya   dw[0] =
149410e230b6Smaya      __gen_uint(values->BufferPitch, 0, 11) |
149510e230b6Smaya      __gen_uint(values->VertexFetchInvalidate, 12, 12) |
149610e230b6Smaya      __gen_uint(values->NullVertexBuffer, 13, 13) |
149710e230b6Smaya      __gen_uint(values->AddressModifyEnable, 14, 14) |
149810e230b6Smaya      __gen_uint(values->MOCS, 16, 19) |
149910e230b6Smaya      __gen_uint(values->BufferAccessType, 20, 20) |
150010e230b6Smaya      __gen_uint(values->VertexBufferIndex, 26, 31);
150110e230b6Smaya
150210e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->BufferStartingAddress, 0);
150310e230b6Smaya
150410e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->EndAddress, 0);
150510e230b6Smaya
150610e230b6Smaya   dw[3] =
150710e230b6Smaya      __gen_uint(values->InstanceDataStepRate, 0, 31);
150810e230b6Smaya}
150910e230b6Smaya
151010e230b6Smaya#define GEN75_VERTEX_ELEMENT_STATE_length      2
151110e230b6Smayastruct GEN75_VERTEX_ELEMENT_STATE {
151210e230b6Smaya   uint32_t                             SourceElementOffset;
151310e230b6Smaya   bool                                 EdgeFlagEnable;
151410e230b6Smaya   uint32_t                             SourceElementFormat;
151510e230b6Smaya   bool                                 Valid;
151610e230b6Smaya   uint32_t                             VertexBufferIndex;
151710e230b6Smaya   enum GEN75_3D_Vertex_Component_Control Component3Control;
151810e230b6Smaya   enum GEN75_3D_Vertex_Component_Control Component2Control;
151910e230b6Smaya   enum GEN75_3D_Vertex_Component_Control Component1Control;
152010e230b6Smaya   enum GEN75_3D_Vertex_Component_Control Component0Control;
152110e230b6Smaya};
152210e230b6Smaya
152310e230b6Smayastatic inline void
152410e230b6SmayaGEN75_VERTEX_ELEMENT_STATE_pack(__attribute__((unused)) __gen_user_data *data,
152510e230b6Smaya                                __attribute__((unused)) void * restrict dst,
152610e230b6Smaya                                __attribute__((unused)) const struct GEN75_VERTEX_ELEMENT_STATE * restrict values)
152710e230b6Smaya{
152810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
152910e230b6Smaya
153010e230b6Smaya   dw[0] =
153110e230b6Smaya      __gen_uint(values->SourceElementOffset, 0, 11) |
153210e230b6Smaya      __gen_uint(values->EdgeFlagEnable, 15, 15) |
153310e230b6Smaya      __gen_uint(values->SourceElementFormat, 16, 24) |
153410e230b6Smaya      __gen_uint(values->Valid, 25, 25) |
153510e230b6Smaya      __gen_uint(values->VertexBufferIndex, 26, 31);
153610e230b6Smaya
153710e230b6Smaya   dw[1] =
153810e230b6Smaya      __gen_uint(values->Component3Control, 16, 18) |
153910e230b6Smaya      __gen_uint(values->Component2Control, 20, 22) |
154010e230b6Smaya      __gen_uint(values->Component1Control, 24, 26) |
154110e230b6Smaya      __gen_uint(values->Component0Control, 28, 30);
154210e230b6Smaya}
154310e230b6Smaya
154410e230b6Smaya#define GEN75_3DPRIMITIVE_length               7
154510e230b6Smaya#define GEN75_3DPRIMITIVE_length_bias          2
154610e230b6Smaya#define GEN75_3DPRIMITIVE_header                \
154710e230b6Smaya   .DWordLength                         =      5,  \
154810e230b6Smaya   ._3DCommandSubOpcode                 =      0,  \
154910e230b6Smaya   ._3DCommandOpcode                    =      3,  \
155010e230b6Smaya   .CommandSubType                      =      3,  \
155110e230b6Smaya   .CommandType                         =      3
155210e230b6Smaya
155310e230b6Smayastruct GEN75_3DPRIMITIVE {
155410e230b6Smaya   uint32_t                             DWordLength;
155510e230b6Smaya   bool                                 PredicateEnable;
155610e230b6Smaya   bool                                 UAVCoherencyRequired;
155710e230b6Smaya   bool                                 IndirectParameterEnable;
155810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
155910e230b6Smaya   uint32_t                             _3DCommandOpcode;
156010e230b6Smaya   uint32_t                             CommandSubType;
156110e230b6Smaya   uint32_t                             CommandType;
156210e230b6Smaya   enum GEN75_3D_Prim_Topo_Type         PrimitiveTopologyType;
156310e230b6Smaya   uint32_t                             VertexAccessType;
156410e230b6Smaya#define SEQUENTIAL                               0
156510e230b6Smaya#define RANDOM                                   1
156610e230b6Smaya   bool                                 EndOffsetEnable;
156710e230b6Smaya   uint32_t                             VertexCountPerInstance;
156810e230b6Smaya   uint32_t                             StartVertexLocation;
156910e230b6Smaya   uint32_t                             InstanceCount;
157010e230b6Smaya   uint32_t                             StartInstanceLocation;
157110e230b6Smaya   int32_t                              BaseVertexLocation;
157210e230b6Smaya};
157310e230b6Smaya
157410e230b6Smayastatic inline void
157510e230b6SmayaGEN75_3DPRIMITIVE_pack(__attribute__((unused)) __gen_user_data *data,
157610e230b6Smaya                       __attribute__((unused)) void * restrict dst,
157710e230b6Smaya                       __attribute__((unused)) const struct GEN75_3DPRIMITIVE * restrict values)
157810e230b6Smaya{
157910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
158010e230b6Smaya
158110e230b6Smaya   dw[0] =
158210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
158310e230b6Smaya      __gen_uint(values->PredicateEnable, 8, 8) |
158410e230b6Smaya      __gen_uint(values->UAVCoherencyRequired, 9, 9) |
158510e230b6Smaya      __gen_uint(values->IndirectParameterEnable, 10, 10) |
158610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
158710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
158810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
158910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
159010e230b6Smaya
159110e230b6Smaya   dw[1] =
159210e230b6Smaya      __gen_uint(values->PrimitiveTopologyType, 0, 5) |
159310e230b6Smaya      __gen_uint(values->VertexAccessType, 8, 8) |
159410e230b6Smaya      __gen_uint(values->EndOffsetEnable, 9, 9);
159510e230b6Smaya
159610e230b6Smaya   dw[2] =
159710e230b6Smaya      __gen_uint(values->VertexCountPerInstance, 0, 31);
159810e230b6Smaya
159910e230b6Smaya   dw[3] =
160010e230b6Smaya      __gen_uint(values->StartVertexLocation, 0, 31);
160110e230b6Smaya
160210e230b6Smaya   dw[4] =
160310e230b6Smaya      __gen_uint(values->InstanceCount, 0, 31);
160410e230b6Smaya
160510e230b6Smaya   dw[5] =
160610e230b6Smaya      __gen_uint(values->StartInstanceLocation, 0, 31);
160710e230b6Smaya
160810e230b6Smaya   dw[6] =
160910e230b6Smaya      __gen_sint(values->BaseVertexLocation, 0, 31);
161010e230b6Smaya}
161110e230b6Smaya
161210e230b6Smaya#define GEN75_3DSTATE_AA_LINE_PARAMETERS_length      3
161310e230b6Smaya#define GEN75_3DSTATE_AA_LINE_PARAMETERS_length_bias      2
161410e230b6Smaya#define GEN75_3DSTATE_AA_LINE_PARAMETERS_header \
161510e230b6Smaya   .DWordLength                         =      1,  \
161610e230b6Smaya   ._3DCommandSubOpcode                 =     10,  \
161710e230b6Smaya   ._3DCommandOpcode                    =      1,  \
161810e230b6Smaya   .CommandSubType                      =      3,  \
161910e230b6Smaya   .CommandType                         =      3
162010e230b6Smaya
162110e230b6Smayastruct GEN75_3DSTATE_AA_LINE_PARAMETERS {
162210e230b6Smaya   uint32_t                             DWordLength;
162310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
162410e230b6Smaya   uint32_t                             _3DCommandOpcode;
162510e230b6Smaya   uint32_t                             CommandSubType;
162610e230b6Smaya   uint32_t                             CommandType;
162710e230b6Smaya   float                                AACoverageSlope;
162810e230b6Smaya   float                                AACoverageBias;
162910e230b6Smaya   float                                AACoverageEndCapSlope;
163010e230b6Smaya   float                                AACoverageEndCapBias;
163110e230b6Smaya};
163210e230b6Smaya
163310e230b6Smayastatic inline void
163410e230b6SmayaGEN75_3DSTATE_AA_LINE_PARAMETERS_pack(__attribute__((unused)) __gen_user_data *data,
163510e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
163610e230b6Smaya                                      __attribute__((unused)) const struct GEN75_3DSTATE_AA_LINE_PARAMETERS * restrict values)
163710e230b6Smaya{
163810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
163910e230b6Smaya
164010e230b6Smaya   dw[0] =
164110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
164210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
164310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
164410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
164510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
164610e230b6Smaya
164710e230b6Smaya   dw[1] =
164810e230b6Smaya      __gen_ufixed(values->AACoverageSlope, 0, 7, 8) |
164910e230b6Smaya      __gen_ufixed(values->AACoverageBias, 16, 23, 8);
165010e230b6Smaya
165110e230b6Smaya   dw[2] =
165210e230b6Smaya      __gen_ufixed(values->AACoverageEndCapSlope, 0, 7, 8) |
165310e230b6Smaya      __gen_ufixed(values->AACoverageEndCapBias, 16, 23, 8);
165410e230b6Smaya}
165510e230b6Smaya
165610e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_DS_length_bias      2
165710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_DS_header\
165810e230b6Smaya   .DWordLength                         =      0,  \
165910e230b6Smaya   ._3DCommandSubOpcode                 =     70,  \
166010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
166110e230b6Smaya   .CommandSubType                      =      3,  \
166210e230b6Smaya   .CommandType                         =      3
166310e230b6Smaya
166410e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_DS {
166510e230b6Smaya   uint32_t                             DWordLength;
166610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
166710e230b6Smaya   uint32_t                             _3DCommandOpcode;
166810e230b6Smaya   uint32_t                             CommandSubType;
166910e230b6Smaya   uint32_t                             CommandType;
167010e230b6Smaya   uint32_t                             BindingTableEditTarget;
167110e230b6Smaya#define AllCores                                 3
167210e230b6Smaya#define Core1                                    2
167310e230b6Smaya#define Core0                                    1
167410e230b6Smaya   uint32_t                             BindingTableBlockClear;
167510e230b6Smaya   /* variable length fields follow */
167610e230b6Smaya};
167710e230b6Smaya
167810e230b6Smayastatic inline void
167910e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_DS_pack(__attribute__((unused)) __gen_user_data *data,
168010e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
168110e230b6Smaya                                         __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_DS * restrict values)
168210e230b6Smaya{
168310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
168410e230b6Smaya
168510e230b6Smaya   dw[0] =
168610e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
168710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
168810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
168910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
169010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
169110e230b6Smaya
169210e230b6Smaya   dw[1] =
169310e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
169410e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
169510e230b6Smaya}
169610e230b6Smaya
169710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_GS_length_bias      2
169810e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_GS_header\
169910e230b6Smaya   .DWordLength                         =      0,  \
170010e230b6Smaya   ._3DCommandSubOpcode                 =     68,  \
170110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
170210e230b6Smaya   .CommandSubType                      =      3,  \
170310e230b6Smaya   .CommandType                         =      3
170410e230b6Smaya
170510e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_GS {
170610e230b6Smaya   uint32_t                             DWordLength;
170710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
170810e230b6Smaya   uint32_t                             _3DCommandOpcode;
170910e230b6Smaya   uint32_t                             CommandSubType;
171010e230b6Smaya   uint32_t                             CommandType;
171110e230b6Smaya   uint32_t                             BindingTableEditTarget;
171210e230b6Smaya#define AllCores                                 3
171310e230b6Smaya#define Core1                                    2
171410e230b6Smaya#define Core0                                    1
171510e230b6Smaya   uint32_t                             BindingTableBlockClear;
171610e230b6Smaya   /* variable length fields follow */
171710e230b6Smaya};
171810e230b6Smaya
171910e230b6Smayastatic inline void
172010e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_GS_pack(__attribute__((unused)) __gen_user_data *data,
172110e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
172210e230b6Smaya                                         __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_GS * restrict values)
172310e230b6Smaya{
172410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
172510e230b6Smaya
172610e230b6Smaya   dw[0] =
172710e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
172810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
172910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
173010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
173110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
173210e230b6Smaya
173310e230b6Smaya   dw[1] =
173410e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
173510e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
173610e230b6Smaya}
173710e230b6Smaya
173810e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_HS_length_bias      2
173910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_HS_header\
174010e230b6Smaya   .DWordLength                         =      0,  \
174110e230b6Smaya   ._3DCommandSubOpcode                 =     69,  \
174210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
174310e230b6Smaya   .CommandSubType                      =      3,  \
174410e230b6Smaya   .CommandType                         =      3
174510e230b6Smaya
174610e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_HS {
174710e230b6Smaya   uint32_t                             DWordLength;
174810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
174910e230b6Smaya   uint32_t                             _3DCommandOpcode;
175010e230b6Smaya   uint32_t                             CommandSubType;
175110e230b6Smaya   uint32_t                             CommandType;
175210e230b6Smaya   uint32_t                             BindingTableEditTarget;
175310e230b6Smaya#define AllCores                                 3
175410e230b6Smaya#define Core1                                    2
175510e230b6Smaya#define Core0                                    1
175610e230b6Smaya   uint32_t                             BindingTableBlockClear;
175710e230b6Smaya   /* variable length fields follow */
175810e230b6Smaya};
175910e230b6Smaya
176010e230b6Smayastatic inline void
176110e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_HS_pack(__attribute__((unused)) __gen_user_data *data,
176210e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
176310e230b6Smaya                                         __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_HS * restrict values)
176410e230b6Smaya{
176510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
176610e230b6Smaya
176710e230b6Smaya   dw[0] =
176810e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
176910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
177010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
177110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
177210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
177310e230b6Smaya
177410e230b6Smaya   dw[1] =
177510e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
177610e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
177710e230b6Smaya}
177810e230b6Smaya
177910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_PS_length_bias      2
178010e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_PS_header\
178110e230b6Smaya   .DWordLength                         =      0,  \
178210e230b6Smaya   ._3DCommandSubOpcode                 =     71,  \
178310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
178410e230b6Smaya   .CommandSubType                      =      3,  \
178510e230b6Smaya   .CommandType                         =      3
178610e230b6Smaya
178710e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_PS {
178810e230b6Smaya   uint32_t                             DWordLength;
178910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
179010e230b6Smaya   uint32_t                             _3DCommandOpcode;
179110e230b6Smaya   uint32_t                             CommandSubType;
179210e230b6Smaya   uint32_t                             CommandType;
179310e230b6Smaya   uint32_t                             BindingTableEditTarget;
179410e230b6Smaya#define AllCores                                 3
179510e230b6Smaya#define Core1                                    2
179610e230b6Smaya#define Core0                                    1
179710e230b6Smaya   uint32_t                             BindingTableBlockClear;
179810e230b6Smaya   /* variable length fields follow */
179910e230b6Smaya};
180010e230b6Smaya
180110e230b6Smayastatic inline void
180210e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_PS_pack(__attribute__((unused)) __gen_user_data *data,
180310e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
180410e230b6Smaya                                         __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_PS * restrict values)
180510e230b6Smaya{
180610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
180710e230b6Smaya
180810e230b6Smaya   dw[0] =
180910e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
181010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
181110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
181210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
181310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
181410e230b6Smaya
181510e230b6Smaya   dw[1] =
181610e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
181710e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
181810e230b6Smaya}
181910e230b6Smaya
182010e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_VS_length_bias      2
182110e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_EDIT_VS_header\
182210e230b6Smaya   .DWordLength                         =      0,  \
182310e230b6Smaya   ._3DCommandSubOpcode                 =     67,  \
182410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
182510e230b6Smaya   .CommandSubType                      =      3,  \
182610e230b6Smaya   .CommandType                         =      3
182710e230b6Smaya
182810e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_EDIT_VS {
182910e230b6Smaya   uint32_t                             DWordLength;
183010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
183110e230b6Smaya   uint32_t                             _3DCommandOpcode;
183210e230b6Smaya   uint32_t                             CommandSubType;
183310e230b6Smaya   uint32_t                             CommandType;
183410e230b6Smaya   uint32_t                             BindingTableEditTarget;
183510e230b6Smaya#define AllCores                                 3
183610e230b6Smaya#define Core1                                    2
183710e230b6Smaya#define Core0                                    1
183810e230b6Smaya   uint32_t                             BindingTableBlockClear;
183910e230b6Smaya   /* variable length fields follow */
184010e230b6Smaya};
184110e230b6Smaya
184210e230b6Smayastatic inline void
184310e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_EDIT_VS_pack(__attribute__((unused)) __gen_user_data *data,
184410e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
184510e230b6Smaya                                         __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_EDIT_VS * restrict values)
184610e230b6Smaya{
184710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
184810e230b6Smaya
184910e230b6Smaya   dw[0] =
185010e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
185110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
185210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
185310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
185410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
185510e230b6Smaya
185610e230b6Smaya   dw[1] =
185710e230b6Smaya      __gen_uint(values->BindingTableEditTarget, 0, 1) |
185810e230b6Smaya      __gen_uint(values->BindingTableBlockClear, 16, 31);
185910e230b6Smaya}
186010e230b6Smaya
186110e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_length      2
186210e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_length_bias      2
186310e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_header\
186410e230b6Smaya   .DWordLength                         =      0,  \
186510e230b6Smaya   ._3DCommandSubOpcode                 =     40,  \
186610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
186710e230b6Smaya   .CommandSubType                      =      3,  \
186810e230b6Smaya   .CommandType                         =      3
186910e230b6Smaya
187010e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS {
187110e230b6Smaya   uint32_t                             DWordLength;
187210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
187310e230b6Smaya   uint32_t                             _3DCommandOpcode;
187410e230b6Smaya   uint32_t                             CommandSubType;
187510e230b6Smaya   uint32_t                             CommandType;
187610e230b6Smaya   uint64_t                             PointertoDSBindingTable;
187710e230b6Smaya};
187810e230b6Smaya
187910e230b6Smayastatic inline void
188010e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_DS_pack(__attribute__((unused)) __gen_user_data *data,
188110e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
188210e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_DS * restrict values)
188310e230b6Smaya{
188410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
188510e230b6Smaya
188610e230b6Smaya   dw[0] =
188710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
188810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
188910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
189010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
189110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
189210e230b6Smaya
189310e230b6Smaya   dw[1] =
189410e230b6Smaya      __gen_offset(values->PointertoDSBindingTable, 5, 15);
189510e230b6Smaya}
189610e230b6Smaya
189710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_length      2
189810e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_length_bias      2
189910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_header\
190010e230b6Smaya   .DWordLength                         =      0,  \
190110e230b6Smaya   ._3DCommandSubOpcode                 =     41,  \
190210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
190310e230b6Smaya   .CommandSubType                      =      3,  \
190410e230b6Smaya   .CommandType                         =      3
190510e230b6Smaya
190610e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS {
190710e230b6Smaya   uint32_t                             DWordLength;
190810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
190910e230b6Smaya   uint32_t                             _3DCommandOpcode;
191010e230b6Smaya   uint32_t                             CommandSubType;
191110e230b6Smaya   uint32_t                             CommandType;
191210e230b6Smaya   uint64_t                             PointertoGSBindingTable;
191310e230b6Smaya};
191410e230b6Smaya
191510e230b6Smayastatic inline void
191610e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_GS_pack(__attribute__((unused)) __gen_user_data *data,
191710e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
191810e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_GS * restrict values)
191910e230b6Smaya{
192010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
192110e230b6Smaya
192210e230b6Smaya   dw[0] =
192310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
192410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
192510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
192610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
192710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
192810e230b6Smaya
192910e230b6Smaya   dw[1] =
193010e230b6Smaya      __gen_offset(values->PointertoGSBindingTable, 5, 15);
193110e230b6Smaya}
193210e230b6Smaya
193310e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_length      2
193410e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_length_bias      2
193510e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_header\
193610e230b6Smaya   .DWordLength                         =      0,  \
193710e230b6Smaya   ._3DCommandSubOpcode                 =     39,  \
193810e230b6Smaya   ._3DCommandOpcode                    =      0,  \
193910e230b6Smaya   .CommandSubType                      =      3,  \
194010e230b6Smaya   .CommandType                         =      3
194110e230b6Smaya
194210e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS {
194310e230b6Smaya   uint32_t                             DWordLength;
194410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
194510e230b6Smaya   uint32_t                             _3DCommandOpcode;
194610e230b6Smaya   uint32_t                             CommandSubType;
194710e230b6Smaya   uint32_t                             CommandType;
194810e230b6Smaya   uint64_t                             PointertoHSBindingTable;
194910e230b6Smaya};
195010e230b6Smaya
195110e230b6Smayastatic inline void
195210e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_HS_pack(__attribute__((unused)) __gen_user_data *data,
195310e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
195410e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_HS * restrict values)
195510e230b6Smaya{
195610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
195710e230b6Smaya
195810e230b6Smaya   dw[0] =
195910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
196010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
196110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
196210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
196310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
196410e230b6Smaya
196510e230b6Smaya   dw[1] =
196610e230b6Smaya      __gen_offset(values->PointertoHSBindingTable, 5, 15);
196710e230b6Smaya}
196810e230b6Smaya
196910e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_length      2
197010e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_length_bias      2
197110e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_header\
197210e230b6Smaya   .DWordLength                         =      0,  \
197310e230b6Smaya   ._3DCommandSubOpcode                 =     42,  \
197410e230b6Smaya   ._3DCommandOpcode                    =      0,  \
197510e230b6Smaya   .CommandSubType                      =      3,  \
197610e230b6Smaya   .CommandType                         =      3
197710e230b6Smaya
197810e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS {
197910e230b6Smaya   uint32_t                             DWordLength;
198010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
198110e230b6Smaya   uint32_t                             _3DCommandOpcode;
198210e230b6Smaya   uint32_t                             CommandSubType;
198310e230b6Smaya   uint32_t                             CommandType;
198410e230b6Smaya   uint64_t                             PointertoPSBindingTable;
198510e230b6Smaya};
198610e230b6Smaya
198710e230b6Smayastatic inline void
198810e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_PS_pack(__attribute__((unused)) __gen_user_data *data,
198910e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
199010e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_PS * restrict values)
199110e230b6Smaya{
199210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
199310e230b6Smaya
199410e230b6Smaya   dw[0] =
199510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
199610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
199710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
199810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
199910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
200010e230b6Smaya
200110e230b6Smaya   dw[1] =
200210e230b6Smaya      __gen_offset(values->PointertoPSBindingTable, 5, 15);
200310e230b6Smaya}
200410e230b6Smaya
200510e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_length      2
200610e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_length_bias      2
200710e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_header\
200810e230b6Smaya   .DWordLength                         =      0,  \
200910e230b6Smaya   ._3DCommandSubOpcode                 =     38,  \
201010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
201110e230b6Smaya   .CommandSubType                      =      3,  \
201210e230b6Smaya   .CommandType                         =      3
201310e230b6Smaya
201410e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS {
201510e230b6Smaya   uint32_t                             DWordLength;
201610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
201710e230b6Smaya   uint32_t                             _3DCommandOpcode;
201810e230b6Smaya   uint32_t                             CommandSubType;
201910e230b6Smaya   uint32_t                             CommandType;
202010e230b6Smaya   uint64_t                             PointertoVSBindingTable;
202110e230b6Smaya};
202210e230b6Smaya
202310e230b6Smayastatic inline void
202410e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POINTERS_VS_pack(__attribute__((unused)) __gen_user_data *data,
202510e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
202610e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POINTERS_VS * restrict values)
202710e230b6Smaya{
202810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
202910e230b6Smaya
203010e230b6Smaya   dw[0] =
203110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
203210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
203310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
203410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
203510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
203610e230b6Smaya
203710e230b6Smaya   dw[1] =
203810e230b6Smaya      __gen_offset(values->PointertoVSBindingTable, 5, 15);
203910e230b6Smaya}
204010e230b6Smaya
204110e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_length      3
204210e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_length_bias      2
204310e230b6Smaya#define GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_header\
204410e230b6Smaya   .DWordLength                         =      1,  \
204510e230b6Smaya   ._3DCommandSubOpcode                 =     25,  \
204610e230b6Smaya   ._3DCommandOpcode                    =      1,  \
204710e230b6Smaya   .CommandSubType                      =      3,  \
204810e230b6Smaya   .CommandType                         =      3
204910e230b6Smaya
205010e230b6Smayastruct GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC {
205110e230b6Smaya   uint32_t                             DWordLength;
205210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
205310e230b6Smaya   uint32_t                             _3DCommandOpcode;
205410e230b6Smaya   uint32_t                             CommandSubType;
205510e230b6Smaya   uint32_t                             CommandType;
205610e230b6Smaya   uint32_t                             MOCS;
205710e230b6Smaya   uint32_t                             BindingTablePoolEnable;
205810e230b6Smaya   __gen_address_type                   BindingTablePoolBaseAddress;
205910e230b6Smaya   __gen_address_type                   BindingTablePoolUpperBound;
206010e230b6Smaya};
206110e230b6Smaya
206210e230b6Smayastatic inline void
206310e230b6SmayaGEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__attribute__((unused)) __gen_user_data *data,
206410e230b6Smaya                                            __attribute__((unused)) void * restrict dst,
206510e230b6Smaya                                            __attribute__((unused)) const struct GEN75_3DSTATE_BINDING_TABLE_POOL_ALLOC * restrict values)
206610e230b6Smaya{
206710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
206810e230b6Smaya
206910e230b6Smaya   dw[0] =
207010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
207110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
207210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
207310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
207410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
207510e230b6Smaya
207610e230b6Smaya   const uint32_t v1 =
207710e230b6Smaya      __gen_uint(values->MOCS, 7, 10) |
207810e230b6Smaya      __gen_uint(values->BindingTablePoolEnable, 11, 11);
207910e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->BindingTablePoolBaseAddress, v1);
208010e230b6Smaya
208110e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->BindingTablePoolUpperBound, 0);
208210e230b6Smaya}
208310e230b6Smaya
208410e230b6Smaya#define GEN75_3DSTATE_BLEND_STATE_POINTERS_length      2
208510e230b6Smaya#define GEN75_3DSTATE_BLEND_STATE_POINTERS_length_bias      2
208610e230b6Smaya#define GEN75_3DSTATE_BLEND_STATE_POINTERS_header\
208710e230b6Smaya   .DWordLength                         =      0,  \
208810e230b6Smaya   ._3DCommandSubOpcode                 =     36,  \
208910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
209010e230b6Smaya   .CommandSubType                      =      3,  \
209110e230b6Smaya   .CommandType                         =      3
209210e230b6Smaya
209310e230b6Smayastruct GEN75_3DSTATE_BLEND_STATE_POINTERS {
209410e230b6Smaya   uint32_t                             DWordLength;
209510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
209610e230b6Smaya   uint32_t                             _3DCommandOpcode;
209710e230b6Smaya   uint32_t                             CommandSubType;
209810e230b6Smaya   uint32_t                             CommandType;
209910e230b6Smaya   uint64_t                             BlendStatePointer;
210010e230b6Smaya};
210110e230b6Smaya
210210e230b6Smayastatic inline void
210310e230b6SmayaGEN75_3DSTATE_BLEND_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data,
210410e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
210510e230b6Smaya                                        __attribute__((unused)) const struct GEN75_3DSTATE_BLEND_STATE_POINTERS * restrict values)
210610e230b6Smaya{
210710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
210810e230b6Smaya
210910e230b6Smaya   dw[0] =
211010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
211110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
211210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
211310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
211410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
211510e230b6Smaya
211610e230b6Smaya   dw[1] =
211710e230b6Smaya      __gen_mbo(0, 0) |
211810e230b6Smaya      __gen_offset(values->BlendStatePointer, 6, 31);
211910e230b6Smaya}
212010e230b6Smaya
212110e230b6Smaya#define GEN75_3DSTATE_CC_STATE_POINTERS_length      2
212210e230b6Smaya#define GEN75_3DSTATE_CC_STATE_POINTERS_length_bias      2
212310e230b6Smaya#define GEN75_3DSTATE_CC_STATE_POINTERS_header  \
212410e230b6Smaya   .DWordLength                         =      0,  \
212510e230b6Smaya   ._3DCommandSubOpcode                 =     14,  \
212610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
212710e230b6Smaya   .CommandSubType                      =      3,  \
212810e230b6Smaya   .CommandType                         =      3
212910e230b6Smaya
213010e230b6Smayastruct GEN75_3DSTATE_CC_STATE_POINTERS {
213110e230b6Smaya   uint32_t                             DWordLength;
213210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
213310e230b6Smaya   uint32_t                             _3DCommandOpcode;
213410e230b6Smaya   uint32_t                             CommandSubType;
213510e230b6Smaya   uint32_t                             CommandType;
213610e230b6Smaya   uint64_t                             ColorCalcStatePointer;
213710e230b6Smaya};
213810e230b6Smaya
213910e230b6Smayastatic inline void
214010e230b6SmayaGEN75_3DSTATE_CC_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data,
214110e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
214210e230b6Smaya                                     __attribute__((unused)) const struct GEN75_3DSTATE_CC_STATE_POINTERS * restrict values)
214310e230b6Smaya{
214410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
214510e230b6Smaya
214610e230b6Smaya   dw[0] =
214710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
214810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
214910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
215010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
215110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
215210e230b6Smaya
215310e230b6Smaya   dw[1] =
215410e230b6Smaya      __gen_mbo(0, 0) |
215510e230b6Smaya      __gen_offset(values->ColorCalcStatePointer, 6, 31);
215610e230b6Smaya}
215710e230b6Smaya
215810e230b6Smaya#define GEN75_3DSTATE_CHROMA_KEY_length        4
215910e230b6Smaya#define GEN75_3DSTATE_CHROMA_KEY_length_bias      2
216010e230b6Smaya#define GEN75_3DSTATE_CHROMA_KEY_header         \
216110e230b6Smaya   .DWordLength                         =      2,  \
216210e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
216310e230b6Smaya   ._3DCommandOpcode                    =      1,  \
216410e230b6Smaya   .CommandSubType                      =      3,  \
216510e230b6Smaya   .CommandType                         =      3
216610e230b6Smaya
216710e230b6Smayastruct GEN75_3DSTATE_CHROMA_KEY {
216810e230b6Smaya   uint32_t                             DWordLength;
216910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
217010e230b6Smaya   uint32_t                             _3DCommandOpcode;
217110e230b6Smaya   uint32_t                             CommandSubType;
217210e230b6Smaya   uint32_t                             CommandType;
217310e230b6Smaya   uint32_t                             ChromaKeyTableIndex;
217410e230b6Smaya   uint32_t                             ChromaKeyLowValue;
217510e230b6Smaya   uint32_t                             ChromaKeyHighValue;
217610e230b6Smaya};
217710e230b6Smaya
217810e230b6Smayastatic inline void
217910e230b6SmayaGEN75_3DSTATE_CHROMA_KEY_pack(__attribute__((unused)) __gen_user_data *data,
218010e230b6Smaya                              __attribute__((unused)) void * restrict dst,
218110e230b6Smaya                              __attribute__((unused)) const struct GEN75_3DSTATE_CHROMA_KEY * restrict values)
218210e230b6Smaya{
218310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
218410e230b6Smaya
218510e230b6Smaya   dw[0] =
218610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
218710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
218810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
218910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
219010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
219110e230b6Smaya
219210e230b6Smaya   dw[1] =
219310e230b6Smaya      __gen_uint(values->ChromaKeyTableIndex, 30, 31);
219410e230b6Smaya
219510e230b6Smaya   dw[2] =
219610e230b6Smaya      __gen_uint(values->ChromaKeyLowValue, 0, 31);
219710e230b6Smaya
219810e230b6Smaya   dw[3] =
219910e230b6Smaya      __gen_uint(values->ChromaKeyHighValue, 0, 31);
220010e230b6Smaya}
220110e230b6Smaya
220210e230b6Smaya#define GEN75_3DSTATE_CLEAR_PARAMS_length      3
220310e230b6Smaya#define GEN75_3DSTATE_CLEAR_PARAMS_length_bias      2
220410e230b6Smaya#define GEN75_3DSTATE_CLEAR_PARAMS_header       \
220510e230b6Smaya   .DWordLength                         =      1,  \
220610e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
220710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
220810e230b6Smaya   .CommandSubType                      =      3,  \
220910e230b6Smaya   .CommandType                         =      3
221010e230b6Smaya
221110e230b6Smayastruct GEN75_3DSTATE_CLEAR_PARAMS {
221210e230b6Smaya   uint32_t                             DWordLength;
221310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
221410e230b6Smaya   uint32_t                             _3DCommandOpcode;
221510e230b6Smaya   uint32_t                             CommandSubType;
221610e230b6Smaya   uint32_t                             CommandType;
221710e230b6Smaya   uint32_t                             DepthClearValue;
221810e230b6Smaya   bool                                 DepthClearValueValid;
221910e230b6Smaya};
222010e230b6Smaya
222110e230b6Smayastatic inline void
222210e230b6SmayaGEN75_3DSTATE_CLEAR_PARAMS_pack(__attribute__((unused)) __gen_user_data *data,
222310e230b6Smaya                                __attribute__((unused)) void * restrict dst,
222410e230b6Smaya                                __attribute__((unused)) const struct GEN75_3DSTATE_CLEAR_PARAMS * restrict values)
222510e230b6Smaya{
222610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
222710e230b6Smaya
222810e230b6Smaya   dw[0] =
222910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
223010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
223110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
223210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
223310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
223410e230b6Smaya
223510e230b6Smaya   dw[1] =
223610e230b6Smaya      __gen_uint(values->DepthClearValue, 0, 31);
223710e230b6Smaya
223810e230b6Smaya   dw[2] =
223910e230b6Smaya      __gen_uint(values->DepthClearValueValid, 0, 0);
224010e230b6Smaya}
224110e230b6Smaya
224210e230b6Smaya#define GEN75_3DSTATE_CLIP_length              4
224310e230b6Smaya#define GEN75_3DSTATE_CLIP_length_bias         2
224410e230b6Smaya#define GEN75_3DSTATE_CLIP_header               \
224510e230b6Smaya   .DWordLength                         =      2,  \
224610e230b6Smaya   ._3DCommandSubOpcode                 =     18,  \
224710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
224810e230b6Smaya   .CommandSubType                      =      3,  \
224910e230b6Smaya   .CommandType                         =      3
225010e230b6Smaya
225110e230b6Smayastruct GEN75_3DSTATE_CLIP {
225210e230b6Smaya   uint32_t                             DWordLength;
225310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
225410e230b6Smaya   uint32_t                             _3DCommandOpcode;
225510e230b6Smaya   uint32_t                             CommandSubType;
225610e230b6Smaya   uint32_t                             CommandType;
225710e230b6Smaya   uint32_t                             UserClipDistanceCullTestEnableBitmask;
225810e230b6Smaya   bool                                 StatisticsEnable;
225910e230b6Smaya   uint32_t                             CullMode;
226010e230b6Smaya#define CULLMODE_BOTH                            0
226110e230b6Smaya#define CULLMODE_NONE                            1
226210e230b6Smaya#define CULLMODE_FRONT                           2
226310e230b6Smaya#define CULLMODE_BACK                            3
226410e230b6Smaya   bool                                 EarlyCullEnable;
226510e230b6Smaya   uint32_t                             VertexSubPixelPrecisionSelect;
226610e230b6Smaya   uint32_t                             FrontWinding;
226710e230b6Smaya   uint32_t                             TriangleFanProvokingVertexSelect;
226810e230b6Smaya#define Vertex0                                  0
226910e230b6Smaya#define Vertex1                                  1
227010e230b6Smaya#define Vertex2                                  2
227110e230b6Smaya   uint32_t                             LineStripListProvokingVertexSelect;
227210e230b6Smaya#define Vertex0                                  0
227310e230b6Smaya#define Vertex1                                  1
227410e230b6Smaya   uint32_t                             TriangleStripListProvokingVertexSelect;
227510e230b6Smaya#define Vertex0                                  0
227610e230b6Smaya#define Vertex1                                  1
227710e230b6Smaya#define Vertex2                                  2
227810e230b6Smaya   bool                                 NonPerspectiveBarycentricEnable;
227910e230b6Smaya   bool                                 PerspectiveDivideDisable;
228010e230b6Smaya   uint32_t                             ClipMode;
228110e230b6Smaya#define CLIPMODE_NORMAL                          0
228210e230b6Smaya#define CLIPMODE_REJECT_ALL                      3
228310e230b6Smaya#define CLIPMODE_ACCEPT_ALL                      4
228410e230b6Smaya   uint32_t                             UserClipDistanceClipTestEnableBitmask;
228510e230b6Smaya   bool                                 GuardbandClipTestEnable;
228610e230b6Smaya   bool                                 ViewportZClipTestEnable;
228710e230b6Smaya   bool                                 ViewportXYClipTestEnable;
228810e230b6Smaya   uint32_t                             APIMode;
228910e230b6Smaya#define APIMODE_OGL                              0
229010e230b6Smaya#define APIMODE_D3D                              1
229110e230b6Smaya   bool                                 ClipEnable;
229210e230b6Smaya   uint32_t                             MaximumVPIndex;
229310e230b6Smaya   bool                                 ForceZeroRTAIndexEnable;
229410e230b6Smaya   float                                MaximumPointWidth;
229510e230b6Smaya   float                                MinimumPointWidth;
229610e230b6Smaya};
229710e230b6Smaya
229810e230b6Smayastatic inline void
229910e230b6SmayaGEN75_3DSTATE_CLIP_pack(__attribute__((unused)) __gen_user_data *data,
230010e230b6Smaya                        __attribute__((unused)) void * restrict dst,
230110e230b6Smaya                        __attribute__((unused)) const struct GEN75_3DSTATE_CLIP * restrict values)
230210e230b6Smaya{
230310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
230410e230b6Smaya
230510e230b6Smaya   dw[0] =
230610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
230710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
230810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
230910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
231010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
231110e230b6Smaya
231210e230b6Smaya   dw[1] =
231310e230b6Smaya      __gen_uint(values->UserClipDistanceCullTestEnableBitmask, 0, 7) |
231410e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
231510e230b6Smaya      __gen_uint(values->CullMode, 16, 17) |
231610e230b6Smaya      __gen_uint(values->EarlyCullEnable, 18, 18) |
231710e230b6Smaya      __gen_uint(values->VertexSubPixelPrecisionSelect, 19, 19) |
231810e230b6Smaya      __gen_uint(values->FrontWinding, 20, 20);
231910e230b6Smaya
232010e230b6Smaya   dw[2] =
232110e230b6Smaya      __gen_uint(values->TriangleFanProvokingVertexSelect, 0, 1) |
232210e230b6Smaya      __gen_uint(values->LineStripListProvokingVertexSelect, 2, 3) |
232310e230b6Smaya      __gen_uint(values->TriangleStripListProvokingVertexSelect, 4, 5) |
232410e230b6Smaya      __gen_uint(values->NonPerspectiveBarycentricEnable, 8, 8) |
232510e230b6Smaya      __gen_uint(values->PerspectiveDivideDisable, 9, 9) |
232610e230b6Smaya      __gen_uint(values->ClipMode, 13, 15) |
232710e230b6Smaya      __gen_uint(values->UserClipDistanceClipTestEnableBitmask, 16, 23) |
232810e230b6Smaya      __gen_uint(values->GuardbandClipTestEnable, 26, 26) |
232910e230b6Smaya      __gen_uint(values->ViewportZClipTestEnable, 27, 27) |
233010e230b6Smaya      __gen_uint(values->ViewportXYClipTestEnable, 28, 28) |
233110e230b6Smaya      __gen_uint(values->APIMode, 30, 30) |
233210e230b6Smaya      __gen_uint(values->ClipEnable, 31, 31);
233310e230b6Smaya
233410e230b6Smaya   dw[3] =
233510e230b6Smaya      __gen_uint(values->MaximumVPIndex, 0, 3) |
233610e230b6Smaya      __gen_uint(values->ForceZeroRTAIndexEnable, 5, 5) |
233710e230b6Smaya      __gen_ufixed(values->MaximumPointWidth, 6, 16, 3) |
233810e230b6Smaya      __gen_ufixed(values->MinimumPointWidth, 17, 27, 3);
233910e230b6Smaya}
234010e230b6Smaya
234110e230b6Smaya#define GEN75_3DSTATE_CONSTANT_DS_length       7
234210e230b6Smaya#define GEN75_3DSTATE_CONSTANT_DS_length_bias      2
234310e230b6Smaya#define GEN75_3DSTATE_CONSTANT_DS_header        \
234410e230b6Smaya   .DWordLength                         =      5,  \
234510e230b6Smaya   ._3DCommandSubOpcode                 =     26,  \
234610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
234710e230b6Smaya   .CommandSubType                      =      3,  \
234810e230b6Smaya   .CommandType                         =      3
234910e230b6Smaya
235010e230b6Smayastruct GEN75_3DSTATE_CONSTANT_DS {
235110e230b6Smaya   uint32_t                             DWordLength;
235210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
235310e230b6Smaya   uint32_t                             _3DCommandOpcode;
235410e230b6Smaya   uint32_t                             CommandSubType;
235510e230b6Smaya   uint32_t                             CommandType;
235610e230b6Smaya   struct GEN75_3DSTATE_CONSTANT_BODY   ConstantBody;
235710e230b6Smaya};
235810e230b6Smaya
235910e230b6Smayastatic inline void
236010e230b6SmayaGEN75_3DSTATE_CONSTANT_DS_pack(__attribute__((unused)) __gen_user_data *data,
236110e230b6Smaya                               __attribute__((unused)) void * restrict dst,
236210e230b6Smaya                               __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_DS * restrict values)
236310e230b6Smaya{
236410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
236510e230b6Smaya
236610e230b6Smaya   dw[0] =
236710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
236810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
236910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
237010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
237110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
237210e230b6Smaya
237310e230b6Smaya   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
237410e230b6Smaya}
237510e230b6Smaya
237610e230b6Smaya#define GEN75_3DSTATE_CONSTANT_GS_length       7
237710e230b6Smaya#define GEN75_3DSTATE_CONSTANT_GS_length_bias      2
237810e230b6Smaya#define GEN75_3DSTATE_CONSTANT_GS_header        \
237910e230b6Smaya   .DWordLength                         =      5,  \
238010e230b6Smaya   ._3DCommandSubOpcode                 =     22,  \
238110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
238210e230b6Smaya   .CommandSubType                      =      3,  \
238310e230b6Smaya   .CommandType                         =      3
238410e230b6Smaya
238510e230b6Smayastruct GEN75_3DSTATE_CONSTANT_GS {
238610e230b6Smaya   uint32_t                             DWordLength;
238710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
238810e230b6Smaya   uint32_t                             _3DCommandOpcode;
238910e230b6Smaya   uint32_t                             CommandSubType;
239010e230b6Smaya   uint32_t                             CommandType;
239110e230b6Smaya   struct GEN75_3DSTATE_CONSTANT_BODY   ConstantBody;
239210e230b6Smaya};
239310e230b6Smaya
239410e230b6Smayastatic inline void
239510e230b6SmayaGEN75_3DSTATE_CONSTANT_GS_pack(__attribute__((unused)) __gen_user_data *data,
239610e230b6Smaya                               __attribute__((unused)) void * restrict dst,
239710e230b6Smaya                               __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_GS * restrict values)
239810e230b6Smaya{
239910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
240010e230b6Smaya
240110e230b6Smaya   dw[0] =
240210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
240310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
240410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
240510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
240610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
240710e230b6Smaya
240810e230b6Smaya   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
240910e230b6Smaya}
241010e230b6Smaya
241110e230b6Smaya#define GEN75_3DSTATE_CONSTANT_HS_length       7
241210e230b6Smaya#define GEN75_3DSTATE_CONSTANT_HS_length_bias      2
241310e230b6Smaya#define GEN75_3DSTATE_CONSTANT_HS_header        \
241410e230b6Smaya   .DWordLength                         =      5,  \
241510e230b6Smaya   ._3DCommandSubOpcode                 =     25,  \
241610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
241710e230b6Smaya   .CommandSubType                      =      3,  \
241810e230b6Smaya   .CommandType                         =      3
241910e230b6Smaya
242010e230b6Smayastruct GEN75_3DSTATE_CONSTANT_HS {
242110e230b6Smaya   uint32_t                             DWordLength;
242210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
242310e230b6Smaya   uint32_t                             _3DCommandOpcode;
242410e230b6Smaya   uint32_t                             CommandSubType;
242510e230b6Smaya   uint32_t                             CommandType;
242610e230b6Smaya   struct GEN75_3DSTATE_CONSTANT_BODY   ConstantBody;
242710e230b6Smaya};
242810e230b6Smaya
242910e230b6Smayastatic inline void
243010e230b6SmayaGEN75_3DSTATE_CONSTANT_HS_pack(__attribute__((unused)) __gen_user_data *data,
243110e230b6Smaya                               __attribute__((unused)) void * restrict dst,
243210e230b6Smaya                               __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_HS * restrict values)
243310e230b6Smaya{
243410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
243510e230b6Smaya
243610e230b6Smaya   dw[0] =
243710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
243810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
243910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
244010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
244110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
244210e230b6Smaya
244310e230b6Smaya   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
244410e230b6Smaya}
244510e230b6Smaya
244610e230b6Smaya#define GEN75_3DSTATE_CONSTANT_PS_length       7
244710e230b6Smaya#define GEN75_3DSTATE_CONSTANT_PS_length_bias      2
244810e230b6Smaya#define GEN75_3DSTATE_CONSTANT_PS_header        \
244910e230b6Smaya   .DWordLength                         =      5,  \
245010e230b6Smaya   ._3DCommandSubOpcode                 =     23,  \
245110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
245210e230b6Smaya   .CommandSubType                      =      3,  \
245310e230b6Smaya   .CommandType                         =      3
245410e230b6Smaya
245510e230b6Smayastruct GEN75_3DSTATE_CONSTANT_PS {
245610e230b6Smaya   uint32_t                             DWordLength;
245710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
245810e230b6Smaya   uint32_t                             _3DCommandOpcode;
245910e230b6Smaya   uint32_t                             CommandSubType;
246010e230b6Smaya   uint32_t                             CommandType;
246110e230b6Smaya   struct GEN75_3DSTATE_CONSTANT_BODY   ConstantBody;
246210e230b6Smaya};
246310e230b6Smaya
246410e230b6Smayastatic inline void
246510e230b6SmayaGEN75_3DSTATE_CONSTANT_PS_pack(__attribute__((unused)) __gen_user_data *data,
246610e230b6Smaya                               __attribute__((unused)) void * restrict dst,
246710e230b6Smaya                               __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_PS * restrict values)
246810e230b6Smaya{
246910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
247010e230b6Smaya
247110e230b6Smaya   dw[0] =
247210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
247310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
247410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
247510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
247610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
247710e230b6Smaya
247810e230b6Smaya   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
247910e230b6Smaya}
248010e230b6Smaya
248110e230b6Smaya#define GEN75_3DSTATE_CONSTANT_VS_length       7
248210e230b6Smaya#define GEN75_3DSTATE_CONSTANT_VS_length_bias      2
248310e230b6Smaya#define GEN75_3DSTATE_CONSTANT_VS_header        \
248410e230b6Smaya   .DWordLength                         =      5,  \
248510e230b6Smaya   ._3DCommandSubOpcode                 =     21,  \
248610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
248710e230b6Smaya   .CommandSubType                      =      3,  \
248810e230b6Smaya   .CommandType                         =      3
248910e230b6Smaya
249010e230b6Smayastruct GEN75_3DSTATE_CONSTANT_VS {
249110e230b6Smaya   uint32_t                             DWordLength;
249210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
249310e230b6Smaya   uint32_t                             _3DCommandOpcode;
249410e230b6Smaya   uint32_t                             CommandSubType;
249510e230b6Smaya   uint32_t                             CommandType;
249610e230b6Smaya   struct GEN75_3DSTATE_CONSTANT_BODY   ConstantBody;
249710e230b6Smaya};
249810e230b6Smaya
249910e230b6Smayastatic inline void
250010e230b6SmayaGEN75_3DSTATE_CONSTANT_VS_pack(__attribute__((unused)) __gen_user_data *data,
250110e230b6Smaya                               __attribute__((unused)) void * restrict dst,
250210e230b6Smaya                               __attribute__((unused)) const struct GEN75_3DSTATE_CONSTANT_VS * restrict values)
250310e230b6Smaya{
250410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
250510e230b6Smaya
250610e230b6Smaya   dw[0] =
250710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
250810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
250910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
251010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
251110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
251210e230b6Smaya
251310e230b6Smaya   GEN75_3DSTATE_CONSTANT_BODY_pack(data, &dw[1], &values->ConstantBody);
251410e230b6Smaya}
251510e230b6Smaya
251610e230b6Smaya#define GEN75_3DSTATE_DEPTH_BUFFER_length      7
251710e230b6Smaya#define GEN75_3DSTATE_DEPTH_BUFFER_length_bias      2
251810e230b6Smaya#define GEN75_3DSTATE_DEPTH_BUFFER_header       \
251910e230b6Smaya   .DWordLength                         =      5,  \
252010e230b6Smaya   ._3DCommandSubOpcode                 =      5,  \
252110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
252210e230b6Smaya   .CommandSubType                      =      3,  \
252310e230b6Smaya   .CommandType                         =      3
252410e230b6Smaya
252510e230b6Smayastruct GEN75_3DSTATE_DEPTH_BUFFER {
252610e230b6Smaya   uint32_t                             DWordLength;
252710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
252810e230b6Smaya   uint32_t                             _3DCommandOpcode;
252910e230b6Smaya   uint32_t                             CommandSubType;
253010e230b6Smaya   uint32_t                             CommandType;
253110e230b6Smaya   uint32_t                             SurfacePitch;
253210e230b6Smaya   uint32_t                             SurfaceFormat;
253310e230b6Smaya#define D32_FLOAT                                1
253410e230b6Smaya#define D24_UNORM_X8_UINT                        3
253510e230b6Smaya#define D16_UNORM                                5
253610e230b6Smaya   bool                                 HierarchicalDepthBufferEnable;
253710e230b6Smaya   bool                                 StencilWriteEnable;
253810e230b6Smaya   bool                                 DepthWriteEnable;
253910e230b6Smaya   uint32_t                             SurfaceType;
254010e230b6Smaya#define SURFTYPE_1D                              0
254110e230b6Smaya#define SURFTYPE_2D                              1
254210e230b6Smaya#define SURFTYPE_3D                              2
254310e230b6Smaya#define SURFTYPE_CUBE                            3
254410e230b6Smaya#define SURFTYPE_NULL                            7
254510e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
254610e230b6Smaya   uint32_t                             LOD;
254710e230b6Smaya   uint32_t                             Width;
254810e230b6Smaya   uint32_t                             Height;
254910e230b6Smaya   uint32_t                             MOCS;
255010e230b6Smaya   uint32_t                             MinimumArrayElement;
255110e230b6Smaya   uint32_t                             Depth;
255210e230b6Smaya#define SURFTYPE_CUBEmustbezero                  0
255310e230b6Smaya   int32_t                              DepthCoordinateOffsetX;
255410e230b6Smaya   int32_t                              DepthCoordinateOffsetY;
255510e230b6Smaya   uint32_t                             RenderTargetViewExtent;
255610e230b6Smaya};
255710e230b6Smaya
255810e230b6Smayastatic inline void
255910e230b6SmayaGEN75_3DSTATE_DEPTH_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
256010e230b6Smaya                                __attribute__((unused)) void * restrict dst,
256110e230b6Smaya                                __attribute__((unused)) const struct GEN75_3DSTATE_DEPTH_BUFFER * restrict values)
256210e230b6Smaya{
256310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
256410e230b6Smaya
256510e230b6Smaya   dw[0] =
256610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
256710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
256810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
256910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
257010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
257110e230b6Smaya
257210e230b6Smaya   dw[1] =
257310e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 17) |
257410e230b6Smaya      __gen_uint(values->SurfaceFormat, 18, 20) |
257510e230b6Smaya      __gen_uint(values->HierarchicalDepthBufferEnable, 22, 22) |
257610e230b6Smaya      __gen_uint(values->StencilWriteEnable, 27, 27) |
257710e230b6Smaya      __gen_uint(values->DepthWriteEnable, 28, 28) |
257810e230b6Smaya      __gen_uint(values->SurfaceType, 29, 31);
257910e230b6Smaya
258010e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
258110e230b6Smaya
258210e230b6Smaya   dw[3] =
258310e230b6Smaya      __gen_uint(values->LOD, 0, 3) |
258410e230b6Smaya      __gen_uint(values->Width, 4, 17) |
258510e230b6Smaya      __gen_uint(values->Height, 18, 31);
258610e230b6Smaya
258710e230b6Smaya   dw[4] =
258810e230b6Smaya      __gen_uint(values->MOCS, 0, 3) |
258910e230b6Smaya      __gen_uint(values->MinimumArrayElement, 10, 20) |
259010e230b6Smaya      __gen_uint(values->Depth, 21, 31);
259110e230b6Smaya
259210e230b6Smaya   dw[5] =
259310e230b6Smaya      __gen_sint(values->DepthCoordinateOffsetX, 0, 15) |
259410e230b6Smaya      __gen_sint(values->DepthCoordinateOffsetY, 16, 31);
259510e230b6Smaya
259610e230b6Smaya   dw[6] =
259710e230b6Smaya      __gen_uint(values->RenderTargetViewExtent, 21, 31);
259810e230b6Smaya}
259910e230b6Smaya
260010e230b6Smaya#define GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_length      2
260110e230b6Smaya#define GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_length_bias      2
260210e230b6Smaya#define GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_header\
260310e230b6Smaya   .DWordLength                         =      0,  \
260410e230b6Smaya   ._3DCommandSubOpcode                 =     37,  \
260510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
260610e230b6Smaya   .CommandSubType                      =      3,  \
260710e230b6Smaya   .CommandType                         =      3
260810e230b6Smaya
260910e230b6Smayastruct GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS {
261010e230b6Smaya   uint32_t                             DWordLength;
261110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
261210e230b6Smaya   uint32_t                             _3DCommandOpcode;
261310e230b6Smaya   uint32_t                             CommandSubType;
261410e230b6Smaya   uint32_t                             CommandType;
261510e230b6Smaya   uint64_t                             PointertoDEPTH_STENCIL_STATE;
261610e230b6Smaya};
261710e230b6Smaya
261810e230b6Smayastatic inline void
261910e230b6SmayaGEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data,
262010e230b6Smaya                                                __attribute__((unused)) void * restrict dst,
262110e230b6Smaya                                                __attribute__((unused)) const struct GEN75_3DSTATE_DEPTH_STENCIL_STATE_POINTERS * restrict values)
262210e230b6Smaya{
262310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
262410e230b6Smaya
262510e230b6Smaya   dw[0] =
262610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
262710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
262810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
262910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
263010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
263110e230b6Smaya
263210e230b6Smaya   dw[1] =
263310e230b6Smaya      __gen_mbo(0, 0) |
263410e230b6Smaya      __gen_offset(values->PointertoDEPTH_STENCIL_STATE, 6, 31);
263510e230b6Smaya}
263610e230b6Smaya
263710e230b6Smaya#define GEN75_3DSTATE_DRAWING_RECTANGLE_length      4
263810e230b6Smaya#define GEN75_3DSTATE_DRAWING_RECTANGLE_length_bias      2
263910e230b6Smaya#define GEN75_3DSTATE_DRAWING_RECTANGLE_header  \
264010e230b6Smaya   .DWordLength                         =      2,  \
264110e230b6Smaya   ._3DCommandSubOpcode                 =      0,  \
264210e230b6Smaya   ._3DCommandOpcode                    =      1,  \
264310e230b6Smaya   .CommandSubType                      =      3,  \
264410e230b6Smaya   .CommandType                         =      3
264510e230b6Smaya
264610e230b6Smayastruct GEN75_3DSTATE_DRAWING_RECTANGLE {
264710e230b6Smaya   uint32_t                             DWordLength;
264810e230b6Smaya   uint32_t                             CoreModeSelect;
264910e230b6Smaya#define Legacy                                   0
265010e230b6Smaya#define Core0Enabled                             1
265110e230b6Smaya#define Core1Enabled                             2
265210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
265310e230b6Smaya   uint32_t                             _3DCommandOpcode;
265410e230b6Smaya   uint32_t                             CommandSubType;
265510e230b6Smaya   uint32_t                             CommandType;
265610e230b6Smaya   uint32_t                             ClippedDrawingRectangleXMin;
265710e230b6Smaya   uint32_t                             ClippedDrawingRectangleYMin;
265810e230b6Smaya   uint32_t                             ClippedDrawingRectangleXMax;
265910e230b6Smaya   uint32_t                             ClippedDrawingRectangleYMax;
266010e230b6Smaya   int32_t                              DrawingRectangleOriginX;
266110e230b6Smaya   int32_t                              DrawingRectangleOriginY;
266210e230b6Smaya};
266310e230b6Smaya
266410e230b6Smayastatic inline void
266510e230b6SmayaGEN75_3DSTATE_DRAWING_RECTANGLE_pack(__attribute__((unused)) __gen_user_data *data,
266610e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
266710e230b6Smaya                                     __attribute__((unused)) const struct GEN75_3DSTATE_DRAWING_RECTANGLE * restrict values)
266810e230b6Smaya{
266910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
267010e230b6Smaya
267110e230b6Smaya   dw[0] =
267210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
267310e230b6Smaya      __gen_uint(values->CoreModeSelect, 14, 15) |
267410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
267510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
267610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
267710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
267810e230b6Smaya
267910e230b6Smaya   dw[1] =
268010e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleXMin, 0, 15) |
268110e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleYMin, 16, 31);
268210e230b6Smaya
268310e230b6Smaya   dw[2] =
268410e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleXMax, 0, 15) |
268510e230b6Smaya      __gen_uint(values->ClippedDrawingRectangleYMax, 16, 31);
268610e230b6Smaya
268710e230b6Smaya   dw[3] =
268810e230b6Smaya      __gen_sint(values->DrawingRectangleOriginX, 0, 15) |
268910e230b6Smaya      __gen_sint(values->DrawingRectangleOriginY, 16, 31);
269010e230b6Smaya}
269110e230b6Smaya
269210e230b6Smaya#define GEN75_3DSTATE_DS_length                6
269310e230b6Smaya#define GEN75_3DSTATE_DS_length_bias           2
269410e230b6Smaya#define GEN75_3DSTATE_DS_header                 \
269510e230b6Smaya   .DWordLength                         =      4,  \
269610e230b6Smaya   ._3DCommandSubOpcode                 =     29,  \
269710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
269810e230b6Smaya   .CommandSubType                      =      3,  \
269910e230b6Smaya   .CommandType                         =      3
270010e230b6Smaya
270110e230b6Smayastruct GEN75_3DSTATE_DS {
270210e230b6Smaya   uint32_t                             DWordLength;
270310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
270410e230b6Smaya   uint32_t                             _3DCommandOpcode;
270510e230b6Smaya   uint32_t                             CommandSubType;
270610e230b6Smaya   uint32_t                             CommandType;
270710e230b6Smaya   uint64_t                             KernelStartPointer;
270810e230b6Smaya   bool                                 SoftwareExceptionEnable;
270910e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
271010e230b6Smaya   bool                                 AccessesUAV;
271110e230b6Smaya   uint32_t                             FloatingPointMode;
271210e230b6Smaya#define IEEE754                                  0
271310e230b6Smaya#define Alternate                                1
271410e230b6Smaya   uint32_t                             ThreadDispatchPriority;
271510e230b6Smaya#define High                                     1
271610e230b6Smaya   uint32_t                             BindingTableEntryCount;
271710e230b6Smaya   uint32_t                             SamplerCount;
271810e230b6Smaya#define NoSamplers                               0
271910e230b6Smaya#define _14Samplers                              1
272010e230b6Smaya#define _58Samplers                              2
272110e230b6Smaya#define _912Samplers                             3
272210e230b6Smaya#define _1316Samplers                            4
272310e230b6Smaya   bool                                 VectorMaskEnable;
272410e230b6Smaya   uint32_t                             SingleDomainPointDispatch;
272510e230b6Smaya   uint32_t                             PerThreadScratchSpace;
272610e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
272710e230b6Smaya   uint32_t                             PatchURBEntryReadOffset;
272810e230b6Smaya   uint32_t                             PatchURBEntryReadLength;
272910e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
273010e230b6Smaya   bool                                 Enable;
273110e230b6Smaya   bool                                 DSCacheDisable;
273210e230b6Smaya   bool                                 ComputeWCoordinateEnable;
273310e230b6Smaya   bool                                 StatisticsEnable;
273410e230b6Smaya   uint32_t                             MaximumNumberofThreads;
273510e230b6Smaya};
273610e230b6Smaya
273710e230b6Smayastatic inline void
273810e230b6SmayaGEN75_3DSTATE_DS_pack(__attribute__((unused)) __gen_user_data *data,
273910e230b6Smaya                      __attribute__((unused)) void * restrict dst,
274010e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_DS * restrict values)
274110e230b6Smaya{
274210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
274310e230b6Smaya
274410e230b6Smaya   dw[0] =
274510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
274610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
274710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
274810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
274910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
275010e230b6Smaya
275110e230b6Smaya   dw[1] =
275210e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 31);
275310e230b6Smaya
275410e230b6Smaya   dw[2] =
275510e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
275610e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
275710e230b6Smaya      __gen_uint(values->AccessesUAV, 14, 14) |
275810e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
275910e230b6Smaya      __gen_uint(values->ThreadDispatchPriority, 17, 17) |
276010e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
276110e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
276210e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
276310e230b6Smaya      __gen_uint(values->SingleDomainPointDispatch, 31, 31);
276410e230b6Smaya
276510e230b6Smaya   const uint32_t v3 =
276610e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
276710e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3);
276810e230b6Smaya
276910e230b6Smaya   dw[4] =
277010e230b6Smaya      __gen_uint(values->PatchURBEntryReadOffset, 4, 9) |
277110e230b6Smaya      __gen_uint(values->PatchURBEntryReadLength, 11, 17) |
277210e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 20, 24);
277310e230b6Smaya
277410e230b6Smaya   dw[5] =
277510e230b6Smaya      __gen_uint(values->Enable, 0, 0) |
277610e230b6Smaya      __gen_uint(values->DSCacheDisable, 1, 1) |
277710e230b6Smaya      __gen_uint(values->ComputeWCoordinateEnable, 2, 2) |
277810e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
277910e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 21, 29);
278010e230b6Smaya}
278110e230b6Smaya
278210e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_DS_length_bias      2
278310e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_DS_header \
278410e230b6Smaya   .DWordLength                         =      1,  \
278510e230b6Smaya   ._3DCommandSubOpcode                 =     55,  \
278610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
278710e230b6Smaya   .CommandSubType                      =      3,  \
278810e230b6Smaya   .CommandType                         =      3
278910e230b6Smaya
279010e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_DS {
279110e230b6Smaya   uint32_t                             DWordLength;
279210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
279310e230b6Smaya   uint32_t                             _3DCommandOpcode;
279410e230b6Smaya   uint32_t                             CommandSubType;
279510e230b6Smaya   uint32_t                             CommandType;
279610e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
279710e230b6Smaya   uint32_t                             ConstantBufferValid;
279810e230b6Smaya   uint64_t                             GatherBufferOffset;
279910e230b6Smaya   /* variable length fields follow */
280010e230b6Smaya};
280110e230b6Smaya
280210e230b6Smayastatic inline void
280310e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_DS_pack(__attribute__((unused)) __gen_user_data *data,
280410e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
280510e230b6Smaya                                      __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_DS * restrict values)
280610e230b6Smaya{
280710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
280810e230b6Smaya
280910e230b6Smaya   dw[0] =
281010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
281110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
281210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
281310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
281410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
281510e230b6Smaya
281610e230b6Smaya   dw[1] =
281710e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
281810e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
281910e230b6Smaya
282010e230b6Smaya   dw[2] =
282110e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
282210e230b6Smaya}
282310e230b6Smaya
282410e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_GS_length_bias      2
282510e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_GS_header \
282610e230b6Smaya   .DWordLength                         =      1,  \
282710e230b6Smaya   ._3DCommandSubOpcode                 =     53,  \
282810e230b6Smaya   ._3DCommandOpcode                    =      0,  \
282910e230b6Smaya   .CommandSubType                      =      3,  \
283010e230b6Smaya   .CommandType                         =      3
283110e230b6Smaya
283210e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_GS {
283310e230b6Smaya   uint32_t                             DWordLength;
283410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
283510e230b6Smaya   uint32_t                             _3DCommandOpcode;
283610e230b6Smaya   uint32_t                             CommandSubType;
283710e230b6Smaya   uint32_t                             CommandType;
283810e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
283910e230b6Smaya   uint32_t                             ConstantBufferValid;
284010e230b6Smaya   uint64_t                             GatherBufferOffset;
284110e230b6Smaya   /* variable length fields follow */
284210e230b6Smaya};
284310e230b6Smaya
284410e230b6Smayastatic inline void
284510e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_GS_pack(__attribute__((unused)) __gen_user_data *data,
284610e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
284710e230b6Smaya                                      __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_GS * restrict values)
284810e230b6Smaya{
284910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
285010e230b6Smaya
285110e230b6Smaya   dw[0] =
285210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
285310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
285410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
285510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
285610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
285710e230b6Smaya
285810e230b6Smaya   dw[1] =
285910e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
286010e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
286110e230b6Smaya
286210e230b6Smaya   dw[2] =
286310e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
286410e230b6Smaya}
286510e230b6Smaya
286610e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_HS_length_bias      2
286710e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_HS_header \
286810e230b6Smaya   .DWordLength                         =      1,  \
286910e230b6Smaya   ._3DCommandSubOpcode                 =     54,  \
287010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
287110e230b6Smaya   .CommandSubType                      =      3,  \
287210e230b6Smaya   .CommandType                         =      3
287310e230b6Smaya
287410e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_HS {
287510e230b6Smaya   uint32_t                             DWordLength;
287610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
287710e230b6Smaya   uint32_t                             _3DCommandOpcode;
287810e230b6Smaya   uint32_t                             CommandSubType;
287910e230b6Smaya   uint32_t                             CommandType;
288010e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
288110e230b6Smaya   uint32_t                             ConstantBufferValid;
288210e230b6Smaya   uint64_t                             GatherBufferOffset;
288310e230b6Smaya   /* variable length fields follow */
288410e230b6Smaya};
288510e230b6Smaya
288610e230b6Smayastatic inline void
288710e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_HS_pack(__attribute__((unused)) __gen_user_data *data,
288810e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
288910e230b6Smaya                                      __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_HS * restrict values)
289010e230b6Smaya{
289110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
289210e230b6Smaya
289310e230b6Smaya   dw[0] =
289410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
289510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
289610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
289710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
289810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
289910e230b6Smaya
290010e230b6Smaya   dw[1] =
290110e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
290210e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
290310e230b6Smaya
290410e230b6Smaya   dw[2] =
290510e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
290610e230b6Smaya}
290710e230b6Smaya
290810e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_PS_length_bias      2
290910e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_PS_header \
291010e230b6Smaya   .DWordLength                         =      1,  \
291110e230b6Smaya   ._3DCommandSubOpcode                 =     56,  \
291210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
291310e230b6Smaya   .CommandSubType                      =      3,  \
291410e230b6Smaya   .CommandType                         =      3
291510e230b6Smaya
291610e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_PS {
291710e230b6Smaya   uint32_t                             DWordLength;
291810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
291910e230b6Smaya   uint32_t                             _3DCommandOpcode;
292010e230b6Smaya   uint32_t                             CommandSubType;
292110e230b6Smaya   uint32_t                             CommandType;
292210e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
292310e230b6Smaya   uint32_t                             ConstantBufferValid;
292410e230b6Smaya   bool                                 ConstantBufferDx9Enable;
292510e230b6Smaya   uint64_t                             GatherBufferOffset;
292610e230b6Smaya   /* variable length fields follow */
292710e230b6Smaya};
292810e230b6Smaya
292910e230b6Smayastatic inline void
293010e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_PS_pack(__attribute__((unused)) __gen_user_data *data,
293110e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
293210e230b6Smaya                                      __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_PS * restrict values)
293310e230b6Smaya{
293410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
293510e230b6Smaya
293610e230b6Smaya   dw[0] =
293710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
293810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
293910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
294010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
294110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
294210e230b6Smaya
294310e230b6Smaya   dw[1] =
294410e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
294510e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
294610e230b6Smaya
294710e230b6Smaya   dw[2] =
294810e230b6Smaya      __gen_uint(values->ConstantBufferDx9Enable, 4, 4) |
294910e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
295010e230b6Smaya}
295110e230b6Smaya
295210e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_VS_length_bias      2
295310e230b6Smaya#define GEN75_3DSTATE_GATHER_CONSTANT_VS_header \
295410e230b6Smaya   .DWordLength                         =      0,  \
295510e230b6Smaya   ._3DCommandSubOpcode                 =     52,  \
295610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
295710e230b6Smaya   .CommandSubType                      =      3,  \
295810e230b6Smaya   .CommandType                         =      3
295910e230b6Smaya
296010e230b6Smayastruct GEN75_3DSTATE_GATHER_CONSTANT_VS {
296110e230b6Smaya   uint32_t                             DWordLength;
296210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
296310e230b6Smaya   uint32_t                             _3DCommandOpcode;
296410e230b6Smaya   uint32_t                             CommandSubType;
296510e230b6Smaya   uint32_t                             CommandType;
296610e230b6Smaya   uint32_t                             ConstantBufferBindingTableBlock;
296710e230b6Smaya   uint32_t                             ConstantBufferValid;
296810e230b6Smaya   bool                                 ConstantBufferDx9Enable;
296910e230b6Smaya   uint64_t                             GatherBufferOffset;
297010e230b6Smaya   /* variable length fields follow */
297110e230b6Smaya};
297210e230b6Smaya
297310e230b6Smayastatic inline void
297410e230b6SmayaGEN75_3DSTATE_GATHER_CONSTANT_VS_pack(__attribute__((unused)) __gen_user_data *data,
297510e230b6Smaya                                      __attribute__((unused)) void * restrict dst,
297610e230b6Smaya                                      __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_CONSTANT_VS * restrict values)
297710e230b6Smaya{
297810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
297910e230b6Smaya
298010e230b6Smaya   dw[0] =
298110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
298210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
298310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
298410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
298510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
298610e230b6Smaya
298710e230b6Smaya   dw[1] =
298810e230b6Smaya      __gen_uint(values->ConstantBufferBindingTableBlock, 12, 15) |
298910e230b6Smaya      __gen_uint(values->ConstantBufferValid, 16, 31);
299010e230b6Smaya
299110e230b6Smaya   dw[2] =
299210e230b6Smaya      __gen_uint(values->ConstantBufferDx9Enable, 4, 4) |
299310e230b6Smaya      __gen_offset(values->GatherBufferOffset, 6, 22);
299410e230b6Smaya}
299510e230b6Smaya
299610e230b6Smaya#define GEN75_3DSTATE_GATHER_POOL_ALLOC_length      3
299710e230b6Smaya#define GEN75_3DSTATE_GATHER_POOL_ALLOC_length_bias      2
299810e230b6Smaya#define GEN75_3DSTATE_GATHER_POOL_ALLOC_header  \
299910e230b6Smaya   .DWordLength                         =      1,  \
300010e230b6Smaya   ._3DCommandSubOpcode                 =     26,  \
300110e230b6Smaya   ._3DCommandOpcode                    =      1,  \
300210e230b6Smaya   .CommandSubType                      =      3,  \
300310e230b6Smaya   .CommandType                         =      3
300410e230b6Smaya
300510e230b6Smayastruct GEN75_3DSTATE_GATHER_POOL_ALLOC {
300610e230b6Smaya   uint32_t                             DWordLength;
300710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
300810e230b6Smaya   uint32_t                             _3DCommandOpcode;
300910e230b6Smaya   uint32_t                             CommandSubType;
301010e230b6Smaya   uint32_t                             CommandType;
301110e230b6Smaya   uint32_t                             MOCS;
301210e230b6Smaya   bool                                 GatherPoolEnable;
301310e230b6Smaya   __gen_address_type                   GatherPoolBaseAddress;
301410e230b6Smaya   __gen_address_type                   GatherPoolUpperBound;
301510e230b6Smaya};
301610e230b6Smaya
301710e230b6Smayastatic inline void
301810e230b6SmayaGEN75_3DSTATE_GATHER_POOL_ALLOC_pack(__attribute__((unused)) __gen_user_data *data,
301910e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
302010e230b6Smaya                                     __attribute__((unused)) const struct GEN75_3DSTATE_GATHER_POOL_ALLOC * restrict values)
302110e230b6Smaya{
302210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
302310e230b6Smaya
302410e230b6Smaya   dw[0] =
302510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
302610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
302710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
302810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
302910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
303010e230b6Smaya
303110e230b6Smaya   const uint32_t v1 =
303210e230b6Smaya      __gen_uint(values->MOCS, 0, 3) |
303310e230b6Smaya      __gen_mbo(4, 5) |
303410e230b6Smaya      __gen_uint(values->GatherPoolEnable, 11, 11);
303510e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->GatherPoolBaseAddress, v1);
303610e230b6Smaya
303710e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->GatherPoolUpperBound, 0);
303810e230b6Smaya}
303910e230b6Smaya
304010e230b6Smaya#define GEN75_3DSTATE_GS_length                7
304110e230b6Smaya#define GEN75_3DSTATE_GS_length_bias           2
304210e230b6Smaya#define GEN75_3DSTATE_GS_header                 \
304310e230b6Smaya   .DWordLength                         =      5,  \
304410e230b6Smaya   ._3DCommandSubOpcode                 =     17,  \
304510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
304610e230b6Smaya   .CommandSubType                      =      3,  \
304710e230b6Smaya   .CommandType                         =      3
304810e230b6Smaya
304910e230b6Smayastruct GEN75_3DSTATE_GS {
305010e230b6Smaya   uint32_t                             DWordLength;
305110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
305210e230b6Smaya   uint32_t                             _3DCommandOpcode;
305310e230b6Smaya   uint32_t                             CommandSubType;
305410e230b6Smaya   uint32_t                             CommandType;
305510e230b6Smaya   uint64_t                             KernelStartPointer;
305610e230b6Smaya   bool                                 SoftwareExceptionEnable;
305710e230b6Smaya   bool                                 MaskStackExceptionEnable;
305810e230b6Smaya   uint32_t                             GSaccessesUAV;
305910e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
306010e230b6Smaya   uint32_t                             FloatingPointMode;
306110e230b6Smaya#define IEEE754                                  0
306210e230b6Smaya#define Alternate                                1
306310e230b6Smaya   uint32_t                             ThreadPriority;
306410e230b6Smaya#define NormalPriority                           0
306510e230b6Smaya#define HighPriority                             1
306610e230b6Smaya   uint32_t                             BindingTableEntryCount;
306710e230b6Smaya   uint32_t                             SamplerCount;
306810e230b6Smaya#define NoSamplers                               0
306910e230b6Smaya#define _14Samplers                              1
307010e230b6Smaya#define _58Samplers                              2
307110e230b6Smaya#define _912Samplers                             3
307210e230b6Smaya#define _1316Samplers                            4
307310e230b6Smaya   bool                                 VectorMaskEnable;
307410e230b6Smaya   bool                                 SingleProgramFlow;
307510e230b6Smaya   uint32_t                             PerThreadScratchSpace;
307610e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
307710e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
307810e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
307910e230b6Smaya   bool                                 IncludeVertexHandles;
308010e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
308110e230b6Smaya   enum GEN75_3D_Prim_Topo_Type         OutputTopology;
308210e230b6Smaya   uint32_t                             OutputVertexSize;
308310e230b6Smaya   bool                                 Enable;
308410e230b6Smaya   bool                                 DiscardAdjacency;
308510e230b6Smaya   uint32_t                             ReorderMode;
308610e230b6Smaya#define LEADING                                  0
308710e230b6Smaya#define TRAILING                                 1
308810e230b6Smaya   uint32_t                             Hint;
308910e230b6Smaya   bool                                 IncludePrimitiveID;
309010e230b6Smaya   uint32_t                             GSInvocationsIncrementValue;
309110e230b6Smaya   uint32_t                             StatisticsEnable;
309210e230b6Smaya   uint32_t                             DispatchMode;
309310e230b6Smaya#define DISPATCH_MODE_SINGLE                     0
309410e230b6Smaya#define DISPATCH_MODE_DUAL_INSTANCE              1
309510e230b6Smaya#define DISPATCH_MODE_DUAL_OBJECT                2
309610e230b6Smaya   uint32_t                             DefaultStreamID;
309710e230b6Smaya   uint32_t                             InstanceControl;
309810e230b6Smaya   uint32_t                             ControlDataHeaderSize;
309910e230b6Smaya   uint32_t                             MaximumNumberofThreads;
310010e230b6Smaya   uint64_t                             SemaphoreHandle;
310110e230b6Smaya   uint32_t                             ControlDataFormat;
310210e230b6Smaya#define GSCTL_CUT                                0
310310e230b6Smaya#define GSCTL_SID                                1
310410e230b6Smaya};
310510e230b6Smaya
310610e230b6Smayastatic inline void
310710e230b6SmayaGEN75_3DSTATE_GS_pack(__attribute__((unused)) __gen_user_data *data,
310810e230b6Smaya                      __attribute__((unused)) void * restrict dst,
310910e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_GS * restrict values)
311010e230b6Smaya{
311110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
311210e230b6Smaya
311310e230b6Smaya   dw[0] =
311410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
311510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
311610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
311710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
311810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
311910e230b6Smaya
312010e230b6Smaya   dw[1] =
312110e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 31);
312210e230b6Smaya
312310e230b6Smaya   dw[2] =
312410e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
312510e230b6Smaya      __gen_uint(values->MaskStackExceptionEnable, 11, 11) |
312610e230b6Smaya      __gen_uint(values->GSaccessesUAV, 12, 12) |
312710e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
312810e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
312910e230b6Smaya      __gen_uint(values->ThreadPriority, 17, 17) |
313010e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
313110e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
313210e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
313310e230b6Smaya      __gen_uint(values->SingleProgramFlow, 31, 31);
313410e230b6Smaya
313510e230b6Smaya   const uint32_t v3 =
313610e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
313710e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3);
313810e230b6Smaya
313910e230b6Smaya   dw[4] =
314010e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 0, 3) |
314110e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 4, 9) |
314210e230b6Smaya      __gen_uint(values->IncludeVertexHandles, 10, 10) |
314310e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 16) |
314410e230b6Smaya      __gen_uint(values->OutputTopology, 17, 22) |
314510e230b6Smaya      __gen_uint(values->OutputVertexSize, 23, 28);
314610e230b6Smaya
314710e230b6Smaya   dw[5] =
314810e230b6Smaya      __gen_uint(values->Enable, 0, 0) |
314910e230b6Smaya      __gen_uint(values->DiscardAdjacency, 1, 1) |
315010e230b6Smaya      __gen_uint(values->ReorderMode, 2, 2) |
315110e230b6Smaya      __gen_uint(values->Hint, 3, 3) |
315210e230b6Smaya      __gen_uint(values->IncludePrimitiveID, 4, 4) |
315310e230b6Smaya      __gen_uint(values->GSInvocationsIncrementValue, 5, 9) |
315410e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
315510e230b6Smaya      __gen_uint(values->DispatchMode, 11, 12) |
315610e230b6Smaya      __gen_uint(values->DefaultStreamID, 13, 14) |
315710e230b6Smaya      __gen_uint(values->InstanceControl, 15, 19) |
315810e230b6Smaya      __gen_uint(values->ControlDataHeaderSize, 20, 23) |
315910e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 24, 31);
316010e230b6Smaya
316110e230b6Smaya   dw[6] =
316210e230b6Smaya      __gen_offset(values->SemaphoreHandle, 0, 12) |
316310e230b6Smaya      __gen_uint(values->ControlDataFormat, 31, 31);
316410e230b6Smaya}
316510e230b6Smaya
316610e230b6Smaya#define GEN75_3DSTATE_HIER_DEPTH_BUFFER_length      3
316710e230b6Smaya#define GEN75_3DSTATE_HIER_DEPTH_BUFFER_length_bias      2
316810e230b6Smaya#define GEN75_3DSTATE_HIER_DEPTH_BUFFER_header  \
316910e230b6Smaya   .DWordLength                         =      1,  \
317010e230b6Smaya   ._3DCommandSubOpcode                 =      7,  \
317110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
317210e230b6Smaya   .CommandSubType                      =      3,  \
317310e230b6Smaya   .CommandType                         =      3
317410e230b6Smaya
317510e230b6Smayastruct GEN75_3DSTATE_HIER_DEPTH_BUFFER {
317610e230b6Smaya   uint32_t                             DWordLength;
317710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
317810e230b6Smaya   uint32_t                             _3DCommandOpcode;
317910e230b6Smaya   uint32_t                             CommandSubType;
318010e230b6Smaya   uint32_t                             CommandType;
318110e230b6Smaya   uint32_t                             SurfacePitch;
318210e230b6Smaya   uint32_t                             MOCS;
318310e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
318410e230b6Smaya};
318510e230b6Smaya
318610e230b6Smayastatic inline void
318710e230b6SmayaGEN75_3DSTATE_HIER_DEPTH_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
318810e230b6Smaya                                     __attribute__((unused)) void * restrict dst,
318910e230b6Smaya                                     __attribute__((unused)) const struct GEN75_3DSTATE_HIER_DEPTH_BUFFER * restrict values)
319010e230b6Smaya{
319110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
319210e230b6Smaya
319310e230b6Smaya   dw[0] =
319410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
319510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
319610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
319710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
319810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
319910e230b6Smaya
320010e230b6Smaya   dw[1] =
320110e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 16) |
320210e230b6Smaya      __gen_uint(values->MOCS, 25, 28);
320310e230b6Smaya
320410e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
320510e230b6Smaya}
320610e230b6Smaya
320710e230b6Smaya#define GEN75_3DSTATE_HS_length                7
320810e230b6Smaya#define GEN75_3DSTATE_HS_length_bias           2
320910e230b6Smaya#define GEN75_3DSTATE_HS_header                 \
321010e230b6Smaya   .DWordLength                         =      5,  \
321110e230b6Smaya   ._3DCommandSubOpcode                 =     27,  \
321210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
321310e230b6Smaya   .CommandSubType                      =      3,  \
321410e230b6Smaya   .CommandType                         =      3
321510e230b6Smaya
321610e230b6Smayastruct GEN75_3DSTATE_HS {
321710e230b6Smaya   uint32_t                             DWordLength;
321810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
321910e230b6Smaya   uint32_t                             _3DCommandOpcode;
322010e230b6Smaya   uint32_t                             CommandSubType;
322110e230b6Smaya   uint32_t                             CommandType;
322210e230b6Smaya   uint32_t                             MaximumNumberofThreads;
322310e230b6Smaya   bool                                 SoftwareExceptionEnable;
322410e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
322510e230b6Smaya   uint32_t                             FloatingPointMode;
322610e230b6Smaya#define IEEE754                                  0
322710e230b6Smaya#define Alternate                                1
322810e230b6Smaya   uint32_t                             ThreadDispatchPriority;
322910e230b6Smaya#define High                                     1
323010e230b6Smaya   uint32_t                             BindingTableEntryCount;
323110e230b6Smaya   uint32_t                             SamplerCount;
323210e230b6Smaya#define NoSamplers                               0
323310e230b6Smaya#define _14Samplers                              1
323410e230b6Smaya#define _58Samplers                              2
323510e230b6Smaya#define _912Samplers                             3
323610e230b6Smaya#define _1316Samplers                            4
323710e230b6Smaya   uint32_t                             InstanceCount;
323810e230b6Smaya   bool                                 StatisticsEnable;
323910e230b6Smaya   bool                                 Enable;
324010e230b6Smaya   uint64_t                             KernelStartPointer;
324110e230b6Smaya   uint32_t                             PerThreadScratchSpace;
324210e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
324310e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
324410e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
324510e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
324610e230b6Smaya   bool                                 IncludeVertexHandles;
324710e230b6Smaya   bool                                 HSaccessesUAV;
324810e230b6Smaya   bool                                 VectorMaskEnable;
324910e230b6Smaya   bool                                 SingleProgramFlow;
325010e230b6Smaya   uint64_t                             SemaphoreHandle;
325110e230b6Smaya};
325210e230b6Smaya
325310e230b6Smayastatic inline void
325410e230b6SmayaGEN75_3DSTATE_HS_pack(__attribute__((unused)) __gen_user_data *data,
325510e230b6Smaya                      __attribute__((unused)) void * restrict dst,
325610e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_HS * restrict values)
325710e230b6Smaya{
325810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
325910e230b6Smaya
326010e230b6Smaya   dw[0] =
326110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
326210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
326310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
326410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
326510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
326610e230b6Smaya
326710e230b6Smaya   dw[1] =
326810e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 0, 7) |
326910e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 12, 12) |
327010e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
327110e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
327210e230b6Smaya      __gen_uint(values->ThreadDispatchPriority, 17, 17) |
327310e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
327410e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29);
327510e230b6Smaya
327610e230b6Smaya   dw[2] =
327710e230b6Smaya      __gen_uint(values->InstanceCount, 0, 3) |
327810e230b6Smaya      __gen_uint(values->StatisticsEnable, 29, 29) |
327910e230b6Smaya      __gen_uint(values->Enable, 31, 31);
328010e230b6Smaya
328110e230b6Smaya   dw[3] =
328210e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 31);
328310e230b6Smaya
328410e230b6Smaya   const uint32_t v4 =
328510e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
328610e230b6Smaya   dw[4] = __gen_combine_address(data, &dw[4], values->ScratchSpaceBasePointer, v4);
328710e230b6Smaya
328810e230b6Smaya   dw[5] =
328910e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 4, 9) |
329010e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 16) |
329110e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 19, 23) |
329210e230b6Smaya      __gen_uint(values->IncludeVertexHandles, 24, 24) |
329310e230b6Smaya      __gen_uint(values->HSaccessesUAV, 25, 25) |
329410e230b6Smaya      __gen_uint(values->VectorMaskEnable, 26, 26) |
329510e230b6Smaya      __gen_uint(values->SingleProgramFlow, 27, 27);
329610e230b6Smaya
329710e230b6Smaya   dw[6] =
329810e230b6Smaya      __gen_offset(values->SemaphoreHandle, 0, 12);
329910e230b6Smaya}
330010e230b6Smaya
330110e230b6Smaya#define GEN75_3DSTATE_INDEX_BUFFER_length      3
330210e230b6Smaya#define GEN75_3DSTATE_INDEX_BUFFER_length_bias      2
330310e230b6Smaya#define GEN75_3DSTATE_INDEX_BUFFER_header       \
330410e230b6Smaya   .DWordLength                         =      1,  \
330510e230b6Smaya   ._3DCommandSubOpcode                 =     10,  \
330610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
330710e230b6Smaya   .CommandSubType                      =      3,  \
330810e230b6Smaya   .CommandType                         =      3
330910e230b6Smaya
331010e230b6Smayastruct GEN75_3DSTATE_INDEX_BUFFER {
331110e230b6Smaya   uint32_t                             DWordLength;
331210e230b6Smaya   uint32_t                             IndexFormat;
331310e230b6Smaya#define INDEX_BYTE                               0
331410e230b6Smaya#define INDEX_WORD                               1
331510e230b6Smaya#define INDEX_DWORD                              2
331610e230b6Smaya   uint32_t                             MOCS;
331710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
331810e230b6Smaya   uint32_t                             _3DCommandOpcode;
331910e230b6Smaya   uint32_t                             CommandSubType;
332010e230b6Smaya   uint32_t                             CommandType;
332110e230b6Smaya   __gen_address_type                   BufferStartingAddress;
332210e230b6Smaya   __gen_address_type                   BufferEndingAddress;
332310e230b6Smaya};
332410e230b6Smaya
332510e230b6Smayastatic inline void
332610e230b6SmayaGEN75_3DSTATE_INDEX_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
332710e230b6Smaya                                __attribute__((unused)) void * restrict dst,
332810e230b6Smaya                                __attribute__((unused)) const struct GEN75_3DSTATE_INDEX_BUFFER * restrict values)
332910e230b6Smaya{
333010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
333110e230b6Smaya
333210e230b6Smaya   dw[0] =
333310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
333410e230b6Smaya      __gen_uint(values->IndexFormat, 8, 9) |
333510e230b6Smaya      __gen_uint(values->MOCS, 12, 15) |
333610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
333710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
333810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
333910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
334010e230b6Smaya
334110e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->BufferStartingAddress, 0);
334210e230b6Smaya
334310e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->BufferEndingAddress, 0);
334410e230b6Smaya}
334510e230b6Smaya
334610e230b6Smaya#define GEN75_3DSTATE_LINE_STIPPLE_length      3
334710e230b6Smaya#define GEN75_3DSTATE_LINE_STIPPLE_length_bias      2
334810e230b6Smaya#define GEN75_3DSTATE_LINE_STIPPLE_header       \
334910e230b6Smaya   .DWordLength                         =      1,  \
335010e230b6Smaya   ._3DCommandSubOpcode                 =      8,  \
335110e230b6Smaya   ._3DCommandOpcode                    =      1,  \
335210e230b6Smaya   .CommandSubType                      =      3,  \
335310e230b6Smaya   .CommandType                         =      3
335410e230b6Smaya
335510e230b6Smayastruct GEN75_3DSTATE_LINE_STIPPLE {
335610e230b6Smaya   uint32_t                             DWordLength;
335710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
335810e230b6Smaya   uint32_t                             _3DCommandOpcode;
335910e230b6Smaya   uint32_t                             CommandSubType;
336010e230b6Smaya   uint32_t                             CommandType;
336110e230b6Smaya   uint32_t                             LineStipplePattern;
336210e230b6Smaya   uint32_t                             CurrentStippleIndex;
336310e230b6Smaya   uint32_t                             CurrentRepeatCounter;
336410e230b6Smaya   bool                                 ModifyEnableCurrentRepeatCounterCurrentStippleIndex;
336510e230b6Smaya   uint32_t                             LineStippleRepeatCount;
336610e230b6Smaya   float                                LineStippleInverseRepeatCount;
336710e230b6Smaya};
336810e230b6Smaya
336910e230b6Smayastatic inline void
337010e230b6SmayaGEN75_3DSTATE_LINE_STIPPLE_pack(__attribute__((unused)) __gen_user_data *data,
337110e230b6Smaya                                __attribute__((unused)) void * restrict dst,
337210e230b6Smaya                                __attribute__((unused)) const struct GEN75_3DSTATE_LINE_STIPPLE * restrict values)
337310e230b6Smaya{
337410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
337510e230b6Smaya
337610e230b6Smaya   dw[0] =
337710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
337810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
337910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
338010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
338110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
338210e230b6Smaya
338310e230b6Smaya   dw[1] =
338410e230b6Smaya      __gen_uint(values->LineStipplePattern, 0, 15) |
338510e230b6Smaya      __gen_uint(values->CurrentStippleIndex, 16, 19) |
338610e230b6Smaya      __gen_uint(values->CurrentRepeatCounter, 21, 29) |
338710e230b6Smaya      __gen_uint(values->ModifyEnableCurrentRepeatCounterCurrentStippleIndex, 31, 31);
338810e230b6Smaya
338910e230b6Smaya   dw[2] =
339010e230b6Smaya      __gen_uint(values->LineStippleRepeatCount, 0, 8) |
339110e230b6Smaya      __gen_ufixed(values->LineStippleInverseRepeatCount, 15, 31, 16);
339210e230b6Smaya}
339310e230b6Smaya
339410e230b6Smaya#define GEN75_3DSTATE_MONOFILTER_SIZE_length      2
339510e230b6Smaya#define GEN75_3DSTATE_MONOFILTER_SIZE_length_bias      2
339610e230b6Smaya#define GEN75_3DSTATE_MONOFILTER_SIZE_header    \
339710e230b6Smaya   .DWordLength                         =      0,  \
339810e230b6Smaya   ._3DCommandSubOpcode                 =     17,  \
339910e230b6Smaya   ._3DCommandOpcode                    =      1,  \
340010e230b6Smaya   .CommandSubType                      =      3,  \
340110e230b6Smaya   .CommandType                         =      3
340210e230b6Smaya
340310e230b6Smayastruct GEN75_3DSTATE_MONOFILTER_SIZE {
340410e230b6Smaya   uint32_t                             DWordLength;
340510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
340610e230b6Smaya   uint32_t                             _3DCommandOpcode;
340710e230b6Smaya   uint32_t                             CommandSubType;
340810e230b6Smaya   uint32_t                             CommandType;
340910e230b6Smaya   uint32_t                             MonochromeFilterHeight;
341010e230b6Smaya   uint32_t                             MonochromeFilterWidth;
341110e230b6Smaya};
341210e230b6Smaya
341310e230b6Smayastatic inline void
341410e230b6SmayaGEN75_3DSTATE_MONOFILTER_SIZE_pack(__attribute__((unused)) __gen_user_data *data,
341510e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
341610e230b6Smaya                                   __attribute__((unused)) const struct GEN75_3DSTATE_MONOFILTER_SIZE * restrict values)
341710e230b6Smaya{
341810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
341910e230b6Smaya
342010e230b6Smaya   dw[0] =
342110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
342210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
342310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
342410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
342510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
342610e230b6Smaya
342710e230b6Smaya   dw[1] =
342810e230b6Smaya      __gen_uint(values->MonochromeFilterHeight, 0, 2) |
342910e230b6Smaya      __gen_uint(values->MonochromeFilterWidth, 3, 5);
343010e230b6Smaya}
343110e230b6Smaya
343210e230b6Smaya#define GEN75_3DSTATE_MULTISAMPLE_length       4
343310e230b6Smaya#define GEN75_3DSTATE_MULTISAMPLE_length_bias      2
343410e230b6Smaya#define GEN75_3DSTATE_MULTISAMPLE_header        \
343510e230b6Smaya   .DWordLength                         =      2,  \
343610e230b6Smaya   ._3DCommandSubOpcode                 =     13,  \
343710e230b6Smaya   ._3DCommandOpcode                    =      1,  \
343810e230b6Smaya   .CommandSubType                      =      3,  \
343910e230b6Smaya   .CommandType                         =      3
344010e230b6Smaya
344110e230b6Smayastruct GEN75_3DSTATE_MULTISAMPLE {
344210e230b6Smaya   uint32_t                             DWordLength;
344310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
344410e230b6Smaya   uint32_t                             _3DCommandOpcode;
344510e230b6Smaya   uint32_t                             CommandSubType;
344610e230b6Smaya   uint32_t                             CommandType;
344710e230b6Smaya   uint32_t                             NumberofMultisamples;
344810e230b6Smaya#define NUMSAMPLES_1                             0
344910e230b6Smaya#define NUMSAMPLES_4                             2
345010e230b6Smaya#define NUMSAMPLES_8                             3
345110e230b6Smaya   uint32_t                             PixelLocation;
345210e230b6Smaya#define CENTER                                   0
345310e230b6Smaya#define UL_CORNER                                1
345410e230b6Smaya   bool                                 MultiSampleEnable;
345510e230b6Smaya   float                                Sample0YOffset;
345610e230b6Smaya   float                                Sample0XOffset;
345710e230b6Smaya   float                                Sample1YOffset;
345810e230b6Smaya   float                                Sample1XOffset;
345910e230b6Smaya   float                                Sample2YOffset;
346010e230b6Smaya   float                                Sample2XOffset;
346110e230b6Smaya   float                                Sample3YOffset;
346210e230b6Smaya   float                                Sample3XOffset;
346310e230b6Smaya   float                                Sample4YOffset;
346410e230b6Smaya   float                                Sample4XOffset;
346510e230b6Smaya   float                                Sample5YOffset;
346610e230b6Smaya   float                                Sample5XOffset;
346710e230b6Smaya   float                                Sample6YOffset;
346810e230b6Smaya   float                                Sample6XOffset;
346910e230b6Smaya   float                                Sample7YOffset;
347010e230b6Smaya   float                                Sample7XOffset;
347110e230b6Smaya};
347210e230b6Smaya
347310e230b6Smayastatic inline void
347410e230b6SmayaGEN75_3DSTATE_MULTISAMPLE_pack(__attribute__((unused)) __gen_user_data *data,
347510e230b6Smaya                               __attribute__((unused)) void * restrict dst,
347610e230b6Smaya                               __attribute__((unused)) const struct GEN75_3DSTATE_MULTISAMPLE * restrict values)
347710e230b6Smaya{
347810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
347910e230b6Smaya
348010e230b6Smaya   dw[0] =
348110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
348210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
348310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
348410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
348510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
348610e230b6Smaya
348710e230b6Smaya   dw[1] =
348810e230b6Smaya      __gen_uint(values->NumberofMultisamples, 1, 3) |
348910e230b6Smaya      __gen_uint(values->PixelLocation, 4, 4) |
349010e230b6Smaya      __gen_uint(values->MultiSampleEnable, 5, 5);
349110e230b6Smaya
349210e230b6Smaya   dw[2] =
349310e230b6Smaya      __gen_ufixed(values->Sample0YOffset, 0, 3, 4) |
349410e230b6Smaya      __gen_ufixed(values->Sample0XOffset, 4, 7, 4) |
349510e230b6Smaya      __gen_ufixed(values->Sample1YOffset, 8, 11, 4) |
349610e230b6Smaya      __gen_ufixed(values->Sample1XOffset, 12, 15, 4) |
349710e230b6Smaya      __gen_ufixed(values->Sample2YOffset, 16, 19, 4) |
349810e230b6Smaya      __gen_ufixed(values->Sample2XOffset, 20, 23, 4) |
349910e230b6Smaya      __gen_ufixed(values->Sample3YOffset, 24, 27, 4) |
350010e230b6Smaya      __gen_ufixed(values->Sample3XOffset, 28, 31, 4);
350110e230b6Smaya
350210e230b6Smaya   dw[3] =
350310e230b6Smaya      __gen_ufixed(values->Sample4YOffset, 0, 3, 4) |
350410e230b6Smaya      __gen_ufixed(values->Sample4XOffset, 4, 7, 4) |
350510e230b6Smaya      __gen_ufixed(values->Sample5YOffset, 8, 11, 4) |
350610e230b6Smaya      __gen_ufixed(values->Sample5XOffset, 12, 15, 4) |
350710e230b6Smaya      __gen_ufixed(values->Sample6YOffset, 16, 19, 4) |
350810e230b6Smaya      __gen_ufixed(values->Sample6XOffset, 20, 23, 4) |
350910e230b6Smaya      __gen_ufixed(values->Sample7YOffset, 24, 27, 4) |
351010e230b6Smaya      __gen_ufixed(values->Sample7XOffset, 28, 31, 4);
351110e230b6Smaya}
351210e230b6Smaya
351310e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_OFFSET_length      2
351410e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_OFFSET_length_bias      2
351510e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_OFFSET_header\
351610e230b6Smaya   .DWordLength                         =      0,  \
351710e230b6Smaya   ._3DCommandSubOpcode                 =      6,  \
351810e230b6Smaya   ._3DCommandOpcode                    =      1,  \
351910e230b6Smaya   .CommandSubType                      =      3,  \
352010e230b6Smaya   .CommandType                         =      3
352110e230b6Smaya
352210e230b6Smayastruct GEN75_3DSTATE_POLY_STIPPLE_OFFSET {
352310e230b6Smaya   uint32_t                             DWordLength;
352410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
352510e230b6Smaya   uint32_t                             _3DCommandOpcode;
352610e230b6Smaya   uint32_t                             CommandSubType;
352710e230b6Smaya   uint32_t                             CommandType;
352810e230b6Smaya   uint32_t                             PolygonStippleYOffset;
352910e230b6Smaya   uint32_t                             PolygonStippleXOffset;
353010e230b6Smaya};
353110e230b6Smaya
353210e230b6Smayastatic inline void
353310e230b6SmayaGEN75_3DSTATE_POLY_STIPPLE_OFFSET_pack(__attribute__((unused)) __gen_user_data *data,
353410e230b6Smaya                                       __attribute__((unused)) void * restrict dst,
353510e230b6Smaya                                       __attribute__((unused)) const struct GEN75_3DSTATE_POLY_STIPPLE_OFFSET * restrict values)
353610e230b6Smaya{
353710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
353810e230b6Smaya
353910e230b6Smaya   dw[0] =
354010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
354110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
354210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
354310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
354410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
354510e230b6Smaya
354610e230b6Smaya   dw[1] =
354710e230b6Smaya      __gen_uint(values->PolygonStippleYOffset, 0, 4) |
354810e230b6Smaya      __gen_uint(values->PolygonStippleXOffset, 8, 12);
354910e230b6Smaya}
355010e230b6Smaya
355110e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_PATTERN_length     33
355210e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_PATTERN_length_bias      2
355310e230b6Smaya#define GEN75_3DSTATE_POLY_STIPPLE_PATTERN_header\
355410e230b6Smaya   .DWordLength                         =     31,  \
355510e230b6Smaya   ._3DCommandSubOpcode                 =      7,  \
355610e230b6Smaya   ._3DCommandOpcode                    =      1,  \
355710e230b6Smaya   .CommandSubType                      =      3,  \
355810e230b6Smaya   .CommandType                         =      3
355910e230b6Smaya
356010e230b6Smayastruct GEN75_3DSTATE_POLY_STIPPLE_PATTERN {
356110e230b6Smaya   uint32_t                             DWordLength;
356210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
356310e230b6Smaya   uint32_t                             _3DCommandOpcode;
356410e230b6Smaya   uint32_t                             CommandSubType;
356510e230b6Smaya   uint32_t                             CommandType;
356610e230b6Smaya   uint32_t                             PatternRow[32];
356710e230b6Smaya};
356810e230b6Smaya
356910e230b6Smayastatic inline void
357010e230b6SmayaGEN75_3DSTATE_POLY_STIPPLE_PATTERN_pack(__attribute__((unused)) __gen_user_data *data,
357110e230b6Smaya                                        __attribute__((unused)) void * restrict dst,
357210e230b6Smaya                                        __attribute__((unused)) const struct GEN75_3DSTATE_POLY_STIPPLE_PATTERN * restrict values)
357310e230b6Smaya{
357410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
357510e230b6Smaya
357610e230b6Smaya   dw[0] =
357710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
357810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
357910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
358010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
358110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
358210e230b6Smaya
358310e230b6Smaya   dw[1] =
358410e230b6Smaya      __gen_uint(values->PatternRow[0], 0, 31);
358510e230b6Smaya
358610e230b6Smaya   dw[2] =
358710e230b6Smaya      __gen_uint(values->PatternRow[1], 0, 31);
358810e230b6Smaya
358910e230b6Smaya   dw[3] =
359010e230b6Smaya      __gen_uint(values->PatternRow[2], 0, 31);
359110e230b6Smaya
359210e230b6Smaya   dw[4] =
359310e230b6Smaya      __gen_uint(values->PatternRow[3], 0, 31);
359410e230b6Smaya
359510e230b6Smaya   dw[5] =
359610e230b6Smaya      __gen_uint(values->PatternRow[4], 0, 31);
359710e230b6Smaya
359810e230b6Smaya   dw[6] =
359910e230b6Smaya      __gen_uint(values->PatternRow[5], 0, 31);
360010e230b6Smaya
360110e230b6Smaya   dw[7] =
360210e230b6Smaya      __gen_uint(values->PatternRow[6], 0, 31);
360310e230b6Smaya
360410e230b6Smaya   dw[8] =
360510e230b6Smaya      __gen_uint(values->PatternRow[7], 0, 31);
360610e230b6Smaya
360710e230b6Smaya   dw[9] =
360810e230b6Smaya      __gen_uint(values->PatternRow[8], 0, 31);
360910e230b6Smaya
361010e230b6Smaya   dw[10] =
361110e230b6Smaya      __gen_uint(values->PatternRow[9], 0, 31);
361210e230b6Smaya
361310e230b6Smaya   dw[11] =
361410e230b6Smaya      __gen_uint(values->PatternRow[10], 0, 31);
361510e230b6Smaya
361610e230b6Smaya   dw[12] =
361710e230b6Smaya      __gen_uint(values->PatternRow[11], 0, 31);
361810e230b6Smaya
361910e230b6Smaya   dw[13] =
362010e230b6Smaya      __gen_uint(values->PatternRow[12], 0, 31);
362110e230b6Smaya
362210e230b6Smaya   dw[14] =
362310e230b6Smaya      __gen_uint(values->PatternRow[13], 0, 31);
362410e230b6Smaya
362510e230b6Smaya   dw[15] =
362610e230b6Smaya      __gen_uint(values->PatternRow[14], 0, 31);
362710e230b6Smaya
362810e230b6Smaya   dw[16] =
362910e230b6Smaya      __gen_uint(values->PatternRow[15], 0, 31);
363010e230b6Smaya
363110e230b6Smaya   dw[17] =
363210e230b6Smaya      __gen_uint(values->PatternRow[16], 0, 31);
363310e230b6Smaya
363410e230b6Smaya   dw[18] =
363510e230b6Smaya      __gen_uint(values->PatternRow[17], 0, 31);
363610e230b6Smaya
363710e230b6Smaya   dw[19] =
363810e230b6Smaya      __gen_uint(values->PatternRow[18], 0, 31);
363910e230b6Smaya
364010e230b6Smaya   dw[20] =
364110e230b6Smaya      __gen_uint(values->PatternRow[19], 0, 31);
364210e230b6Smaya
364310e230b6Smaya   dw[21] =
364410e230b6Smaya      __gen_uint(values->PatternRow[20], 0, 31);
364510e230b6Smaya
364610e230b6Smaya   dw[22] =
364710e230b6Smaya      __gen_uint(values->PatternRow[21], 0, 31);
364810e230b6Smaya
364910e230b6Smaya   dw[23] =
365010e230b6Smaya      __gen_uint(values->PatternRow[22], 0, 31);
365110e230b6Smaya
365210e230b6Smaya   dw[24] =
365310e230b6Smaya      __gen_uint(values->PatternRow[23], 0, 31);
365410e230b6Smaya
365510e230b6Smaya   dw[25] =
365610e230b6Smaya      __gen_uint(values->PatternRow[24], 0, 31);
365710e230b6Smaya
365810e230b6Smaya   dw[26] =
365910e230b6Smaya      __gen_uint(values->PatternRow[25], 0, 31);
366010e230b6Smaya
366110e230b6Smaya   dw[27] =
366210e230b6Smaya      __gen_uint(values->PatternRow[26], 0, 31);
366310e230b6Smaya
366410e230b6Smaya   dw[28] =
366510e230b6Smaya      __gen_uint(values->PatternRow[27], 0, 31);
366610e230b6Smaya
366710e230b6Smaya   dw[29] =
366810e230b6Smaya      __gen_uint(values->PatternRow[28], 0, 31);
366910e230b6Smaya
367010e230b6Smaya   dw[30] =
367110e230b6Smaya      __gen_uint(values->PatternRow[29], 0, 31);
367210e230b6Smaya
367310e230b6Smaya   dw[31] =
367410e230b6Smaya      __gen_uint(values->PatternRow[30], 0, 31);
367510e230b6Smaya
367610e230b6Smaya   dw[32] =
367710e230b6Smaya      __gen_uint(values->PatternRow[31], 0, 31);
367810e230b6Smaya}
367910e230b6Smaya
368010e230b6Smaya#define GEN75_3DSTATE_PS_length                8
368110e230b6Smaya#define GEN75_3DSTATE_PS_length_bias           2
368210e230b6Smaya#define GEN75_3DSTATE_PS_header                 \
368310e230b6Smaya   .DWordLength                         =      6,  \
368410e230b6Smaya   ._3DCommandSubOpcode                 =     32,  \
368510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
368610e230b6Smaya   .CommandSubType                      =      3,  \
368710e230b6Smaya   .CommandType                         =      3
368810e230b6Smaya
368910e230b6Smayastruct GEN75_3DSTATE_PS {
369010e230b6Smaya   uint32_t                             DWordLength;
369110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
369210e230b6Smaya   uint32_t                             _3DCommandOpcode;
369310e230b6Smaya   uint32_t                             CommandSubType;
369410e230b6Smaya   uint32_t                             CommandType;
369510e230b6Smaya   uint64_t                             KernelStartPointer0;
369610e230b6Smaya   bool                                 SoftwareExceptionEnable;
369710e230b6Smaya   bool                                 MaskStackExceptionEnable;
369810e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
369910e230b6Smaya   uint32_t                             RoundingMode;
370010e230b6Smaya#define RTNE                                     0
370110e230b6Smaya#define RU                                       1
370210e230b6Smaya#define RD                                       2
370310e230b6Smaya#define RTZ                                      3
370410e230b6Smaya   uint32_t                             FloatingPointMode;
370510e230b6Smaya#define IEEE754                                  0
370610e230b6Smaya#define Alternate                                1
370710e230b6Smaya   uint32_t                             ThreadPriority;
370810e230b6Smaya#define High                                     1
370910e230b6Smaya   uint32_t                             BindingTableEntryCount;
371010e230b6Smaya   uint32_t                             DenormalMode;
371110e230b6Smaya#define FTZ                                      0
371210e230b6Smaya#define RET                                      1
371310e230b6Smaya   uint32_t                             SamplerCount;
371410e230b6Smaya   bool                                 VectorMaskEnable;
371510e230b6Smaya   bool                                 SingleProgramFlow;
371610e230b6Smaya   uint32_t                             PerThreadScratchSpace;
371710e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
371810e230b6Smaya   bool                                 _8PixelDispatchEnable;
371910e230b6Smaya   bool                                 _16PixelDispatchEnable;
372010e230b6Smaya   bool                                 _32PixelDispatchEnable;
372110e230b6Smaya   uint32_t                             PositionXYOffsetSelect;
372210e230b6Smaya#define POSOFFSET_NONE                           0
372310e230b6Smaya#define POSOFFSET_CENTROID                       2
372410e230b6Smaya#define POSOFFSET_SAMPLE                         3
372510e230b6Smaya   bool                                 PSAccessesUAV;
372610e230b6Smaya   bool                                 RenderTargetResolveEnable;
372710e230b6Smaya   bool                                 DualSourceBlendEnable;
372810e230b6Smaya   bool                                 RenderTargetFastClearEnable;
372910e230b6Smaya   bool                                 oMaskPresenttoRenderTarget;
373010e230b6Smaya   bool                                 AttributeEnable;
373110e230b6Smaya   bool                                 PushConstantEnable;
373210e230b6Smaya   uint32_t                             SampleMask;
373310e230b6Smaya   uint32_t                             MaximumNumberofThreads;
373410e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForConstantSetupData2;
373510e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForConstantSetupData1;
373610e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForConstantSetupData0;
373710e230b6Smaya   uint64_t                             KernelStartPointer1;
373810e230b6Smaya   uint64_t                             KernelStartPointer2;
373910e230b6Smaya};
374010e230b6Smaya
374110e230b6Smayastatic inline void
374210e230b6SmayaGEN75_3DSTATE_PS_pack(__attribute__((unused)) __gen_user_data *data,
374310e230b6Smaya                      __attribute__((unused)) void * restrict dst,
374410e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_PS * restrict values)
374510e230b6Smaya{
374610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
374710e230b6Smaya
374810e230b6Smaya   dw[0] =
374910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
375010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
375110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
375210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
375310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
375410e230b6Smaya
375510e230b6Smaya   dw[1] =
375610e230b6Smaya      __gen_offset(values->KernelStartPointer0, 6, 31);
375710e230b6Smaya
375810e230b6Smaya   dw[2] =
375910e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
376010e230b6Smaya      __gen_uint(values->MaskStackExceptionEnable, 11, 11) |
376110e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
376210e230b6Smaya      __gen_uint(values->RoundingMode, 14, 15) |
376310e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
376410e230b6Smaya      __gen_uint(values->ThreadPriority, 17, 17) |
376510e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
376610e230b6Smaya      __gen_uint(values->DenormalMode, 26, 26) |
376710e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
376810e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
376910e230b6Smaya      __gen_uint(values->SingleProgramFlow, 31, 31);
377010e230b6Smaya
377110e230b6Smaya   const uint32_t v3 =
377210e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
377310e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3);
377410e230b6Smaya
377510e230b6Smaya   dw[4] =
377610e230b6Smaya      __gen_uint(values->_8PixelDispatchEnable, 0, 0) |
377710e230b6Smaya      __gen_uint(values->_16PixelDispatchEnable, 1, 1) |
377810e230b6Smaya      __gen_uint(values->_32PixelDispatchEnable, 2, 2) |
377910e230b6Smaya      __gen_uint(values->PositionXYOffsetSelect, 3, 4) |
378010e230b6Smaya      __gen_uint(values->PSAccessesUAV, 5, 5) |
378110e230b6Smaya      __gen_uint(values->RenderTargetResolveEnable, 6, 6) |
378210e230b6Smaya      __gen_uint(values->DualSourceBlendEnable, 7, 7) |
378310e230b6Smaya      __gen_uint(values->RenderTargetFastClearEnable, 8, 8) |
378410e230b6Smaya      __gen_uint(values->oMaskPresenttoRenderTarget, 9, 9) |
378510e230b6Smaya      __gen_uint(values->AttributeEnable, 10, 10) |
378610e230b6Smaya      __gen_uint(values->PushConstantEnable, 11, 11) |
378710e230b6Smaya      __gen_uint(values->SampleMask, 12, 19) |
378810e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 23, 31);
378910e230b6Smaya
379010e230b6Smaya   dw[5] =
379110e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData2, 0, 6) |
379210e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData1, 8, 14) |
379310e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForConstantSetupData0, 16, 22);
379410e230b6Smaya
379510e230b6Smaya   dw[6] =
379610e230b6Smaya      __gen_offset(values->KernelStartPointer1, 6, 31);
379710e230b6Smaya
379810e230b6Smaya   dw[7] =
379910e230b6Smaya      __gen_offset(values->KernelStartPointer2, 6, 31);
380010e230b6Smaya}
380110e230b6Smaya
380210e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length      2
380310e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length_bias      2
380410e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_header\
380510e230b6Smaya   .DWordLength                         =      0,  \
380610e230b6Smaya   ._3DCommandSubOpcode                 =     20,  \
380710e230b6Smaya   ._3DCommandOpcode                    =      1,  \
380810e230b6Smaya   .CommandSubType                      =      3,  \
380910e230b6Smaya   .CommandType                         =      3
381010e230b6Smaya
381110e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS {
381210e230b6Smaya   uint32_t                             DWordLength;
381310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
381410e230b6Smaya   uint32_t                             _3DCommandOpcode;
381510e230b6Smaya   uint32_t                             CommandSubType;
381610e230b6Smaya   uint32_t                             CommandType;
381710e230b6Smaya   uint32_t                             ConstantBufferSize;
381810e230b6Smaya   uint32_t                             ConstantBufferOffset;
381910e230b6Smaya};
382010e230b6Smaya
382110e230b6Smayastatic inline void
382210e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS_pack(__attribute__((unused)) __gen_user_data *data,
382310e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
382410e230b6Smaya                                          __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_DS * restrict values)
382510e230b6Smaya{
382610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
382710e230b6Smaya
382810e230b6Smaya   dw[0] =
382910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
383010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
383110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
383210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
383310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
383410e230b6Smaya
383510e230b6Smaya   dw[1] =
383610e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
383710e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
383810e230b6Smaya}
383910e230b6Smaya
384010e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length      2
384110e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length_bias      2
384210e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_header\
384310e230b6Smaya   .DWordLength                         =      0,  \
384410e230b6Smaya   ._3DCommandSubOpcode                 =     21,  \
384510e230b6Smaya   ._3DCommandOpcode                    =      1,  \
384610e230b6Smaya   .CommandSubType                      =      3,  \
384710e230b6Smaya   .CommandType                         =      3
384810e230b6Smaya
384910e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS {
385010e230b6Smaya   uint32_t                             DWordLength;
385110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
385210e230b6Smaya   uint32_t                             _3DCommandOpcode;
385310e230b6Smaya   uint32_t                             CommandSubType;
385410e230b6Smaya   uint32_t                             CommandType;
385510e230b6Smaya   uint32_t                             ConstantBufferSize;
385610e230b6Smaya   uint32_t                             ConstantBufferOffset;
385710e230b6Smaya};
385810e230b6Smaya
385910e230b6Smayastatic inline void
386010e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS_pack(__attribute__((unused)) __gen_user_data *data,
386110e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
386210e230b6Smaya                                          __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_GS * restrict values)
386310e230b6Smaya{
386410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
386510e230b6Smaya
386610e230b6Smaya   dw[0] =
386710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
386810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
386910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
387010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
387110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
387210e230b6Smaya
387310e230b6Smaya   dw[1] =
387410e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
387510e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
387610e230b6Smaya}
387710e230b6Smaya
387810e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length      2
387910e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length_bias      2
388010e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_header\
388110e230b6Smaya   .DWordLength                         =      0,  \
388210e230b6Smaya   ._3DCommandSubOpcode                 =     19,  \
388310e230b6Smaya   ._3DCommandOpcode                    =      1,  \
388410e230b6Smaya   .CommandSubType                      =      3,  \
388510e230b6Smaya   .CommandType                         =      3
388610e230b6Smaya
388710e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS {
388810e230b6Smaya   uint32_t                             DWordLength;
388910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
389010e230b6Smaya   uint32_t                             _3DCommandOpcode;
389110e230b6Smaya   uint32_t                             CommandSubType;
389210e230b6Smaya   uint32_t                             CommandType;
389310e230b6Smaya   uint32_t                             ConstantBufferSize;
389410e230b6Smaya   uint32_t                             ConstantBufferOffset;
389510e230b6Smaya};
389610e230b6Smaya
389710e230b6Smayastatic inline void
389810e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS_pack(__attribute__((unused)) __gen_user_data *data,
389910e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
390010e230b6Smaya                                          __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_HS * restrict values)
390110e230b6Smaya{
390210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
390310e230b6Smaya
390410e230b6Smaya   dw[0] =
390510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
390610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
390710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
390810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
390910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
391010e230b6Smaya
391110e230b6Smaya   dw[1] =
391210e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
391310e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
391410e230b6Smaya}
391510e230b6Smaya
391610e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length      2
391710e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length_bias      2
391810e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_header\
391910e230b6Smaya   .DWordLength                         =      0,  \
392010e230b6Smaya   ._3DCommandSubOpcode                 =     22,  \
392110e230b6Smaya   ._3DCommandOpcode                    =      1,  \
392210e230b6Smaya   .CommandSubType                      =      3,  \
392310e230b6Smaya   .CommandType                         =      3
392410e230b6Smaya
392510e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS {
392610e230b6Smaya   uint32_t                             DWordLength;
392710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
392810e230b6Smaya   uint32_t                             _3DCommandOpcode;
392910e230b6Smaya   uint32_t                             CommandSubType;
393010e230b6Smaya   uint32_t                             CommandType;
393110e230b6Smaya   uint32_t                             ConstantBufferSize;
393210e230b6Smaya   uint32_t                             ConstantBufferOffset;
393310e230b6Smaya};
393410e230b6Smaya
393510e230b6Smayastatic inline void
393610e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS_pack(__attribute__((unused)) __gen_user_data *data,
393710e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
393810e230b6Smaya                                          __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_PS * restrict values)
393910e230b6Smaya{
394010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
394110e230b6Smaya
394210e230b6Smaya   dw[0] =
394310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
394410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
394510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
394610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
394710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
394810e230b6Smaya
394910e230b6Smaya   dw[1] =
395010e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
395110e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
395210e230b6Smaya}
395310e230b6Smaya
395410e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length      2
395510e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length_bias      2
395610e230b6Smaya#define GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_header\
395710e230b6Smaya   .DWordLength                         =      0,  \
395810e230b6Smaya   ._3DCommandSubOpcode                 =     18,  \
395910e230b6Smaya   ._3DCommandOpcode                    =      1,  \
396010e230b6Smaya   .CommandSubType                      =      3,  \
396110e230b6Smaya   .CommandType                         =      3
396210e230b6Smaya
396310e230b6Smayastruct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS {
396410e230b6Smaya   uint32_t                             DWordLength;
396510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
396610e230b6Smaya   uint32_t                             _3DCommandOpcode;
396710e230b6Smaya   uint32_t                             CommandSubType;
396810e230b6Smaya   uint32_t                             CommandType;
396910e230b6Smaya   uint32_t                             ConstantBufferSize;
397010e230b6Smaya   uint32_t                             ConstantBufferOffset;
397110e230b6Smaya};
397210e230b6Smaya
397310e230b6Smayastatic inline void
397410e230b6SmayaGEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS_pack(__attribute__((unused)) __gen_user_data *data,
397510e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
397610e230b6Smaya                                          __attribute__((unused)) const struct GEN75_3DSTATE_PUSH_CONSTANT_ALLOC_VS * restrict values)
397710e230b6Smaya{
397810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
397910e230b6Smaya
398010e230b6Smaya   dw[0] =
398110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
398210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
398310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
398410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
398510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
398610e230b6Smaya
398710e230b6Smaya   dw[1] =
398810e230b6Smaya      __gen_uint(values->ConstantBufferSize, 0, 5) |
398910e230b6Smaya      __gen_uint(values->ConstantBufferOffset, 16, 20);
399010e230b6Smaya}
399110e230b6Smaya
399210e230b6Smaya#define GEN75_3DSTATE_RAST_MULTISAMPLE_length      6
399310e230b6Smaya#define GEN75_3DSTATE_RAST_MULTISAMPLE_length_bias      2
399410e230b6Smaya#define GEN75_3DSTATE_RAST_MULTISAMPLE_header   \
399510e230b6Smaya   .DWordLength                         =      4,  \
399610e230b6Smaya   ._3DCommandSubOpcode                 =     14,  \
399710e230b6Smaya   ._3DCommandOpcode                    =      1,  \
399810e230b6Smaya   .CommandSubType                      =      3,  \
399910e230b6Smaya   .CommandType                         =      3
400010e230b6Smaya
400110e230b6Smayastruct GEN75_3DSTATE_RAST_MULTISAMPLE {
400210e230b6Smaya   uint32_t                             DWordLength;
400310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
400410e230b6Smaya   uint32_t                             _3DCommandOpcode;
400510e230b6Smaya   uint32_t                             CommandSubType;
400610e230b6Smaya   uint32_t                             CommandType;
400710e230b6Smaya   uint32_t                             NumberofRasterizationMultisamples;
400810e230b6Smaya#define NRM_NUMRASTSAMPLES_1                     0
400910e230b6Smaya#define NRM_NUMRASTSAMPLES_2                     1
401010e230b6Smaya#define NRM_NUMRASTSAMPLES_4                     2
401110e230b6Smaya#define NRM_NUMRASTSAMPLES_8                     3
401210e230b6Smaya#define NRM_NUMRASTSAMPLES_16                    4
401310e230b6Smaya   float                                Sample0YOffset;
401410e230b6Smaya   float                                Sample0XOffset;
401510e230b6Smaya   float                                Sample1YOffset;
401610e230b6Smaya   float                                Sample1XOffset;
401710e230b6Smaya   float                                Sample2YOffset;
401810e230b6Smaya   float                                Sample2XOffset;
401910e230b6Smaya   float                                Sample3YOffset;
402010e230b6Smaya   float                                Sample3XOffset;
402110e230b6Smaya   float                                Sample4YOffset;
402210e230b6Smaya   float                                Sample4XOffset;
402310e230b6Smaya   float                                Sample5YOffset;
402410e230b6Smaya   float                                Sample5XOffset;
402510e230b6Smaya   float                                Sample6YOffset;
402610e230b6Smaya   float                                Sample6XOffset;
402710e230b6Smaya   float                                Sample7YOffset;
402810e230b6Smaya   float                                Sample7XOffset;
402910e230b6Smaya   float                                Sample8YOffset;
403010e230b6Smaya   float                                Sample8XOffset;
403110e230b6Smaya   float                                Sample9YOffset;
403210e230b6Smaya   float                                Sample9XOffset;
403310e230b6Smaya   float                                Sample10YOffset;
403410e230b6Smaya   float                                Sample10XOffset;
403510e230b6Smaya   float                                Sample11YOffset;
403610e230b6Smaya   float                                Sample11XOffset;
403710e230b6Smaya   float                                Sample12YOffset;
403810e230b6Smaya   float                                Sample12XOffset;
403910e230b6Smaya   float                                Sample13YOffset;
404010e230b6Smaya   float                                Sample13XOffset;
404110e230b6Smaya   float                                Sample14YOffset;
404210e230b6Smaya   float                                Sample14XOffset;
404310e230b6Smaya   float                                Sample15YOffset;
404410e230b6Smaya   float                                Sample15XOffset;
404510e230b6Smaya};
404610e230b6Smaya
404710e230b6Smayastatic inline void
404810e230b6SmayaGEN75_3DSTATE_RAST_MULTISAMPLE_pack(__attribute__((unused)) __gen_user_data *data,
404910e230b6Smaya                                    __attribute__((unused)) void * restrict dst,
405010e230b6Smaya                                    __attribute__((unused)) const struct GEN75_3DSTATE_RAST_MULTISAMPLE * restrict values)
405110e230b6Smaya{
405210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
405310e230b6Smaya
405410e230b6Smaya   dw[0] =
405510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
405610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
405710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
405810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
405910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
406010e230b6Smaya
406110e230b6Smaya   dw[1] =
406210e230b6Smaya      __gen_uint(values->NumberofRasterizationMultisamples, 1, 3);
406310e230b6Smaya
406410e230b6Smaya   dw[2] =
406510e230b6Smaya      __gen_ufixed(values->Sample0YOffset, 0, 3, 4) |
406610e230b6Smaya      __gen_ufixed(values->Sample0XOffset, 4, 7, 4) |
406710e230b6Smaya      __gen_ufixed(values->Sample1YOffset, 8, 11, 4) |
406810e230b6Smaya      __gen_ufixed(values->Sample1XOffset, 12, 15, 4) |
406910e230b6Smaya      __gen_ufixed(values->Sample2YOffset, 16, 19, 4) |
407010e230b6Smaya      __gen_ufixed(values->Sample2XOffset, 20, 23, 4) |
407110e230b6Smaya      __gen_ufixed(values->Sample3YOffset, 24, 27, 4) |
407210e230b6Smaya      __gen_ufixed(values->Sample3XOffset, 28, 31, 4);
407310e230b6Smaya
407410e230b6Smaya   dw[3] =
407510e230b6Smaya      __gen_ufixed(values->Sample4YOffset, 0, 3, 4) |
407610e230b6Smaya      __gen_ufixed(values->Sample4XOffset, 4, 7, 4) |
407710e230b6Smaya      __gen_ufixed(values->Sample5YOffset, 8, 11, 4) |
407810e230b6Smaya      __gen_ufixed(values->Sample5XOffset, 12, 15, 4) |
407910e230b6Smaya      __gen_ufixed(values->Sample6YOffset, 16, 19, 4) |
408010e230b6Smaya      __gen_ufixed(values->Sample6XOffset, 20, 23, 4) |
408110e230b6Smaya      __gen_ufixed(values->Sample7YOffset, 24, 27, 4) |
408210e230b6Smaya      __gen_ufixed(values->Sample7XOffset, 28, 31, 4);
408310e230b6Smaya
408410e230b6Smaya   dw[4] =
408510e230b6Smaya      __gen_ufixed(values->Sample8YOffset, 0, 3, 4) |
408610e230b6Smaya      __gen_ufixed(values->Sample8XOffset, 4, 7, 4) |
408710e230b6Smaya      __gen_ufixed(values->Sample9YOffset, 8, 11, 4) |
408810e230b6Smaya      __gen_ufixed(values->Sample9XOffset, 12, 15, 4) |
408910e230b6Smaya      __gen_ufixed(values->Sample10YOffset, 16, 19, 4) |
409010e230b6Smaya      __gen_ufixed(values->Sample10XOffset, 20, 23, 4) |
409110e230b6Smaya      __gen_ufixed(values->Sample11YOffset, 24, 27, 4) |
409210e230b6Smaya      __gen_ufixed(values->Sample11XOffset, 28, 31, 4);
409310e230b6Smaya
409410e230b6Smaya   dw[5] =
409510e230b6Smaya      __gen_ufixed(values->Sample12YOffset, 0, 3, 4) |
409610e230b6Smaya      __gen_ufixed(values->Sample12XOffset, 4, 7, 4) |
409710e230b6Smaya      __gen_ufixed(values->Sample13YOffset, 8, 11, 4) |
409810e230b6Smaya      __gen_ufixed(values->Sample13XOffset, 12, 15, 4) |
409910e230b6Smaya      __gen_ufixed(values->Sample14YOffset, 16, 19, 4) |
410010e230b6Smaya      __gen_ufixed(values->Sample14XOffset, 20, 23, 4) |
410110e230b6Smaya      __gen_ufixed(values->Sample15YOffset, 24, 27, 4) |
410210e230b6Smaya      __gen_ufixed(values->Sample15XOffset, 28, 31, 4);
410310e230b6Smaya}
410410e230b6Smaya
410510e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0_length_bias      2
410610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0_header\
410710e230b6Smaya   ._3DCommandSubOpcode                 =      2,  \
410810e230b6Smaya   ._3DCommandOpcode                    =      1,  \
410910e230b6Smaya   .CommandSubType                      =      3,  \
411010e230b6Smaya   .CommandType                         =      3
411110e230b6Smaya
411210e230b6Smayastruct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0 {
411310e230b6Smaya   uint32_t                             DWordLength;
411410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
411510e230b6Smaya   uint32_t                             _3DCommandOpcode;
411610e230b6Smaya   uint32_t                             CommandSubType;
411710e230b6Smaya   uint32_t                             CommandType;
411810e230b6Smaya   /* variable length fields follow */
411910e230b6Smaya};
412010e230b6Smaya
412110e230b6Smayastatic inline void
412210e230b6SmayaGEN75_3DSTATE_SAMPLER_PALETTE_LOAD0_pack(__attribute__((unused)) __gen_user_data *data,
412310e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
412410e230b6Smaya                                         __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD0 * restrict values)
412510e230b6Smaya{
412610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
412710e230b6Smaya
412810e230b6Smaya   dw[0] =
412910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
413010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
413110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
413210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
413310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
413410e230b6Smaya}
413510e230b6Smaya
413610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1_length_bias      2
413710e230b6Smaya#define GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1_header\
413810e230b6Smaya   .DWordLength                         =      0,  \
413910e230b6Smaya   ._3DCommandSubOpcode                 =     12,  \
414010e230b6Smaya   ._3DCommandOpcode                    =      1,  \
414110e230b6Smaya   .CommandSubType                      =      3,  \
414210e230b6Smaya   .CommandType                         =      3
414310e230b6Smaya
414410e230b6Smayastruct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1 {
414510e230b6Smaya   uint32_t                             DWordLength;
414610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
414710e230b6Smaya   uint32_t                             _3DCommandOpcode;
414810e230b6Smaya   uint32_t                             CommandSubType;
414910e230b6Smaya   uint32_t                             CommandType;
415010e230b6Smaya   /* variable length fields follow */
415110e230b6Smaya};
415210e230b6Smaya
415310e230b6Smayastatic inline void
415410e230b6SmayaGEN75_3DSTATE_SAMPLER_PALETTE_LOAD1_pack(__attribute__((unused)) __gen_user_data *data,
415510e230b6Smaya                                         __attribute__((unused)) void * restrict dst,
415610e230b6Smaya                                         __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_PALETTE_LOAD1 * restrict values)
415710e230b6Smaya{
415810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
415910e230b6Smaya
416010e230b6Smaya   dw[0] =
416110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
416210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
416310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
416410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
416510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
416610e230b6Smaya}
416710e230b6Smaya
416810e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_length      2
416910e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_length_bias      2
417010e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_header\
417110e230b6Smaya   .DWordLength                         =      0,  \
417210e230b6Smaya   ._3DCommandSubOpcode                 =     45,  \
417310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
417410e230b6Smaya   .CommandSubType                      =      3,  \
417510e230b6Smaya   .CommandType                         =      3
417610e230b6Smaya
417710e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS {
417810e230b6Smaya   uint32_t                             DWordLength;
417910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
418010e230b6Smaya   uint32_t                             _3DCommandOpcode;
418110e230b6Smaya   uint32_t                             CommandSubType;
418210e230b6Smaya   uint32_t                             CommandType;
418310e230b6Smaya   uint64_t                             PointertoDSSamplerState;
418410e230b6Smaya};
418510e230b6Smaya
418610e230b6Smayastatic inline void
418710e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS_pack(__attribute__((unused)) __gen_user_data *data,
418810e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
418910e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_DS * restrict values)
419010e230b6Smaya{
419110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
419210e230b6Smaya
419310e230b6Smaya   dw[0] =
419410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
419510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
419610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
419710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
419810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
419910e230b6Smaya
420010e230b6Smaya   dw[1] =
420110e230b6Smaya      __gen_offset(values->PointertoDSSamplerState, 5, 31);
420210e230b6Smaya}
420310e230b6Smaya
420410e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_length      2
420510e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_length_bias      2
420610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_header\
420710e230b6Smaya   .DWordLength                         =      0,  \
420810e230b6Smaya   ._3DCommandSubOpcode                 =     46,  \
420910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
421010e230b6Smaya   .CommandSubType                      =      3,  \
421110e230b6Smaya   .CommandType                         =      3
421210e230b6Smaya
421310e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS {
421410e230b6Smaya   uint32_t                             DWordLength;
421510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
421610e230b6Smaya   uint32_t                             _3DCommandOpcode;
421710e230b6Smaya   uint32_t                             CommandSubType;
421810e230b6Smaya   uint32_t                             CommandType;
421910e230b6Smaya   uint64_t                             PointertoGSSamplerState;
422010e230b6Smaya};
422110e230b6Smaya
422210e230b6Smayastatic inline void
422310e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS_pack(__attribute__((unused)) __gen_user_data *data,
422410e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
422510e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_GS * restrict values)
422610e230b6Smaya{
422710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
422810e230b6Smaya
422910e230b6Smaya   dw[0] =
423010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
423110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
423210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
423310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
423410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
423510e230b6Smaya
423610e230b6Smaya   dw[1] =
423710e230b6Smaya      __gen_offset(values->PointertoGSSamplerState, 5, 31);
423810e230b6Smaya}
423910e230b6Smaya
424010e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_length      2
424110e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_length_bias      2
424210e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_header\
424310e230b6Smaya   .DWordLength                         =      0,  \
424410e230b6Smaya   ._3DCommandSubOpcode                 =     44,  \
424510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
424610e230b6Smaya   .CommandSubType                      =      3,  \
424710e230b6Smaya   .CommandType                         =      3
424810e230b6Smaya
424910e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS {
425010e230b6Smaya   uint32_t                             DWordLength;
425110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
425210e230b6Smaya   uint32_t                             _3DCommandOpcode;
425310e230b6Smaya   uint32_t                             CommandSubType;
425410e230b6Smaya   uint32_t                             CommandType;
425510e230b6Smaya   uint64_t                             PointertoHSSamplerState;
425610e230b6Smaya};
425710e230b6Smaya
425810e230b6Smayastatic inline void
425910e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS_pack(__attribute__((unused)) __gen_user_data *data,
426010e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
426110e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_HS * restrict values)
426210e230b6Smaya{
426310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
426410e230b6Smaya
426510e230b6Smaya   dw[0] =
426610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
426710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
426810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
426910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
427010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
427110e230b6Smaya
427210e230b6Smaya   dw[1] =
427310e230b6Smaya      __gen_offset(values->PointertoHSSamplerState, 5, 31);
427410e230b6Smaya}
427510e230b6Smaya
427610e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_length      2
427710e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_length_bias      2
427810e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_header\
427910e230b6Smaya   .DWordLength                         =      0,  \
428010e230b6Smaya   ._3DCommandSubOpcode                 =     47,  \
428110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
428210e230b6Smaya   .CommandSubType                      =      3,  \
428310e230b6Smaya   .CommandType                         =      3
428410e230b6Smaya
428510e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS {
428610e230b6Smaya   uint32_t                             DWordLength;
428710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
428810e230b6Smaya   uint32_t                             _3DCommandOpcode;
428910e230b6Smaya   uint32_t                             CommandSubType;
429010e230b6Smaya   uint32_t                             CommandType;
429110e230b6Smaya   uint64_t                             PointertoPSSamplerState;
429210e230b6Smaya};
429310e230b6Smaya
429410e230b6Smayastatic inline void
429510e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS_pack(__attribute__((unused)) __gen_user_data *data,
429610e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
429710e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_PS * restrict values)
429810e230b6Smaya{
429910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
430010e230b6Smaya
430110e230b6Smaya   dw[0] =
430210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
430310e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
430410e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
430510e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
430610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
430710e230b6Smaya
430810e230b6Smaya   dw[1] =
430910e230b6Smaya      __gen_offset(values->PointertoPSSamplerState, 5, 31);
431010e230b6Smaya}
431110e230b6Smaya
431210e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_length      2
431310e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_length_bias      2
431410e230b6Smaya#define GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_header\
431510e230b6Smaya   .DWordLength                         =      0,  \
431610e230b6Smaya   ._3DCommandSubOpcode                 =     43,  \
431710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
431810e230b6Smaya   .CommandSubType                      =      3,  \
431910e230b6Smaya   .CommandType                         =      3
432010e230b6Smaya
432110e230b6Smayastruct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS {
432210e230b6Smaya   uint32_t                             DWordLength;
432310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
432410e230b6Smaya   uint32_t                             _3DCommandOpcode;
432510e230b6Smaya   uint32_t                             CommandSubType;
432610e230b6Smaya   uint32_t                             CommandType;
432710e230b6Smaya   uint64_t                             PointertoVSSamplerState;
432810e230b6Smaya};
432910e230b6Smaya
433010e230b6Smayastatic inline void
433110e230b6SmayaGEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS_pack(__attribute__((unused)) __gen_user_data *data,
433210e230b6Smaya                                             __attribute__((unused)) void * restrict dst,
433310e230b6Smaya                                             __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLER_STATE_POINTERS_VS * restrict values)
433410e230b6Smaya{
433510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
433610e230b6Smaya
433710e230b6Smaya   dw[0] =
433810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
433910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
434010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
434110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
434210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
434310e230b6Smaya
434410e230b6Smaya   dw[1] =
434510e230b6Smaya      __gen_offset(values->PointertoVSSamplerState, 5, 31);
434610e230b6Smaya}
434710e230b6Smaya
434810e230b6Smaya#define GEN75_3DSTATE_SAMPLE_MASK_length       2
434910e230b6Smaya#define GEN75_3DSTATE_SAMPLE_MASK_length_bias      2
435010e230b6Smaya#define GEN75_3DSTATE_SAMPLE_MASK_header        \
435110e230b6Smaya   .DWordLength                         =      0,  \
435210e230b6Smaya   ._3DCommandSubOpcode                 =     24,  \
435310e230b6Smaya   ._3DCommandOpcode                    =      0,  \
435410e230b6Smaya   .CommandSubType                      =      3,  \
435510e230b6Smaya   .CommandType                         =      3
435610e230b6Smaya
435710e230b6Smayastruct GEN75_3DSTATE_SAMPLE_MASK {
435810e230b6Smaya   uint32_t                             DWordLength;
435910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
436010e230b6Smaya   uint32_t                             _3DCommandOpcode;
436110e230b6Smaya   uint32_t                             CommandSubType;
436210e230b6Smaya   uint32_t                             CommandType;
436310e230b6Smaya   uint32_t                             SampleMask;
436410e230b6Smaya};
436510e230b6Smaya
436610e230b6Smayastatic inline void
436710e230b6SmayaGEN75_3DSTATE_SAMPLE_MASK_pack(__attribute__((unused)) __gen_user_data *data,
436810e230b6Smaya                               __attribute__((unused)) void * restrict dst,
436910e230b6Smaya                               __attribute__((unused)) const struct GEN75_3DSTATE_SAMPLE_MASK * restrict values)
437010e230b6Smaya{
437110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
437210e230b6Smaya
437310e230b6Smaya   dw[0] =
437410e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
437510e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
437610e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
437710e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
437810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
437910e230b6Smaya
438010e230b6Smaya   dw[1] =
438110e230b6Smaya      __gen_uint(values->SampleMask, 0, 7);
438210e230b6Smaya}
438310e230b6Smaya
438410e230b6Smaya#define GEN75_3DSTATE_SBE_length              14
438510e230b6Smaya#define GEN75_3DSTATE_SBE_length_bias          2
438610e230b6Smaya#define GEN75_3DSTATE_SBE_header                \
438710e230b6Smaya   .DWordLength                         =     12,  \
438810e230b6Smaya   ._3DCommandSubOpcode                 =     31,  \
438910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
439010e230b6Smaya   .CommandSubType                      =      3,  \
439110e230b6Smaya   .CommandType                         =      3
439210e230b6Smaya
439310e230b6Smayastruct GEN75_3DSTATE_SBE {
439410e230b6Smaya   uint32_t                             DWordLength;
439510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
439610e230b6Smaya   uint32_t                             _3DCommandOpcode;
439710e230b6Smaya   uint32_t                             CommandSubType;
439810e230b6Smaya   uint32_t                             CommandType;
439910e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
440010e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
440110e230b6Smaya   uint32_t                             PointSpriteTextureCoordinateOrigin;
440210e230b6Smaya#define UPPERLEFT                                0
440310e230b6Smaya#define LOWERLEFT                                1
440410e230b6Smaya   bool                                 AttributeSwizzleEnable;
440510e230b6Smaya   uint32_t                             NumberofSFOutputAttributes;
440610e230b6Smaya   uint32_t                             AttributeSwizzleControlMode;
440710e230b6Smaya   struct GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL Attribute[16];
440810e230b6Smaya   uint32_t                             PointSpriteTextureCoordinateEnable;
440910e230b6Smaya   uint32_t                             ConstantInterpolationEnable;
441010e230b6Smaya   uint32_t                             Attribute0WrapShortestEnables;
441110e230b6Smaya   uint32_t                             Attribute1WrapShortestEnables;
441210e230b6Smaya   uint32_t                             Attribute2WrapShortestEnables;
441310e230b6Smaya   uint32_t                             Attribute3WrapShortestEnables;
441410e230b6Smaya   uint32_t                             Attribute4WrapShortestEnables;
441510e230b6Smaya   uint32_t                             Attribute5WrapShortestEnables;
441610e230b6Smaya   uint32_t                             Attribute6WrapShortestEnables;
441710e230b6Smaya   uint32_t                             Attribute7WrapShortestEnables;
441810e230b6Smaya   uint32_t                             Attribute8WrapShortestEnables;
441910e230b6Smaya   uint32_t                             Attribute9WrapShortestEnables;
442010e230b6Smaya   uint32_t                             Attribute10WrapShortestEnables;
442110e230b6Smaya   uint32_t                             Attribute11WrapShortestEnables;
442210e230b6Smaya   uint32_t                             Attribute12WrapShortestEnables;
442310e230b6Smaya   uint32_t                             Attribute13WrapShortestEnables;
442410e230b6Smaya   uint32_t                             Attribute14WrapShortestEnables;
442510e230b6Smaya   uint32_t                             Attribute15WrapShortestEnables;
442610e230b6Smaya};
442710e230b6Smaya
442810e230b6Smayastatic inline void
442910e230b6SmayaGEN75_3DSTATE_SBE_pack(__attribute__((unused)) __gen_user_data *data,
443010e230b6Smaya                       __attribute__((unused)) void * restrict dst,
443110e230b6Smaya                       __attribute__((unused)) const struct GEN75_3DSTATE_SBE * restrict values)
443210e230b6Smaya{
443310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
443410e230b6Smaya
443510e230b6Smaya   dw[0] =
443610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
443710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
443810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
443910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
444010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
444110e230b6Smaya
444210e230b6Smaya   dw[1] =
444310e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 4, 9) |
444410e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 15) |
444510e230b6Smaya      __gen_uint(values->PointSpriteTextureCoordinateOrigin, 20, 20) |
444610e230b6Smaya      __gen_uint(values->AttributeSwizzleEnable, 21, 21) |
444710e230b6Smaya      __gen_uint(values->NumberofSFOutputAttributes, 22, 27) |
444810e230b6Smaya      __gen_uint(values->AttributeSwizzleControlMode, 28, 28);
444910e230b6Smaya
445010e230b6Smaya   uint32_t v2_0;
445110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v2_0, &values->Attribute[0]);
445210e230b6Smaya
445310e230b6Smaya   uint32_t v2_1;
445410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v2_1, &values->Attribute[1]);
445510e230b6Smaya
445610e230b6Smaya   dw[2] =
445710e230b6Smaya      __gen_uint(v2_0, 0, 15) |
445810e230b6Smaya      __gen_uint(v2_1, 16, 31);
445910e230b6Smaya
446010e230b6Smaya   uint32_t v3_0;
446110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v3_0, &values->Attribute[2]);
446210e230b6Smaya
446310e230b6Smaya   uint32_t v3_1;
446410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v3_1, &values->Attribute[3]);
446510e230b6Smaya
446610e230b6Smaya   dw[3] =
446710e230b6Smaya      __gen_uint(v3_0, 0, 15) |
446810e230b6Smaya      __gen_uint(v3_1, 16, 31);
446910e230b6Smaya
447010e230b6Smaya   uint32_t v4_0;
447110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v4_0, &values->Attribute[4]);
447210e230b6Smaya
447310e230b6Smaya   uint32_t v4_1;
447410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v4_1, &values->Attribute[5]);
447510e230b6Smaya
447610e230b6Smaya   dw[4] =
447710e230b6Smaya      __gen_uint(v4_0, 0, 15) |
447810e230b6Smaya      __gen_uint(v4_1, 16, 31);
447910e230b6Smaya
448010e230b6Smaya   uint32_t v5_0;
448110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v5_0, &values->Attribute[6]);
448210e230b6Smaya
448310e230b6Smaya   uint32_t v5_1;
448410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v5_1, &values->Attribute[7]);
448510e230b6Smaya
448610e230b6Smaya   dw[5] =
448710e230b6Smaya      __gen_uint(v5_0, 0, 15) |
448810e230b6Smaya      __gen_uint(v5_1, 16, 31);
448910e230b6Smaya
449010e230b6Smaya   uint32_t v6_0;
449110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v6_0, &values->Attribute[8]);
449210e230b6Smaya
449310e230b6Smaya   uint32_t v6_1;
449410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v6_1, &values->Attribute[9]);
449510e230b6Smaya
449610e230b6Smaya   dw[6] =
449710e230b6Smaya      __gen_uint(v6_0, 0, 15) |
449810e230b6Smaya      __gen_uint(v6_1, 16, 31);
449910e230b6Smaya
450010e230b6Smaya   uint32_t v7_0;
450110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v7_0, &values->Attribute[10]);
450210e230b6Smaya
450310e230b6Smaya   uint32_t v7_1;
450410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v7_1, &values->Attribute[11]);
450510e230b6Smaya
450610e230b6Smaya   dw[7] =
450710e230b6Smaya      __gen_uint(v7_0, 0, 15) |
450810e230b6Smaya      __gen_uint(v7_1, 16, 31);
450910e230b6Smaya
451010e230b6Smaya   uint32_t v8_0;
451110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v8_0, &values->Attribute[12]);
451210e230b6Smaya
451310e230b6Smaya   uint32_t v8_1;
451410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v8_1, &values->Attribute[13]);
451510e230b6Smaya
451610e230b6Smaya   dw[8] =
451710e230b6Smaya      __gen_uint(v8_0, 0, 15) |
451810e230b6Smaya      __gen_uint(v8_1, 16, 31);
451910e230b6Smaya
452010e230b6Smaya   uint32_t v9_0;
452110e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v9_0, &values->Attribute[14]);
452210e230b6Smaya
452310e230b6Smaya   uint32_t v9_1;
452410e230b6Smaya   GEN75_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data, &v9_1, &values->Attribute[15]);
452510e230b6Smaya
452610e230b6Smaya   dw[9] =
452710e230b6Smaya      __gen_uint(v9_0, 0, 15) |
452810e230b6Smaya      __gen_uint(v9_1, 16, 31);
452910e230b6Smaya
453010e230b6Smaya   dw[10] =
453110e230b6Smaya      __gen_uint(values->PointSpriteTextureCoordinateEnable, 0, 31);
453210e230b6Smaya
453310e230b6Smaya   dw[11] =
453410e230b6Smaya      __gen_uint(values->ConstantInterpolationEnable, 0, 31);
453510e230b6Smaya
453610e230b6Smaya   dw[12] =
453710e230b6Smaya      __gen_uint(values->Attribute0WrapShortestEnables, 0, 3) |
453810e230b6Smaya      __gen_uint(values->Attribute1WrapShortestEnables, 4, 7) |
453910e230b6Smaya      __gen_uint(values->Attribute2WrapShortestEnables, 8, 11) |
454010e230b6Smaya      __gen_uint(values->Attribute3WrapShortestEnables, 12, 15) |
454110e230b6Smaya      __gen_uint(values->Attribute4WrapShortestEnables, 16, 19) |
454210e230b6Smaya      __gen_uint(values->Attribute5WrapShortestEnables, 20, 23) |
454310e230b6Smaya      __gen_uint(values->Attribute6WrapShortestEnables, 24, 27) |
454410e230b6Smaya      __gen_uint(values->Attribute7WrapShortestEnables, 28, 31);
454510e230b6Smaya
454610e230b6Smaya   dw[13] =
454710e230b6Smaya      __gen_uint(values->Attribute8WrapShortestEnables, 0, 3) |
454810e230b6Smaya      __gen_uint(values->Attribute9WrapShortestEnables, 4, 7) |
454910e230b6Smaya      __gen_uint(values->Attribute10WrapShortestEnables, 8, 11) |
455010e230b6Smaya      __gen_uint(values->Attribute11WrapShortestEnables, 12, 15) |
455110e230b6Smaya      __gen_uint(values->Attribute12WrapShortestEnables, 16, 19) |
455210e230b6Smaya      __gen_uint(values->Attribute13WrapShortestEnables, 20, 23) |
455310e230b6Smaya      __gen_uint(values->Attribute14WrapShortestEnables, 24, 27) |
455410e230b6Smaya      __gen_uint(values->Attribute15WrapShortestEnables, 28, 31);
455510e230b6Smaya}
455610e230b6Smaya
455710e230b6Smaya#define GEN75_3DSTATE_SCISSOR_STATE_POINTERS_length      2
455810e230b6Smaya#define GEN75_3DSTATE_SCISSOR_STATE_POINTERS_length_bias      2
455910e230b6Smaya#define GEN75_3DSTATE_SCISSOR_STATE_POINTERS_header\
456010e230b6Smaya   .DWordLength                         =      0,  \
456110e230b6Smaya   ._3DCommandSubOpcode                 =     15,  \
456210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
456310e230b6Smaya   .CommandSubType                      =      3,  \
456410e230b6Smaya   .CommandType                         =      3
456510e230b6Smaya
456610e230b6Smayastruct GEN75_3DSTATE_SCISSOR_STATE_POINTERS {
456710e230b6Smaya   uint32_t                             DWordLength;
456810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
456910e230b6Smaya   uint32_t                             _3DCommandOpcode;
457010e230b6Smaya   uint32_t                             CommandSubType;
457110e230b6Smaya   uint32_t                             CommandType;
457210e230b6Smaya   uint64_t                             ScissorRectPointer;
457310e230b6Smaya};
457410e230b6Smaya
457510e230b6Smayastatic inline void
457610e230b6SmayaGEN75_3DSTATE_SCISSOR_STATE_POINTERS_pack(__attribute__((unused)) __gen_user_data *data,
457710e230b6Smaya                                          __attribute__((unused)) void * restrict dst,
457810e230b6Smaya                                          __attribute__((unused)) const struct GEN75_3DSTATE_SCISSOR_STATE_POINTERS * restrict values)
457910e230b6Smaya{
458010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
458110e230b6Smaya
458210e230b6Smaya   dw[0] =
458310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
458410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
458510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
458610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
458710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
458810e230b6Smaya
458910e230b6Smaya   dw[1] =
459010e230b6Smaya      __gen_offset(values->ScissorRectPointer, 5, 31);
459110e230b6Smaya}
459210e230b6Smaya
459310e230b6Smaya#define GEN75_3DSTATE_SF_length                7
459410e230b6Smaya#define GEN75_3DSTATE_SF_length_bias           2
459510e230b6Smaya#define GEN75_3DSTATE_SF_header                 \
459610e230b6Smaya   .DWordLength                         =      5,  \
459710e230b6Smaya   ._3DCommandSubOpcode                 =     19,  \
459810e230b6Smaya   ._3DCommandOpcode                    =      0,  \
459910e230b6Smaya   .CommandSubType                      =      3,  \
460010e230b6Smaya   .CommandType                         =      3
460110e230b6Smaya
460210e230b6Smayastruct GEN75_3DSTATE_SF {
460310e230b6Smaya   uint32_t                             DWordLength;
460410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
460510e230b6Smaya   uint32_t                             _3DCommandOpcode;
460610e230b6Smaya   uint32_t                             CommandSubType;
460710e230b6Smaya   uint32_t                             CommandType;
460810e230b6Smaya   uint32_t                             FrontWinding;
460910e230b6Smaya   bool                                 ViewportTransformEnable;
461010e230b6Smaya   uint32_t                             BackFaceFillMode;
461110e230b6Smaya#define FILL_MODE_SOLID                          0
461210e230b6Smaya#define FILL_MODE_WIREFRAME                      1
461310e230b6Smaya#define FILL_MODE_POINT                          2
461410e230b6Smaya   uint32_t                             FrontFaceFillMode;
461510e230b6Smaya#define FILL_MODE_SOLID                          0
461610e230b6Smaya#define FILL_MODE_WIREFRAME                      1
461710e230b6Smaya#define FILL_MODE_POINT                          2
461810e230b6Smaya   bool                                 GlobalDepthOffsetEnablePoint;
461910e230b6Smaya   bool                                 GlobalDepthOffsetEnableWireframe;
462010e230b6Smaya   bool                                 GlobalDepthOffsetEnableSolid;
462110e230b6Smaya   bool                                 StatisticsEnable;
462210e230b6Smaya   bool                                 LegacyGlobalDepthBiasEnable;
462310e230b6Smaya   uint32_t                             DepthBufferSurfaceFormat;
462410e230b6Smaya#define D32_FLOAT_S8X24_UINT                     0
462510e230b6Smaya#define D32_FLOAT                                1
462610e230b6Smaya#define D24_UNORM_S8_UINT                        2
462710e230b6Smaya#define D24_UNORM_X8_UINT                        3
462810e230b6Smaya#define D16_UNORM                                5
462910e230b6Smaya   uint32_t                             MultisampleRasterizationMode;
463010e230b6Smaya   bool                                 RTIndependentRasterizationEnable;
463110e230b6Smaya   bool                                 ScissorRectangleEnable;
463210e230b6Smaya   bool                                 LineStippleEnable;
463310e230b6Smaya   uint32_t                             LineEndCapAntialiasingRegionWidth;
463410e230b6Smaya#define _05pixels                                0
463510e230b6Smaya#define _10pixels                                1
463610e230b6Smaya#define _20pixels                                2
463710e230b6Smaya#define _40pixels                                3
463810e230b6Smaya   float                                LineWidth;
463910e230b6Smaya   uint32_t                             CullMode;
464010e230b6Smaya#define CULLMODE_BOTH                            0
464110e230b6Smaya#define CULLMODE_NONE                            1
464210e230b6Smaya#define CULLMODE_FRONT                           2
464310e230b6Smaya#define CULLMODE_BACK                            3
464410e230b6Smaya   bool                                 AntiAliasingEnable;
464510e230b6Smaya   float                                PointWidth;
464610e230b6Smaya   uint32_t                             PointWidthSource;
464710e230b6Smaya#define Vertex                                   0
464810e230b6Smaya#define State                                    1
464910e230b6Smaya   uint32_t                             VertexSubPixelPrecisionSelect;
465010e230b6Smaya#define _8Bit                                    0
465110e230b6Smaya#define _4Bit                                    1
465210e230b6Smaya   uint32_t                             AALineDistanceMode;
465310e230b6Smaya#define AALINEDISTANCE_TRUE                      1
465410e230b6Smaya   uint32_t                             TriangleFanProvokingVertexSelect;
465510e230b6Smaya#define Vertex0                                  0
465610e230b6Smaya#define Vertex1                                  1
465710e230b6Smaya#define Vertex2                                  2
465810e230b6Smaya   uint32_t                             LineStripListProvokingVertexSelect;
465910e230b6Smaya   uint32_t                             TriangleStripListProvokingVertexSelect;
466010e230b6Smaya#define Vertex0                                  0
466110e230b6Smaya#define Vertex1                                  1
466210e230b6Smaya#define Vertex2                                  2
466310e230b6Smaya   bool                                 LastPixelEnable;
466410e230b6Smaya   float                                GlobalDepthOffsetConstant;
466510e230b6Smaya   float                                GlobalDepthOffsetScale;
466610e230b6Smaya   float                                GlobalDepthOffsetClamp;
466710e230b6Smaya};
466810e230b6Smaya
466910e230b6Smayastatic inline void
467010e230b6SmayaGEN75_3DSTATE_SF_pack(__attribute__((unused)) __gen_user_data *data,
467110e230b6Smaya                      __attribute__((unused)) void * restrict dst,
467210e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_SF * restrict values)
467310e230b6Smaya{
467410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
467510e230b6Smaya
467610e230b6Smaya   dw[0] =
467710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
467810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
467910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
468010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
468110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
468210e230b6Smaya
468310e230b6Smaya   dw[1] =
468410e230b6Smaya      __gen_uint(values->FrontWinding, 0, 0) |
468510e230b6Smaya      __gen_uint(values->ViewportTransformEnable, 1, 1) |
468610e230b6Smaya      __gen_uint(values->BackFaceFillMode, 3, 4) |
468710e230b6Smaya      __gen_uint(values->FrontFaceFillMode, 5, 6) |
468810e230b6Smaya      __gen_uint(values->GlobalDepthOffsetEnablePoint, 7, 7) |
468910e230b6Smaya      __gen_uint(values->GlobalDepthOffsetEnableWireframe, 8, 8) |
469010e230b6Smaya      __gen_uint(values->GlobalDepthOffsetEnableSolid, 9, 9) |
469110e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
469210e230b6Smaya      __gen_uint(values->LegacyGlobalDepthBiasEnable, 11, 11) |
469310e230b6Smaya      __gen_uint(values->DepthBufferSurfaceFormat, 12, 14);
469410e230b6Smaya
469510e230b6Smaya   dw[2] =
469610e230b6Smaya      __gen_uint(values->MultisampleRasterizationMode, 8, 9) |
469710e230b6Smaya      __gen_uint(values->RTIndependentRasterizationEnable, 10, 10) |
469810e230b6Smaya      __gen_uint(values->ScissorRectangleEnable, 11, 11) |
469910e230b6Smaya      __gen_uint(values->LineStippleEnable, 14, 14) |
470010e230b6Smaya      __gen_uint(values->LineEndCapAntialiasingRegionWidth, 16, 17) |
470110e230b6Smaya      __gen_ufixed(values->LineWidth, 18, 27, 7) |
470210e230b6Smaya      __gen_uint(values->CullMode, 29, 30) |
470310e230b6Smaya      __gen_uint(values->AntiAliasingEnable, 31, 31);
470410e230b6Smaya
470510e230b6Smaya   dw[3] =
470610e230b6Smaya      __gen_ufixed(values->PointWidth, 0, 10, 3) |
470710e230b6Smaya      __gen_uint(values->PointWidthSource, 11, 11) |
470810e230b6Smaya      __gen_uint(values->VertexSubPixelPrecisionSelect, 12, 12) |
470910e230b6Smaya      __gen_uint(values->AALineDistanceMode, 14, 14) |
471010e230b6Smaya      __gen_uint(values->TriangleFanProvokingVertexSelect, 25, 26) |
471110e230b6Smaya      __gen_uint(values->LineStripListProvokingVertexSelect, 27, 28) |
471210e230b6Smaya      __gen_uint(values->TriangleStripListProvokingVertexSelect, 29, 30) |
471310e230b6Smaya      __gen_uint(values->LastPixelEnable, 31, 31);
471410e230b6Smaya
471510e230b6Smaya   dw[4] =
471610e230b6Smaya      __gen_float(values->GlobalDepthOffsetConstant);
471710e230b6Smaya
471810e230b6Smaya   dw[5] =
471910e230b6Smaya      __gen_float(values->GlobalDepthOffsetScale);
472010e230b6Smaya
472110e230b6Smaya   dw[6] =
472210e230b6Smaya      __gen_float(values->GlobalDepthOffsetClamp);
472310e230b6Smaya}
472410e230b6Smaya
472510e230b6Smaya#define GEN75_3DSTATE_SO_BUFFER_length         4
472610e230b6Smaya#define GEN75_3DSTATE_SO_BUFFER_length_bias      2
472710e230b6Smaya#define GEN75_3DSTATE_SO_BUFFER_header          \
472810e230b6Smaya   .DWordLength                         =      2,  \
472910e230b6Smaya   ._3DCommandSubOpcode                 =     24,  \
473010e230b6Smaya   ._3DCommandOpcode                    =      1,  \
473110e230b6Smaya   .CommandSubType                      =      3,  \
473210e230b6Smaya   .CommandType                         =      3
473310e230b6Smaya
473410e230b6Smayastruct GEN75_3DSTATE_SO_BUFFER {
473510e230b6Smaya   uint32_t                             DWordLength;
473610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
473710e230b6Smaya   uint32_t                             _3DCommandOpcode;
473810e230b6Smaya   uint32_t                             CommandSubType;
473910e230b6Smaya   uint32_t                             CommandType;
474010e230b6Smaya   uint32_t                             SurfacePitch;
474110e230b6Smaya   uint32_t                             MOCS;
474210e230b6Smaya   uint32_t                             SOBufferIndex;
474310e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
474410e230b6Smaya   __gen_address_type                   SurfaceEndAddress;
474510e230b6Smaya};
474610e230b6Smaya
474710e230b6Smayastatic inline void
474810e230b6SmayaGEN75_3DSTATE_SO_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
474910e230b6Smaya                             __attribute__((unused)) void * restrict dst,
475010e230b6Smaya                             __attribute__((unused)) const struct GEN75_3DSTATE_SO_BUFFER * restrict values)
475110e230b6Smaya{
475210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
475310e230b6Smaya
475410e230b6Smaya   dw[0] =
475510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
475610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
475710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
475810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
475910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
476010e230b6Smaya
476110e230b6Smaya   dw[1] =
476210e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 11) |
476310e230b6Smaya      __gen_uint(values->MOCS, 25, 28) |
476410e230b6Smaya      __gen_uint(values->SOBufferIndex, 29, 30);
476510e230b6Smaya
476610e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
476710e230b6Smaya
476810e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->SurfaceEndAddress, 0);
476910e230b6Smaya}
477010e230b6Smaya
477110e230b6Smaya#define GEN75_3DSTATE_SO_DECL_LIST_length_bias      2
477210e230b6Smaya#define GEN75_3DSTATE_SO_DECL_LIST_header       \
477310e230b6Smaya   ._3DCommandSubOpcode                 =     23,  \
477410e230b6Smaya   ._3DCommandOpcode                    =      1,  \
477510e230b6Smaya   .CommandSubType                      =      3,  \
477610e230b6Smaya   .CommandType                         =      3
477710e230b6Smaya
477810e230b6Smayastruct GEN75_3DSTATE_SO_DECL_LIST {
477910e230b6Smaya   uint32_t                             DWordLength;
478010e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
478110e230b6Smaya   uint32_t                             _3DCommandOpcode;
478210e230b6Smaya   uint32_t                             CommandSubType;
478310e230b6Smaya   uint32_t                             CommandType;
478410e230b6Smaya   uint32_t                             StreamtoBufferSelects0;
478510e230b6Smaya   uint32_t                             StreamtoBufferSelects1;
478610e230b6Smaya   uint32_t                             StreamtoBufferSelects2;
478710e230b6Smaya   uint32_t                             StreamtoBufferSelects3;
478810e230b6Smaya   uint32_t                             NumEntries0;
478910e230b6Smaya   uint32_t                             NumEntries1;
479010e230b6Smaya   uint32_t                             NumEntries2;
479110e230b6Smaya   uint32_t                             NumEntries3;
479210e230b6Smaya   /* variable length fields follow */
479310e230b6Smaya};
479410e230b6Smaya
479510e230b6Smayastatic inline void
479610e230b6SmayaGEN75_3DSTATE_SO_DECL_LIST_pack(__attribute__((unused)) __gen_user_data *data,
479710e230b6Smaya                                __attribute__((unused)) void * restrict dst,
479810e230b6Smaya                                __attribute__((unused)) const struct GEN75_3DSTATE_SO_DECL_LIST * restrict values)
479910e230b6Smaya{
480010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
480110e230b6Smaya
480210e230b6Smaya   dw[0] =
480310e230b6Smaya      __gen_uint(values->DWordLength, 0, 8) |
480410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
480510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
480610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
480710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
480810e230b6Smaya
480910e230b6Smaya   dw[1] =
481010e230b6Smaya      __gen_uint(values->StreamtoBufferSelects0, 0, 3) |
481110e230b6Smaya      __gen_uint(values->StreamtoBufferSelects1, 4, 7) |
481210e230b6Smaya      __gen_uint(values->StreamtoBufferSelects2, 8, 11) |
481310e230b6Smaya      __gen_uint(values->StreamtoBufferSelects3, 12, 15);
481410e230b6Smaya
481510e230b6Smaya   dw[2] =
481610e230b6Smaya      __gen_uint(values->NumEntries0, 0, 7) |
481710e230b6Smaya      __gen_uint(values->NumEntries1, 8, 15) |
481810e230b6Smaya      __gen_uint(values->NumEntries2, 16, 23) |
481910e230b6Smaya      __gen_uint(values->NumEntries3, 24, 31);
482010e230b6Smaya}
482110e230b6Smaya
482210e230b6Smaya#define GEN75_3DSTATE_STENCIL_BUFFER_length      3
482310e230b6Smaya#define GEN75_3DSTATE_STENCIL_BUFFER_length_bias      2
482410e230b6Smaya#define GEN75_3DSTATE_STENCIL_BUFFER_header     \
482510e230b6Smaya   .DWordLength                         =      1,  \
482610e230b6Smaya   ._3DCommandSubOpcode                 =      6,  \
482710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
482810e230b6Smaya   .CommandSubType                      =      3,  \
482910e230b6Smaya   .CommandType                         =      3
483010e230b6Smaya
483110e230b6Smayastruct GEN75_3DSTATE_STENCIL_BUFFER {
483210e230b6Smaya   uint32_t                             DWordLength;
483310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
483410e230b6Smaya   uint32_t                             _3DCommandOpcode;
483510e230b6Smaya   uint32_t                             CommandSubType;
483610e230b6Smaya   uint32_t                             CommandType;
483710e230b6Smaya   uint32_t                             SurfacePitch;
483810e230b6Smaya   uint32_t                             MOCS;
483910e230b6Smaya   bool                                 StencilBufferEnable;
484010e230b6Smaya   __gen_address_type                   SurfaceBaseAddress;
484110e230b6Smaya};
484210e230b6Smaya
484310e230b6Smayastatic inline void
484410e230b6SmayaGEN75_3DSTATE_STENCIL_BUFFER_pack(__attribute__((unused)) __gen_user_data *data,
484510e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
484610e230b6Smaya                                  __attribute__((unused)) const struct GEN75_3DSTATE_STENCIL_BUFFER * restrict values)
484710e230b6Smaya{
484810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
484910e230b6Smaya
485010e230b6Smaya   dw[0] =
485110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
485210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
485310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
485410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
485510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
485610e230b6Smaya
485710e230b6Smaya   dw[1] =
485810e230b6Smaya      __gen_uint(values->SurfacePitch, 0, 16) |
485910e230b6Smaya      __gen_uint(values->MOCS, 25, 28) |
486010e230b6Smaya      __gen_uint(values->StencilBufferEnable, 31, 31);
486110e230b6Smaya
486210e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceBaseAddress, 0);
486310e230b6Smaya}
486410e230b6Smaya
486510e230b6Smaya#define GEN75_3DSTATE_STREAMOUT_length         3
486610e230b6Smaya#define GEN75_3DSTATE_STREAMOUT_length_bias      2
486710e230b6Smaya#define GEN75_3DSTATE_STREAMOUT_header          \
486810e230b6Smaya   .DWordLength                         =      1,  \
486910e230b6Smaya   ._3DCommandSubOpcode                 =     30,  \
487010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
487110e230b6Smaya   .CommandSubType                      =      3,  \
487210e230b6Smaya   .CommandType                         =      3
487310e230b6Smaya
487410e230b6Smayastruct GEN75_3DSTATE_STREAMOUT {
487510e230b6Smaya   uint32_t                             DWordLength;
487610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
487710e230b6Smaya   uint32_t                             _3DCommandOpcode;
487810e230b6Smaya   uint32_t                             CommandSubType;
487910e230b6Smaya   uint32_t                             CommandType;
488010e230b6Smaya   bool                                 SOBufferEnable0;
488110e230b6Smaya   bool                                 SOBufferEnable1;
488210e230b6Smaya   bool                                 SOBufferEnable2;
488310e230b6Smaya   bool                                 SOBufferEnable3;
488410e230b6Smaya   bool                                 SOStatisticsEnable;
488510e230b6Smaya   uint32_t                             ReorderMode;
488610e230b6Smaya#define LEADING                                  0
488710e230b6Smaya#define TRAILING                                 1
488810e230b6Smaya   uint32_t                             RenderStreamSelect;
488910e230b6Smaya   bool                                 RenderingDisable;
489010e230b6Smaya   bool                                 SOFunctionEnable;
489110e230b6Smaya   uint32_t                             Stream0VertexReadLength;
489210e230b6Smaya   uint32_t                             Stream0VertexReadOffset;
489310e230b6Smaya   uint32_t                             Stream1VertexReadLength;
489410e230b6Smaya   uint32_t                             Stream1VertexReadOffset;
489510e230b6Smaya   uint32_t                             Stream2VertexReadLength;
489610e230b6Smaya   uint32_t                             Stream2VertexReadOffset;
489710e230b6Smaya   uint32_t                             Stream3VertexReadLength;
489810e230b6Smaya   uint32_t                             Stream3VertexReadOffset;
489910e230b6Smaya};
490010e230b6Smaya
490110e230b6Smayastatic inline void
490210e230b6SmayaGEN75_3DSTATE_STREAMOUT_pack(__attribute__((unused)) __gen_user_data *data,
490310e230b6Smaya                             __attribute__((unused)) void * restrict dst,
490410e230b6Smaya                             __attribute__((unused)) const struct GEN75_3DSTATE_STREAMOUT * restrict values)
490510e230b6Smaya{
490610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
490710e230b6Smaya
490810e230b6Smaya   dw[0] =
490910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
491010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
491110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
491210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
491310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
491410e230b6Smaya
491510e230b6Smaya   dw[1] =
491610e230b6Smaya      __gen_uint(values->SOBufferEnable0, 8, 8) |
491710e230b6Smaya      __gen_uint(values->SOBufferEnable1, 9, 9) |
491810e230b6Smaya      __gen_uint(values->SOBufferEnable2, 10, 10) |
491910e230b6Smaya      __gen_uint(values->SOBufferEnable3, 11, 11) |
492010e230b6Smaya      __gen_uint(values->SOStatisticsEnable, 25, 25) |
492110e230b6Smaya      __gen_uint(values->ReorderMode, 26, 26) |
492210e230b6Smaya      __gen_uint(values->RenderStreamSelect, 27, 28) |
492310e230b6Smaya      __gen_uint(values->RenderingDisable, 30, 30) |
492410e230b6Smaya      __gen_uint(values->SOFunctionEnable, 31, 31);
492510e230b6Smaya
492610e230b6Smaya   dw[2] =
492710e230b6Smaya      __gen_uint(values->Stream0VertexReadLength, 0, 4) |
492810e230b6Smaya      __gen_uint(values->Stream0VertexReadOffset, 5, 5) |
492910e230b6Smaya      __gen_uint(values->Stream1VertexReadLength, 8, 12) |
493010e230b6Smaya      __gen_uint(values->Stream1VertexReadOffset, 13, 13) |
493110e230b6Smaya      __gen_uint(values->Stream2VertexReadLength, 16, 20) |
493210e230b6Smaya      __gen_uint(values->Stream2VertexReadOffset, 21, 21) |
493310e230b6Smaya      __gen_uint(values->Stream3VertexReadLength, 24, 28) |
493410e230b6Smaya      __gen_uint(values->Stream3VertexReadOffset, 29, 29);
493510e230b6Smaya}
493610e230b6Smaya
493710e230b6Smaya#define GEN75_3DSTATE_TE_length                4
493810e230b6Smaya#define GEN75_3DSTATE_TE_length_bias           2
493910e230b6Smaya#define GEN75_3DSTATE_TE_header                 \
494010e230b6Smaya   .DWordLength                         =      2,  \
494110e230b6Smaya   ._3DCommandSubOpcode                 =     28,  \
494210e230b6Smaya   ._3DCommandOpcode                    =      0,  \
494310e230b6Smaya   .CommandSubType                      =      3,  \
494410e230b6Smaya   .CommandType                         =      3
494510e230b6Smaya
494610e230b6Smayastruct GEN75_3DSTATE_TE {
494710e230b6Smaya   uint32_t                             DWordLength;
494810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
494910e230b6Smaya   uint32_t                             _3DCommandOpcode;
495010e230b6Smaya   uint32_t                             CommandSubType;
495110e230b6Smaya   uint32_t                             CommandType;
495210e230b6Smaya   bool                                 TEEnable;
495310e230b6Smaya   uint32_t                             TEMode;
495410e230b6Smaya#define HW_TESS                                  0
495510e230b6Smaya#define SW_TESS                                  1
495610e230b6Smaya   uint32_t                             TEDomain;
495710e230b6Smaya#define QUAD                                     0
495810e230b6Smaya#define TRI                                      1
495910e230b6Smaya#define ISOLINE                                  2
496010e230b6Smaya   uint32_t                             OutputTopology;
496110e230b6Smaya#define OUTPUT_POINT                             0
496210e230b6Smaya#define OUTPUT_LINE                              1
496310e230b6Smaya#define OUTPUT_TRI_CW                            2
496410e230b6Smaya#define OUTPUT_TRI_CCW                           3
496510e230b6Smaya   uint32_t                             Partitioning;
496610e230b6Smaya#define INTEGER                                  0
496710e230b6Smaya#define ODD_FRACTIONAL                           1
496810e230b6Smaya#define EVEN_FRACTIONAL                          2
496910e230b6Smaya   float                                MaximumTessellationFactorOdd;
497010e230b6Smaya   float                                MaximumTessellationFactorNotOdd;
497110e230b6Smaya};
497210e230b6Smaya
497310e230b6Smayastatic inline void
497410e230b6SmayaGEN75_3DSTATE_TE_pack(__attribute__((unused)) __gen_user_data *data,
497510e230b6Smaya                      __attribute__((unused)) void * restrict dst,
497610e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_TE * restrict values)
497710e230b6Smaya{
497810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
497910e230b6Smaya
498010e230b6Smaya   dw[0] =
498110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
498210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
498310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
498410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
498510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
498610e230b6Smaya
498710e230b6Smaya   dw[1] =
498810e230b6Smaya      __gen_uint(values->TEEnable, 0, 0) |
498910e230b6Smaya      __gen_uint(values->TEMode, 1, 2) |
499010e230b6Smaya      __gen_uint(values->TEDomain, 4, 5) |
499110e230b6Smaya      __gen_uint(values->OutputTopology, 8, 9) |
499210e230b6Smaya      __gen_uint(values->Partitioning, 12, 13);
499310e230b6Smaya
499410e230b6Smaya   dw[2] =
499510e230b6Smaya      __gen_float(values->MaximumTessellationFactorOdd);
499610e230b6Smaya
499710e230b6Smaya   dw[3] =
499810e230b6Smaya      __gen_float(values->MaximumTessellationFactorNotOdd);
499910e230b6Smaya}
500010e230b6Smaya
500110e230b6Smaya#define GEN75_3DSTATE_URB_DS_length            2
500210e230b6Smaya#define GEN75_3DSTATE_URB_DS_length_bias       2
500310e230b6Smaya#define GEN75_3DSTATE_URB_DS_header             \
500410e230b6Smaya   .DWordLength                         =      0,  \
500510e230b6Smaya   ._3DCommandSubOpcode                 =     50,  \
500610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
500710e230b6Smaya   .CommandSubType                      =      3,  \
500810e230b6Smaya   .CommandType                         =      3
500910e230b6Smaya
501010e230b6Smayastruct GEN75_3DSTATE_URB_DS {
501110e230b6Smaya   uint32_t                             DWordLength;
501210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
501310e230b6Smaya   uint32_t                             _3DCommandOpcode;
501410e230b6Smaya   uint32_t                             CommandSubType;
501510e230b6Smaya   uint32_t                             CommandType;
501610e230b6Smaya   uint32_t                             DSNumberofURBEntries;
501710e230b6Smaya   uint32_t                             DSURBEntryAllocationSize;
501810e230b6Smaya   uint32_t                             DSURBStartingAddress;
501910e230b6Smaya};
502010e230b6Smaya
502110e230b6Smayastatic inline void
502210e230b6SmayaGEN75_3DSTATE_URB_DS_pack(__attribute__((unused)) __gen_user_data *data,
502310e230b6Smaya                          __attribute__((unused)) void * restrict dst,
502410e230b6Smaya                          __attribute__((unused)) const struct GEN75_3DSTATE_URB_DS * restrict values)
502510e230b6Smaya{
502610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
502710e230b6Smaya
502810e230b6Smaya   dw[0] =
502910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
503010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
503110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
503210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
503310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
503410e230b6Smaya
503510e230b6Smaya   dw[1] =
503610e230b6Smaya      __gen_uint(values->DSNumberofURBEntries, 0, 15) |
503710e230b6Smaya      __gen_uint(values->DSURBEntryAllocationSize, 16, 24) |
503810e230b6Smaya      __gen_uint(values->DSURBStartingAddress, 25, 30);
503910e230b6Smaya}
504010e230b6Smaya
504110e230b6Smaya#define GEN75_3DSTATE_URB_GS_length            2
504210e230b6Smaya#define GEN75_3DSTATE_URB_GS_length_bias       2
504310e230b6Smaya#define GEN75_3DSTATE_URB_GS_header             \
504410e230b6Smaya   .DWordLength                         =      0,  \
504510e230b6Smaya   ._3DCommandSubOpcode                 =     51,  \
504610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
504710e230b6Smaya   .CommandSubType                      =      3,  \
504810e230b6Smaya   .CommandType                         =      3
504910e230b6Smaya
505010e230b6Smayastruct GEN75_3DSTATE_URB_GS {
505110e230b6Smaya   uint32_t                             DWordLength;
505210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
505310e230b6Smaya   uint32_t                             _3DCommandOpcode;
505410e230b6Smaya   uint32_t                             CommandSubType;
505510e230b6Smaya   uint32_t                             CommandType;
505610e230b6Smaya   uint32_t                             GSNumberofURBEntries;
505710e230b6Smaya   uint32_t                             GSURBEntryAllocationSize;
505810e230b6Smaya   uint32_t                             GSURBStartingAddress;
505910e230b6Smaya};
506010e230b6Smaya
506110e230b6Smayastatic inline void
506210e230b6SmayaGEN75_3DSTATE_URB_GS_pack(__attribute__((unused)) __gen_user_data *data,
506310e230b6Smaya                          __attribute__((unused)) void * restrict dst,
506410e230b6Smaya                          __attribute__((unused)) const struct GEN75_3DSTATE_URB_GS * restrict values)
506510e230b6Smaya{
506610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
506710e230b6Smaya
506810e230b6Smaya   dw[0] =
506910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
507010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
507110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
507210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
507310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
507410e230b6Smaya
507510e230b6Smaya   dw[1] =
507610e230b6Smaya      __gen_uint(values->GSNumberofURBEntries, 0, 15) |
507710e230b6Smaya      __gen_uint(values->GSURBEntryAllocationSize, 16, 24) |
507810e230b6Smaya      __gen_uint(values->GSURBStartingAddress, 25, 30);
507910e230b6Smaya}
508010e230b6Smaya
508110e230b6Smaya#define GEN75_3DSTATE_URB_HS_length            2
508210e230b6Smaya#define GEN75_3DSTATE_URB_HS_length_bias       2
508310e230b6Smaya#define GEN75_3DSTATE_URB_HS_header             \
508410e230b6Smaya   .DWordLength                         =      0,  \
508510e230b6Smaya   ._3DCommandSubOpcode                 =     49,  \
508610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
508710e230b6Smaya   .CommandSubType                      =      3,  \
508810e230b6Smaya   .CommandType                         =      3
508910e230b6Smaya
509010e230b6Smayastruct GEN75_3DSTATE_URB_HS {
509110e230b6Smaya   uint32_t                             DWordLength;
509210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
509310e230b6Smaya   uint32_t                             _3DCommandOpcode;
509410e230b6Smaya   uint32_t                             CommandSubType;
509510e230b6Smaya   uint32_t                             CommandType;
509610e230b6Smaya   uint32_t                             HSNumberofURBEntries;
509710e230b6Smaya   uint32_t                             HSURBEntryAllocationSize;
509810e230b6Smaya   uint32_t                             HSURBStartingAddress;
509910e230b6Smaya};
510010e230b6Smaya
510110e230b6Smayastatic inline void
510210e230b6SmayaGEN75_3DSTATE_URB_HS_pack(__attribute__((unused)) __gen_user_data *data,
510310e230b6Smaya                          __attribute__((unused)) void * restrict dst,
510410e230b6Smaya                          __attribute__((unused)) const struct GEN75_3DSTATE_URB_HS * restrict values)
510510e230b6Smaya{
510610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
510710e230b6Smaya
510810e230b6Smaya   dw[0] =
510910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
511010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
511110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
511210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
511310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
511410e230b6Smaya
511510e230b6Smaya   dw[1] =
511610e230b6Smaya      __gen_uint(values->HSNumberofURBEntries, 0, 15) |
511710e230b6Smaya      __gen_uint(values->HSURBEntryAllocationSize, 16, 24) |
511810e230b6Smaya      __gen_uint(values->HSURBStartingAddress, 25, 30);
511910e230b6Smaya}
512010e230b6Smaya
512110e230b6Smaya#define GEN75_3DSTATE_URB_VS_length            2
512210e230b6Smaya#define GEN75_3DSTATE_URB_VS_length_bias       2
512310e230b6Smaya#define GEN75_3DSTATE_URB_VS_header             \
512410e230b6Smaya   .DWordLength                         =      0,  \
512510e230b6Smaya   ._3DCommandSubOpcode                 =     48,  \
512610e230b6Smaya   ._3DCommandOpcode                    =      0,  \
512710e230b6Smaya   .CommandSubType                      =      3,  \
512810e230b6Smaya   .CommandType                         =      3
512910e230b6Smaya
513010e230b6Smayastruct GEN75_3DSTATE_URB_VS {
513110e230b6Smaya   uint32_t                             DWordLength;
513210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
513310e230b6Smaya   uint32_t                             _3DCommandOpcode;
513410e230b6Smaya   uint32_t                             CommandSubType;
513510e230b6Smaya   uint32_t                             CommandType;
513610e230b6Smaya   uint32_t                             VSNumberofURBEntries;
513710e230b6Smaya   uint32_t                             VSURBEntryAllocationSize;
513810e230b6Smaya   uint32_t                             VSURBStartingAddress;
513910e230b6Smaya};
514010e230b6Smaya
514110e230b6Smayastatic inline void
514210e230b6SmayaGEN75_3DSTATE_URB_VS_pack(__attribute__((unused)) __gen_user_data *data,
514310e230b6Smaya                          __attribute__((unused)) void * restrict dst,
514410e230b6Smaya                          __attribute__((unused)) const struct GEN75_3DSTATE_URB_VS * restrict values)
514510e230b6Smaya{
514610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
514710e230b6Smaya
514810e230b6Smaya   dw[0] =
514910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
515010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
515110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
515210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
515310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
515410e230b6Smaya
515510e230b6Smaya   dw[1] =
515610e230b6Smaya      __gen_uint(values->VSNumberofURBEntries, 0, 15) |
515710e230b6Smaya      __gen_uint(values->VSURBEntryAllocationSize, 16, 24) |
515810e230b6Smaya      __gen_uint(values->VSURBStartingAddress, 25, 30);
515910e230b6Smaya}
516010e230b6Smaya
516110e230b6Smaya#define GEN75_3DSTATE_VERTEX_BUFFERS_length_bias      2
516210e230b6Smaya#define GEN75_3DSTATE_VERTEX_BUFFERS_header     \
516310e230b6Smaya   .DWordLength                         =      3,  \
516410e230b6Smaya   ._3DCommandSubOpcode                 =      8,  \
516510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
516610e230b6Smaya   .CommandSubType                      =      3,  \
516710e230b6Smaya   .CommandType                         =      3
516810e230b6Smaya
516910e230b6Smayastruct GEN75_3DSTATE_VERTEX_BUFFERS {
517010e230b6Smaya   uint32_t                             DWordLength;
517110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
517210e230b6Smaya   uint32_t                             _3DCommandOpcode;
517310e230b6Smaya   uint32_t                             CommandSubType;
517410e230b6Smaya   uint32_t                             CommandType;
517510e230b6Smaya   /* variable length fields follow */
517610e230b6Smaya};
517710e230b6Smaya
517810e230b6Smayastatic inline void
517910e230b6SmayaGEN75_3DSTATE_VERTEX_BUFFERS_pack(__attribute__((unused)) __gen_user_data *data,
518010e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
518110e230b6Smaya                                  __attribute__((unused)) const struct GEN75_3DSTATE_VERTEX_BUFFERS * restrict values)
518210e230b6Smaya{
518310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
518410e230b6Smaya
518510e230b6Smaya   dw[0] =
518610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
518710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
518810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
518910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
519010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
519110e230b6Smaya}
519210e230b6Smaya
519310e230b6Smaya#define GEN75_3DSTATE_VERTEX_ELEMENTS_length_bias      2
519410e230b6Smaya#define GEN75_3DSTATE_VERTEX_ELEMENTS_header    \
519510e230b6Smaya   .DWordLength                         =      1,  \
519610e230b6Smaya   ._3DCommandSubOpcode                 =      9,  \
519710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
519810e230b6Smaya   .CommandSubType                      =      3,  \
519910e230b6Smaya   .CommandType                         =      3
520010e230b6Smaya
520110e230b6Smayastruct GEN75_3DSTATE_VERTEX_ELEMENTS {
520210e230b6Smaya   uint32_t                             DWordLength;
520310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
520410e230b6Smaya   uint32_t                             _3DCommandOpcode;
520510e230b6Smaya   uint32_t                             CommandSubType;
520610e230b6Smaya   uint32_t                             CommandType;
520710e230b6Smaya   /* variable length fields follow */
520810e230b6Smaya};
520910e230b6Smaya
521010e230b6Smayastatic inline void
521110e230b6SmayaGEN75_3DSTATE_VERTEX_ELEMENTS_pack(__attribute__((unused)) __gen_user_data *data,
521210e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
521310e230b6Smaya                                   __attribute__((unused)) const struct GEN75_3DSTATE_VERTEX_ELEMENTS * restrict values)
521410e230b6Smaya{
521510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
521610e230b6Smaya
521710e230b6Smaya   dw[0] =
521810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
521910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
522010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
522110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
522210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
522310e230b6Smaya}
522410e230b6Smaya
522510e230b6Smaya#define GEN75_3DSTATE_VF_length                2
522610e230b6Smaya#define GEN75_3DSTATE_VF_length_bias           2
522710e230b6Smaya#define GEN75_3DSTATE_VF_header                 \
522810e230b6Smaya   .DWordLength                         =      0,  \
522910e230b6Smaya   ._3DCommandSubOpcode                 =     12,  \
523010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
523110e230b6Smaya   .CommandSubType                      =      3,  \
523210e230b6Smaya   .CommandType                         =      3
523310e230b6Smaya
523410e230b6Smayastruct GEN75_3DSTATE_VF {
523510e230b6Smaya   uint32_t                             DWordLength;
523610e230b6Smaya   bool                                 IndexedDrawCutIndexEnable;
523710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
523810e230b6Smaya   uint32_t                             _3DCommandOpcode;
523910e230b6Smaya   uint32_t                             CommandSubType;
524010e230b6Smaya   uint32_t                             CommandType;
524110e230b6Smaya   uint32_t                             CutIndex;
524210e230b6Smaya};
524310e230b6Smaya
524410e230b6Smayastatic inline void
524510e230b6SmayaGEN75_3DSTATE_VF_pack(__attribute__((unused)) __gen_user_data *data,
524610e230b6Smaya                      __attribute__((unused)) void * restrict dst,
524710e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_VF * restrict values)
524810e230b6Smaya{
524910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
525010e230b6Smaya
525110e230b6Smaya   dw[0] =
525210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
525310e230b6Smaya      __gen_uint(values->IndexedDrawCutIndexEnable, 8, 8) |
525410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
525510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
525610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
525710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
525810e230b6Smaya
525910e230b6Smaya   dw[1] =
526010e230b6Smaya      __gen_uint(values->CutIndex, 0, 31);
526110e230b6Smaya}
526210e230b6Smaya
526310e230b6Smaya#define GEN75_3DSTATE_VF_STATISTICS_length      1
526410e230b6Smaya#define GEN75_3DSTATE_VF_STATISTICS_length_bias      1
526510e230b6Smaya#define GEN75_3DSTATE_VF_STATISTICS_header      \
526610e230b6Smaya   ._3DCommandSubOpcode                 =     11,  \
526710e230b6Smaya   ._3DCommandOpcode                    =      0,  \
526810e230b6Smaya   .CommandSubType                      =      1,  \
526910e230b6Smaya   .CommandType                         =      3
527010e230b6Smaya
527110e230b6Smayastruct GEN75_3DSTATE_VF_STATISTICS {
527210e230b6Smaya   bool                                 StatisticsEnable;
527310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
527410e230b6Smaya   uint32_t                             _3DCommandOpcode;
527510e230b6Smaya   uint32_t                             CommandSubType;
527610e230b6Smaya   uint32_t                             CommandType;
527710e230b6Smaya};
527810e230b6Smaya
527910e230b6Smayastatic inline void
528010e230b6SmayaGEN75_3DSTATE_VF_STATISTICS_pack(__attribute__((unused)) __gen_user_data *data,
528110e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
528210e230b6Smaya                                 __attribute__((unused)) const struct GEN75_3DSTATE_VF_STATISTICS * restrict values)
528310e230b6Smaya{
528410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
528510e230b6Smaya
528610e230b6Smaya   dw[0] =
528710e230b6Smaya      __gen_uint(values->StatisticsEnable, 0, 0) |
528810e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
528910e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
529010e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
529110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
529210e230b6Smaya}
529310e230b6Smaya
529410e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length      2
529510e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length_bias      2
529610e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_header\
529710e230b6Smaya   .DWordLength                         =      0,  \
529810e230b6Smaya   ._3DCommandSubOpcode                 =     35,  \
529910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
530010e230b6Smaya   .CommandSubType                      =      3,  \
530110e230b6Smaya   .CommandType                         =      3
530210e230b6Smaya
530310e230b6Smayastruct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC {
530410e230b6Smaya   uint32_t                             DWordLength;
530510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
530610e230b6Smaya   uint32_t                             _3DCommandOpcode;
530710e230b6Smaya   uint32_t                             CommandSubType;
530810e230b6Smaya   uint32_t                             CommandType;
530910e230b6Smaya   uint64_t                             CCViewportPointer;
531010e230b6Smaya};
531110e230b6Smaya
531210e230b6Smayastatic inline void
531310e230b6SmayaGEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC_pack(__attribute__((unused)) __gen_user_data *data,
531410e230b6Smaya                                              __attribute__((unused)) void * restrict dst,
531510e230b6Smaya                                              __attribute__((unused)) const struct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_CC * restrict values)
531610e230b6Smaya{
531710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
531810e230b6Smaya
531910e230b6Smaya   dw[0] =
532010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
532110e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
532210e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
532310e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
532410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
532510e230b6Smaya
532610e230b6Smaya   dw[1] =
532710e230b6Smaya      __gen_offset(values->CCViewportPointer, 5, 31);
532810e230b6Smaya}
532910e230b6Smaya
533010e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length      2
533110e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length_bias      2
533210e230b6Smaya#define GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_header\
533310e230b6Smaya   .DWordLength                         =      0,  \
533410e230b6Smaya   ._3DCommandSubOpcode                 =     33,  \
533510e230b6Smaya   ._3DCommandOpcode                    =      0,  \
533610e230b6Smaya   .CommandSubType                      =      3,  \
533710e230b6Smaya   .CommandType                         =      3
533810e230b6Smaya
533910e230b6Smayastruct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP {
534010e230b6Smaya   uint32_t                             DWordLength;
534110e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
534210e230b6Smaya   uint32_t                             _3DCommandOpcode;
534310e230b6Smaya   uint32_t                             CommandSubType;
534410e230b6Smaya   uint32_t                             CommandType;
534510e230b6Smaya   uint64_t                             SFClipViewportPointer;
534610e230b6Smaya};
534710e230b6Smaya
534810e230b6Smayastatic inline void
534910e230b6SmayaGEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_pack(__attribute__((unused)) __gen_user_data *data,
535010e230b6Smaya                                                   __attribute__((unused)) void * restrict dst,
535110e230b6Smaya                                                   __attribute__((unused)) const struct GEN75_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP * restrict values)
535210e230b6Smaya{
535310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
535410e230b6Smaya
535510e230b6Smaya   dw[0] =
535610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
535710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
535810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
535910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
536010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
536110e230b6Smaya
536210e230b6Smaya   dw[1] =
536310e230b6Smaya      __gen_offset(values->SFClipViewportPointer, 6, 31);
536410e230b6Smaya}
536510e230b6Smaya
536610e230b6Smaya#define GEN75_3DSTATE_VS_length                6
536710e230b6Smaya#define GEN75_3DSTATE_VS_length_bias           2
536810e230b6Smaya#define GEN75_3DSTATE_VS_header                 \
536910e230b6Smaya   .DWordLength                         =      4,  \
537010e230b6Smaya   ._3DCommandSubOpcode                 =     16,  \
537110e230b6Smaya   ._3DCommandOpcode                    =      0,  \
537210e230b6Smaya   .CommandSubType                      =      3,  \
537310e230b6Smaya   .CommandType                         =      3
537410e230b6Smaya
537510e230b6Smayastruct GEN75_3DSTATE_VS {
537610e230b6Smaya   uint32_t                             DWordLength;
537710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
537810e230b6Smaya   uint32_t                             _3DCommandOpcode;
537910e230b6Smaya   uint32_t                             CommandSubType;
538010e230b6Smaya   uint32_t                             CommandType;
538110e230b6Smaya   uint64_t                             KernelStartPointer;
538210e230b6Smaya   bool                                 SoftwareExceptionEnable;
538310e230b6Smaya   bool                                 VSaccessesUAV;
538410e230b6Smaya   bool                                 IllegalOpcodeExceptionEnable;
538510e230b6Smaya   uint32_t                             FloatingPointMode;
538610e230b6Smaya#define IEEE754                                  0
538710e230b6Smaya#define Alternate                                1
538810e230b6Smaya   uint32_t                             ThreadPriority;
538910e230b6Smaya#define NormalPriority                           0
539010e230b6Smaya#define HighPriority                             1
539110e230b6Smaya   uint32_t                             BindingTableEntryCount;
539210e230b6Smaya   uint32_t                             SamplerCount;
539310e230b6Smaya#define NoSamplers                               0
539410e230b6Smaya#define _14Samplers                              1
539510e230b6Smaya#define _58Samplers                              2
539610e230b6Smaya#define _912Samplers                             3
539710e230b6Smaya#define _1316Samplers                            4
539810e230b6Smaya   bool                                 VectorMaskEnable;
539910e230b6Smaya   bool                                 SingleVertexDispatch;
540010e230b6Smaya   uint32_t                             PerThreadScratchSpace;
540110e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
540210e230b6Smaya   uint32_t                             VertexURBEntryReadOffset;
540310e230b6Smaya   uint32_t                             VertexURBEntryReadLength;
540410e230b6Smaya   uint32_t                             DispatchGRFStartRegisterForURBData;
540510e230b6Smaya   bool                                 Enable;
540610e230b6Smaya   bool                                 VertexCacheDisable;
540710e230b6Smaya   bool                                 StatisticsEnable;
540810e230b6Smaya   uint32_t                             MaximumNumberofThreads;
540910e230b6Smaya};
541010e230b6Smaya
541110e230b6Smayastatic inline void
541210e230b6SmayaGEN75_3DSTATE_VS_pack(__attribute__((unused)) __gen_user_data *data,
541310e230b6Smaya                      __attribute__((unused)) void * restrict dst,
541410e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_VS * restrict values)
541510e230b6Smaya{
541610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
541710e230b6Smaya
541810e230b6Smaya   dw[0] =
541910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
542010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
542110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
542210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
542310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
542410e230b6Smaya
542510e230b6Smaya   dw[1] =
542610e230b6Smaya      __gen_offset(values->KernelStartPointer, 6, 31);
542710e230b6Smaya
542810e230b6Smaya   dw[2] =
542910e230b6Smaya      __gen_uint(values->SoftwareExceptionEnable, 7, 7) |
543010e230b6Smaya      __gen_uint(values->VSaccessesUAV, 12, 12) |
543110e230b6Smaya      __gen_uint(values->IllegalOpcodeExceptionEnable, 13, 13) |
543210e230b6Smaya      __gen_uint(values->FloatingPointMode, 16, 16) |
543310e230b6Smaya      __gen_uint(values->ThreadPriority, 17, 17) |
543410e230b6Smaya      __gen_uint(values->BindingTableEntryCount, 18, 25) |
543510e230b6Smaya      __gen_uint(values->SamplerCount, 27, 29) |
543610e230b6Smaya      __gen_uint(values->VectorMaskEnable, 30, 30) |
543710e230b6Smaya      __gen_uint(values->SingleVertexDispatch, 31, 31);
543810e230b6Smaya
543910e230b6Smaya   const uint32_t v3 =
544010e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3);
544110e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->ScratchSpaceBasePointer, v3);
544210e230b6Smaya
544310e230b6Smaya   dw[4] =
544410e230b6Smaya      __gen_uint(values->VertexURBEntryReadOffset, 4, 9) |
544510e230b6Smaya      __gen_uint(values->VertexURBEntryReadLength, 11, 16) |
544610e230b6Smaya      __gen_uint(values->DispatchGRFStartRegisterForURBData, 20, 24);
544710e230b6Smaya
544810e230b6Smaya   dw[5] =
544910e230b6Smaya      __gen_uint(values->Enable, 0, 0) |
545010e230b6Smaya      __gen_uint(values->VertexCacheDisable, 1, 1) |
545110e230b6Smaya      __gen_uint(values->StatisticsEnable, 10, 10) |
545210e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 23, 31);
545310e230b6Smaya}
545410e230b6Smaya
545510e230b6Smaya#define GEN75_3DSTATE_WM_length                3
545610e230b6Smaya#define GEN75_3DSTATE_WM_length_bias           2
545710e230b6Smaya#define GEN75_3DSTATE_WM_header                 \
545810e230b6Smaya   .DWordLength                         =      1,  \
545910e230b6Smaya   ._3DCommandSubOpcode                 =     20,  \
546010e230b6Smaya   ._3DCommandOpcode                    =      0,  \
546110e230b6Smaya   .CommandSubType                      =      3,  \
546210e230b6Smaya   .CommandType                         =      3
546310e230b6Smaya
546410e230b6Smayastruct GEN75_3DSTATE_WM {
546510e230b6Smaya   uint32_t                             DWordLength;
546610e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
546710e230b6Smaya   uint32_t                             _3DCommandOpcode;
546810e230b6Smaya   uint32_t                             CommandSubType;
546910e230b6Smaya   uint32_t                             CommandType;
547010e230b6Smaya   uint32_t                             MultisampleRasterizationMode;
547110e230b6Smaya#define MSRASTMODE_OFF_PIXEL                     0
547210e230b6Smaya#define MSRASTMODE_OFF_PATTERN                   1
547310e230b6Smaya#define MSRASTMODE_ON_PIXEL                      2
547410e230b6Smaya#define MSRASTMODE_ON_PATTERN                    3
547510e230b6Smaya   uint32_t                             PointRasterizationRule;
547610e230b6Smaya#define RASTRULE_UPPER_LEFT                      0
547710e230b6Smaya#define RASTRULE_UPPER_RIGHT                     1
547810e230b6Smaya   bool                                 LineStippleEnable;
547910e230b6Smaya   bool                                 PolygonStippleEnable;
548010e230b6Smaya   bool                                 RTIndependentRasterizationEnable;
548110e230b6Smaya   uint32_t                             LineAntialiasingRegionWidth;
548210e230b6Smaya#define _05pixels                                0
548310e230b6Smaya#define _10pixels                                1
548410e230b6Smaya#define _20pixels                                2
548510e230b6Smaya#define _40pixels                                3
548610e230b6Smaya   uint32_t                             LineEndCapAntialiasingRegionWidth;
548710e230b6Smaya   bool                                 PixelShaderUsesInputCoverageMask;
548810e230b6Smaya   uint32_t                             BarycentricInterpolationMode;
548910e230b6Smaya#define BIM_PERSPECTIVE_PIXEL                    1
549010e230b6Smaya#define BIM_PERSPECTIVE_CENTROID                 2
549110e230b6Smaya#define BIM_PERSPECTIVE_SAMPLE                   4
549210e230b6Smaya#define BIM_LINEAR_PIXEL                         8
549310e230b6Smaya#define BIM_LINEAR_CENTROID                      16
549410e230b6Smaya#define BIM_LINEAR_SAMPLE                        32
549510e230b6Smaya   uint32_t                             PositionZWInterpolationMode;
549610e230b6Smaya#define INTERP_PIXEL                             0
549710e230b6Smaya#define INTERP_CENTROID                          2
549810e230b6Smaya#define INTERP_SAMPLE                            3
549910e230b6Smaya   bool                                 PixelShaderUsesSourceW;
550010e230b6Smaya   bool                                 PixelShaderUsesSourceDepth;
550110e230b6Smaya   uint32_t                             EarlyDepthStencilControl;
550210e230b6Smaya#define EDSC_NORMAL                              0
550310e230b6Smaya#define EDSC_PSEXEC                              1
550410e230b6Smaya#define EDSC_PREPS                               2
550510e230b6Smaya   uint32_t                             PixelShaderComputedDepthMode;
550610e230b6Smaya#define PSCDEPTH_OFF                             0
550710e230b6Smaya#define PSCDEPTH_ON                              1
550810e230b6Smaya#define PSCDEPTH_ON_GE                           2
550910e230b6Smaya#define PSCDEPTH_ON_LE                           3
551010e230b6Smaya   bool                                 PixelShaderKillsPixel;
551110e230b6Smaya   bool                                 LegacyDiamondLineRasterization;
551210e230b6Smaya   bool                                 HierarchicalDepthBufferResolveEnable;
551310e230b6Smaya   bool                                 DepthBufferResolveEnable;
551410e230b6Smaya   bool                                 ThreadDispatchEnable;
551510e230b6Smaya   bool                                 DepthBufferClear;
551610e230b6Smaya   bool                                 StatisticsEnable;
551710e230b6Smaya   uint32_t                             PSUAVonly;
551810e230b6Smaya#define OFF                                      0
551910e230b6Smaya#define ON                                       1
552010e230b6Smaya   uint32_t                             MultisampleDispatchMode;
552110e230b6Smaya#define MSDISPMODE_PERSAMPLE                     0
552210e230b6Smaya#define MSDISPMODE_PERPIXEL                      1
552310e230b6Smaya};
552410e230b6Smaya
552510e230b6Smayastatic inline void
552610e230b6SmayaGEN75_3DSTATE_WM_pack(__attribute__((unused)) __gen_user_data *data,
552710e230b6Smaya                      __attribute__((unused)) void * restrict dst,
552810e230b6Smaya                      __attribute__((unused)) const struct GEN75_3DSTATE_WM * restrict values)
552910e230b6Smaya{
553010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
553110e230b6Smaya
553210e230b6Smaya   dw[0] =
553310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
553410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
553510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
553610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
553710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
553810e230b6Smaya
553910e230b6Smaya   dw[1] =
554010e230b6Smaya      __gen_uint(values->MultisampleRasterizationMode, 0, 1) |
554110e230b6Smaya      __gen_uint(values->PointRasterizationRule, 2, 2) |
554210e230b6Smaya      __gen_uint(values->LineStippleEnable, 3, 3) |
554310e230b6Smaya      __gen_uint(values->PolygonStippleEnable, 4, 4) |
554410e230b6Smaya      __gen_uint(values->RTIndependentRasterizationEnable, 5, 5) |
554510e230b6Smaya      __gen_uint(values->LineAntialiasingRegionWidth, 6, 7) |
554610e230b6Smaya      __gen_uint(values->LineEndCapAntialiasingRegionWidth, 8, 9) |
554710e230b6Smaya      __gen_uint(values->PixelShaderUsesInputCoverageMask, 10, 10) |
554810e230b6Smaya      __gen_uint(values->BarycentricInterpolationMode, 11, 16) |
554910e230b6Smaya      __gen_uint(values->PositionZWInterpolationMode, 17, 18) |
555010e230b6Smaya      __gen_uint(values->PixelShaderUsesSourceW, 19, 19) |
555110e230b6Smaya      __gen_uint(values->PixelShaderUsesSourceDepth, 20, 20) |
555210e230b6Smaya      __gen_uint(values->EarlyDepthStencilControl, 21, 22) |
555310e230b6Smaya      __gen_uint(values->PixelShaderComputedDepthMode, 23, 24) |
555410e230b6Smaya      __gen_uint(values->PixelShaderKillsPixel, 25, 25) |
555510e230b6Smaya      __gen_uint(values->LegacyDiamondLineRasterization, 26, 26) |
555610e230b6Smaya      __gen_uint(values->HierarchicalDepthBufferResolveEnable, 27, 27) |
555710e230b6Smaya      __gen_uint(values->DepthBufferResolveEnable, 28, 28) |
555810e230b6Smaya      __gen_uint(values->ThreadDispatchEnable, 29, 29) |
555910e230b6Smaya      __gen_uint(values->DepthBufferClear, 30, 30) |
556010e230b6Smaya      __gen_uint(values->StatisticsEnable, 31, 31);
556110e230b6Smaya
556210e230b6Smaya   dw[2] =
556310e230b6Smaya      __gen_uint(values->PSUAVonly, 30, 30) |
556410e230b6Smaya      __gen_uint(values->MultisampleDispatchMode, 31, 31);
556510e230b6Smaya}
556610e230b6Smaya
556710e230b6Smaya#define GEN75_GPGPU_CSR_BASE_ADDRESS_length      2
556810e230b6Smaya#define GEN75_GPGPU_CSR_BASE_ADDRESS_length_bias      2
556910e230b6Smaya#define GEN75_GPGPU_CSR_BASE_ADDRESS_header     \
557010e230b6Smaya   .DWordLength                         =      0,  \
557110e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
557210e230b6Smaya   ._3DCommandOpcode                    =      1,  \
557310e230b6Smaya   .CommandSubType                      =      0,  \
557410e230b6Smaya   .CommandType                         =      3
557510e230b6Smaya
557610e230b6Smayastruct GEN75_GPGPU_CSR_BASE_ADDRESS {
557710e230b6Smaya   uint32_t                             DWordLength;
557810e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
557910e230b6Smaya   uint32_t                             _3DCommandOpcode;
558010e230b6Smaya   uint32_t                             CommandSubType;
558110e230b6Smaya   uint32_t                             CommandType;
558210e230b6Smaya   __gen_address_type                   GPGPUCSRBaseAddress;
558310e230b6Smaya};
558410e230b6Smaya
558510e230b6Smayastatic inline void
558610e230b6SmayaGEN75_GPGPU_CSR_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data,
558710e230b6Smaya                                  __attribute__((unused)) void * restrict dst,
558810e230b6Smaya                                  __attribute__((unused)) const struct GEN75_GPGPU_CSR_BASE_ADDRESS * restrict values)
558910e230b6Smaya{
559010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
559110e230b6Smaya
559210e230b6Smaya   dw[0] =
559310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
559410e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
559510e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
559610e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
559710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
559810e230b6Smaya
559910e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->GPGPUCSRBaseAddress, 0);
560010e230b6Smaya}
560110e230b6Smaya
560210e230b6Smaya#define GEN75_GPGPU_OBJECT_length              8
560310e230b6Smaya#define GEN75_GPGPU_OBJECT_length_bias         2
560410e230b6Smaya#define GEN75_GPGPU_OBJECT_header               \
560510e230b6Smaya   .DWordLength                         =      6,  \
560610e230b6Smaya   .SubOpcode                           =      4,  \
560710e230b6Smaya   .MediaCommandOpcode                  =      1,  \
560810e230b6Smaya   .Pipeline                            =      2,  \
560910e230b6Smaya   .CommandType                         =      3
561010e230b6Smaya
561110e230b6Smayastruct GEN75_GPGPU_OBJECT {
561210e230b6Smaya   uint32_t                             DWordLength;
561310e230b6Smaya   bool                                 PredicateEnable;
561410e230b6Smaya   uint32_t                             SubOpcode;
561510e230b6Smaya   uint32_t                             MediaCommandOpcode;
561610e230b6Smaya   uint32_t                             Pipeline;
561710e230b6Smaya   uint32_t                             CommandType;
561810e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
561910e230b6Smaya   uint32_t                             SharedLocalMemoryFixedOffset;
562010e230b6Smaya   uint32_t                             IndirectDataLength;
562110e230b6Smaya   uint32_t                             HalfSliceDestinationSelect;
562210e230b6Smaya#define HalfSlice1                               2
562310e230b6Smaya#define HalfSlice0                               1
562410e230b6Smaya#define EitherHalfSlice                          0
562510e230b6Smaya   uint32_t                             SliceDestinationSelect;
562610e230b6Smaya#define Slice0                                   0
562710e230b6Smaya#define Slice1                                   1
562810e230b6Smaya   uint32_t                             EndofThreadGroup;
562910e230b6Smaya   uint32_t                             SharedLocalMemoryOffset;
563010e230b6Smaya   uint64_t                             IndirectDataStartAddress;
563110e230b6Smaya   uint32_t                             ThreadGroupIDX;
563210e230b6Smaya   uint32_t                             ThreadGroupIDY;
563310e230b6Smaya   uint32_t                             ThreadGroupIDZ;
563410e230b6Smaya   uint32_t                             ExecutionMask;
563510e230b6Smaya};
563610e230b6Smaya
563710e230b6Smayastatic inline void
563810e230b6SmayaGEN75_GPGPU_OBJECT_pack(__attribute__((unused)) __gen_user_data *data,
563910e230b6Smaya                        __attribute__((unused)) void * restrict dst,
564010e230b6Smaya                        __attribute__((unused)) const struct GEN75_GPGPU_OBJECT * restrict values)
564110e230b6Smaya{
564210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
564310e230b6Smaya
564410e230b6Smaya   dw[0] =
564510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
564610e230b6Smaya      __gen_uint(values->PredicateEnable, 8, 8) |
564710e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
564810e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
564910e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
565010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
565110e230b6Smaya
565210e230b6Smaya   dw[1] =
565310e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5) |
565410e230b6Smaya      __gen_uint(values->SharedLocalMemoryFixedOffset, 7, 7);
565510e230b6Smaya
565610e230b6Smaya   dw[2] =
565710e230b6Smaya      __gen_uint(values->IndirectDataLength, 0, 16) |
565810e230b6Smaya      __gen_uint(values->HalfSliceDestinationSelect, 17, 18) |
565910e230b6Smaya      __gen_uint(values->SliceDestinationSelect, 19, 19) |
566010e230b6Smaya      __gen_uint(values->EndofThreadGroup, 24, 24) |
566110e230b6Smaya      __gen_uint(values->SharedLocalMemoryOffset, 28, 31);
566210e230b6Smaya
566310e230b6Smaya   dw[3] =
566410e230b6Smaya      __gen_offset(values->IndirectDataStartAddress, 0, 31);
566510e230b6Smaya
566610e230b6Smaya   dw[4] =
566710e230b6Smaya      __gen_uint(values->ThreadGroupIDX, 0, 31);
566810e230b6Smaya
566910e230b6Smaya   dw[5] =
567010e230b6Smaya      __gen_uint(values->ThreadGroupIDY, 0, 31);
567110e230b6Smaya
567210e230b6Smaya   dw[6] =
567310e230b6Smaya      __gen_uint(values->ThreadGroupIDZ, 0, 31);
567410e230b6Smaya
567510e230b6Smaya   dw[7] =
567610e230b6Smaya      __gen_uint(values->ExecutionMask, 0, 31);
567710e230b6Smaya}
567810e230b6Smaya
567910e230b6Smaya#define GEN75_GPGPU_WALKER_length             11
568010e230b6Smaya#define GEN75_GPGPU_WALKER_length_bias         2
568110e230b6Smaya#define GEN75_GPGPU_WALKER_header               \
568210e230b6Smaya   .DWordLength                         =      9,  \
568310e230b6Smaya   .SubOpcodeA                          =      5,  \
568410e230b6Smaya   .MediaCommandOpcode                  =      1,  \
568510e230b6Smaya   .Pipeline                            =      2,  \
568610e230b6Smaya   .CommandType                         =      3
568710e230b6Smaya
568810e230b6Smayastruct GEN75_GPGPU_WALKER {
568910e230b6Smaya   uint32_t                             DWordLength;
569010e230b6Smaya   bool                                 PredicateEnable;
569110e230b6Smaya   bool                                 IndirectParameterEnable;
569210e230b6Smaya   uint32_t                             SubOpcodeA;
569310e230b6Smaya   uint32_t                             MediaCommandOpcode;
569410e230b6Smaya   uint32_t                             Pipeline;
569510e230b6Smaya   uint32_t                             CommandType;
569610e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
569710e230b6Smaya   uint32_t                             ThreadWidthCounterMaximum;
569810e230b6Smaya   uint32_t                             ThreadHeightCounterMaximum;
569910e230b6Smaya   uint32_t                             ThreadDepthCounterMaximum;
570010e230b6Smaya   uint32_t                             SIMDSize;
570110e230b6Smaya#define SIMD8                                    0
570210e230b6Smaya#define SIMD16                                   1
570310e230b6Smaya#define SIMD32                                   2
570410e230b6Smaya   uint32_t                             ThreadGroupIDStartingX;
570510e230b6Smaya   uint32_t                             ThreadGroupIDXDimension;
570610e230b6Smaya   uint32_t                             ThreadGroupIDStartingY;
570710e230b6Smaya   uint32_t                             ThreadGroupIDYDimension;
570810e230b6Smaya   uint32_t                             ThreadGroupIDStartingZ;
570910e230b6Smaya   uint32_t                             ThreadGroupIDZDimension;
571010e230b6Smaya   uint32_t                             RightExecutionMask;
571110e230b6Smaya   uint32_t                             BottomExecutionMask;
571210e230b6Smaya};
571310e230b6Smaya
571410e230b6Smayastatic inline void
571510e230b6SmayaGEN75_GPGPU_WALKER_pack(__attribute__((unused)) __gen_user_data *data,
571610e230b6Smaya                        __attribute__((unused)) void * restrict dst,
571710e230b6Smaya                        __attribute__((unused)) const struct GEN75_GPGPU_WALKER * restrict values)
571810e230b6Smaya{
571910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
572010e230b6Smaya
572110e230b6Smaya   dw[0] =
572210e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
572310e230b6Smaya      __gen_uint(values->PredicateEnable, 8, 8) |
572410e230b6Smaya      __gen_uint(values->IndirectParameterEnable, 10, 10) |
572510e230b6Smaya      __gen_uint(values->SubOpcodeA, 16, 23) |
572610e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
572710e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
572810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
572910e230b6Smaya
573010e230b6Smaya   dw[1] =
573110e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
573210e230b6Smaya
573310e230b6Smaya   dw[2] =
573410e230b6Smaya      __gen_uint(values->ThreadWidthCounterMaximum, 0, 5) |
573510e230b6Smaya      __gen_uint(values->ThreadHeightCounterMaximum, 8, 13) |
573610e230b6Smaya      __gen_uint(values->ThreadDepthCounterMaximum, 16, 21) |
573710e230b6Smaya      __gen_uint(values->SIMDSize, 30, 31);
573810e230b6Smaya
573910e230b6Smaya   dw[3] =
574010e230b6Smaya      __gen_uint(values->ThreadGroupIDStartingX, 0, 31);
574110e230b6Smaya
574210e230b6Smaya   dw[4] =
574310e230b6Smaya      __gen_uint(values->ThreadGroupIDXDimension, 0, 31);
574410e230b6Smaya
574510e230b6Smaya   dw[5] =
574610e230b6Smaya      __gen_uint(values->ThreadGroupIDStartingY, 0, 31);
574710e230b6Smaya
574810e230b6Smaya   dw[6] =
574910e230b6Smaya      __gen_uint(values->ThreadGroupIDYDimension, 0, 31);
575010e230b6Smaya
575110e230b6Smaya   dw[7] =
575210e230b6Smaya      __gen_uint(values->ThreadGroupIDStartingZ, 0, 31);
575310e230b6Smaya
575410e230b6Smaya   dw[8] =
575510e230b6Smaya      __gen_uint(values->ThreadGroupIDZDimension, 0, 31);
575610e230b6Smaya
575710e230b6Smaya   dw[9] =
575810e230b6Smaya      __gen_uint(values->RightExecutionMask, 0, 31);
575910e230b6Smaya
576010e230b6Smaya   dw[10] =
576110e230b6Smaya      __gen_uint(values->BottomExecutionMask, 0, 31);
576210e230b6Smaya}
576310e230b6Smaya
576410e230b6Smaya#define GEN75_MEDIA_CURBE_LOAD_length          4
576510e230b6Smaya#define GEN75_MEDIA_CURBE_LOAD_length_bias      2
576610e230b6Smaya#define GEN75_MEDIA_CURBE_LOAD_header           \
576710e230b6Smaya   .DWordLength                         =      2,  \
576810e230b6Smaya   .SubOpcode                           =      1,  \
576910e230b6Smaya   .MediaCommandOpcode                  =      0,  \
577010e230b6Smaya   .Pipeline                            =      2,  \
577110e230b6Smaya   .CommandType                         =      3
577210e230b6Smaya
577310e230b6Smayastruct GEN75_MEDIA_CURBE_LOAD {
577410e230b6Smaya   uint32_t                             DWordLength;
577510e230b6Smaya   uint32_t                             SubOpcode;
577610e230b6Smaya   uint32_t                             MediaCommandOpcode;
577710e230b6Smaya   uint32_t                             Pipeline;
577810e230b6Smaya   uint32_t                             CommandType;
577910e230b6Smaya   uint32_t                             CURBETotalDataLength;
578010e230b6Smaya   uint32_t                             CURBEDataStartAddress;
578110e230b6Smaya};
578210e230b6Smaya
578310e230b6Smayastatic inline void
578410e230b6SmayaGEN75_MEDIA_CURBE_LOAD_pack(__attribute__((unused)) __gen_user_data *data,
578510e230b6Smaya                            __attribute__((unused)) void * restrict dst,
578610e230b6Smaya                            __attribute__((unused)) const struct GEN75_MEDIA_CURBE_LOAD * restrict values)
578710e230b6Smaya{
578810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
578910e230b6Smaya
579010e230b6Smaya   dw[0] =
579110e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
579210e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
579310e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
579410e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
579510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
579610e230b6Smaya
579710e230b6Smaya   dw[1] = 0;
579810e230b6Smaya
579910e230b6Smaya   dw[2] =
580010e230b6Smaya      __gen_uint(values->CURBETotalDataLength, 0, 16);
580110e230b6Smaya
580210e230b6Smaya   dw[3] =
580310e230b6Smaya      __gen_uint(values->CURBEDataStartAddress, 0, 31);
580410e230b6Smaya}
580510e230b6Smaya
580610e230b6Smaya#define GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length      4
580710e230b6Smaya#define GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length_bias      2
580810e230b6Smaya#define GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_header\
580910e230b6Smaya   .DWordLength                         =      2,  \
581010e230b6Smaya   .SubOpcode                           =      2,  \
581110e230b6Smaya   .MediaCommandOpcode                  =      0,  \
581210e230b6Smaya   .Pipeline                            =      2,  \
581310e230b6Smaya   .CommandType                         =      3
581410e230b6Smaya
581510e230b6Smayastruct GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD {
581610e230b6Smaya   uint32_t                             DWordLength;
581710e230b6Smaya   uint32_t                             SubOpcode;
581810e230b6Smaya   uint32_t                             MediaCommandOpcode;
581910e230b6Smaya   uint32_t                             Pipeline;
582010e230b6Smaya   uint32_t                             CommandType;
582110e230b6Smaya   uint32_t                             InterfaceDescriptorTotalLength;
582210e230b6Smaya   uint64_t                             InterfaceDescriptorDataStartAddress;
582310e230b6Smaya};
582410e230b6Smaya
582510e230b6Smayastatic inline void
582610e230b6SmayaGEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD_pack(__attribute__((unused)) __gen_user_data *data,
582710e230b6Smaya                                           __attribute__((unused)) void * restrict dst,
582810e230b6Smaya                                           __attribute__((unused)) const struct GEN75_MEDIA_INTERFACE_DESCRIPTOR_LOAD * restrict values)
582910e230b6Smaya{
583010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
583110e230b6Smaya
583210e230b6Smaya   dw[0] =
583310e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
583410e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
583510e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
583610e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
583710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
583810e230b6Smaya
583910e230b6Smaya   dw[1] = 0;
584010e230b6Smaya
584110e230b6Smaya   dw[2] =
584210e230b6Smaya      __gen_uint(values->InterfaceDescriptorTotalLength, 0, 16);
584310e230b6Smaya
584410e230b6Smaya   dw[3] =
584510e230b6Smaya      __gen_offset(values->InterfaceDescriptorDataStartAddress, 0, 31);
584610e230b6Smaya}
584710e230b6Smaya
584810e230b6Smaya#define GEN75_MEDIA_OBJECT_length_bias         2
584910e230b6Smaya#define GEN75_MEDIA_OBJECT_header               \
585010e230b6Smaya   .DWordLength                         =      4,  \
585110e230b6Smaya   .MediaCommandSubOpcode               =      0,  \
585210e230b6Smaya   .MediaCommandOpcode                  =      1,  \
585310e230b6Smaya   .MediaCommandPipeline                =      2,  \
585410e230b6Smaya   .CommandType                         =      3
585510e230b6Smaya
585610e230b6Smayastruct GEN75_MEDIA_OBJECT {
585710e230b6Smaya   uint32_t                             DWordLength;
585810e230b6Smaya   uint32_t                             MediaCommandSubOpcode;
585910e230b6Smaya   uint32_t                             MediaCommandOpcode;
586010e230b6Smaya   uint32_t                             MediaCommandPipeline;
586110e230b6Smaya   uint32_t                             CommandType;
586210e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
586310e230b6Smaya   uint32_t                             IndirectDataLength;
586410e230b6Smaya   uint32_t                             HalfSliceDestinationSelect;
586510e230b6Smaya#define HalfSlice1                               2
586610e230b6Smaya#define HalfSlice0                               1
586710e230b6Smaya#define Eitherhalfslice                          0
586810e230b6Smaya   uint32_t                             SliceDestinationSelect;
586910e230b6Smaya#define Slice0                                   0
587010e230b6Smaya#define Slice1                                   1
587110e230b6Smaya#define EitherSlice                              0
587210e230b6Smaya   uint32_t                             UseScoreboard;
587310e230b6Smaya#define Notusingscoreboard                       0
587410e230b6Smaya#define Usingscoreboard                          1
587510e230b6Smaya   uint32_t                             ThreadSynchronization;
587610e230b6Smaya#define Nothreadsynchronization                  0
587710e230b6Smaya#define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
587810e230b6Smaya   bool                                 ChildrenPresent;
587910e230b6Smaya   __gen_address_type                   IndirectDataStartAddress;
588010e230b6Smaya   uint32_t                             ScoreboardX;
588110e230b6Smaya   uint32_t                             ScoredboardY;
588210e230b6Smaya   uint32_t                             ScoreboardMask;
588310e230b6Smaya   uint32_t                             ScoreboardColor;
588410e230b6Smaya   /* variable length fields follow */
588510e230b6Smaya};
588610e230b6Smaya
588710e230b6Smayastatic inline void
588810e230b6SmayaGEN75_MEDIA_OBJECT_pack(__attribute__((unused)) __gen_user_data *data,
588910e230b6Smaya                        __attribute__((unused)) void * restrict dst,
589010e230b6Smaya                        __attribute__((unused)) const struct GEN75_MEDIA_OBJECT * restrict values)
589110e230b6Smaya{
589210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
589310e230b6Smaya
589410e230b6Smaya   dw[0] =
589510e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
589610e230b6Smaya      __gen_uint(values->MediaCommandSubOpcode, 16, 23) |
589710e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
589810e230b6Smaya      __gen_uint(values->MediaCommandPipeline, 27, 28) |
589910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
590010e230b6Smaya
590110e230b6Smaya   dw[1] =
590210e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
590310e230b6Smaya
590410e230b6Smaya   dw[2] =
590510e230b6Smaya      __gen_uint(values->IndirectDataLength, 0, 16) |
590610e230b6Smaya      __gen_uint(values->HalfSliceDestinationSelect, 17, 18) |
590710e230b6Smaya      __gen_uint(values->SliceDestinationSelect, 19, 19) |
590810e230b6Smaya      __gen_uint(values->UseScoreboard, 21, 21) |
590910e230b6Smaya      __gen_uint(values->ThreadSynchronization, 24, 24) |
591010e230b6Smaya      __gen_uint(values->ChildrenPresent, 31, 31);
591110e230b6Smaya
591210e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->IndirectDataStartAddress, 0);
591310e230b6Smaya
591410e230b6Smaya   dw[4] =
591510e230b6Smaya      __gen_uint(values->ScoreboardX, 0, 8) |
591610e230b6Smaya      __gen_uint(values->ScoredboardY, 16, 24);
591710e230b6Smaya
591810e230b6Smaya   dw[5] =
591910e230b6Smaya      __gen_uint(values->ScoreboardMask, 0, 7) |
592010e230b6Smaya      __gen_uint(values->ScoreboardColor, 16, 19);
592110e230b6Smaya}
592210e230b6Smaya
592310e230b6Smaya#define GEN75_MEDIA_OBJECT_PRT_length         16
592410e230b6Smaya#define GEN75_MEDIA_OBJECT_PRT_length_bias      2
592510e230b6Smaya#define GEN75_MEDIA_OBJECT_PRT_header           \
592610e230b6Smaya   .DWordLength                         =     14,  \
592710e230b6Smaya   .SubOpcode                           =      2,  \
592810e230b6Smaya   .MediaCommandOpcode                  =      1,  \
592910e230b6Smaya   .Pipeline                            =      2,  \
593010e230b6Smaya   .CommandType                         =      3
593110e230b6Smaya
593210e230b6Smayastruct GEN75_MEDIA_OBJECT_PRT {
593310e230b6Smaya   uint32_t                             DWordLength;
593410e230b6Smaya   uint32_t                             SubOpcode;
593510e230b6Smaya   uint32_t                             MediaCommandOpcode;
593610e230b6Smaya   uint32_t                             Pipeline;
593710e230b6Smaya   uint32_t                             CommandType;
593810e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
593910e230b6Smaya   uint32_t                             PRT_FenceType;
594010e230b6Smaya#define Rootthreadqueue                          0
594110e230b6Smaya#define VFEstateflush                            1
594210e230b6Smaya   bool                                 PRT_FenceNeeded;
594310e230b6Smaya   bool                                 ChildrenPresent;
594410e230b6Smaya   uint32_t                             InlineData[12];
594510e230b6Smaya};
594610e230b6Smaya
594710e230b6Smayastatic inline void
594810e230b6SmayaGEN75_MEDIA_OBJECT_PRT_pack(__attribute__((unused)) __gen_user_data *data,
594910e230b6Smaya                            __attribute__((unused)) void * restrict dst,
595010e230b6Smaya                            __attribute__((unused)) const struct GEN75_MEDIA_OBJECT_PRT * restrict values)
595110e230b6Smaya{
595210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
595310e230b6Smaya
595410e230b6Smaya   dw[0] =
595510e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
595610e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
595710e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
595810e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
595910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
596010e230b6Smaya
596110e230b6Smaya   dw[1] =
596210e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
596310e230b6Smaya
596410e230b6Smaya   dw[2] =
596510e230b6Smaya      __gen_uint(values->PRT_FenceType, 22, 22) |
596610e230b6Smaya      __gen_uint(values->PRT_FenceNeeded, 23, 23) |
596710e230b6Smaya      __gen_uint(values->ChildrenPresent, 31, 31);
596810e230b6Smaya
596910e230b6Smaya   dw[3] = 0;
597010e230b6Smaya
597110e230b6Smaya   dw[4] =
597210e230b6Smaya      __gen_uint(values->InlineData[0], 0, 31);
597310e230b6Smaya
597410e230b6Smaya   dw[5] =
597510e230b6Smaya      __gen_uint(values->InlineData[1], 0, 31);
597610e230b6Smaya
597710e230b6Smaya   dw[6] =
597810e230b6Smaya      __gen_uint(values->InlineData[2], 0, 31);
597910e230b6Smaya
598010e230b6Smaya   dw[7] =
598110e230b6Smaya      __gen_uint(values->InlineData[3], 0, 31);
598210e230b6Smaya
598310e230b6Smaya   dw[8] =
598410e230b6Smaya      __gen_uint(values->InlineData[4], 0, 31);
598510e230b6Smaya
598610e230b6Smaya   dw[9] =
598710e230b6Smaya      __gen_uint(values->InlineData[5], 0, 31);
598810e230b6Smaya
598910e230b6Smaya   dw[10] =
599010e230b6Smaya      __gen_uint(values->InlineData[6], 0, 31);
599110e230b6Smaya
599210e230b6Smaya   dw[11] =
599310e230b6Smaya      __gen_uint(values->InlineData[7], 0, 31);
599410e230b6Smaya
599510e230b6Smaya   dw[12] =
599610e230b6Smaya      __gen_uint(values->InlineData[8], 0, 31);
599710e230b6Smaya
599810e230b6Smaya   dw[13] =
599910e230b6Smaya      __gen_uint(values->InlineData[9], 0, 31);
600010e230b6Smaya
600110e230b6Smaya   dw[14] =
600210e230b6Smaya      __gen_uint(values->InlineData[10], 0, 31);
600310e230b6Smaya
600410e230b6Smaya   dw[15] =
600510e230b6Smaya      __gen_uint(values->InlineData[11], 0, 31);
600610e230b6Smaya}
600710e230b6Smaya
600810e230b6Smaya#define GEN75_MEDIA_OBJECT_WALKER_length_bias      2
600910e230b6Smaya#define GEN75_MEDIA_OBJECT_WALKER_header        \
601010e230b6Smaya   .DWordLength                         =     15,  \
601110e230b6Smaya   .SubOpcode                           =      3,  \
601210e230b6Smaya   .MediaCommandOpcode                  =      1,  \
601310e230b6Smaya   .Pipeline                            =      2,  \
601410e230b6Smaya   .CommandType                         =      3
601510e230b6Smaya
601610e230b6Smayastruct GEN75_MEDIA_OBJECT_WALKER {
601710e230b6Smaya   uint32_t                             DWordLength;
601810e230b6Smaya   uint32_t                             SubOpcode;
601910e230b6Smaya   uint32_t                             MediaCommandOpcode;
602010e230b6Smaya   uint32_t                             Pipeline;
602110e230b6Smaya   uint32_t                             CommandType;
602210e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
602310e230b6Smaya   uint32_t                             IndirectDataLength;
602410e230b6Smaya   uint32_t                             UseScoreboard;
602510e230b6Smaya#define Notusingscoreboard                       0
602610e230b6Smaya#define Usingscoreboard                          1
602710e230b6Smaya   uint32_t                             ThreadSynchronization;
602810e230b6Smaya#define Nothreadsynchronization                  0
602910e230b6Smaya#define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
603010e230b6Smaya   uint32_t                             ChildrenPresent;
603110e230b6Smaya   uint64_t                             IndirectDataStartAddress;
603210e230b6Smaya   uint32_t                             ScoreboardMask;
603310e230b6Smaya   int32_t                              MidLoopUnitX;
603410e230b6Smaya   int32_t                              LocalMidLoopUnitY;
603510e230b6Smaya   uint32_t                             MiddleLoopExtraSteps;
603610e230b6Smaya   uint32_t                             ColorCountMinusOne;
603710e230b6Smaya   uint32_t                             QuadMode;
603810e230b6Smaya   uint32_t                             Repel;
603910e230b6Smaya   uint32_t                             DualMode;
604010e230b6Smaya   uint32_t                             LocalLoopExecCount;
604110e230b6Smaya   uint32_t                             GlobalLoopExecCount;
604210e230b6Smaya   uint32_t                             BlockResolutionX;
604310e230b6Smaya   uint32_t                             BlockResolutionY;
604410e230b6Smaya   uint32_t                             LocalStartX;
604510e230b6Smaya   uint32_t                             LocalStartY;
604610e230b6Smaya   int32_t                              LocalOuterLoopStrideX;
604710e230b6Smaya   int32_t                              LocalOuterLoopStrideY;
604810e230b6Smaya   int32_t                              LocalInnerLoopUnitX;
604910e230b6Smaya   int32_t                              LocalInnerLoopUnitY;
605010e230b6Smaya   uint32_t                             GlobalResolutionX;
605110e230b6Smaya   uint32_t                             GlobalResolutionY;
605210e230b6Smaya   int32_t                              GlobalStartX;
605310e230b6Smaya   int32_t                              GlobalStartY;
605410e230b6Smaya   int32_t                              GlobalOuterLoopStrideX;
605510e230b6Smaya   int32_t                              GlobalOuterLoopStrideY;
605610e230b6Smaya   int32_t                              GlobalInnerLoopUnitX;
605710e230b6Smaya   int32_t                              GlobalInnerLoopUnitY;
605810e230b6Smaya   /* variable length fields follow */
605910e230b6Smaya};
606010e230b6Smaya
606110e230b6Smayastatic inline void
606210e230b6SmayaGEN75_MEDIA_OBJECT_WALKER_pack(__attribute__((unused)) __gen_user_data *data,
606310e230b6Smaya                               __attribute__((unused)) void * restrict dst,
606410e230b6Smaya                               __attribute__((unused)) const struct GEN75_MEDIA_OBJECT_WALKER * restrict values)
606510e230b6Smaya{
606610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
606710e230b6Smaya
606810e230b6Smaya   dw[0] =
606910e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
607010e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
607110e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
607210e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
607310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
607410e230b6Smaya
607510e230b6Smaya   dw[1] =
607610e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5);
607710e230b6Smaya
607810e230b6Smaya   dw[2] =
607910e230b6Smaya      __gen_uint(values->IndirectDataLength, 0, 16) |
608010e230b6Smaya      __gen_uint(values->UseScoreboard, 21, 21) |
608110e230b6Smaya      __gen_uint(values->ThreadSynchronization, 24, 24) |
608210e230b6Smaya      __gen_uint(values->ChildrenPresent, 31, 31);
608310e230b6Smaya
608410e230b6Smaya   dw[3] =
608510e230b6Smaya      __gen_offset(values->IndirectDataStartAddress, 0, 31);
608610e230b6Smaya
608710e230b6Smaya   dw[4] = 0;
608810e230b6Smaya
608910e230b6Smaya   dw[5] =
609010e230b6Smaya      __gen_uint(values->ScoreboardMask, 0, 7);
609110e230b6Smaya
609210e230b6Smaya   dw[6] =
609310e230b6Smaya      __gen_sint(values->MidLoopUnitX, 8, 9) |
609410e230b6Smaya      __gen_sint(values->LocalMidLoopUnitY, 12, 13) |
609510e230b6Smaya      __gen_uint(values->MiddleLoopExtraSteps, 16, 20) |
609610e230b6Smaya      __gen_uint(values->ColorCountMinusOne, 24, 27) |
609710e230b6Smaya      __gen_uint(values->QuadMode, 29, 29) |
609810e230b6Smaya      __gen_uint(values->Repel, 30, 30) |
609910e230b6Smaya      __gen_uint(values->DualMode, 31, 31);
610010e230b6Smaya
610110e230b6Smaya   dw[7] =
610210e230b6Smaya      __gen_uint(values->LocalLoopExecCount, 0, 9) |
610310e230b6Smaya      __gen_uint(values->GlobalLoopExecCount, 16, 25);
610410e230b6Smaya
610510e230b6Smaya   dw[8] =
610610e230b6Smaya      __gen_uint(values->BlockResolutionX, 0, 8) |
610710e230b6Smaya      __gen_uint(values->BlockResolutionY, 16, 24);
610810e230b6Smaya
610910e230b6Smaya   dw[9] =
611010e230b6Smaya      __gen_uint(values->LocalStartX, 0, 8) |
611110e230b6Smaya      __gen_uint(values->LocalStartY, 16, 24);
611210e230b6Smaya
611310e230b6Smaya   dw[10] = 0;
611410e230b6Smaya
611510e230b6Smaya   dw[11] =
611610e230b6Smaya      __gen_sint(values->LocalOuterLoopStrideX, 0, 9) |
611710e230b6Smaya      __gen_sint(values->LocalOuterLoopStrideY, 16, 25);
611810e230b6Smaya
611910e230b6Smaya   dw[12] =
612010e230b6Smaya      __gen_sint(values->LocalInnerLoopUnitX, 0, 9) |
612110e230b6Smaya      __gen_sint(values->LocalInnerLoopUnitY, 16, 25);
612210e230b6Smaya
612310e230b6Smaya   dw[13] =
612410e230b6Smaya      __gen_uint(values->GlobalResolutionX, 0, 8) |
612510e230b6Smaya      __gen_uint(values->GlobalResolutionY, 16, 24);
612610e230b6Smaya
612710e230b6Smaya   dw[14] =
612810e230b6Smaya      __gen_sint(values->GlobalStartX, 0, 9) |
612910e230b6Smaya      __gen_sint(values->GlobalStartY, 16, 25);
613010e230b6Smaya
613110e230b6Smaya   dw[15] =
613210e230b6Smaya      __gen_sint(values->GlobalOuterLoopStrideX, 0, 9) |
613310e230b6Smaya      __gen_sint(values->GlobalOuterLoopStrideY, 16, 25);
613410e230b6Smaya
613510e230b6Smaya   dw[16] =
613610e230b6Smaya      __gen_sint(values->GlobalInnerLoopUnitX, 0, 9) |
613710e230b6Smaya      __gen_sint(values->GlobalInnerLoopUnitY, 16, 25);
613810e230b6Smaya}
613910e230b6Smaya
614010e230b6Smaya#define GEN75_MEDIA_STATE_FLUSH_length         2
614110e230b6Smaya#define GEN75_MEDIA_STATE_FLUSH_length_bias      2
614210e230b6Smaya#define GEN75_MEDIA_STATE_FLUSH_header          \
614310e230b6Smaya   .DWordLength                         =      0,  \
614410e230b6Smaya   .SubOpcode                           =      4,  \
614510e230b6Smaya   .MediaCommandOpcode                  =      0,  \
614610e230b6Smaya   .Pipeline                            =      2,  \
614710e230b6Smaya   .CommandType                         =      3
614810e230b6Smaya
614910e230b6Smayastruct GEN75_MEDIA_STATE_FLUSH {
615010e230b6Smaya   uint32_t                             DWordLength;
615110e230b6Smaya   uint32_t                             SubOpcode;
615210e230b6Smaya   uint32_t                             MediaCommandOpcode;
615310e230b6Smaya   uint32_t                             Pipeline;
615410e230b6Smaya   uint32_t                             CommandType;
615510e230b6Smaya   uint32_t                             InterfaceDescriptorOffset;
615610e230b6Smaya   uint32_t                             WatermarkRequired;
615710e230b6Smaya   bool                                 FlushtoGO;
615810e230b6Smaya   bool                                 DisablePreemption;
615910e230b6Smaya};
616010e230b6Smaya
616110e230b6Smayastatic inline void
616210e230b6SmayaGEN75_MEDIA_STATE_FLUSH_pack(__attribute__((unused)) __gen_user_data *data,
616310e230b6Smaya                             __attribute__((unused)) void * restrict dst,
616410e230b6Smaya                             __attribute__((unused)) const struct GEN75_MEDIA_STATE_FLUSH * restrict values)
616510e230b6Smaya{
616610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
616710e230b6Smaya
616810e230b6Smaya   dw[0] =
616910e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
617010e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
617110e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
617210e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
617310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
617410e230b6Smaya
617510e230b6Smaya   dw[1] =
617610e230b6Smaya      __gen_uint(values->InterfaceDescriptorOffset, 0, 5) |
617710e230b6Smaya      __gen_uint(values->WatermarkRequired, 6, 6) |
617810e230b6Smaya      __gen_uint(values->FlushtoGO, 7, 7) |
617910e230b6Smaya      __gen_uint(values->DisablePreemption, 8, 8);
618010e230b6Smaya}
618110e230b6Smaya
618210e230b6Smaya#define GEN75_MEDIA_VFE_STATE_length           8
618310e230b6Smaya#define GEN75_MEDIA_VFE_STATE_length_bias      2
618410e230b6Smaya#define GEN75_MEDIA_VFE_STATE_header            \
618510e230b6Smaya   .DWordLength                         =      6,  \
618610e230b6Smaya   .SubOpcode                           =      0,  \
618710e230b6Smaya   .MediaCommandOpcode                  =      0,  \
618810e230b6Smaya   .Pipeline                            =      2,  \
618910e230b6Smaya   .CommandType                         =      3
619010e230b6Smaya
619110e230b6Smayastruct GEN75_MEDIA_VFE_STATE {
619210e230b6Smaya   uint32_t                             DWordLength;
619310e230b6Smaya   uint32_t                             SubOpcode;
619410e230b6Smaya   uint32_t                             MediaCommandOpcode;
619510e230b6Smaya   uint32_t                             Pipeline;
619610e230b6Smaya   uint32_t                             CommandType;
619710e230b6Smaya   uint32_t                             PerThreadScratchSpace;
619810e230b6Smaya   uint32_t                             StackSize;
619910e230b6Smaya   __gen_address_type                   ScratchSpaceBasePointer;
620010e230b6Smaya   uint32_t                             GPGPUMode;
620110e230b6Smaya   uint32_t                             BypassGatewayControl;
620210e230b6Smaya#define MaintainingOpenGatewayForwardMsgCloseGatewayprotocollegacymode 0
620310e230b6Smaya#define BypassingOpenGatewayCloseGatewayprotocol 1
620410e230b6Smaya   uint32_t                             ResetGatewayTimer;
620510e230b6Smaya#define Maintainingtheexistingtimestampstate     0
620610e230b6Smaya#define Resettingrelativetimerandlatchingtheglobaltimestamp 1
620710e230b6Smaya   uint32_t                             NumberofURBEntries;
620810e230b6Smaya   uint32_t                             MaximumNumberofThreads;
620910e230b6Smaya   uint32_t                             HalfSliceDisable;
621010e230b6Smaya   uint32_t                             CURBEAllocationSize;
621110e230b6Smaya   uint32_t                             URBEntryAllocationSize;
621210e230b6Smaya   uint32_t                             ScoreboardMask;
621310e230b6Smaya   uint32_t                             ScoreboardType;
621410e230b6Smaya#define StallingScoreboard                       0
621510e230b6Smaya#define NonStallingScoreboard                    1
621610e230b6Smaya   uint32_t                             ScoreboardEnable;
621710e230b6Smaya#define Scoreboarddisabled                       0
621810e230b6Smaya#define Scoreboardenabled                        1
621910e230b6Smaya   int32_t                              Scoreboard0DeltaX;
622010e230b6Smaya   int32_t                              Scoreboard0DeltaY;
622110e230b6Smaya   int32_t                              Scoreboard1DeltaX;
622210e230b6Smaya   int32_t                              Scoreboard1DeltaY;
622310e230b6Smaya   int32_t                              Scoreboard2DeltaX;
622410e230b6Smaya   int32_t                              Scoreboard2DeltaY;
622510e230b6Smaya   int32_t                              Scoreboard3DeltaX;
622610e230b6Smaya   int32_t                              Scoreboard3DeltaY;
622710e230b6Smaya   int32_t                              Scoreboard4DeltaX;
622810e230b6Smaya   int32_t                              Scoreboard4DeltaY;
622910e230b6Smaya   int32_t                              Scoreboard5DeltaX;
623010e230b6Smaya   int32_t                              Scoreboard5DeltaY;
623110e230b6Smaya   int32_t                              Scoreboard6DeltaX;
623210e230b6Smaya   int32_t                              Scoreboard6DeltaY;
623310e230b6Smaya   int32_t                              Scoreboard7DeltaX;
623410e230b6Smaya   int32_t                              Scoreboard7DeltaY;
623510e230b6Smaya};
623610e230b6Smaya
623710e230b6Smayastatic inline void
623810e230b6SmayaGEN75_MEDIA_VFE_STATE_pack(__attribute__((unused)) __gen_user_data *data,
623910e230b6Smaya                           __attribute__((unused)) void * restrict dst,
624010e230b6Smaya                           __attribute__((unused)) const struct GEN75_MEDIA_VFE_STATE * restrict values)
624110e230b6Smaya{
624210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
624310e230b6Smaya
624410e230b6Smaya   dw[0] =
624510e230b6Smaya      __gen_uint(values->DWordLength, 0, 15) |
624610e230b6Smaya      __gen_uint(values->SubOpcode, 16, 23) |
624710e230b6Smaya      __gen_uint(values->MediaCommandOpcode, 24, 26) |
624810e230b6Smaya      __gen_uint(values->Pipeline, 27, 28) |
624910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
625010e230b6Smaya
625110e230b6Smaya   const uint32_t v1 =
625210e230b6Smaya      __gen_uint(values->PerThreadScratchSpace, 0, 3) |
625310e230b6Smaya      __gen_uint(values->StackSize, 4, 7);
625410e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->ScratchSpaceBasePointer, v1);
625510e230b6Smaya
625610e230b6Smaya   dw[2] =
625710e230b6Smaya      __gen_uint(values->GPGPUMode, 2, 2) |
625810e230b6Smaya      __gen_uint(values->BypassGatewayControl, 6, 6) |
625910e230b6Smaya      __gen_uint(values->ResetGatewayTimer, 7, 7) |
626010e230b6Smaya      __gen_uint(values->NumberofURBEntries, 8, 15) |
626110e230b6Smaya      __gen_uint(values->MaximumNumberofThreads, 16, 31);
626210e230b6Smaya
626310e230b6Smaya   dw[3] =
626410e230b6Smaya      __gen_uint(values->HalfSliceDisable, 0, 1);
626510e230b6Smaya
626610e230b6Smaya   dw[4] =
626710e230b6Smaya      __gen_uint(values->CURBEAllocationSize, 0, 15) |
626810e230b6Smaya      __gen_uint(values->URBEntryAllocationSize, 16, 31);
626910e230b6Smaya
627010e230b6Smaya   dw[5] =
627110e230b6Smaya      __gen_uint(values->ScoreboardMask, 0, 7) |
627210e230b6Smaya      __gen_uint(values->ScoreboardType, 30, 30) |
627310e230b6Smaya      __gen_uint(values->ScoreboardEnable, 31, 31);
627410e230b6Smaya
627510e230b6Smaya   dw[6] =
627610e230b6Smaya      __gen_sint(values->Scoreboard0DeltaX, 0, 3) |
627710e230b6Smaya      __gen_sint(values->Scoreboard0DeltaY, 4, 7) |
627810e230b6Smaya      __gen_sint(values->Scoreboard1DeltaX, 8, 11) |
627910e230b6Smaya      __gen_sint(values->Scoreboard1DeltaY, 12, 15) |
628010e230b6Smaya      __gen_sint(values->Scoreboard2DeltaX, 16, 19) |
628110e230b6Smaya      __gen_sint(values->Scoreboard2DeltaY, 20, 23) |
628210e230b6Smaya      __gen_sint(values->Scoreboard3DeltaX, 24, 27) |
628310e230b6Smaya      __gen_sint(values->Scoreboard3DeltaY, 28, 31);
628410e230b6Smaya
628510e230b6Smaya   dw[7] =
628610e230b6Smaya      __gen_sint(values->Scoreboard4DeltaX, 0, 3) |
628710e230b6Smaya      __gen_sint(values->Scoreboard4DeltaY, 4, 7) |
628810e230b6Smaya      __gen_sint(values->Scoreboard5DeltaX, 8, 11) |
628910e230b6Smaya      __gen_sint(values->Scoreboard5DeltaY, 12, 15) |
629010e230b6Smaya      __gen_sint(values->Scoreboard6DeltaX, 16, 19) |
629110e230b6Smaya      __gen_sint(values->Scoreboard6DeltaY, 20, 23) |
629210e230b6Smaya      __gen_sint(values->Scoreboard7DeltaX, 24, 27) |
629310e230b6Smaya      __gen_sint(values->Scoreboard7DeltaY, 28, 31);
629410e230b6Smaya}
629510e230b6Smaya
629610e230b6Smaya#define GEN75_MI_ARB_CHECK_length              1
629710e230b6Smaya#define GEN75_MI_ARB_CHECK_length_bias         1
629810e230b6Smaya#define GEN75_MI_ARB_CHECK_header               \
629910e230b6Smaya   .MICommandOpcode                     =      5,  \
630010e230b6Smaya   .CommandType                         =      0
630110e230b6Smaya
630210e230b6Smayastruct GEN75_MI_ARB_CHECK {
630310e230b6Smaya   uint32_t                             MICommandOpcode;
630410e230b6Smaya   uint32_t                             CommandType;
630510e230b6Smaya};
630610e230b6Smaya
630710e230b6Smayastatic inline void
630810e230b6SmayaGEN75_MI_ARB_CHECK_pack(__attribute__((unused)) __gen_user_data *data,
630910e230b6Smaya                        __attribute__((unused)) void * restrict dst,
631010e230b6Smaya                        __attribute__((unused)) const struct GEN75_MI_ARB_CHECK * restrict values)
631110e230b6Smaya{
631210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
631310e230b6Smaya
631410e230b6Smaya   dw[0] =
631510e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
631610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
631710e230b6Smaya}
631810e230b6Smaya
631910e230b6Smaya#define GEN75_MI_ARB_ON_OFF_length             1
632010e230b6Smaya#define GEN75_MI_ARB_ON_OFF_length_bias        1
632110e230b6Smaya#define GEN75_MI_ARB_ON_OFF_header              \
632210e230b6Smaya   .MICommandOpcode                     =      8,  \
632310e230b6Smaya   .CommandType                         =      0
632410e230b6Smaya
632510e230b6Smayastruct GEN75_MI_ARB_ON_OFF {
632610e230b6Smaya   bool                                 ArbitrationEnable;
632710e230b6Smaya   uint32_t                             MICommandOpcode;
632810e230b6Smaya   uint32_t                             CommandType;
632910e230b6Smaya};
633010e230b6Smaya
633110e230b6Smayastatic inline void
633210e230b6SmayaGEN75_MI_ARB_ON_OFF_pack(__attribute__((unused)) __gen_user_data *data,
633310e230b6Smaya                         __attribute__((unused)) void * restrict dst,
633410e230b6Smaya                         __attribute__((unused)) const struct GEN75_MI_ARB_ON_OFF * restrict values)
633510e230b6Smaya{
633610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
633710e230b6Smaya
633810e230b6Smaya   dw[0] =
633910e230b6Smaya      __gen_uint(values->ArbitrationEnable, 0, 0) |
634010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
634110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
634210e230b6Smaya}
634310e230b6Smaya
634410e230b6Smaya#define GEN75_MI_BATCH_BUFFER_END_length       1
634510e230b6Smaya#define GEN75_MI_BATCH_BUFFER_END_length_bias      1
634610e230b6Smaya#define GEN75_MI_BATCH_BUFFER_END_header        \
634710e230b6Smaya   .MICommandOpcode                     =     10,  \
634810e230b6Smaya   .CommandType                         =      0
634910e230b6Smaya
635010e230b6Smayastruct GEN75_MI_BATCH_BUFFER_END {
635110e230b6Smaya   uint32_t                             MICommandOpcode;
635210e230b6Smaya   uint32_t                             CommandType;
635310e230b6Smaya};
635410e230b6Smaya
635510e230b6Smayastatic inline void
635610e230b6SmayaGEN75_MI_BATCH_BUFFER_END_pack(__attribute__((unused)) __gen_user_data *data,
635710e230b6Smaya                               __attribute__((unused)) void * restrict dst,
635810e230b6Smaya                               __attribute__((unused)) const struct GEN75_MI_BATCH_BUFFER_END * restrict values)
635910e230b6Smaya{
636010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
636110e230b6Smaya
636210e230b6Smaya   dw[0] =
636310e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
636410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
636510e230b6Smaya}
636610e230b6Smaya
636710e230b6Smaya#define GEN75_MI_BATCH_BUFFER_START_length      2
636810e230b6Smaya#define GEN75_MI_BATCH_BUFFER_START_length_bias      2
636910e230b6Smaya#define GEN75_MI_BATCH_BUFFER_START_header      \
637010e230b6Smaya   .DWordLength                         =      0,  \
637110e230b6Smaya   .MICommandOpcode                     =     49,  \
637210e230b6Smaya   .CommandType                         =      0
637310e230b6Smaya
637410e230b6Smayastruct GEN75_MI_BATCH_BUFFER_START {
637510e230b6Smaya   uint32_t                             DWordLength;
637610e230b6Smaya   uint32_t                             AddressSpaceIndicator;
637710e230b6Smaya#define ASI_GGTT                                 0
637810e230b6Smaya#define ASI_PPGTT                                1
637910e230b6Smaya   bool                                 ResourceStreamerEnable;
638010e230b6Smaya   bool                                 ClearCommandBufferEnable;
638110e230b6Smaya   bool                                 NonPrivileged;
638210e230b6Smaya   bool                                 PredicationEnable;
638310e230b6Smaya   bool                                 AddOffsetEnable;
638410e230b6Smaya   uint32_t                             SecondLevelBatchBuffer;
638510e230b6Smaya#define Firstlevelbatch                          0
638610e230b6Smaya#define Secondlevelbatch                         1
638710e230b6Smaya   uint32_t                             MICommandOpcode;
638810e230b6Smaya   uint32_t                             CommandType;
638910e230b6Smaya   __gen_address_type                   BatchBufferStartAddress;
639010e230b6Smaya};
639110e230b6Smaya
639210e230b6Smayastatic inline void
639310e230b6SmayaGEN75_MI_BATCH_BUFFER_START_pack(__attribute__((unused)) __gen_user_data *data,
639410e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
639510e230b6Smaya                                 __attribute__((unused)) const struct GEN75_MI_BATCH_BUFFER_START * restrict values)
639610e230b6Smaya{
639710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
639810e230b6Smaya
639910e230b6Smaya   dw[0] =
640010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
640110e230b6Smaya      __gen_uint(values->AddressSpaceIndicator, 8, 8) |
640210e230b6Smaya      __gen_uint(values->ResourceStreamerEnable, 10, 10) |
640310e230b6Smaya      __gen_uint(values->ClearCommandBufferEnable, 11, 11) |
640410e230b6Smaya      __gen_uint(values->NonPrivileged, 13, 13) |
640510e230b6Smaya      __gen_uint(values->PredicationEnable, 15, 15) |
640610e230b6Smaya      __gen_uint(values->AddOffsetEnable, 16, 16) |
640710e230b6Smaya      __gen_uint(values->SecondLevelBatchBuffer, 22, 22) |
640810e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
640910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
641010e230b6Smaya
641110e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->BatchBufferStartAddress, 0);
641210e230b6Smaya}
641310e230b6Smaya
641410e230b6Smaya#define GEN75_MI_CLFLUSH_length_bias           2
641510e230b6Smaya#define GEN75_MI_CLFLUSH_header                 \
641610e230b6Smaya   .DWordLength                         =      1,  \
641710e230b6Smaya   .MICommandOpcode                     =     39,  \
641810e230b6Smaya   .CommandType                         =      0
641910e230b6Smaya
642010e230b6Smayastruct GEN75_MI_CLFLUSH {
642110e230b6Smaya   uint32_t                             DWordLength;
642210e230b6Smaya   bool                                 UseGlobalGTT;
642310e230b6Smaya   uint32_t                             MICommandOpcode;
642410e230b6Smaya   uint32_t                             CommandType;
642510e230b6Smaya   uint32_t                             StartingCachelineOffset;
642610e230b6Smaya   __gen_address_type                   PageBaseAddress;
642710e230b6Smaya   __gen_address_type                   PageBaseAddressHigh;
642810e230b6Smaya   /* variable length fields follow */
642910e230b6Smaya};
643010e230b6Smaya
643110e230b6Smayastatic inline void
643210e230b6SmayaGEN75_MI_CLFLUSH_pack(__attribute__((unused)) __gen_user_data *data,
643310e230b6Smaya                      __attribute__((unused)) void * restrict dst,
643410e230b6Smaya                      __attribute__((unused)) const struct GEN75_MI_CLFLUSH * restrict values)
643510e230b6Smaya{
643610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
643710e230b6Smaya
643810e230b6Smaya   dw[0] =
643910e230b6Smaya      __gen_uint(values->DWordLength, 0, 9) |
644010e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
644110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
644210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
644310e230b6Smaya
644410e230b6Smaya   const uint32_t v1 =
644510e230b6Smaya      __gen_uint(values->StartingCachelineOffset, 6, 11);
644610e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->PageBaseAddress, v1);
644710e230b6Smaya
644810e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->PageBaseAddressHigh, 0);
644910e230b6Smaya}
645010e230b6Smaya
645110e230b6Smaya#define GEN75_MI_CONDITIONAL_BATCH_BUFFER_END_length      2
645210e230b6Smaya#define GEN75_MI_CONDITIONAL_BATCH_BUFFER_END_length_bias      2
645310e230b6Smaya#define GEN75_MI_CONDITIONAL_BATCH_BUFFER_END_header\
645410e230b6Smaya   .DWordLength                         =      0,  \
645510e230b6Smaya   .CompareSemaphore                    =      0,  \
645610e230b6Smaya   .MICommandOpcode                     =     54,  \
645710e230b6Smaya   .CommandType                         =      0
645810e230b6Smaya
645910e230b6Smayastruct GEN75_MI_CONDITIONAL_BATCH_BUFFER_END {
646010e230b6Smaya   uint32_t                             DWordLength;
646110e230b6Smaya   uint32_t                             CompareSemaphore;
646210e230b6Smaya   bool                                 UseGlobalGTT;
646310e230b6Smaya   uint32_t                             MICommandOpcode;
646410e230b6Smaya   uint32_t                             CommandType;
646510e230b6Smaya   uint32_t                             CompareDataDword;
646610e230b6Smaya   __gen_address_type                   CompareAddress;
646710e230b6Smaya};
646810e230b6Smaya
646910e230b6Smayastatic inline void
647010e230b6SmayaGEN75_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__attribute__((unused)) __gen_user_data *data,
647110e230b6Smaya                                           __attribute__((unused)) void * restrict dst,
647210e230b6Smaya                                           __attribute__((unused)) const struct GEN75_MI_CONDITIONAL_BATCH_BUFFER_END * restrict values)
647310e230b6Smaya{
647410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
647510e230b6Smaya
647610e230b6Smaya   dw[0] =
647710e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
647810e230b6Smaya      __gen_uint(values->CompareSemaphore, 21, 21) |
647910e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
648010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
648110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
648210e230b6Smaya
648310e230b6Smaya   dw[1] =
648410e230b6Smaya      __gen_uint(values->CompareDataDword, 0, 31);
648510e230b6Smaya}
648610e230b6Smaya
648710e230b6Smaya#define GEN75_MI_FLUSH_length                  1
648810e230b6Smaya#define GEN75_MI_FLUSH_length_bias             1
648910e230b6Smaya#define GEN75_MI_FLUSH_header                   \
649010e230b6Smaya   .MICommandOpcode                     =      4,  \
649110e230b6Smaya   .CommandType                         =      0
649210e230b6Smaya
649310e230b6Smayastruct GEN75_MI_FLUSH {
649410e230b6Smaya   uint32_t                             StateInstructionCacheInvalidate;
649510e230b6Smaya#define DontInvalidate                           0
649610e230b6Smaya#define Invalidate                               1
649710e230b6Smaya   uint32_t                             RenderCacheFlushInhibit;
649810e230b6Smaya#define Flush                                    0
649910e230b6Smaya#define DontFlush                                1
650010e230b6Smaya   uint32_t                             GlobalSnapshotCountReset;
650110e230b6Smaya#define DontReset                                0
650210e230b6Smaya#define Reset                                    1
650310e230b6Smaya   bool                                 GenericMediaStateClear;
650410e230b6Smaya   bool                                 IndirectStatePointersDisable;
650510e230b6Smaya   uint32_t                             MICommandOpcode;
650610e230b6Smaya   uint32_t                             CommandType;
650710e230b6Smaya};
650810e230b6Smaya
650910e230b6Smayastatic inline void
651010e230b6SmayaGEN75_MI_FLUSH_pack(__attribute__((unused)) __gen_user_data *data,
651110e230b6Smaya                    __attribute__((unused)) void * restrict dst,
651210e230b6Smaya                    __attribute__((unused)) const struct GEN75_MI_FLUSH * restrict values)
651310e230b6Smaya{
651410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
651510e230b6Smaya
651610e230b6Smaya   dw[0] =
651710e230b6Smaya      __gen_uint(values->StateInstructionCacheInvalidate, 1, 1) |
651810e230b6Smaya      __gen_uint(values->RenderCacheFlushInhibit, 2, 2) |
651910e230b6Smaya      __gen_uint(values->GlobalSnapshotCountReset, 3, 3) |
652010e230b6Smaya      __gen_uint(values->GenericMediaStateClear, 4, 4) |
652110e230b6Smaya      __gen_uint(values->IndirectStatePointersDisable, 5, 5) |
652210e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
652310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
652410e230b6Smaya}
652510e230b6Smaya
652610e230b6Smaya#define GEN75_MI_LOAD_REGISTER_IMM_length      3
652710e230b6Smaya#define GEN75_MI_LOAD_REGISTER_IMM_length_bias      2
652810e230b6Smaya#define GEN75_MI_LOAD_REGISTER_IMM_header       \
652910e230b6Smaya   .DWordLength                         =      1,  \
653010e230b6Smaya   .MICommandOpcode                     =     34,  \
653110e230b6Smaya   .CommandType                         =      0
653210e230b6Smaya
653310e230b6Smayastruct GEN75_MI_LOAD_REGISTER_IMM {
653410e230b6Smaya   uint32_t                             DWordLength;
653510e230b6Smaya   uint32_t                             ByteWriteDisables;
653610e230b6Smaya   uint32_t                             MICommandOpcode;
653710e230b6Smaya   uint32_t                             CommandType;
653810e230b6Smaya   uint64_t                             RegisterOffset;
653910e230b6Smaya   uint32_t                             DataDWord;
654010e230b6Smaya   /* variable length fields follow */
654110e230b6Smaya};
654210e230b6Smaya
654310e230b6Smayastatic inline void
654410e230b6SmayaGEN75_MI_LOAD_REGISTER_IMM_pack(__attribute__((unused)) __gen_user_data *data,
654510e230b6Smaya                                __attribute__((unused)) void * restrict dst,
654610e230b6Smaya                                __attribute__((unused)) const struct GEN75_MI_LOAD_REGISTER_IMM * restrict values)
654710e230b6Smaya{
654810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
654910e230b6Smaya
655010e230b6Smaya   dw[0] =
655110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
655210e230b6Smaya      __gen_uint(values->ByteWriteDisables, 8, 11) |
655310e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
655410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
655510e230b6Smaya
655610e230b6Smaya   dw[1] =
655710e230b6Smaya      __gen_offset(values->RegisterOffset, 2, 22);
655810e230b6Smaya
655910e230b6Smaya   dw[2] =
656010e230b6Smaya      __gen_uint(values->DataDWord, 0, 31);
656110e230b6Smaya}
656210e230b6Smaya
656310e230b6Smaya#define GEN75_MI_LOAD_REGISTER_MEM_length      3
656410e230b6Smaya#define GEN75_MI_LOAD_REGISTER_MEM_length_bias      2
656510e230b6Smaya#define GEN75_MI_LOAD_REGISTER_MEM_header       \
656610e230b6Smaya   .DWordLength                         =      1,  \
656710e230b6Smaya   .MICommandOpcode                     =     41,  \
656810e230b6Smaya   .CommandType                         =      0
656910e230b6Smaya
657010e230b6Smayastruct GEN75_MI_LOAD_REGISTER_MEM {
657110e230b6Smaya   uint32_t                             DWordLength;
657210e230b6Smaya   bool                                 AsyncModeEnable;
657310e230b6Smaya   bool                                 UseGlobalGTT;
657410e230b6Smaya   uint32_t                             MICommandOpcode;
657510e230b6Smaya   uint32_t                             CommandType;
657610e230b6Smaya   uint64_t                             RegisterAddress;
657710e230b6Smaya   __gen_address_type                   MemoryAddress;
657810e230b6Smaya};
657910e230b6Smaya
658010e230b6Smayastatic inline void
658110e230b6SmayaGEN75_MI_LOAD_REGISTER_MEM_pack(__attribute__((unused)) __gen_user_data *data,
658210e230b6Smaya                                __attribute__((unused)) void * restrict dst,
658310e230b6Smaya                                __attribute__((unused)) const struct GEN75_MI_LOAD_REGISTER_MEM * restrict values)
658410e230b6Smaya{
658510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
658610e230b6Smaya
658710e230b6Smaya   dw[0] =
658810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
658910e230b6Smaya      __gen_uint(values->AsyncModeEnable, 21, 21) |
659010e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
659110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
659210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
659310e230b6Smaya
659410e230b6Smaya   dw[1] =
659510e230b6Smaya      __gen_offset(values->RegisterAddress, 2, 22);
659610e230b6Smaya
659710e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
659810e230b6Smaya}
659910e230b6Smaya
660010e230b6Smaya#define GEN75_MI_LOAD_REGISTER_REG_length      3
660110e230b6Smaya#define GEN75_MI_LOAD_REGISTER_REG_length_bias      2
660210e230b6Smaya#define GEN75_MI_LOAD_REGISTER_REG_header       \
660310e230b6Smaya   .DWordLength                         =      1,  \
660410e230b6Smaya   .MICommandOpcode                     =     42,  \
660510e230b6Smaya   .CommandType                         =      0
660610e230b6Smaya
660710e230b6Smayastruct GEN75_MI_LOAD_REGISTER_REG {
660810e230b6Smaya   uint32_t                             DWordLength;
660910e230b6Smaya   uint32_t                             MICommandOpcode;
661010e230b6Smaya   uint32_t                             CommandType;
661110e230b6Smaya   uint64_t                             SourceRegisterAddress;
661210e230b6Smaya   uint64_t                             DestinationRegisterAddress;
661310e230b6Smaya};
661410e230b6Smaya
661510e230b6Smayastatic inline void
661610e230b6SmayaGEN75_MI_LOAD_REGISTER_REG_pack(__attribute__((unused)) __gen_user_data *data,
661710e230b6Smaya                                __attribute__((unused)) void * restrict dst,
661810e230b6Smaya                                __attribute__((unused)) const struct GEN75_MI_LOAD_REGISTER_REG * restrict values)
661910e230b6Smaya{
662010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
662110e230b6Smaya
662210e230b6Smaya   dw[0] =
662310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
662410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
662510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
662610e230b6Smaya
662710e230b6Smaya   dw[1] =
662810e230b6Smaya      __gen_offset(values->SourceRegisterAddress, 2, 22);
662910e230b6Smaya
663010e230b6Smaya   dw[2] =
663110e230b6Smaya      __gen_offset(values->DestinationRegisterAddress, 2, 22);
663210e230b6Smaya}
663310e230b6Smaya
663410e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_EXCL_length      2
663510e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_EXCL_length_bias      2
663610e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_EXCL_header    \
663710e230b6Smaya   .DWordLength                         =      0,  \
663810e230b6Smaya   .MICommandOpcode                     =     19,  \
663910e230b6Smaya   .CommandType                         =      0
664010e230b6Smaya
664110e230b6Smayastruct GEN75_MI_LOAD_SCAN_LINES_EXCL {
664210e230b6Smaya   uint32_t                             DWordLength;
664310e230b6Smaya   uint32_t                             DisplayPlaneSelect;
664410e230b6Smaya#define DisplayPlaneA                            0
664510e230b6Smaya#define DisplayPlaneB                            1
664610e230b6Smaya#define DisplayPlaneC                            4
664710e230b6Smaya   uint32_t                             MICommandOpcode;
664810e230b6Smaya   uint32_t                             CommandType;
664910e230b6Smaya   uint32_t                             EndScanLineNumber;
665010e230b6Smaya   uint32_t                             StartScanLineNumber;
665110e230b6Smaya};
665210e230b6Smaya
665310e230b6Smayastatic inline void
665410e230b6SmayaGEN75_MI_LOAD_SCAN_LINES_EXCL_pack(__attribute__((unused)) __gen_user_data *data,
665510e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
665610e230b6Smaya                                   __attribute__((unused)) const struct GEN75_MI_LOAD_SCAN_LINES_EXCL * restrict values)
665710e230b6Smaya{
665810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
665910e230b6Smaya
666010e230b6Smaya   dw[0] =
666110e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
666210e230b6Smaya      __gen_uint(values->DisplayPlaneSelect, 19, 21) |
666310e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
666410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
666510e230b6Smaya
666610e230b6Smaya   dw[1] =
666710e230b6Smaya      __gen_uint(values->EndScanLineNumber, 0, 12) |
666810e230b6Smaya      __gen_uint(values->StartScanLineNumber, 16, 28);
666910e230b6Smaya}
667010e230b6Smaya
667110e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_INCL_length      2
667210e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_INCL_length_bias      2
667310e230b6Smaya#define GEN75_MI_LOAD_SCAN_LINES_INCL_header    \
667410e230b6Smaya   .DWordLength                         =      0,  \
667510e230b6Smaya   .MICommandOpcode                     =     18,  \
667610e230b6Smaya   .CommandType                         =      0
667710e230b6Smaya
667810e230b6Smayastruct GEN75_MI_LOAD_SCAN_LINES_INCL {
667910e230b6Smaya   uint32_t                             DWordLength;
668010e230b6Smaya   uint32_t                             DisplayPlaneSelect;
668110e230b6Smaya#define DisplayPlaneA                            0
668210e230b6Smaya#define DisplayPlaneB                            1
668310e230b6Smaya#define DisplayPlaneC                            4
668410e230b6Smaya   uint32_t                             MICommandOpcode;
668510e230b6Smaya   uint32_t                             CommandType;
668610e230b6Smaya   uint32_t                             EndScanLineNumber;
668710e230b6Smaya   uint32_t                             StartScanLineNumber;
668810e230b6Smaya};
668910e230b6Smaya
669010e230b6Smayastatic inline void
669110e230b6SmayaGEN75_MI_LOAD_SCAN_LINES_INCL_pack(__attribute__((unused)) __gen_user_data *data,
669210e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
669310e230b6Smaya                                   __attribute__((unused)) const struct GEN75_MI_LOAD_SCAN_LINES_INCL * restrict values)
669410e230b6Smaya{
669510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
669610e230b6Smaya
669710e230b6Smaya   dw[0] =
669810e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
669910e230b6Smaya      __gen_uint(values->DisplayPlaneSelect, 19, 21) |
670010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
670110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
670210e230b6Smaya
670310e230b6Smaya   dw[1] =
670410e230b6Smaya      __gen_uint(values->EndScanLineNumber, 0, 12) |
670510e230b6Smaya      __gen_uint(values->StartScanLineNumber, 16, 28);
670610e230b6Smaya}
670710e230b6Smaya
670810e230b6Smaya#define GEN75_MI_LOAD_URB_MEM_length           3
670910e230b6Smaya#define GEN75_MI_LOAD_URB_MEM_length_bias      2
671010e230b6Smaya#define GEN75_MI_LOAD_URB_MEM_header            \
671110e230b6Smaya   .DWordLength                         =      1,  \
671210e230b6Smaya   .MICommandOpcode                     =     44,  \
671310e230b6Smaya   .CommandType                         =      0
671410e230b6Smaya
671510e230b6Smayastruct GEN75_MI_LOAD_URB_MEM {
671610e230b6Smaya   uint32_t                             DWordLength;
671710e230b6Smaya   uint32_t                             MICommandOpcode;
671810e230b6Smaya   uint32_t                             CommandType;
671910e230b6Smaya   uint32_t                             URBAddress;
672010e230b6Smaya   __gen_address_type                   MemoryAddress;
672110e230b6Smaya};
672210e230b6Smaya
672310e230b6Smayastatic inline void
672410e230b6SmayaGEN75_MI_LOAD_URB_MEM_pack(__attribute__((unused)) __gen_user_data *data,
672510e230b6Smaya                           __attribute__((unused)) void * restrict dst,
672610e230b6Smaya                           __attribute__((unused)) const struct GEN75_MI_LOAD_URB_MEM * restrict values)
672710e230b6Smaya{
672810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
672910e230b6Smaya
673010e230b6Smaya   dw[0] =
673110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
673210e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
673310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
673410e230b6Smaya
673510e230b6Smaya   dw[1] =
673610e230b6Smaya      __gen_uint(values->URBAddress, 2, 14);
673710e230b6Smaya
673810e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
673910e230b6Smaya}
674010e230b6Smaya
674110e230b6Smaya#define GEN75_MI_MATH_length_bias              2
674210e230b6Smaya#define GEN75_MI_MATH_header                    \
674310e230b6Smaya   .DWordLength                         =      0,  \
674410e230b6Smaya   .MICommandOpcode                     =     26,  \
674510e230b6Smaya   .CommandType                         =      0
674610e230b6Smaya
674710e230b6Smayastruct GEN75_MI_MATH {
674810e230b6Smaya   uint32_t                             DWordLength;
674910e230b6Smaya   uint32_t                             MICommandOpcode;
675010e230b6Smaya   uint32_t                             CommandType;
675110e230b6Smaya   /* variable length fields follow */
675210e230b6Smaya};
675310e230b6Smaya
675410e230b6Smayastatic inline void
675510e230b6SmayaGEN75_MI_MATH_pack(__attribute__((unused)) __gen_user_data *data,
675610e230b6Smaya                   __attribute__((unused)) void * restrict dst,
675710e230b6Smaya                   __attribute__((unused)) const struct GEN75_MI_MATH * restrict values)
675810e230b6Smaya{
675910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
676010e230b6Smaya
676110e230b6Smaya   dw[0] =
676210e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
676310e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
676410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
676510e230b6Smaya}
676610e230b6Smaya
676710e230b6Smaya#define GEN75_MI_NOOP_length                   1
676810e230b6Smaya#define GEN75_MI_NOOP_length_bias              1
676910e230b6Smaya#define GEN75_MI_NOOP_header                    \
677010e230b6Smaya   .MICommandOpcode                     =      0,  \
677110e230b6Smaya   .CommandType                         =      0
677210e230b6Smaya
677310e230b6Smayastruct GEN75_MI_NOOP {
677410e230b6Smaya   uint32_t                             IdentificationNumber;
677510e230b6Smaya   bool                                 IdentificationNumberRegisterWriteEnable;
677610e230b6Smaya   uint32_t                             MICommandOpcode;
677710e230b6Smaya   uint32_t                             CommandType;
677810e230b6Smaya};
677910e230b6Smaya
678010e230b6Smayastatic inline void
678110e230b6SmayaGEN75_MI_NOOP_pack(__attribute__((unused)) __gen_user_data *data,
678210e230b6Smaya                   __attribute__((unused)) void * restrict dst,
678310e230b6Smaya                   __attribute__((unused)) const struct GEN75_MI_NOOP * restrict values)
678410e230b6Smaya{
678510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
678610e230b6Smaya
678710e230b6Smaya   dw[0] =
678810e230b6Smaya      __gen_uint(values->IdentificationNumber, 0, 21) |
678910e230b6Smaya      __gen_uint(values->IdentificationNumberRegisterWriteEnable, 22, 22) |
679010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
679110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
679210e230b6Smaya}
679310e230b6Smaya
679410e230b6Smaya#define GEN75_MI_PREDICATE_length              1
679510e230b6Smaya#define GEN75_MI_PREDICATE_length_bias         1
679610e230b6Smaya#define GEN75_MI_PREDICATE_header               \
679710e230b6Smaya   .MICommandOpcode                     =     12,  \
679810e230b6Smaya   .CommandType                         =      0
679910e230b6Smaya
680010e230b6Smayastruct GEN75_MI_PREDICATE {
680110e230b6Smaya   uint32_t                             CompareOperation;
680210e230b6Smaya#define COMPARE_TRUE                             0
680310e230b6Smaya#define COMPARE_FALSE                            1
680410e230b6Smaya#define COMPARE_SRCS_EQUAL                       2
680510e230b6Smaya#define COMPARE_DELTAS_EQUAL                     3
680610e230b6Smaya   uint32_t                             CombineOperation;
680710e230b6Smaya#define COMBINE_SET                              0
680810e230b6Smaya#define COMBINE_AND                              1
680910e230b6Smaya#define COMBINE_OR                               2
681010e230b6Smaya#define COMBINE_XOR                              3
681110e230b6Smaya   uint32_t                             LoadOperation;
681210e230b6Smaya#define LOAD_KEEP                                0
681310e230b6Smaya#define LOAD_LOAD                                2
681410e230b6Smaya#define LOAD_LOADINV                             3
681510e230b6Smaya   uint32_t                             MICommandOpcode;
681610e230b6Smaya   uint32_t                             CommandType;
681710e230b6Smaya};
681810e230b6Smaya
681910e230b6Smayastatic inline void
682010e230b6SmayaGEN75_MI_PREDICATE_pack(__attribute__((unused)) __gen_user_data *data,
682110e230b6Smaya                        __attribute__((unused)) void * restrict dst,
682210e230b6Smaya                        __attribute__((unused)) const struct GEN75_MI_PREDICATE * restrict values)
682310e230b6Smaya{
682410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
682510e230b6Smaya
682610e230b6Smaya   dw[0] =
682710e230b6Smaya      __gen_uint(values->CompareOperation, 0, 1) |
682810e230b6Smaya      __gen_uint(values->CombineOperation, 3, 4) |
682910e230b6Smaya      __gen_uint(values->LoadOperation, 6, 7) |
683010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
683110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
683210e230b6Smaya}
683310e230b6Smaya
683410e230b6Smaya#define GEN75_MI_REPORT_HEAD_length            1
683510e230b6Smaya#define GEN75_MI_REPORT_HEAD_length_bias       1
683610e230b6Smaya#define GEN75_MI_REPORT_HEAD_header             \
683710e230b6Smaya   .MICommandOpcode                     =      7,  \
683810e230b6Smaya   .CommandType                         =      0
683910e230b6Smaya
684010e230b6Smayastruct GEN75_MI_REPORT_HEAD {
684110e230b6Smaya   uint32_t                             MICommandOpcode;
684210e230b6Smaya   uint32_t                             CommandType;
684310e230b6Smaya};
684410e230b6Smaya
684510e230b6Smayastatic inline void
684610e230b6SmayaGEN75_MI_REPORT_HEAD_pack(__attribute__((unused)) __gen_user_data *data,
684710e230b6Smaya                          __attribute__((unused)) void * restrict dst,
684810e230b6Smaya                          __attribute__((unused)) const struct GEN75_MI_REPORT_HEAD * restrict values)
684910e230b6Smaya{
685010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
685110e230b6Smaya
685210e230b6Smaya   dw[0] =
685310e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
685410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
685510e230b6Smaya}
685610e230b6Smaya
685710e230b6Smaya#define GEN75_MI_REPORT_PERF_COUNT_length      3
685810e230b6Smaya#define GEN75_MI_REPORT_PERF_COUNT_length_bias      2
685910e230b6Smaya#define GEN75_MI_REPORT_PERF_COUNT_header       \
686010e230b6Smaya   .DWordLength                         =      1,  \
686110e230b6Smaya   .MICommandOpcode                     =     40,  \
686210e230b6Smaya   .CommandType                         =      0
686310e230b6Smaya
686410e230b6Smayastruct GEN75_MI_REPORT_PERF_COUNT {
686510e230b6Smaya   uint32_t                             DWordLength;
686610e230b6Smaya   uint32_t                             MICommandOpcode;
686710e230b6Smaya   uint32_t                             CommandType;
686810e230b6Smaya   bool                                 UseGlobalGTT;
686910e230b6Smaya   uint32_t                             CoreModeEnable;
687010e230b6Smaya   __gen_address_type                   MemoryAddress;
687110e230b6Smaya   uint32_t                             ReportID;
687210e230b6Smaya};
687310e230b6Smaya
687410e230b6Smayastatic inline void
687510e230b6SmayaGEN75_MI_REPORT_PERF_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
687610e230b6Smaya                                __attribute__((unused)) void * restrict dst,
687710e230b6Smaya                                __attribute__((unused)) const struct GEN75_MI_REPORT_PERF_COUNT * restrict values)
687810e230b6Smaya{
687910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
688010e230b6Smaya
688110e230b6Smaya   dw[0] =
688210e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
688310e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
688410e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
688510e230b6Smaya
688610e230b6Smaya   const uint32_t v1 =
688710e230b6Smaya      __gen_uint(values->UseGlobalGTT, 0, 0) |
688810e230b6Smaya      __gen_uint(values->CoreModeEnable, 4, 4);
688910e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->MemoryAddress, v1);
689010e230b6Smaya
689110e230b6Smaya   dw[2] =
689210e230b6Smaya      __gen_uint(values->ReportID, 0, 31);
689310e230b6Smaya}
689410e230b6Smaya
689510e230b6Smaya#define GEN75_MI_RS_CONTEXT_length             1
689610e230b6Smaya#define GEN75_MI_RS_CONTEXT_length_bias        1
689710e230b6Smaya#define GEN75_MI_RS_CONTEXT_header              \
689810e230b6Smaya   .MICommandOpcode                     =     15,  \
689910e230b6Smaya   .CommandType                         =      0
690010e230b6Smaya
690110e230b6Smayastruct GEN75_MI_RS_CONTEXT {
690210e230b6Smaya   uint32_t                             ResourceStreamerSave;
690310e230b6Smaya#define RS_Restore                               0
690410e230b6Smaya#define RS_Save                                  1
690510e230b6Smaya   uint32_t                             MICommandOpcode;
690610e230b6Smaya   uint32_t                             CommandType;
690710e230b6Smaya};
690810e230b6Smaya
690910e230b6Smayastatic inline void
691010e230b6SmayaGEN75_MI_RS_CONTEXT_pack(__attribute__((unused)) __gen_user_data *data,
691110e230b6Smaya                         __attribute__((unused)) void * restrict dst,
691210e230b6Smaya                         __attribute__((unused)) const struct GEN75_MI_RS_CONTEXT * restrict values)
691310e230b6Smaya{
691410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
691510e230b6Smaya
691610e230b6Smaya   dw[0] =
691710e230b6Smaya      __gen_uint(values->ResourceStreamerSave, 0, 0) |
691810e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
691910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
692010e230b6Smaya}
692110e230b6Smaya
692210e230b6Smaya#define GEN75_MI_RS_CONTROL_length             1
692310e230b6Smaya#define GEN75_MI_RS_CONTROL_length_bias        1
692410e230b6Smaya#define GEN75_MI_RS_CONTROL_header              \
692510e230b6Smaya   .MICommandOpcode                     =      6,  \
692610e230b6Smaya   .CommandType                         =      0
692710e230b6Smaya
692810e230b6Smayastruct GEN75_MI_RS_CONTROL {
692910e230b6Smaya   uint32_t                             ResourceStreamerControl;
693010e230b6Smaya#define RS_Stop                                  0
693110e230b6Smaya#define RS_Start                                 1
693210e230b6Smaya   uint32_t                             MICommandOpcode;
693310e230b6Smaya   uint32_t                             CommandType;
693410e230b6Smaya};
693510e230b6Smaya
693610e230b6Smayastatic inline void
693710e230b6SmayaGEN75_MI_RS_CONTROL_pack(__attribute__((unused)) __gen_user_data *data,
693810e230b6Smaya                         __attribute__((unused)) void * restrict dst,
693910e230b6Smaya                         __attribute__((unused)) const struct GEN75_MI_RS_CONTROL * restrict values)
694010e230b6Smaya{
694110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
694210e230b6Smaya
694310e230b6Smaya   dw[0] =
694410e230b6Smaya      __gen_uint(values->ResourceStreamerControl, 0, 0) |
694510e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
694610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
694710e230b6Smaya}
694810e230b6Smaya
694910e230b6Smaya#define GEN75_MI_RS_STORE_DATA_IMM_length      4
695010e230b6Smaya#define GEN75_MI_RS_STORE_DATA_IMM_length_bias      2
695110e230b6Smaya#define GEN75_MI_RS_STORE_DATA_IMM_header       \
695210e230b6Smaya   .DWordLength                         =      2,  \
695310e230b6Smaya   .MICommandOpcode                     =     43,  \
695410e230b6Smaya   .CommandType                         =      0
695510e230b6Smaya
695610e230b6Smayastruct GEN75_MI_RS_STORE_DATA_IMM {
695710e230b6Smaya   uint32_t                             DWordLength;
695810e230b6Smaya   uint32_t                             MICommandOpcode;
695910e230b6Smaya   uint32_t                             CommandType;
696010e230b6Smaya   uint32_t                             CoreModeEnable;
696110e230b6Smaya   __gen_address_type                   DestinationAddress;
696210e230b6Smaya   uint32_t                             DataDWord0;
696310e230b6Smaya};
696410e230b6Smaya
696510e230b6Smayastatic inline void
696610e230b6SmayaGEN75_MI_RS_STORE_DATA_IMM_pack(__attribute__((unused)) __gen_user_data *data,
696710e230b6Smaya                                __attribute__((unused)) void * restrict dst,
696810e230b6Smaya                                __attribute__((unused)) const struct GEN75_MI_RS_STORE_DATA_IMM * restrict values)
696910e230b6Smaya{
697010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
697110e230b6Smaya
697210e230b6Smaya   dw[0] =
697310e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
697410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
697510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
697610e230b6Smaya
697710e230b6Smaya   dw[1] = 0;
697810e230b6Smaya
697910e230b6Smaya   const uint32_t v2 =
698010e230b6Smaya      __gen_uint(values->CoreModeEnable, 0, 0);
698110e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->DestinationAddress, v2);
698210e230b6Smaya
698310e230b6Smaya   dw[3] =
698410e230b6Smaya      __gen_uint(values->DataDWord0, 0, 31);
698510e230b6Smaya}
698610e230b6Smaya
698710e230b6Smaya#define GEN75_MI_SEMAPHORE_MBOX_length         3
698810e230b6Smaya#define GEN75_MI_SEMAPHORE_MBOX_length_bias      2
698910e230b6Smaya#define GEN75_MI_SEMAPHORE_MBOX_header          \
699010e230b6Smaya   .DWordLength                         =      1,  \
699110e230b6Smaya   .MICommandOpcode                     =     22,  \
699210e230b6Smaya   .CommandType                         =      0
699310e230b6Smaya
699410e230b6Smayastruct GEN75_MI_SEMAPHORE_MBOX {
699510e230b6Smaya   uint32_t                             DWordLength;
699610e230b6Smaya   uint32_t                             GeneralRegisterSelect;
699710e230b6Smaya   uint32_t                             RegisterSelect;
699810e230b6Smaya#define RVSYNC                                   0
699910e230b6Smaya#define RVESYNC                                  1
700010e230b6Smaya#define RBSYNC                                   2
700110e230b6Smaya#define UseGeneralRegisterSelect                 3
700210e230b6Smaya   uint32_t                             MICommandOpcode;
700310e230b6Smaya   uint32_t                             CommandType;
700410e230b6Smaya   uint32_t                             SemaphoreDataDword;
700510e230b6Smaya};
700610e230b6Smaya
700710e230b6Smayastatic inline void
700810e230b6SmayaGEN75_MI_SEMAPHORE_MBOX_pack(__attribute__((unused)) __gen_user_data *data,
700910e230b6Smaya                             __attribute__((unused)) void * restrict dst,
701010e230b6Smaya                             __attribute__((unused)) const struct GEN75_MI_SEMAPHORE_MBOX * restrict values)
701110e230b6Smaya{
701210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
701310e230b6Smaya
701410e230b6Smaya   dw[0] =
701510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
701610e230b6Smaya      __gen_uint(values->GeneralRegisterSelect, 8, 13) |
701710e230b6Smaya      __gen_uint(values->RegisterSelect, 16, 17) |
701810e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
701910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
702010e230b6Smaya
702110e230b6Smaya   dw[1] =
702210e230b6Smaya      __gen_uint(values->SemaphoreDataDword, 0, 31);
702310e230b6Smaya
702410e230b6Smaya   dw[2] = 0;
702510e230b6Smaya}
702610e230b6Smaya
702710e230b6Smaya#define GEN75_MI_SET_CONTEXT_length            2
702810e230b6Smaya#define GEN75_MI_SET_CONTEXT_length_bias       2
702910e230b6Smaya#define GEN75_MI_SET_CONTEXT_header             \
703010e230b6Smaya   .DWordLength                         =      0,  \
703110e230b6Smaya   .MICommandOpcode                     =     24,  \
703210e230b6Smaya   .CommandType                         =      0
703310e230b6Smaya
703410e230b6Smayastruct GEN75_MI_SET_CONTEXT {
703510e230b6Smaya   uint32_t                             DWordLength;
703610e230b6Smaya   uint32_t                             MICommandOpcode;
703710e230b6Smaya   uint32_t                             CommandType;
703810e230b6Smaya   uint32_t                             RestoreInhibit;
703910e230b6Smaya   uint32_t                             ForceRestore;
704010e230b6Smaya   bool                                 ResourceStreamerStateRestoreEnable;
704110e230b6Smaya   bool                                 ResourceStreamerStateSaveEnable;
704210e230b6Smaya   bool                                 CoreModeEnable;
704310e230b6Smaya   uint32_t                             ReservedMustbe1;
704410e230b6Smaya   __gen_address_type                   LogicalContextAddress;
704510e230b6Smaya};
704610e230b6Smaya
704710e230b6Smayastatic inline void
704810e230b6SmayaGEN75_MI_SET_CONTEXT_pack(__attribute__((unused)) __gen_user_data *data,
704910e230b6Smaya                          __attribute__((unused)) void * restrict dst,
705010e230b6Smaya                          __attribute__((unused)) const struct GEN75_MI_SET_CONTEXT * restrict values)
705110e230b6Smaya{
705210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
705310e230b6Smaya
705410e230b6Smaya   dw[0] =
705510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
705610e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
705710e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
705810e230b6Smaya
705910e230b6Smaya   const uint32_t v1 =
706010e230b6Smaya      __gen_uint(values->RestoreInhibit, 0, 0) |
706110e230b6Smaya      __gen_uint(values->ForceRestore, 1, 1) |
706210e230b6Smaya      __gen_uint(values->ResourceStreamerStateRestoreEnable, 2, 2) |
706310e230b6Smaya      __gen_uint(values->ResourceStreamerStateSaveEnable, 3, 3) |
706410e230b6Smaya      __gen_uint(values->CoreModeEnable, 4, 4) |
706510e230b6Smaya      __gen_uint(values->ReservedMustbe1, 8, 8);
706610e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->LogicalContextAddress, v1);
706710e230b6Smaya}
706810e230b6Smaya
706910e230b6Smaya#define GEN75_MI_SET_PREDICATE_length          1
707010e230b6Smaya#define GEN75_MI_SET_PREDICATE_length_bias      1
707110e230b6Smaya#define GEN75_MI_SET_PREDICATE_header           \
707210e230b6Smaya   .MICommandOpcode                     =      1,  \
707310e230b6Smaya   .CommandType                         =      0
707410e230b6Smaya
707510e230b6Smayastruct GEN75_MI_SET_PREDICATE {
707610e230b6Smaya   uint32_t                             PREDICATEENABLE;
707710e230b6Smaya   uint32_t                             MICommandOpcode;
707810e230b6Smaya   uint32_t                             CommandType;
707910e230b6Smaya};
708010e230b6Smaya
708110e230b6Smayastatic inline void
708210e230b6SmayaGEN75_MI_SET_PREDICATE_pack(__attribute__((unused)) __gen_user_data *data,
708310e230b6Smaya                            __attribute__((unused)) void * restrict dst,
708410e230b6Smaya                            __attribute__((unused)) const struct GEN75_MI_SET_PREDICATE * restrict values)
708510e230b6Smaya{
708610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
708710e230b6Smaya
708810e230b6Smaya   dw[0] =
708910e230b6Smaya      __gen_uint(values->PREDICATEENABLE, 0, 1) |
709010e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
709110e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
709210e230b6Smaya}
709310e230b6Smaya
709410e230b6Smaya#define GEN75_MI_STORE_DATA_IMM_length         4
709510e230b6Smaya#define GEN75_MI_STORE_DATA_IMM_length_bias      2
709610e230b6Smaya#define GEN75_MI_STORE_DATA_IMM_header          \
709710e230b6Smaya   .DWordLength                         =      2,  \
709810e230b6Smaya   .MICommandOpcode                     =     32,  \
709910e230b6Smaya   .CommandType                         =      0
710010e230b6Smaya
710110e230b6Smayastruct GEN75_MI_STORE_DATA_IMM {
710210e230b6Smaya   uint32_t                             DWordLength;
710310e230b6Smaya   bool                                 UseGlobalGTT;
710410e230b6Smaya   uint32_t                             MICommandOpcode;
710510e230b6Smaya   uint32_t                             CommandType;
710610e230b6Smaya   uint32_t                             CoreModeEnable;
710710e230b6Smaya   __gen_address_type                   Address;
710810e230b6Smaya   uint64_t                             ImmediateData;
710910e230b6Smaya};
711010e230b6Smaya
711110e230b6Smayastatic inline void
711210e230b6SmayaGEN75_MI_STORE_DATA_IMM_pack(__attribute__((unused)) __gen_user_data *data,
711310e230b6Smaya                             __attribute__((unused)) void * restrict dst,
711410e230b6Smaya                             __attribute__((unused)) const struct GEN75_MI_STORE_DATA_IMM * restrict values)
711510e230b6Smaya{
711610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
711710e230b6Smaya
711810e230b6Smaya   dw[0] =
711910e230b6Smaya      __gen_uint(values->DWordLength, 0, 5) |
712010e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
712110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
712210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
712310e230b6Smaya
712410e230b6Smaya   dw[1] = 0;
712510e230b6Smaya
712610e230b6Smaya   const uint32_t v2 =
712710e230b6Smaya      __gen_uint(values->CoreModeEnable, 0, 0);
712810e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->Address, v2);
712910e230b6Smaya
713010e230b6Smaya   const uint64_t v3 =
713110e230b6Smaya      __gen_uint(values->ImmediateData, 0, 63);
713210e230b6Smaya   dw[3] = v3;
713310e230b6Smaya   dw[4] = v3 >> 32;
713410e230b6Smaya}
713510e230b6Smaya
713610e230b6Smaya#define GEN75_MI_STORE_DATA_INDEX_length       3
713710e230b6Smaya#define GEN75_MI_STORE_DATA_INDEX_length_bias      2
713810e230b6Smaya#define GEN75_MI_STORE_DATA_INDEX_header        \
713910e230b6Smaya   .DWordLength                         =      1,  \
714010e230b6Smaya   .MICommandOpcode                     =     33,  \
714110e230b6Smaya   .CommandType                         =      0
714210e230b6Smaya
714310e230b6Smayastruct GEN75_MI_STORE_DATA_INDEX {
714410e230b6Smaya   uint32_t                             DWordLength;
714510e230b6Smaya   uint32_t                             MICommandOpcode;
714610e230b6Smaya   uint32_t                             CommandType;
714710e230b6Smaya   uint32_t                             Offset;
714810e230b6Smaya   uint32_t                             DataDWord0;
714910e230b6Smaya   uint32_t                             DataDWord1;
715010e230b6Smaya};
715110e230b6Smaya
715210e230b6Smayastatic inline void
715310e230b6SmayaGEN75_MI_STORE_DATA_INDEX_pack(__attribute__((unused)) __gen_user_data *data,
715410e230b6Smaya                               __attribute__((unused)) void * restrict dst,
715510e230b6Smaya                               __attribute__((unused)) const struct GEN75_MI_STORE_DATA_INDEX * restrict values)
715610e230b6Smaya{
715710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
715810e230b6Smaya
715910e230b6Smaya   dw[0] =
716010e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
716110e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
716210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
716310e230b6Smaya
716410e230b6Smaya   dw[1] =
716510e230b6Smaya      __gen_uint(values->Offset, 2, 11);
716610e230b6Smaya
716710e230b6Smaya   dw[2] =
716810e230b6Smaya      __gen_uint(values->DataDWord0, 0, 31);
716910e230b6Smaya}
717010e230b6Smaya
717110e230b6Smaya#define GEN75_MI_STORE_REGISTER_MEM_length      3
717210e230b6Smaya#define GEN75_MI_STORE_REGISTER_MEM_length_bias      2
717310e230b6Smaya#define GEN75_MI_STORE_REGISTER_MEM_header      \
717410e230b6Smaya   .DWordLength                         =      1,  \
717510e230b6Smaya   .MICommandOpcode                     =     36,  \
717610e230b6Smaya   .CommandType                         =      0
717710e230b6Smaya
717810e230b6Smayastruct GEN75_MI_STORE_REGISTER_MEM {
717910e230b6Smaya   uint32_t                             DWordLength;
718010e230b6Smaya   bool                                 PredicateEnable;
718110e230b6Smaya   bool                                 UseGlobalGTT;
718210e230b6Smaya   uint32_t                             MICommandOpcode;
718310e230b6Smaya   uint32_t                             CommandType;
718410e230b6Smaya   uint64_t                             RegisterAddress;
718510e230b6Smaya   __gen_address_type                   MemoryAddress;
718610e230b6Smaya};
718710e230b6Smaya
718810e230b6Smayastatic inline void
718910e230b6SmayaGEN75_MI_STORE_REGISTER_MEM_pack(__attribute__((unused)) __gen_user_data *data,
719010e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
719110e230b6Smaya                                 __attribute__((unused)) const struct GEN75_MI_STORE_REGISTER_MEM * restrict values)
719210e230b6Smaya{
719310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
719410e230b6Smaya
719510e230b6Smaya   dw[0] =
719610e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
719710e230b6Smaya      __gen_uint(values->PredicateEnable, 21, 21) |
719810e230b6Smaya      __gen_uint(values->UseGlobalGTT, 22, 22) |
719910e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
720010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
720110e230b6Smaya
720210e230b6Smaya   dw[1] =
720310e230b6Smaya      __gen_offset(values->RegisterAddress, 2, 22);
720410e230b6Smaya
720510e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
720610e230b6Smaya}
720710e230b6Smaya
720810e230b6Smaya#define GEN75_MI_STORE_URB_MEM_length          3
720910e230b6Smaya#define GEN75_MI_STORE_URB_MEM_length_bias      2
721010e230b6Smaya#define GEN75_MI_STORE_URB_MEM_header           \
721110e230b6Smaya   .DWordLength                         =      1,  \
721210e230b6Smaya   .MICommandOpcode                     =     45,  \
721310e230b6Smaya   .CommandType                         =      0
721410e230b6Smaya
721510e230b6Smayastruct GEN75_MI_STORE_URB_MEM {
721610e230b6Smaya   uint32_t                             DWordLength;
721710e230b6Smaya   uint32_t                             MICommandOpcode;
721810e230b6Smaya   uint32_t                             CommandType;
721910e230b6Smaya   uint32_t                             URBAddress;
722010e230b6Smaya   __gen_address_type                   MemoryAddress;
722110e230b6Smaya};
722210e230b6Smaya
722310e230b6Smayastatic inline void
722410e230b6SmayaGEN75_MI_STORE_URB_MEM_pack(__attribute__((unused)) __gen_user_data *data,
722510e230b6Smaya                            __attribute__((unused)) void * restrict dst,
722610e230b6Smaya                            __attribute__((unused)) const struct GEN75_MI_STORE_URB_MEM * restrict values)
722710e230b6Smaya{
722810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
722910e230b6Smaya
723010e230b6Smaya   dw[0] =
723110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
723210e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
723310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
723410e230b6Smaya
723510e230b6Smaya   dw[1] =
723610e230b6Smaya      __gen_uint(values->URBAddress, 2, 14);
723710e230b6Smaya
723810e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->MemoryAddress, 0);
723910e230b6Smaya}
724010e230b6Smaya
724110e230b6Smaya#define GEN75_MI_SUSPEND_FLUSH_length          1
724210e230b6Smaya#define GEN75_MI_SUSPEND_FLUSH_length_bias      1
724310e230b6Smaya#define GEN75_MI_SUSPEND_FLUSH_header           \
724410e230b6Smaya   .MICommandOpcode                     =     11,  \
724510e230b6Smaya   .CommandType                         =      0
724610e230b6Smaya
724710e230b6Smayastruct GEN75_MI_SUSPEND_FLUSH {
724810e230b6Smaya   bool                                 SuspendFlush;
724910e230b6Smaya   uint32_t                             MICommandOpcode;
725010e230b6Smaya   uint32_t                             CommandType;
725110e230b6Smaya};
725210e230b6Smaya
725310e230b6Smayastatic inline void
725410e230b6SmayaGEN75_MI_SUSPEND_FLUSH_pack(__attribute__((unused)) __gen_user_data *data,
725510e230b6Smaya                            __attribute__((unused)) void * restrict dst,
725610e230b6Smaya                            __attribute__((unused)) const struct GEN75_MI_SUSPEND_FLUSH * restrict values)
725710e230b6Smaya{
725810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
725910e230b6Smaya
726010e230b6Smaya   dw[0] =
726110e230b6Smaya      __gen_uint(values->SuspendFlush, 0, 0) |
726210e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
726310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
726410e230b6Smaya}
726510e230b6Smaya
726610e230b6Smaya#define GEN75_MI_TOPOLOGY_FILTER_length        1
726710e230b6Smaya#define GEN75_MI_TOPOLOGY_FILTER_length_bias      1
726810e230b6Smaya#define GEN75_MI_TOPOLOGY_FILTER_header         \
726910e230b6Smaya   .MICommandOpcode                     =     13,  \
727010e230b6Smaya   .CommandType                         =      0
727110e230b6Smaya
727210e230b6Smayastruct GEN75_MI_TOPOLOGY_FILTER {
727310e230b6Smaya   enum GEN75_3D_Prim_Topo_Type         TopologyFilterValue;
727410e230b6Smaya   uint32_t                             MICommandOpcode;
727510e230b6Smaya   uint32_t                             CommandType;
727610e230b6Smaya};
727710e230b6Smaya
727810e230b6Smayastatic inline void
727910e230b6SmayaGEN75_MI_TOPOLOGY_FILTER_pack(__attribute__((unused)) __gen_user_data *data,
728010e230b6Smaya                              __attribute__((unused)) void * restrict dst,
728110e230b6Smaya                              __attribute__((unused)) const struct GEN75_MI_TOPOLOGY_FILTER * restrict values)
728210e230b6Smaya{
728310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
728410e230b6Smaya
728510e230b6Smaya   dw[0] =
728610e230b6Smaya      __gen_uint(values->TopologyFilterValue, 0, 5) |
728710e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
728810e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
728910e230b6Smaya}
729010e230b6Smaya
729110e230b6Smaya#define GEN75_MI_URB_ATOMIC_ALLOC_length       1
729210e230b6Smaya#define GEN75_MI_URB_ATOMIC_ALLOC_length_bias      1
729310e230b6Smaya#define GEN75_MI_URB_ATOMIC_ALLOC_header        \
729410e230b6Smaya   .MICommandOpcode                     =      9,  \
729510e230b6Smaya   .CommandType                         =      0
729610e230b6Smaya
729710e230b6Smayastruct GEN75_MI_URB_ATOMIC_ALLOC {
729810e230b6Smaya   uint32_t                             URBAtomicStorageSize;
729910e230b6Smaya   uint32_t                             URBAtomicStorageOffset;
730010e230b6Smaya   uint32_t                             MICommandOpcode;
730110e230b6Smaya   uint32_t                             CommandType;
730210e230b6Smaya};
730310e230b6Smaya
730410e230b6Smayastatic inline void
730510e230b6SmayaGEN75_MI_URB_ATOMIC_ALLOC_pack(__attribute__((unused)) __gen_user_data *data,
730610e230b6Smaya                               __attribute__((unused)) void * restrict dst,
730710e230b6Smaya                               __attribute__((unused)) const struct GEN75_MI_URB_ATOMIC_ALLOC * restrict values)
730810e230b6Smaya{
730910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
731010e230b6Smaya
731110e230b6Smaya   dw[0] =
731210e230b6Smaya      __gen_uint(values->URBAtomicStorageSize, 0, 8) |
731310e230b6Smaya      __gen_uint(values->URBAtomicStorageOffset, 12, 19) |
731410e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
731510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
731610e230b6Smaya}
731710e230b6Smaya
731810e230b6Smaya#define GEN75_MI_URB_CLEAR_length              2
731910e230b6Smaya#define GEN75_MI_URB_CLEAR_length_bias         2
732010e230b6Smaya#define GEN75_MI_URB_CLEAR_header               \
732110e230b6Smaya   .DWordLength                         =      0,  \
732210e230b6Smaya   .MICommandOpcode                     =     25,  \
732310e230b6Smaya   .CommandType                         =      0
732410e230b6Smaya
732510e230b6Smayastruct GEN75_MI_URB_CLEAR {
732610e230b6Smaya   uint32_t                             DWordLength;
732710e230b6Smaya   uint32_t                             MICommandOpcode;
732810e230b6Smaya   uint32_t                             CommandType;
732910e230b6Smaya   uint64_t                             URBAddress;
733010e230b6Smaya   uint32_t                             URBClearLength;
733110e230b6Smaya};
733210e230b6Smaya
733310e230b6Smayastatic inline void
733410e230b6SmayaGEN75_MI_URB_CLEAR_pack(__attribute__((unused)) __gen_user_data *data,
733510e230b6Smaya                        __attribute__((unused)) void * restrict dst,
733610e230b6Smaya                        __attribute__((unused)) const struct GEN75_MI_URB_CLEAR * restrict values)
733710e230b6Smaya{
733810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
733910e230b6Smaya
734010e230b6Smaya   dw[0] =
734110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
734210e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
734310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
734410e230b6Smaya
734510e230b6Smaya   dw[1] =
734610e230b6Smaya      __gen_offset(values->URBAddress, 0, 14) |
734710e230b6Smaya      __gen_uint(values->URBClearLength, 16, 29);
734810e230b6Smaya}
734910e230b6Smaya
735010e230b6Smaya#define GEN75_MI_USER_INTERRUPT_length         1
735110e230b6Smaya#define GEN75_MI_USER_INTERRUPT_length_bias      1
735210e230b6Smaya#define GEN75_MI_USER_INTERRUPT_header          \
735310e230b6Smaya   .MICommandOpcode                     =      2,  \
735410e230b6Smaya   .CommandType                         =      0
735510e230b6Smaya
735610e230b6Smayastruct GEN75_MI_USER_INTERRUPT {
735710e230b6Smaya   uint32_t                             MICommandOpcode;
735810e230b6Smaya   uint32_t                             CommandType;
735910e230b6Smaya};
736010e230b6Smaya
736110e230b6Smayastatic inline void
736210e230b6SmayaGEN75_MI_USER_INTERRUPT_pack(__attribute__((unused)) __gen_user_data *data,
736310e230b6Smaya                             __attribute__((unused)) void * restrict dst,
736410e230b6Smaya                             __attribute__((unused)) const struct GEN75_MI_USER_INTERRUPT * restrict values)
736510e230b6Smaya{
736610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
736710e230b6Smaya
736810e230b6Smaya   dw[0] =
736910e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
737010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
737110e230b6Smaya}
737210e230b6Smaya
737310e230b6Smaya#define GEN75_MI_WAIT_FOR_EVENT_length         1
737410e230b6Smaya#define GEN75_MI_WAIT_FOR_EVENT_length_bias      1
737510e230b6Smaya#define GEN75_MI_WAIT_FOR_EVENT_header          \
737610e230b6Smaya   .MICommandOpcode                     =      3,  \
737710e230b6Smaya   .CommandType                         =      0
737810e230b6Smaya
737910e230b6Smayastruct GEN75_MI_WAIT_FOR_EVENT {
738010e230b6Smaya   bool                                 DisplayPipeAScanLineWaitEnable;
738110e230b6Smaya   bool                                 DisplayPlaneAFlipPendingWaitEnable;
738210e230b6Smaya   bool                                 DisplaySpriteAFlipPendingWaitEnable;
738310e230b6Smaya   bool                                 DisplayPipeAVerticalBlankWaitEnable;
738410e230b6Smaya   bool                                 DisplayPipeAHorizontalBlankWaitEnable;
738510e230b6Smaya   bool                                 DisplayPipeBScanLineWaitEnable;
738610e230b6Smaya   bool                                 DisplayPlaneBFlipPendingWaitEnable;
738710e230b6Smaya   bool                                 DisplaySpriteBFlipPendingWaitEnable;
738810e230b6Smaya   bool                                 DisplayPipeBVerticalBlankWaitEnable;
738910e230b6Smaya   bool                                 DisplayPipeBHorizontalBlankWaitEnable;
739010e230b6Smaya   bool                                 DisplayPipeCScanLineWaitEnable;
739110e230b6Smaya   bool                                 DisplayPlaneCFlipPendingWaitEnable;
739210e230b6Smaya   uint32_t                             ConditionCodeWaitSelect;
739310e230b6Smaya#define Notenabled                               0
739410e230b6Smaya   bool                                 DisplaySpriteCFlipPendingWaitEnable;
739510e230b6Smaya   bool                                 DisplayPipeCVerticalBlankWaitEnable;
739610e230b6Smaya   bool                                 DisplayPipeCHorizontalBlankWaitEnable;
739710e230b6Smaya   uint32_t                             MICommandOpcode;
739810e230b6Smaya   uint32_t                             CommandType;
739910e230b6Smaya};
740010e230b6Smaya
740110e230b6Smayastatic inline void
740210e230b6SmayaGEN75_MI_WAIT_FOR_EVENT_pack(__attribute__((unused)) __gen_user_data *data,
740310e230b6Smaya                             __attribute__((unused)) void * restrict dst,
740410e230b6Smaya                             __attribute__((unused)) const struct GEN75_MI_WAIT_FOR_EVENT * restrict values)
740510e230b6Smaya{
740610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
740710e230b6Smaya
740810e230b6Smaya   dw[0] =
740910e230b6Smaya      __gen_uint(values->DisplayPipeAScanLineWaitEnable, 0, 0) |
741010e230b6Smaya      __gen_uint(values->DisplayPlaneAFlipPendingWaitEnable, 1, 1) |
741110e230b6Smaya      __gen_uint(values->DisplaySpriteAFlipPendingWaitEnable, 2, 2) |
741210e230b6Smaya      __gen_uint(values->DisplayPipeAVerticalBlankWaitEnable, 3, 3) |
741310e230b6Smaya      __gen_uint(values->DisplayPipeAHorizontalBlankWaitEnable, 5, 5) |
741410e230b6Smaya      __gen_uint(values->DisplayPipeBScanLineWaitEnable, 8, 8) |
741510e230b6Smaya      __gen_uint(values->DisplayPlaneBFlipPendingWaitEnable, 9, 9) |
741610e230b6Smaya      __gen_uint(values->DisplaySpriteBFlipPendingWaitEnable, 10, 10) |
741710e230b6Smaya      __gen_uint(values->DisplayPipeBVerticalBlankWaitEnable, 11, 11) |
741810e230b6Smaya      __gen_uint(values->DisplayPipeBHorizontalBlankWaitEnable, 13, 13) |
741910e230b6Smaya      __gen_uint(values->DisplayPipeCScanLineWaitEnable, 14, 14) |
742010e230b6Smaya      __gen_uint(values->DisplayPlaneCFlipPendingWaitEnable, 15, 15) |
742110e230b6Smaya      __gen_uint(values->ConditionCodeWaitSelect, 16, 19) |
742210e230b6Smaya      __gen_uint(values->DisplaySpriteCFlipPendingWaitEnable, 20, 20) |
742310e230b6Smaya      __gen_uint(values->DisplayPipeCVerticalBlankWaitEnable, 21, 21) |
742410e230b6Smaya      __gen_uint(values->DisplayPipeCHorizontalBlankWaitEnable, 22, 22) |
742510e230b6Smaya      __gen_uint(values->MICommandOpcode, 23, 28) |
742610e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
742710e230b6Smaya}
742810e230b6Smaya
742910e230b6Smaya#define GEN75_PIPELINE_SELECT_length           1
743010e230b6Smaya#define GEN75_PIPELINE_SELECT_length_bias      1
743110e230b6Smaya#define GEN75_PIPELINE_SELECT_header            \
743210e230b6Smaya   ._3DCommandSubOpcode                 =      4,  \
743310e230b6Smaya   ._3DCommandOpcode                    =      1,  \
743410e230b6Smaya   .CommandSubType                      =      1,  \
743510e230b6Smaya   .CommandType                         =      3
743610e230b6Smaya
743710e230b6Smayastruct GEN75_PIPELINE_SELECT {
743810e230b6Smaya   uint32_t                             PipelineSelection;
743910e230b6Smaya#define _3D                                      0
744010e230b6Smaya#define Media                                    1
744110e230b6Smaya#define GPGPU                                    2
744210e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
744310e230b6Smaya   uint32_t                             _3DCommandOpcode;
744410e230b6Smaya   uint32_t                             CommandSubType;
744510e230b6Smaya   uint32_t                             CommandType;
744610e230b6Smaya};
744710e230b6Smaya
744810e230b6Smayastatic inline void
744910e230b6SmayaGEN75_PIPELINE_SELECT_pack(__attribute__((unused)) __gen_user_data *data,
745010e230b6Smaya                           __attribute__((unused)) void * restrict dst,
745110e230b6Smaya                           __attribute__((unused)) const struct GEN75_PIPELINE_SELECT * restrict values)
745210e230b6Smaya{
745310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
745410e230b6Smaya
745510e230b6Smaya   dw[0] =
745610e230b6Smaya      __gen_uint(values->PipelineSelection, 0, 1) |
745710e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
745810e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
745910e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
746010e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
746110e230b6Smaya}
746210e230b6Smaya
746310e230b6Smaya#define GEN75_PIPE_CONTROL_length              5
746410e230b6Smaya#define GEN75_PIPE_CONTROL_length_bias         2
746510e230b6Smaya#define GEN75_PIPE_CONTROL_header               \
746610e230b6Smaya   .DWordLength                         =      3,  \
746710e230b6Smaya   ._3DCommandSubOpcode                 =      0,  \
746810e230b6Smaya   ._3DCommandOpcode                    =      2,  \
746910e230b6Smaya   .CommandSubType                      =      3,  \
747010e230b6Smaya   .CommandType                         =      3
747110e230b6Smaya
747210e230b6Smayastruct GEN75_PIPE_CONTROL {
747310e230b6Smaya   uint32_t                             DWordLength;
747410e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
747510e230b6Smaya   uint32_t                             _3DCommandOpcode;
747610e230b6Smaya   uint32_t                             CommandSubType;
747710e230b6Smaya   uint32_t                             CommandType;
747810e230b6Smaya   bool                                 DepthCacheFlushEnable;
747910e230b6Smaya   bool                                 StallAtPixelScoreboard;
748010e230b6Smaya   bool                                 StateCacheInvalidationEnable;
748110e230b6Smaya   bool                                 ConstantCacheInvalidationEnable;
748210e230b6Smaya   bool                                 VFCacheInvalidationEnable;
748310e230b6Smaya   bool                                 DCFlushEnable;
748410e230b6Smaya   bool                                 PipeControlFlushEnable;
748510e230b6Smaya   bool                                 NotifyEnable;
748610e230b6Smaya   bool                                 IndirectStatePointersDisable;
748710e230b6Smaya   bool                                 TextureCacheInvalidationEnable;
748810e230b6Smaya   bool                                 InstructionCacheInvalidateEnable;
748910e230b6Smaya   bool                                 RenderTargetCacheFlushEnable;
749010e230b6Smaya   bool                                 DepthStallEnable;
749110e230b6Smaya   uint32_t                             PostSyncOperation;
749210e230b6Smaya#define NoWrite                                  0
749310e230b6Smaya#define WriteImmediateData                       1
749410e230b6Smaya#define WritePSDepthCount                        2
749510e230b6Smaya#define WriteTimestamp                           3
749610e230b6Smaya   bool                                 GenericMediaStateClear;
749710e230b6Smaya   bool                                 TLBInvalidate;
749810e230b6Smaya   bool                                 GlobalSnapshotCountReset;
749910e230b6Smaya   bool                                 CommandStreamerStallEnable;
750010e230b6Smaya   uint32_t                             StoreDataIndex;
750110e230b6Smaya   uint32_t                             LRIPostSyncOperation;
750210e230b6Smaya#define NoLRIOperation                           0
750310e230b6Smaya#define MMIOWriteImmediateData                   1
750410e230b6Smaya   uint32_t                             DestinationAddressType;
750510e230b6Smaya#define DAT_PPGTT                                0
750610e230b6Smaya#define DAT_GGTT                                 1
750710e230b6Smaya   __gen_address_type                   Address;
750810e230b6Smaya   uint64_t                             ImmediateData;
750910e230b6Smaya};
751010e230b6Smaya
751110e230b6Smayastatic inline void
751210e230b6SmayaGEN75_PIPE_CONTROL_pack(__attribute__((unused)) __gen_user_data *data,
751310e230b6Smaya                        __attribute__((unused)) void * restrict dst,
751410e230b6Smaya                        __attribute__((unused)) const struct GEN75_PIPE_CONTROL * restrict values)
751510e230b6Smaya{
751610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
751710e230b6Smaya
751810e230b6Smaya   dw[0] =
751910e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
752010e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
752110e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
752210e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
752310e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
752410e230b6Smaya
752510e230b6Smaya   dw[1] =
752610e230b6Smaya      __gen_uint(values->DepthCacheFlushEnable, 0, 0) |
752710e230b6Smaya      __gen_uint(values->StallAtPixelScoreboard, 1, 1) |
752810e230b6Smaya      __gen_uint(values->StateCacheInvalidationEnable, 2, 2) |
752910e230b6Smaya      __gen_uint(values->ConstantCacheInvalidationEnable, 3, 3) |
753010e230b6Smaya      __gen_uint(values->VFCacheInvalidationEnable, 4, 4) |
753110e230b6Smaya      __gen_uint(values->DCFlushEnable, 5, 5) |
753210e230b6Smaya      __gen_uint(values->PipeControlFlushEnable, 7, 7) |
753310e230b6Smaya      __gen_uint(values->NotifyEnable, 8, 8) |
753410e230b6Smaya      __gen_uint(values->IndirectStatePointersDisable, 9, 9) |
753510e230b6Smaya      __gen_uint(values->TextureCacheInvalidationEnable, 10, 10) |
753610e230b6Smaya      __gen_uint(values->InstructionCacheInvalidateEnable, 11, 11) |
753710e230b6Smaya      __gen_uint(values->RenderTargetCacheFlushEnable, 12, 12) |
753810e230b6Smaya      __gen_uint(values->DepthStallEnable, 13, 13) |
753910e230b6Smaya      __gen_uint(values->PostSyncOperation, 14, 15) |
754010e230b6Smaya      __gen_uint(values->GenericMediaStateClear, 16, 16) |
754110e230b6Smaya      __gen_uint(values->TLBInvalidate, 18, 18) |
754210e230b6Smaya      __gen_uint(values->GlobalSnapshotCountReset, 19, 19) |
754310e230b6Smaya      __gen_uint(values->CommandStreamerStallEnable, 20, 20) |
754410e230b6Smaya      __gen_uint(values->StoreDataIndex, 21, 21) |
754510e230b6Smaya      __gen_uint(values->LRIPostSyncOperation, 23, 23) |
754610e230b6Smaya      __gen_uint(values->DestinationAddressType, 24, 24);
754710e230b6Smaya
754810e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->Address, 0);
754910e230b6Smaya
755010e230b6Smaya   const uint64_t v3 =
755110e230b6Smaya      __gen_uint(values->ImmediateData, 0, 63);
755210e230b6Smaya   dw[3] = v3;
755310e230b6Smaya   dw[4] = v3 >> 32;
755410e230b6Smaya}
755510e230b6Smaya
755610e230b6Smaya#define GEN75_STATE_BASE_ADDRESS_length       10
755710e230b6Smaya#define GEN75_STATE_BASE_ADDRESS_length_bias      2
755810e230b6Smaya#define GEN75_STATE_BASE_ADDRESS_header         \
755910e230b6Smaya   .DWordLength                         =      8,  \
756010e230b6Smaya   ._3DCommandSubOpcode                 =      1,  \
756110e230b6Smaya   ._3DCommandOpcode                    =      1,  \
756210e230b6Smaya   .CommandSubType                      =      0,  \
756310e230b6Smaya   .CommandType                         =      3
756410e230b6Smaya
756510e230b6Smayastruct GEN75_STATE_BASE_ADDRESS {
756610e230b6Smaya   uint32_t                             DWordLength;
756710e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
756810e230b6Smaya   uint32_t                             _3DCommandOpcode;
756910e230b6Smaya   uint32_t                             CommandSubType;
757010e230b6Smaya   uint32_t                             CommandType;
757110e230b6Smaya   bool                                 GeneralStateBaseAddressModifyEnable;
757210e230b6Smaya   uint32_t                             StatelessDataPortAccessMOCS;
757310e230b6Smaya   uint32_t                             GeneralStateMOCS;
757410e230b6Smaya   __gen_address_type                   GeneralStateBaseAddress;
757510e230b6Smaya   bool                                 SurfaceStateBaseAddressModifyEnable;
757610e230b6Smaya   uint32_t                             SurfaceStateMOCS;
757710e230b6Smaya   __gen_address_type                   SurfaceStateBaseAddress;
757810e230b6Smaya   bool                                 DynamicStateBaseAddressModifyEnable;
757910e230b6Smaya   uint32_t                             DynamicStateMOCS;
758010e230b6Smaya   __gen_address_type                   DynamicStateBaseAddress;
758110e230b6Smaya   bool                                 IndirectObjectBaseAddressModifyEnable;
758210e230b6Smaya   uint32_t                             IndirectObjectMOCS;
758310e230b6Smaya   __gen_address_type                   IndirectObjectBaseAddress;
758410e230b6Smaya   bool                                 InstructionBaseAddressModifyEnable;
758510e230b6Smaya   uint32_t                             InstructionMOCS;
758610e230b6Smaya   __gen_address_type                   InstructionBaseAddress;
758710e230b6Smaya   bool                                 GeneralStateAccessUpperBoundModifyEnable;
758810e230b6Smaya   __gen_address_type                   GeneralStateAccessUpperBound;
758910e230b6Smaya   bool                                 DynamicStateAccessUpperBoundModifyEnable;
759010e230b6Smaya   __gen_address_type                   DynamicStateAccessUpperBound;
759110e230b6Smaya   bool                                 IndirectObjectAccessUpperBoundModifyEnable;
759210e230b6Smaya   __gen_address_type                   IndirectObjectAccessUpperBound;
759310e230b6Smaya   bool                                 InstructionAccessUpperBoundModifyEnable;
759410e230b6Smaya   __gen_address_type                   InstructionAccessUpperBound;
759510e230b6Smaya};
759610e230b6Smaya
759710e230b6Smayastatic inline void
759810e230b6SmayaGEN75_STATE_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data,
759910e230b6Smaya                              __attribute__((unused)) void * restrict dst,
760010e230b6Smaya                              __attribute__((unused)) const struct GEN75_STATE_BASE_ADDRESS * restrict values)
760110e230b6Smaya{
760210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
760310e230b6Smaya
760410e230b6Smaya   dw[0] =
760510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
760610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
760710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
760810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
760910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
761010e230b6Smaya
761110e230b6Smaya   const uint32_t v1 =
761210e230b6Smaya      __gen_uint(values->GeneralStateBaseAddressModifyEnable, 0, 0) |
761310e230b6Smaya      __gen_uint(values->StatelessDataPortAccessMOCS, 4, 7) |
761410e230b6Smaya      __gen_uint(values->GeneralStateMOCS, 8, 11);
761510e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->GeneralStateBaseAddress, v1);
761610e230b6Smaya
761710e230b6Smaya   const uint32_t v2 =
761810e230b6Smaya      __gen_uint(values->SurfaceStateBaseAddressModifyEnable, 0, 0) |
761910e230b6Smaya      __gen_uint(values->SurfaceStateMOCS, 8, 11);
762010e230b6Smaya   dw[2] = __gen_combine_address(data, &dw[2], values->SurfaceStateBaseAddress, v2);
762110e230b6Smaya
762210e230b6Smaya   const uint32_t v3 =
762310e230b6Smaya      __gen_uint(values->DynamicStateBaseAddressModifyEnable, 0, 0) |
762410e230b6Smaya      __gen_uint(values->DynamicStateMOCS, 8, 11);
762510e230b6Smaya   dw[3] = __gen_combine_address(data, &dw[3], values->DynamicStateBaseAddress, v3);
762610e230b6Smaya
762710e230b6Smaya   const uint32_t v4 =
762810e230b6Smaya      __gen_uint(values->IndirectObjectBaseAddressModifyEnable, 0, 0) |
762910e230b6Smaya      __gen_uint(values->IndirectObjectMOCS, 8, 11);
763010e230b6Smaya   dw[4] = __gen_combine_address(data, &dw[4], values->IndirectObjectBaseAddress, v4);
763110e230b6Smaya
763210e230b6Smaya   const uint32_t v5 =
763310e230b6Smaya      __gen_uint(values->InstructionBaseAddressModifyEnable, 0, 0) |
763410e230b6Smaya      __gen_uint(values->InstructionMOCS, 8, 11);
763510e230b6Smaya   dw[5] = __gen_combine_address(data, &dw[5], values->InstructionBaseAddress, v5);
763610e230b6Smaya
763710e230b6Smaya   const uint32_t v6 =
763810e230b6Smaya      __gen_uint(values->GeneralStateAccessUpperBoundModifyEnable, 0, 0);
763910e230b6Smaya   dw[6] = __gen_combine_address(data, &dw[6], values->GeneralStateAccessUpperBound, v6);
764010e230b6Smaya
764110e230b6Smaya   const uint32_t v7 =
764210e230b6Smaya      __gen_uint(values->DynamicStateAccessUpperBoundModifyEnable, 0, 0);
764310e230b6Smaya   dw[7] = __gen_combine_address(data, &dw[7], values->DynamicStateAccessUpperBound, v7);
764410e230b6Smaya
764510e230b6Smaya   const uint32_t v8 =
764610e230b6Smaya      __gen_uint(values->IndirectObjectAccessUpperBoundModifyEnable, 0, 0);
764710e230b6Smaya   dw[8] = __gen_combine_address(data, &dw[8], values->IndirectObjectAccessUpperBound, v8);
764810e230b6Smaya
764910e230b6Smaya   const uint32_t v9 =
765010e230b6Smaya      __gen_uint(values->InstructionAccessUpperBoundModifyEnable, 0, 0);
765110e230b6Smaya   dw[9] = __gen_combine_address(data, &dw[9], values->InstructionAccessUpperBound, v9);
765210e230b6Smaya}
765310e230b6Smaya
765410e230b6Smaya#define GEN75_STATE_PREFETCH_length            2
765510e230b6Smaya#define GEN75_STATE_PREFETCH_length_bias       2
765610e230b6Smaya#define GEN75_STATE_PREFETCH_header             \
765710e230b6Smaya   .DWordLength                         =      0,  \
765810e230b6Smaya   ._3DCommandSubOpcode                 =      3,  \
765910e230b6Smaya   ._3DCommandOpcode                    =      0,  \
766010e230b6Smaya   .CommandSubType                      =      0,  \
766110e230b6Smaya   .CommandType                         =      3
766210e230b6Smaya
766310e230b6Smayastruct GEN75_STATE_PREFETCH {
766410e230b6Smaya   uint32_t                             DWordLength;
766510e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
766610e230b6Smaya   uint32_t                             _3DCommandOpcode;
766710e230b6Smaya   uint32_t                             CommandSubType;
766810e230b6Smaya   uint32_t                             CommandType;
766910e230b6Smaya   uint32_t                             PrefetchCount;
767010e230b6Smaya   __gen_address_type                   PrefetchPointer;
767110e230b6Smaya};
767210e230b6Smaya
767310e230b6Smayastatic inline void
767410e230b6SmayaGEN75_STATE_PREFETCH_pack(__attribute__((unused)) __gen_user_data *data,
767510e230b6Smaya                          __attribute__((unused)) void * restrict dst,
767610e230b6Smaya                          __attribute__((unused)) const struct GEN75_STATE_PREFETCH * restrict values)
767710e230b6Smaya{
767810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
767910e230b6Smaya
768010e230b6Smaya   dw[0] =
768110e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
768210e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
768310e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
768410e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
768510e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
768610e230b6Smaya
768710e230b6Smaya   const uint32_t v1 =
768810e230b6Smaya      __gen_uint(values->PrefetchCount, 0, 2);
768910e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->PrefetchPointer, v1);
769010e230b6Smaya}
769110e230b6Smaya
769210e230b6Smaya#define GEN75_STATE_SIP_length                 2
769310e230b6Smaya#define GEN75_STATE_SIP_length_bias            2
769410e230b6Smaya#define GEN75_STATE_SIP_header                  \
769510e230b6Smaya   .DWordLength                         =      0,  \
769610e230b6Smaya   ._3DCommandSubOpcode                 =      2,  \
769710e230b6Smaya   ._3DCommandOpcode                    =      1,  \
769810e230b6Smaya   .CommandSubType                      =      0,  \
769910e230b6Smaya   .CommandType                         =      3
770010e230b6Smaya
770110e230b6Smayastruct GEN75_STATE_SIP {
770210e230b6Smaya   uint32_t                             DWordLength;
770310e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
770410e230b6Smaya   uint32_t                             _3DCommandOpcode;
770510e230b6Smaya   uint32_t                             CommandSubType;
770610e230b6Smaya   uint32_t                             CommandType;
770710e230b6Smaya   uint64_t                             SystemInstructionPointer;
770810e230b6Smaya};
770910e230b6Smaya
771010e230b6Smayastatic inline void
771110e230b6SmayaGEN75_STATE_SIP_pack(__attribute__((unused)) __gen_user_data *data,
771210e230b6Smaya                     __attribute__((unused)) void * restrict dst,
771310e230b6Smaya                     __attribute__((unused)) const struct GEN75_STATE_SIP * restrict values)
771410e230b6Smaya{
771510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
771610e230b6Smaya
771710e230b6Smaya   dw[0] =
771810e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
771910e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
772010e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
772110e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
772210e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
772310e230b6Smaya
772410e230b6Smaya   dw[1] =
772510e230b6Smaya      __gen_offset(values->SystemInstructionPointer, 4, 31);
772610e230b6Smaya}
772710e230b6Smaya
772810e230b6Smaya#define GEN75_SWTESS_BASE_ADDRESS_length       2
772910e230b6Smaya#define GEN75_SWTESS_BASE_ADDRESS_length_bias      2
773010e230b6Smaya#define GEN75_SWTESS_BASE_ADDRESS_header        \
773110e230b6Smaya   .DWordLength                         =      0,  \
773210e230b6Smaya   ._3DCommandSubOpcode                 =      3,  \
773310e230b6Smaya   ._3DCommandOpcode                    =      1,  \
773410e230b6Smaya   .CommandSubType                      =      0,  \
773510e230b6Smaya   .CommandType                         =      3
773610e230b6Smaya
773710e230b6Smayastruct GEN75_SWTESS_BASE_ADDRESS {
773810e230b6Smaya   uint32_t                             DWordLength;
773910e230b6Smaya   uint32_t                             _3DCommandSubOpcode;
774010e230b6Smaya   uint32_t                             _3DCommandOpcode;
774110e230b6Smaya   uint32_t                             CommandSubType;
774210e230b6Smaya   uint32_t                             CommandType;
774310e230b6Smaya   uint32_t                             SWTessellationMOCS;
774410e230b6Smaya   __gen_address_type                   SWTessellationBaseAddress;
774510e230b6Smaya};
774610e230b6Smaya
774710e230b6Smayastatic inline void
774810e230b6SmayaGEN75_SWTESS_BASE_ADDRESS_pack(__attribute__((unused)) __gen_user_data *data,
774910e230b6Smaya                               __attribute__((unused)) void * restrict dst,
775010e230b6Smaya                               __attribute__((unused)) const struct GEN75_SWTESS_BASE_ADDRESS * restrict values)
775110e230b6Smaya{
775210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
775310e230b6Smaya
775410e230b6Smaya   dw[0] =
775510e230b6Smaya      __gen_uint(values->DWordLength, 0, 7) |
775610e230b6Smaya      __gen_uint(values->_3DCommandSubOpcode, 16, 23) |
775710e230b6Smaya      __gen_uint(values->_3DCommandOpcode, 24, 26) |
775810e230b6Smaya      __gen_uint(values->CommandSubType, 27, 28) |
775910e230b6Smaya      __gen_uint(values->CommandType, 29, 31);
776010e230b6Smaya
776110e230b6Smaya   const uint32_t v1 =
776210e230b6Smaya      __gen_uint(values->SWTessellationMOCS, 8, 11);
776310e230b6Smaya   dw[1] = __gen_combine_address(data, &dw[1], values->SWTessellationBaseAddress, v1);
776410e230b6Smaya}
776510e230b6Smaya
776610e230b6Smaya#define GEN75_BCS_FAULT_REG_num           0x4294
776710e230b6Smaya#define GEN75_BCS_FAULT_REG_length             1
776810e230b6Smayastruct GEN75_BCS_FAULT_REG {
776910e230b6Smaya   bool                                 ValidBit;
777010e230b6Smaya   uint32_t                             FaultType;
777110e230b6Smaya#define PageFault                                0
777210e230b6Smaya#define InvalidPDFault                           1
777310e230b6Smaya#define UnloadedPDFault                          2
777410e230b6Smaya#define InvalidandUnloadedPDfault                3
777510e230b6Smaya   uint32_t                             SRCIDofFault;
777610e230b6Smaya   uint32_t                             GTTSEL;
777710e230b6Smaya#define PPGTT                                    0
777810e230b6Smaya#define GGTT                                     1
777910e230b6Smaya   __gen_address_type                   VirtualAddressofFault;
778010e230b6Smaya};
778110e230b6Smaya
778210e230b6Smayastatic inline void
778310e230b6SmayaGEN75_BCS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data,
778410e230b6Smaya                         __attribute__((unused)) void * restrict dst,
778510e230b6Smaya                         __attribute__((unused)) const struct GEN75_BCS_FAULT_REG * restrict values)
778610e230b6Smaya{
778710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
778810e230b6Smaya
778910e230b6Smaya   const uint32_t v0 =
779010e230b6Smaya      __gen_uint(values->ValidBit, 0, 0) |
779110e230b6Smaya      __gen_uint(values->FaultType, 1, 2) |
779210e230b6Smaya      __gen_uint(values->SRCIDofFault, 3, 10) |
779310e230b6Smaya      __gen_uint(values->GTTSEL, 11, 11);
779410e230b6Smaya   dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0);
779510e230b6Smaya}
779610e230b6Smaya
779710e230b6Smaya#define GEN75_BCS_INSTDONE_num            0x2206c
779810e230b6Smaya#define GEN75_BCS_INSTDONE_length              1
779910e230b6Smayastruct GEN75_BCS_INSTDONE {
780010e230b6Smaya   bool                                 RingEnable;
780110e230b6Smaya   bool                                 BlitterIDLE;
780210e230b6Smaya   bool                                 GABIDLE;
780310e230b6Smaya   bool                                 BCSDone;
780410e230b6Smaya};
780510e230b6Smaya
780610e230b6Smayastatic inline void
780710e230b6SmayaGEN75_BCS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
780810e230b6Smaya                        __attribute__((unused)) void * restrict dst,
780910e230b6Smaya                        __attribute__((unused)) const struct GEN75_BCS_INSTDONE * restrict values)
781010e230b6Smaya{
781110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
781210e230b6Smaya
781310e230b6Smaya   dw[0] =
781410e230b6Smaya      __gen_uint(values->RingEnable, 0, 0) |
781510e230b6Smaya      __gen_uint(values->BlitterIDLE, 1, 1) |
781610e230b6Smaya      __gen_uint(values->GABIDLE, 2, 2) |
781710e230b6Smaya      __gen_uint(values->BCSDone, 3, 3);
781810e230b6Smaya}
781910e230b6Smaya
782010e230b6Smaya#define GEN75_BCS_RING_BUFFER_CTL_num     0x2203c
782110e230b6Smaya#define GEN75_BCS_RING_BUFFER_CTL_length       1
782210e230b6Smayastruct GEN75_BCS_RING_BUFFER_CTL {
782310e230b6Smaya   bool                                 RingBufferEnable;
782410e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
782510e230b6Smaya#define MI_AUTOREPORT_OFF                        0
782610e230b6Smaya#define MI_AUTOREPORT_64KB                       1
782710e230b6Smaya#define MI_AUTOREPORT_4KB                        2
782810e230b6Smaya#define MI_AUTOREPORT_128KB                      3
782910e230b6Smaya   bool                                 DisableRegisterAccesses;
783010e230b6Smaya   bool                                 SemaphoreWait;
783110e230b6Smaya   bool                                 RBWait;
783210e230b6Smaya   uint32_t                             BufferLengthinpages1;
783310e230b6Smaya};
783410e230b6Smaya
783510e230b6Smayastatic inline void
783610e230b6SmayaGEN75_BCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
783710e230b6Smaya                               __attribute__((unused)) void * restrict dst,
783810e230b6Smaya                               __attribute__((unused)) const struct GEN75_BCS_RING_BUFFER_CTL * restrict values)
783910e230b6Smaya{
784010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
784110e230b6Smaya
784210e230b6Smaya   dw[0] =
784310e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
784410e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
784510e230b6Smaya      __gen_uint(values->DisableRegisterAccesses, 8, 8) |
784610e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
784710e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
784810e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
784910e230b6Smaya}
785010e230b6Smaya
785110e230b6Smaya#define GEN75_CHICKEN3_num                0xe49c
785210e230b6Smaya#define GEN75_CHICKEN3_length                  1
785310e230b6Smayastruct GEN75_CHICKEN3 {
785410e230b6Smaya   uint32_t                             L3AtomicDisable;
785510e230b6Smaya   uint32_t                             L3AtomicDisableMask;
785610e230b6Smaya};
785710e230b6Smaya
785810e230b6Smayastatic inline void
785910e230b6SmayaGEN75_CHICKEN3_pack(__attribute__((unused)) __gen_user_data *data,
786010e230b6Smaya                    __attribute__((unused)) void * restrict dst,
786110e230b6Smaya                    __attribute__((unused)) const struct GEN75_CHICKEN3 * restrict values)
786210e230b6Smaya{
786310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
786410e230b6Smaya
786510e230b6Smaya   dw[0] =
786610e230b6Smaya      __gen_uint(values->L3AtomicDisable, 6, 6) |
786710e230b6Smaya      __gen_uint(values->L3AtomicDisableMask, 22, 22);
786810e230b6Smaya}
786910e230b6Smaya
787010e230b6Smaya#define GEN75_CL_INVOCATION_COUNT_num     0x2338
787110e230b6Smaya#define GEN75_CL_INVOCATION_COUNT_length       2
787210e230b6Smayastruct GEN75_CL_INVOCATION_COUNT {
787310e230b6Smaya   uint64_t                             CLInvocationCountReport;
787410e230b6Smaya};
787510e230b6Smaya
787610e230b6Smayastatic inline void
787710e230b6SmayaGEN75_CL_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
787810e230b6Smaya                               __attribute__((unused)) void * restrict dst,
787910e230b6Smaya                               __attribute__((unused)) const struct GEN75_CL_INVOCATION_COUNT * restrict values)
788010e230b6Smaya{
788110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
788210e230b6Smaya
788310e230b6Smaya   const uint64_t v0 =
788410e230b6Smaya      __gen_uint(values->CLInvocationCountReport, 0, 63);
788510e230b6Smaya   dw[0] = v0;
788610e230b6Smaya   dw[1] = v0 >> 32;
788710e230b6Smaya}
788810e230b6Smaya
788910e230b6Smaya#define GEN75_CL_PRIMITIVES_COUNT_num     0x2340
789010e230b6Smaya#define GEN75_CL_PRIMITIVES_COUNT_length       2
789110e230b6Smayastruct GEN75_CL_PRIMITIVES_COUNT {
789210e230b6Smaya   uint64_t                             CLPrimitivesCountReport;
789310e230b6Smaya};
789410e230b6Smaya
789510e230b6Smayastatic inline void
789610e230b6SmayaGEN75_CL_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
789710e230b6Smaya                               __attribute__((unused)) void * restrict dst,
789810e230b6Smaya                               __attribute__((unused)) const struct GEN75_CL_PRIMITIVES_COUNT * restrict values)
789910e230b6Smaya{
790010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
790110e230b6Smaya
790210e230b6Smaya   const uint64_t v0 =
790310e230b6Smaya      __gen_uint(values->CLPrimitivesCountReport, 0, 63);
790410e230b6Smaya   dw[0] = v0;
790510e230b6Smaya   dw[1] = v0 >> 32;
790610e230b6Smaya}
790710e230b6Smaya
790810e230b6Smaya#define GEN75_CS_INVOCATION_COUNT_num     0x2290
790910e230b6Smaya#define GEN75_CS_INVOCATION_COUNT_length       2
791010e230b6Smayastruct GEN75_CS_INVOCATION_COUNT {
791110e230b6Smaya   uint64_t                             CSInvocationCountReport;
791210e230b6Smaya};
791310e230b6Smaya
791410e230b6Smayastatic inline void
791510e230b6SmayaGEN75_CS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
791610e230b6Smaya                               __attribute__((unused)) void * restrict dst,
791710e230b6Smaya                               __attribute__((unused)) const struct GEN75_CS_INVOCATION_COUNT * restrict values)
791810e230b6Smaya{
791910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
792010e230b6Smaya
792110e230b6Smaya   const uint64_t v0 =
792210e230b6Smaya      __gen_uint(values->CSInvocationCountReport, 0, 63);
792310e230b6Smaya   dw[0] = v0;
792410e230b6Smaya   dw[1] = v0 >> 32;
792510e230b6Smaya}
792610e230b6Smaya
792710e230b6Smaya#define GEN75_DS_INVOCATION_COUNT_num     0x2308
792810e230b6Smaya#define GEN75_DS_INVOCATION_COUNT_length       2
792910e230b6Smayastruct GEN75_DS_INVOCATION_COUNT {
793010e230b6Smaya   uint64_t                             DSInvocationCountReport;
793110e230b6Smaya};
793210e230b6Smaya
793310e230b6Smayastatic inline void
793410e230b6SmayaGEN75_DS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
793510e230b6Smaya                               __attribute__((unused)) void * restrict dst,
793610e230b6Smaya                               __attribute__((unused)) const struct GEN75_DS_INVOCATION_COUNT * restrict values)
793710e230b6Smaya{
793810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
793910e230b6Smaya
794010e230b6Smaya   const uint64_t v0 =
794110e230b6Smaya      __gen_uint(values->DSInvocationCountReport, 0, 63);
794210e230b6Smaya   dw[0] = v0;
794310e230b6Smaya   dw[1] = v0 >> 32;
794410e230b6Smaya}
794510e230b6Smaya
794610e230b6Smaya#define GEN75_ERR_INT_num                 0x44040
794710e230b6Smaya#define GEN75_ERR_INT_length                   1
794810e230b6Smayastruct GEN75_ERR_INT {
794910e230b6Smaya   bool                                 PrimaryAGTTFaultStatus;
795010e230b6Smaya   bool                                 PrimaryBGTTFaultStatus;
795110e230b6Smaya   bool                                 SpriteAGTTFaultStatus;
795210e230b6Smaya   bool                                 SpriteBGTTFaultStatus;
795310e230b6Smaya   bool                                 CursorAGTTFaultStatus;
795410e230b6Smaya   bool                                 CursorBGTTFaultStatus;
795510e230b6Smaya   bool                                 Invalidpagetableentrydata;
795610e230b6Smaya   bool                                 InvalidGTTpagetableentry;
795710e230b6Smaya};
795810e230b6Smaya
795910e230b6Smayastatic inline void
796010e230b6SmayaGEN75_ERR_INT_pack(__attribute__((unused)) __gen_user_data *data,
796110e230b6Smaya                   __attribute__((unused)) void * restrict dst,
796210e230b6Smaya                   __attribute__((unused)) const struct GEN75_ERR_INT * restrict values)
796310e230b6Smaya{
796410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
796510e230b6Smaya
796610e230b6Smaya   dw[0] =
796710e230b6Smaya      __gen_uint(values->PrimaryAGTTFaultStatus, 0, 0) |
796810e230b6Smaya      __gen_uint(values->PrimaryBGTTFaultStatus, 1, 1) |
796910e230b6Smaya      __gen_uint(values->SpriteAGTTFaultStatus, 2, 2) |
797010e230b6Smaya      __gen_uint(values->SpriteBGTTFaultStatus, 3, 3) |
797110e230b6Smaya      __gen_uint(values->CursorAGTTFaultStatus, 4, 4) |
797210e230b6Smaya      __gen_uint(values->CursorBGTTFaultStatus, 5, 5) |
797310e230b6Smaya      __gen_uint(values->Invalidpagetableentrydata, 6, 6) |
797410e230b6Smaya      __gen_uint(values->InvalidGTTpagetableentry, 7, 7);
797510e230b6Smaya}
797610e230b6Smaya
797710e230b6Smaya#define GEN75_GFX_ARB_ERROR_RPT_num       0x40a0
797810e230b6Smaya#define GEN75_GFX_ARB_ERROR_RPT_length         1
797910e230b6Smayastruct GEN75_GFX_ARB_ERROR_RPT {
798010e230b6Smaya   bool                                 TLBPageFaultError;
798110e230b6Smaya   bool                                 ContextPageFaultError;
798210e230b6Smaya   bool                                 InvalidPageDirectoryentryerror;
798310e230b6Smaya   bool                                 HardwareStatusPageFaultError;
798410e230b6Smaya   bool                                 TLBPageVTDTranslationError;
798510e230b6Smaya   bool                                 ContextPageVTDTranslationError;
798610e230b6Smaya   bool                                 PageDirectoryEntryVTDTranslationError;
798710e230b6Smaya   bool                                 HardwareStatusPageVTDTranslationError;
798810e230b6Smaya   bool                                 UnloadedPDError;
798910e230b6Smaya   uint32_t                             PendingPageFaults;
799010e230b6Smaya};
799110e230b6Smaya
799210e230b6Smayastatic inline void
799310e230b6SmayaGEN75_GFX_ARB_ERROR_RPT_pack(__attribute__((unused)) __gen_user_data *data,
799410e230b6Smaya                             __attribute__((unused)) void * restrict dst,
799510e230b6Smaya                             __attribute__((unused)) const struct GEN75_GFX_ARB_ERROR_RPT * restrict values)
799610e230b6Smaya{
799710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
799810e230b6Smaya
799910e230b6Smaya   dw[0] =
800010e230b6Smaya      __gen_uint(values->TLBPageFaultError, 0, 0) |
800110e230b6Smaya      __gen_uint(values->ContextPageFaultError, 1, 1) |
800210e230b6Smaya      __gen_uint(values->InvalidPageDirectoryentryerror, 2, 2) |
800310e230b6Smaya      __gen_uint(values->HardwareStatusPageFaultError, 3, 3) |
800410e230b6Smaya      __gen_uint(values->TLBPageVTDTranslationError, 4, 4) |
800510e230b6Smaya      __gen_uint(values->ContextPageVTDTranslationError, 5, 5) |
800610e230b6Smaya      __gen_uint(values->PageDirectoryEntryVTDTranslationError, 6, 6) |
800710e230b6Smaya      __gen_uint(values->HardwareStatusPageVTDTranslationError, 7, 7) |
800810e230b6Smaya      __gen_uint(values->UnloadedPDError, 8, 8) |
800910e230b6Smaya      __gen_uint(values->PendingPageFaults, 9, 15);
801010e230b6Smaya}
801110e230b6Smaya
801210e230b6Smaya#define GEN75_GS_INVOCATION_COUNT_num     0x2328
801310e230b6Smaya#define GEN75_GS_INVOCATION_COUNT_length       2
801410e230b6Smayastruct GEN75_GS_INVOCATION_COUNT {
801510e230b6Smaya   uint64_t                             GSInvocationCountReport;
801610e230b6Smaya};
801710e230b6Smaya
801810e230b6Smayastatic inline void
801910e230b6SmayaGEN75_GS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
802010e230b6Smaya                               __attribute__((unused)) void * restrict dst,
802110e230b6Smaya                               __attribute__((unused)) const struct GEN75_GS_INVOCATION_COUNT * restrict values)
802210e230b6Smaya{
802310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
802410e230b6Smaya
802510e230b6Smaya   const uint64_t v0 =
802610e230b6Smaya      __gen_uint(values->GSInvocationCountReport, 0, 63);
802710e230b6Smaya   dw[0] = v0;
802810e230b6Smaya   dw[1] = v0 >> 32;
802910e230b6Smaya}
803010e230b6Smaya
803110e230b6Smaya#define GEN75_GS_PRIMITIVES_COUNT_num     0x2330
803210e230b6Smaya#define GEN75_GS_PRIMITIVES_COUNT_length       2
803310e230b6Smayastruct GEN75_GS_PRIMITIVES_COUNT {
803410e230b6Smaya   uint64_t                             GSPrimitivesCountReport;
803510e230b6Smaya};
803610e230b6Smaya
803710e230b6Smayastatic inline void
803810e230b6SmayaGEN75_GS_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
803910e230b6Smaya                               __attribute__((unused)) void * restrict dst,
804010e230b6Smaya                               __attribute__((unused)) const struct GEN75_GS_PRIMITIVES_COUNT * restrict values)
804110e230b6Smaya{
804210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
804310e230b6Smaya
804410e230b6Smaya   const uint64_t v0 =
804510e230b6Smaya      __gen_uint(values->GSPrimitivesCountReport, 0, 63);
804610e230b6Smaya   dw[0] = v0;
804710e230b6Smaya   dw[1] = v0 >> 32;
804810e230b6Smaya}
804910e230b6Smaya
805010e230b6Smaya#define GEN75_HS_INVOCATION_COUNT_num     0x2300
805110e230b6Smaya#define GEN75_HS_INVOCATION_COUNT_length       2
805210e230b6Smayastruct GEN75_HS_INVOCATION_COUNT {
805310e230b6Smaya   uint64_t                             HSInvocationCountReport;
805410e230b6Smaya};
805510e230b6Smaya
805610e230b6Smayastatic inline void
805710e230b6SmayaGEN75_HS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
805810e230b6Smaya                               __attribute__((unused)) void * restrict dst,
805910e230b6Smaya                               __attribute__((unused)) const struct GEN75_HS_INVOCATION_COUNT * restrict values)
806010e230b6Smaya{
806110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
806210e230b6Smaya
806310e230b6Smaya   const uint64_t v0 =
806410e230b6Smaya      __gen_uint(values->HSInvocationCountReport, 0, 63);
806510e230b6Smaya   dw[0] = v0;
806610e230b6Smaya   dw[1] = v0 >> 32;
806710e230b6Smaya}
806810e230b6Smaya
806910e230b6Smaya#define GEN75_IA_PRIMITIVES_COUNT_num     0x2318
807010e230b6Smaya#define GEN75_IA_PRIMITIVES_COUNT_length       2
807110e230b6Smayastruct GEN75_IA_PRIMITIVES_COUNT {
807210e230b6Smaya   uint64_t                             IAPrimitivesCountReport;
807310e230b6Smaya};
807410e230b6Smaya
807510e230b6Smayastatic inline void
807610e230b6SmayaGEN75_IA_PRIMITIVES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
807710e230b6Smaya                               __attribute__((unused)) void * restrict dst,
807810e230b6Smaya                               __attribute__((unused)) const struct GEN75_IA_PRIMITIVES_COUNT * restrict values)
807910e230b6Smaya{
808010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
808110e230b6Smaya
808210e230b6Smaya   const uint64_t v0 =
808310e230b6Smaya      __gen_uint(values->IAPrimitivesCountReport, 0, 63);
808410e230b6Smaya   dw[0] = v0;
808510e230b6Smaya   dw[1] = v0 >> 32;
808610e230b6Smaya}
808710e230b6Smaya
808810e230b6Smaya#define GEN75_IA_VERTICES_COUNT_num       0x2310
808910e230b6Smaya#define GEN75_IA_VERTICES_COUNT_length         2
809010e230b6Smayastruct GEN75_IA_VERTICES_COUNT {
809110e230b6Smaya   uint64_t                             IAVerticesCountReport;
809210e230b6Smaya};
809310e230b6Smaya
809410e230b6Smayastatic inline void
809510e230b6SmayaGEN75_IA_VERTICES_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
809610e230b6Smaya                             __attribute__((unused)) void * restrict dst,
809710e230b6Smaya                             __attribute__((unused)) const struct GEN75_IA_VERTICES_COUNT * restrict values)
809810e230b6Smaya{
809910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
810010e230b6Smaya
810110e230b6Smaya   const uint64_t v0 =
810210e230b6Smaya      __gen_uint(values->IAVerticesCountReport, 0, 63);
810310e230b6Smaya   dw[0] = v0;
810410e230b6Smaya   dw[1] = v0 >> 32;
810510e230b6Smaya}
810610e230b6Smaya
810710e230b6Smaya#define GEN75_INSTDONE_1_num              0x206c
810810e230b6Smaya#define GEN75_INSTDONE_1_length                1
810910e230b6Smayastruct GEN75_INSTDONE_1 {
811010e230b6Smaya   bool                                 PRB0RingEnable;
811110e230b6Smaya   bool                                 VFGDone;
811210e230b6Smaya   bool                                 VSDone;
811310e230b6Smaya   bool                                 HSDone;
811410e230b6Smaya   bool                                 TEDone;
811510e230b6Smaya   bool                                 DSDone;
811610e230b6Smaya   bool                                 GSDone;
811710e230b6Smaya   bool                                 SOLDone;
811810e230b6Smaya   bool                                 CLDone;
811910e230b6Smaya   bool                                 SFDone;
812010e230b6Smaya   bool                                 TDGDone;
812110e230b6Smaya   bool                                 URBMDone;
812210e230b6Smaya   bool                                 SVGDone;
812310e230b6Smaya   bool                                 GAFSDone;
812410e230b6Smaya   bool                                 VFEDone;
812510e230b6Smaya   bool                                 TSGDone;
812610e230b6Smaya   bool                                 GAFMDone;
812710e230b6Smaya   bool                                 GAMDone;
812810e230b6Smaya   bool                                 RSDone;
812910e230b6Smaya   bool                                 CSDone;
813010e230b6Smaya   bool                                 SDEDone;
813110e230b6Smaya   bool                                 RCCFBCCSDone;
813210e230b6Smaya};
813310e230b6Smaya
813410e230b6Smayastatic inline void
813510e230b6SmayaGEN75_INSTDONE_1_pack(__attribute__((unused)) __gen_user_data *data,
813610e230b6Smaya                      __attribute__((unused)) void * restrict dst,
813710e230b6Smaya                      __attribute__((unused)) const struct GEN75_INSTDONE_1 * restrict values)
813810e230b6Smaya{
813910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
814010e230b6Smaya
814110e230b6Smaya   dw[0] =
814210e230b6Smaya      __gen_uint(values->PRB0RingEnable, 0, 0) |
814310e230b6Smaya      __gen_uint(values->VFGDone, 1, 1) |
814410e230b6Smaya      __gen_uint(values->VSDone, 2, 2) |
814510e230b6Smaya      __gen_uint(values->HSDone, 3, 3) |
814610e230b6Smaya      __gen_uint(values->TEDone, 4, 4) |
814710e230b6Smaya      __gen_uint(values->DSDone, 5, 5) |
814810e230b6Smaya      __gen_uint(values->GSDone, 6, 6) |
814910e230b6Smaya      __gen_uint(values->SOLDone, 7, 7) |
815010e230b6Smaya      __gen_uint(values->CLDone, 8, 8) |
815110e230b6Smaya      __gen_uint(values->SFDone, 9, 9) |
815210e230b6Smaya      __gen_uint(values->TDGDone, 12, 12) |
815310e230b6Smaya      __gen_uint(values->URBMDone, 13, 13) |
815410e230b6Smaya      __gen_uint(values->SVGDone, 14, 14) |
815510e230b6Smaya      __gen_uint(values->GAFSDone, 15, 15) |
815610e230b6Smaya      __gen_uint(values->VFEDone, 16, 16) |
815710e230b6Smaya      __gen_uint(values->TSGDone, 17, 17) |
815810e230b6Smaya      __gen_uint(values->GAFMDone, 18, 18) |
815910e230b6Smaya      __gen_uint(values->GAMDone, 19, 19) |
816010e230b6Smaya      __gen_uint(values->RSDone, 20, 20) |
816110e230b6Smaya      __gen_uint(values->CSDone, 21, 21) |
816210e230b6Smaya      __gen_uint(values->SDEDone, 22, 22) |
816310e230b6Smaya      __gen_uint(values->RCCFBCCSDone, 23, 23);
816410e230b6Smaya}
816510e230b6Smaya
816610e230b6Smaya#define GEN75_INSTPM_num                  0x20c0
816710e230b6Smaya#define GEN75_INSTPM_length                    1
816810e230b6Smayastruct GEN75_INSTPM {
816910e230b6Smaya   bool                                 _3DStateInstructionDisable;
817010e230b6Smaya   bool                                 _3DRenderingInstructionDisable;
817110e230b6Smaya   bool                                 MediaInstructionDisable;
817210e230b6Smaya   bool                                 CONSTANT_BUFFERAddressOffsetDisable;
817310e230b6Smaya   bool                                 _3DStateInstructionDisableMask;
817410e230b6Smaya   bool                                 _3DRenderingInstructionDisableMask;
817510e230b6Smaya   bool                                 MediaInstructionDisableMask;
817610e230b6Smaya   bool                                 CONSTANT_BUFFERAddressOffsetDisableMask;
817710e230b6Smaya};
817810e230b6Smaya
817910e230b6Smayastatic inline void
818010e230b6SmayaGEN75_INSTPM_pack(__attribute__((unused)) __gen_user_data *data,
818110e230b6Smaya                  __attribute__((unused)) void * restrict dst,
818210e230b6Smaya                  __attribute__((unused)) const struct GEN75_INSTPM * restrict values)
818310e230b6Smaya{
818410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
818510e230b6Smaya
818610e230b6Smaya   dw[0] =
818710e230b6Smaya      __gen_uint(values->_3DStateInstructionDisable, 1, 1) |
818810e230b6Smaya      __gen_uint(values->_3DRenderingInstructionDisable, 2, 2) |
818910e230b6Smaya      __gen_uint(values->MediaInstructionDisable, 3, 3) |
819010e230b6Smaya      __gen_uint(values->CONSTANT_BUFFERAddressOffsetDisable, 6, 6) |
819110e230b6Smaya      __gen_uint(values->_3DStateInstructionDisableMask, 17, 17) |
819210e230b6Smaya      __gen_uint(values->_3DRenderingInstructionDisableMask, 18, 18) |
819310e230b6Smaya      __gen_uint(values->MediaInstructionDisableMask, 19, 19) |
819410e230b6Smaya      __gen_uint(values->CONSTANT_BUFFERAddressOffsetDisableMask, 22, 22);
819510e230b6Smaya}
819610e230b6Smaya
819710e230b6Smaya#define GEN75_L3CNTLREG2_num              0xb020
819810e230b6Smaya#define GEN75_L3CNTLREG2_length                1
819910e230b6Smayastruct GEN75_L3CNTLREG2 {
820010e230b6Smaya   uint32_t                             SLMEnable;
820110e230b6Smaya   uint32_t                             URBAllocation;
820210e230b6Smaya   uint32_t                             URBLowBandwidth;
820310e230b6Smaya   uint32_t                             ROAllocation;
820410e230b6Smaya   uint32_t                             ROLowBandwidth;
820510e230b6Smaya   uint32_t                             DCAllocation;
820610e230b6Smaya   uint32_t                             DCLowBandwidth;
820710e230b6Smaya};
820810e230b6Smaya
820910e230b6Smayastatic inline void
821010e230b6SmayaGEN75_L3CNTLREG2_pack(__attribute__((unused)) __gen_user_data *data,
821110e230b6Smaya                      __attribute__((unused)) void * restrict dst,
821210e230b6Smaya                      __attribute__((unused)) const struct GEN75_L3CNTLREG2 * restrict values)
821310e230b6Smaya{
821410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
821510e230b6Smaya
821610e230b6Smaya   dw[0] =
821710e230b6Smaya      __gen_uint(values->SLMEnable, 0, 0) |
821810e230b6Smaya      __gen_uint(values->URBAllocation, 1, 6) |
821910e230b6Smaya      __gen_uint(values->URBLowBandwidth, 7, 7) |
822010e230b6Smaya      __gen_uint(values->ROAllocation, 14, 19) |
822110e230b6Smaya      __gen_uint(values->ROLowBandwidth, 20, 20) |
822210e230b6Smaya      __gen_uint(values->DCAllocation, 21, 26) |
822310e230b6Smaya      __gen_uint(values->DCLowBandwidth, 27, 27);
822410e230b6Smaya}
822510e230b6Smaya
822610e230b6Smaya#define GEN75_L3CNTLREG3_num              0xb024
822710e230b6Smaya#define GEN75_L3CNTLREG3_length                1
822810e230b6Smayastruct GEN75_L3CNTLREG3 {
822910e230b6Smaya   uint32_t                             ISAllocation;
823010e230b6Smaya   uint32_t                             ISLowBandwidth;
823110e230b6Smaya   uint32_t                             CAllocation;
823210e230b6Smaya   uint32_t                             CLowBandwidth;
823310e230b6Smaya   uint32_t                             TAllocation;
823410e230b6Smaya   uint32_t                             TLowBandwidth;
823510e230b6Smaya};
823610e230b6Smaya
823710e230b6Smayastatic inline void
823810e230b6SmayaGEN75_L3CNTLREG3_pack(__attribute__((unused)) __gen_user_data *data,
823910e230b6Smaya                      __attribute__((unused)) void * restrict dst,
824010e230b6Smaya                      __attribute__((unused)) const struct GEN75_L3CNTLREG3 * restrict values)
824110e230b6Smaya{
824210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
824310e230b6Smaya
824410e230b6Smaya   dw[0] =
824510e230b6Smaya      __gen_uint(values->ISAllocation, 1, 6) |
824610e230b6Smaya      __gen_uint(values->ISLowBandwidth, 7, 7) |
824710e230b6Smaya      __gen_uint(values->CAllocation, 8, 13) |
824810e230b6Smaya      __gen_uint(values->CLowBandwidth, 14, 14) |
824910e230b6Smaya      __gen_uint(values->TAllocation, 15, 20) |
825010e230b6Smaya      __gen_uint(values->TLowBandwidth, 21, 21);
825110e230b6Smaya}
825210e230b6Smaya
825310e230b6Smaya#define GEN75_L3SQCREG1_num               0xb010
825410e230b6Smaya#define GEN75_L3SQCREG1_length                 1
825510e230b6Smayastruct GEN75_L3SQCREG1 {
825610e230b6Smaya   uint32_t                             ConvertDC_UC;
825710e230b6Smaya   uint32_t                             ConvertIS_UC;
825810e230b6Smaya   uint32_t                             ConvertC_UC;
825910e230b6Smaya   uint32_t                             ConvertT_UC;
826010e230b6Smaya};
826110e230b6Smaya
826210e230b6Smayastatic inline void
826310e230b6SmayaGEN75_L3SQCREG1_pack(__attribute__((unused)) __gen_user_data *data,
826410e230b6Smaya                     __attribute__((unused)) void * restrict dst,
826510e230b6Smaya                     __attribute__((unused)) const struct GEN75_L3SQCREG1 * restrict values)
826610e230b6Smaya{
826710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
826810e230b6Smaya
826910e230b6Smaya   dw[0] =
827010e230b6Smaya      __gen_uint(values->ConvertDC_UC, 24, 24) |
827110e230b6Smaya      __gen_uint(values->ConvertIS_UC, 25, 25) |
827210e230b6Smaya      __gen_uint(values->ConvertC_UC, 26, 26) |
827310e230b6Smaya      __gen_uint(values->ConvertT_UC, 27, 27);
827410e230b6Smaya}
827510e230b6Smaya
827610e230b6Smaya#define GEN75_PS_INVOCATION_COUNT_num     0x2348
827710e230b6Smaya#define GEN75_PS_INVOCATION_COUNT_length       2
827810e230b6Smayastruct GEN75_PS_INVOCATION_COUNT {
827910e230b6Smaya   uint64_t                             PSInvocationCountReport;
828010e230b6Smaya};
828110e230b6Smaya
828210e230b6Smayastatic inline void
828310e230b6SmayaGEN75_PS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
828410e230b6Smaya                               __attribute__((unused)) void * restrict dst,
828510e230b6Smaya                               __attribute__((unused)) const struct GEN75_PS_INVOCATION_COUNT * restrict values)
828610e230b6Smaya{
828710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
828810e230b6Smaya
828910e230b6Smaya   const uint64_t v0 =
829010e230b6Smaya      __gen_uint(values->PSInvocationCountReport, 0, 63);
829110e230b6Smaya   dw[0] = v0;
829210e230b6Smaya   dw[1] = v0 >> 32;
829310e230b6Smaya}
829410e230b6Smaya
829510e230b6Smaya#define GEN75_RCS_FAULT_REG_num           0x4094
829610e230b6Smaya#define GEN75_RCS_FAULT_REG_length             1
829710e230b6Smayastruct GEN75_RCS_FAULT_REG {
829810e230b6Smaya   bool                                 ValidBit;
829910e230b6Smaya   uint32_t                             FaultType;
830010e230b6Smaya#define PageFault                                0
830110e230b6Smaya#define InvalidPDFault                           1
830210e230b6Smaya#define UnloadedPDFault                          2
830310e230b6Smaya#define InvalidandUnloadedPDfault                3
830410e230b6Smaya   uint32_t                             SRCIDofFault;
830510e230b6Smaya   uint32_t                             GTTSEL;
830610e230b6Smaya#define PPGTT                                    0
830710e230b6Smaya#define GGTT                                     1
830810e230b6Smaya   __gen_address_type                   VirtualAddressofFault;
830910e230b6Smaya};
831010e230b6Smaya
831110e230b6Smayastatic inline void
831210e230b6SmayaGEN75_RCS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data,
831310e230b6Smaya                         __attribute__((unused)) void * restrict dst,
831410e230b6Smaya                         __attribute__((unused)) const struct GEN75_RCS_FAULT_REG * restrict values)
831510e230b6Smaya{
831610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
831710e230b6Smaya
831810e230b6Smaya   const uint32_t v0 =
831910e230b6Smaya      __gen_uint(values->ValidBit, 0, 0) |
832010e230b6Smaya      __gen_uint(values->FaultType, 1, 2) |
832110e230b6Smaya      __gen_uint(values->SRCIDofFault, 3, 10) |
832210e230b6Smaya      __gen_uint(values->GTTSEL, 11, 11);
832310e230b6Smaya   dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0);
832410e230b6Smaya}
832510e230b6Smaya
832610e230b6Smaya#define GEN75_RCS_RING_BUFFER_CTL_num     0x203c
832710e230b6Smaya#define GEN75_RCS_RING_BUFFER_CTL_length       1
832810e230b6Smayastruct GEN75_RCS_RING_BUFFER_CTL {
832910e230b6Smaya   bool                                 RingBufferEnable;
833010e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
833110e230b6Smaya#define MI_AUTOREPORT_OFF                        0
833210e230b6Smaya#define MI_AUTOREPORT_64KBMI_AUTOREPORT_4KB      1
833310e230b6Smaya#define MI_AUTOREPORT_128KB                      3
833410e230b6Smaya   bool                                 SemaphoreWait;
833510e230b6Smaya   bool                                 RBWait;
833610e230b6Smaya   uint32_t                             BufferLengthinpages1;
833710e230b6Smaya};
833810e230b6Smaya
833910e230b6Smayastatic inline void
834010e230b6SmayaGEN75_RCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
834110e230b6Smaya                               __attribute__((unused)) void * restrict dst,
834210e230b6Smaya                               __attribute__((unused)) const struct GEN75_RCS_RING_BUFFER_CTL * restrict values)
834310e230b6Smaya{
834410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
834510e230b6Smaya
834610e230b6Smaya   dw[0] =
834710e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
834810e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
834910e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
835010e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
835110e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
835210e230b6Smaya}
835310e230b6Smaya
835410e230b6Smaya#define GEN75_ROW_INSTDONE_num            0xe164
835510e230b6Smaya#define GEN75_ROW_INSTDONE_length              1
835610e230b6Smayastruct GEN75_ROW_INSTDONE {
835710e230b6Smaya   bool                                 BCDone;
835810e230b6Smaya   bool                                 PSDDone;
835910e230b6Smaya   bool                                 DCDone;
836010e230b6Smaya   bool                                 DAPRDone;
836110e230b6Smaya   bool                                 TDLDone;
836210e230b6Smaya   bool                                 GWDone;
836310e230b6Smaya   bool                                 ICDone;
836410e230b6Smaya   bool                                 MA0Done;
836510e230b6Smaya   bool                                 EU00DoneSS0;
836610e230b6Smaya   bool                                 EU01DoneSS0;
836710e230b6Smaya   bool                                 EU02DoneSS0;
836810e230b6Smaya   bool                                 EU03DoneSS0;
836910e230b6Smaya   bool                                 EU04DoneSS0;
837010e230b6Smaya   bool                                 EU10DoneSS0;
837110e230b6Smaya   bool                                 EU11DoneSS0;
837210e230b6Smaya   bool                                 EU12DoneSS0;
837310e230b6Smaya   bool                                 EU13DoneSS0;
837410e230b6Smaya   bool                                 EU14DoneSS0;
837510e230b6Smaya   bool                                 MA1DoneSS0;
837610e230b6Smaya};
837710e230b6Smaya
837810e230b6Smayastatic inline void
837910e230b6SmayaGEN75_ROW_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
838010e230b6Smaya                        __attribute__((unused)) void * restrict dst,
838110e230b6Smaya                        __attribute__((unused)) const struct GEN75_ROW_INSTDONE * restrict values)
838210e230b6Smaya{
838310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
838410e230b6Smaya
838510e230b6Smaya   dw[0] =
838610e230b6Smaya      __gen_uint(values->BCDone, 0, 0) |
838710e230b6Smaya      __gen_uint(values->PSDDone, 1, 1) |
838810e230b6Smaya      __gen_uint(values->DCDone, 2, 2) |
838910e230b6Smaya      __gen_uint(values->DAPRDone, 3, 3) |
839010e230b6Smaya      __gen_uint(values->TDLDone, 6, 6) |
839110e230b6Smaya      __gen_uint(values->GWDone, 8, 8) |
839210e230b6Smaya      __gen_uint(values->ICDone, 12, 12) |
839310e230b6Smaya      __gen_uint(values->MA0Done, 15, 15) |
839410e230b6Smaya      __gen_uint(values->EU00DoneSS0, 16, 16) |
839510e230b6Smaya      __gen_uint(values->EU01DoneSS0, 17, 17) |
839610e230b6Smaya      __gen_uint(values->EU02DoneSS0, 18, 18) |
839710e230b6Smaya      __gen_uint(values->EU03DoneSS0, 19, 19) |
839810e230b6Smaya      __gen_uint(values->EU04DoneSS0, 20, 20) |
839910e230b6Smaya      __gen_uint(values->EU10DoneSS0, 21, 21) |
840010e230b6Smaya      __gen_uint(values->EU11DoneSS0, 22, 22) |
840110e230b6Smaya      __gen_uint(values->EU12DoneSS0, 23, 23) |
840210e230b6Smaya      __gen_uint(values->EU13DoneSS0, 24, 24) |
840310e230b6Smaya      __gen_uint(values->EU14DoneSS0, 25, 25) |
840410e230b6Smaya      __gen_uint(values->MA1DoneSS0, 26, 26);
840510e230b6Smaya}
840610e230b6Smaya
840710e230b6Smaya#define GEN75_SAMPLER_INSTDONE_num        0xe160
840810e230b6Smaya#define GEN75_SAMPLER_INSTDONE_length          1
840910e230b6Smayastruct GEN75_SAMPLER_INSTDONE {
841010e230b6Smaya   bool                                 IMEDone;
841110e230b6Smaya   bool                                 PL0Done;
841210e230b6Smaya   bool                                 SO0Done;
841310e230b6Smaya   bool                                 DG0Done;
841410e230b6Smaya   bool                                 FT0Done;
841510e230b6Smaya   bool                                 DM0Done;
841610e230b6Smaya   bool                                 SCDone;
841710e230b6Smaya   bool                                 FL0Done;
841810e230b6Smaya   bool                                 QCDone;
841910e230b6Smaya   bool                                 SVSMDone;
842010e230b6Smaya   bool                                 SI0Done;
842110e230b6Smaya   bool                                 MT0Done;
842210e230b6Smaya   bool                                 AVSDone;
842310e230b6Smaya   bool                                 IEFDone;
842410e230b6Smaya   bool                                 CREDone;
842510e230b6Smaya   bool                                 SVSMARB3;
842610e230b6Smaya   bool                                 SVSMARB2;
842710e230b6Smaya   bool                                 SVSMARB1;
842810e230b6Smaya   bool                                 SVSMAdapter;
842910e230b6Smaya   bool                                 FT1Done;
843010e230b6Smaya   bool                                 DM1Done;
843110e230b6Smaya   bool                                 MT1Done;
843210e230b6Smaya};
843310e230b6Smaya
843410e230b6Smayastatic inline void
843510e230b6SmayaGEN75_SAMPLER_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
843610e230b6Smaya                            __attribute__((unused)) void * restrict dst,
843710e230b6Smaya                            __attribute__((unused)) const struct GEN75_SAMPLER_INSTDONE * restrict values)
843810e230b6Smaya{
843910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
844010e230b6Smaya
844110e230b6Smaya   dw[0] =
844210e230b6Smaya      __gen_uint(values->IMEDone, 0, 0) |
844310e230b6Smaya      __gen_uint(values->PL0Done, 1, 1) |
844410e230b6Smaya      __gen_uint(values->SO0Done, 2, 2) |
844510e230b6Smaya      __gen_uint(values->DG0Done, 3, 3) |
844610e230b6Smaya      __gen_uint(values->FT0Done, 4, 4) |
844710e230b6Smaya      __gen_uint(values->DM0Done, 5, 5) |
844810e230b6Smaya      __gen_uint(values->SCDone, 6, 6) |
844910e230b6Smaya      __gen_uint(values->FL0Done, 7, 7) |
845010e230b6Smaya      __gen_uint(values->QCDone, 8, 8) |
845110e230b6Smaya      __gen_uint(values->SVSMDone, 9, 9) |
845210e230b6Smaya      __gen_uint(values->SI0Done, 10, 10) |
845310e230b6Smaya      __gen_uint(values->MT0Done, 11, 11) |
845410e230b6Smaya      __gen_uint(values->AVSDone, 12, 12) |
845510e230b6Smaya      __gen_uint(values->IEFDone, 13, 13) |
845610e230b6Smaya      __gen_uint(values->CREDone, 14, 14) |
845710e230b6Smaya      __gen_uint(values->SVSMARB3, 15, 15) |
845810e230b6Smaya      __gen_uint(values->SVSMARB2, 16, 16) |
845910e230b6Smaya      __gen_uint(values->SVSMARB1, 17, 17) |
846010e230b6Smaya      __gen_uint(values->SVSMAdapter, 18, 18) |
846110e230b6Smaya      __gen_uint(values->FT1Done, 19, 19) |
846210e230b6Smaya      __gen_uint(values->DM1Done, 20, 20) |
846310e230b6Smaya      __gen_uint(values->MT1Done, 21, 21);
846410e230b6Smaya}
846510e230b6Smaya
846610e230b6Smaya#define GEN75_SCRATCH1_num                0xb038
846710e230b6Smaya#define GEN75_SCRATCH1_length                  1
846810e230b6Smayastruct GEN75_SCRATCH1 {
846910e230b6Smaya   uint32_t                             L3AtomicDisable;
847010e230b6Smaya};
847110e230b6Smaya
847210e230b6Smayastatic inline void
847310e230b6SmayaGEN75_SCRATCH1_pack(__attribute__((unused)) __gen_user_data *data,
847410e230b6Smaya                    __attribute__((unused)) void * restrict dst,
847510e230b6Smaya                    __attribute__((unused)) const struct GEN75_SCRATCH1 * restrict values)
847610e230b6Smaya{
847710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
847810e230b6Smaya
847910e230b6Smaya   dw[0] =
848010e230b6Smaya      __gen_uint(values->L3AtomicDisable, 27, 27);
848110e230b6Smaya}
848210e230b6Smaya
848310e230b6Smaya#define GEN75_SC_INSTDONE_num             0x7100
848410e230b6Smaya#define GEN75_SC_INSTDONE_length               1
848510e230b6Smayastruct GEN75_SC_INSTDONE {
848610e230b6Smaya   bool                                 SVLDone;
848710e230b6Smaya   bool                                 WMFEDone;
848810e230b6Smaya   bool                                 WMBEDone;
848910e230b6Smaya   bool                                 HIZDone;
849010e230b6Smaya   bool                                 STCDone;
849110e230b6Smaya   bool                                 IZDone;
849210e230b6Smaya   bool                                 SBEDone;
849310e230b6Smaya   bool                                 RCZDone;
849410e230b6Smaya   bool                                 RCCDone;
849510e230b6Smaya   bool                                 RCPBEDone;
849610e230b6Smaya   bool                                 RCPFEDone;
849710e230b6Smaya   bool                                 DAPBDone;
849810e230b6Smaya   bool                                 DAPRBEDone;
849910e230b6Smaya   bool                                 SARBDone;
850010e230b6Smaya};
850110e230b6Smaya
850210e230b6Smayastatic inline void
850310e230b6SmayaGEN75_SC_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
850410e230b6Smaya                       __attribute__((unused)) void * restrict dst,
850510e230b6Smaya                       __attribute__((unused)) const struct GEN75_SC_INSTDONE * restrict values)
850610e230b6Smaya{
850710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
850810e230b6Smaya
850910e230b6Smaya   dw[0] =
851010e230b6Smaya      __gen_uint(values->SVLDone, 0, 0) |
851110e230b6Smaya      __gen_uint(values->WMFEDone, 1, 1) |
851210e230b6Smaya      __gen_uint(values->WMBEDone, 2, 2) |
851310e230b6Smaya      __gen_uint(values->HIZDone, 3, 3) |
851410e230b6Smaya      __gen_uint(values->STCDone, 4, 4) |
851510e230b6Smaya      __gen_uint(values->IZDone, 5, 5) |
851610e230b6Smaya      __gen_uint(values->SBEDone, 6, 6) |
851710e230b6Smaya      __gen_uint(values->RCZDone, 8, 8) |
851810e230b6Smaya      __gen_uint(values->RCCDone, 9, 9) |
851910e230b6Smaya      __gen_uint(values->RCPBEDone, 10, 10) |
852010e230b6Smaya      __gen_uint(values->RCPFEDone, 11, 11) |
852110e230b6Smaya      __gen_uint(values->DAPBDone, 12, 12) |
852210e230b6Smaya      __gen_uint(values->DAPRBEDone, 13, 13) |
852310e230b6Smaya      __gen_uint(values->SARBDone, 15, 15);
852410e230b6Smaya}
852510e230b6Smaya
852610e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN0_num   0x5200
852710e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN0_length      2
852810e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN0 {
852910e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
853010e230b6Smaya};
853110e230b6Smaya
853210e230b6Smayastatic inline void
853310e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN0_pack(__attribute__((unused)) __gen_user_data *data,
853410e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
853510e230b6Smaya                                 __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN0 * restrict values)
853610e230b6Smaya{
853710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
853810e230b6Smaya
853910e230b6Smaya   const uint64_t v0 =
854010e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
854110e230b6Smaya   dw[0] = v0;
854210e230b6Smaya   dw[1] = v0 >> 32;
854310e230b6Smaya}
854410e230b6Smaya
854510e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN1_num   0x5208
854610e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN1_length      2
854710e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN1 {
854810e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
854910e230b6Smaya};
855010e230b6Smaya
855110e230b6Smayastatic inline void
855210e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN1_pack(__attribute__((unused)) __gen_user_data *data,
855310e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
855410e230b6Smaya                                 __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN1 * restrict values)
855510e230b6Smaya{
855610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
855710e230b6Smaya
855810e230b6Smaya   const uint64_t v0 =
855910e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
856010e230b6Smaya   dw[0] = v0;
856110e230b6Smaya   dw[1] = v0 >> 32;
856210e230b6Smaya}
856310e230b6Smaya
856410e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN2_num   0x5210
856510e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN2_length      2
856610e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN2 {
856710e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
856810e230b6Smaya};
856910e230b6Smaya
857010e230b6Smayastatic inline void
857110e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN2_pack(__attribute__((unused)) __gen_user_data *data,
857210e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
857310e230b6Smaya                                 __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN2 * restrict values)
857410e230b6Smaya{
857510e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
857610e230b6Smaya
857710e230b6Smaya   const uint64_t v0 =
857810e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
857910e230b6Smaya   dw[0] = v0;
858010e230b6Smaya   dw[1] = v0 >> 32;
858110e230b6Smaya}
858210e230b6Smaya
858310e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN3_num   0x5218
858410e230b6Smaya#define GEN75_SO_NUM_PRIMS_WRITTEN3_length      2
858510e230b6Smayastruct GEN75_SO_NUM_PRIMS_WRITTEN3 {
858610e230b6Smaya   uint64_t                             NumPrimsWrittenCount;
858710e230b6Smaya};
858810e230b6Smaya
858910e230b6Smayastatic inline void
859010e230b6SmayaGEN75_SO_NUM_PRIMS_WRITTEN3_pack(__attribute__((unused)) __gen_user_data *data,
859110e230b6Smaya                                 __attribute__((unused)) void * restrict dst,
859210e230b6Smaya                                 __attribute__((unused)) const struct GEN75_SO_NUM_PRIMS_WRITTEN3 * restrict values)
859310e230b6Smaya{
859410e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
859510e230b6Smaya
859610e230b6Smaya   const uint64_t v0 =
859710e230b6Smaya      __gen_uint(values->NumPrimsWrittenCount, 0, 63);
859810e230b6Smaya   dw[0] = v0;
859910e230b6Smaya   dw[1] = v0 >> 32;
860010e230b6Smaya}
860110e230b6Smaya
860210e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED0_num 0x5240
860310e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED0_length      2
860410e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED0 {
860510e230b6Smaya   uint64_t                             PrimStorageNeededCount;
860610e230b6Smaya};
860710e230b6Smaya
860810e230b6Smayastatic inline void
860910e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED0_pack(__attribute__((unused)) __gen_user_data *data,
861010e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
861110e230b6Smaya                                   __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED0 * restrict values)
861210e230b6Smaya{
861310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
861410e230b6Smaya
861510e230b6Smaya   const uint64_t v0 =
861610e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
861710e230b6Smaya   dw[0] = v0;
861810e230b6Smaya   dw[1] = v0 >> 32;
861910e230b6Smaya}
862010e230b6Smaya
862110e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED1_num 0x5248
862210e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED1_length      2
862310e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED1 {
862410e230b6Smaya   uint64_t                             PrimStorageNeededCount;
862510e230b6Smaya};
862610e230b6Smaya
862710e230b6Smayastatic inline void
862810e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED1_pack(__attribute__((unused)) __gen_user_data *data,
862910e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
863010e230b6Smaya                                   __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED1 * restrict values)
863110e230b6Smaya{
863210e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
863310e230b6Smaya
863410e230b6Smaya   const uint64_t v0 =
863510e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
863610e230b6Smaya   dw[0] = v0;
863710e230b6Smaya   dw[1] = v0 >> 32;
863810e230b6Smaya}
863910e230b6Smaya
864010e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED2_num 0x5250
864110e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED2_length      2
864210e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED2 {
864310e230b6Smaya   uint64_t                             PrimStorageNeededCount;
864410e230b6Smaya};
864510e230b6Smaya
864610e230b6Smayastatic inline void
864710e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED2_pack(__attribute__((unused)) __gen_user_data *data,
864810e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
864910e230b6Smaya                                   __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED2 * restrict values)
865010e230b6Smaya{
865110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
865210e230b6Smaya
865310e230b6Smaya   const uint64_t v0 =
865410e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
865510e230b6Smaya   dw[0] = v0;
865610e230b6Smaya   dw[1] = v0 >> 32;
865710e230b6Smaya}
865810e230b6Smaya
865910e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED3_num 0x5258
866010e230b6Smaya#define GEN75_SO_PRIM_STORAGE_NEEDED3_length      2
866110e230b6Smayastruct GEN75_SO_PRIM_STORAGE_NEEDED3 {
866210e230b6Smaya   uint64_t                             PrimStorageNeededCount;
866310e230b6Smaya};
866410e230b6Smaya
866510e230b6Smayastatic inline void
866610e230b6SmayaGEN75_SO_PRIM_STORAGE_NEEDED3_pack(__attribute__((unused)) __gen_user_data *data,
866710e230b6Smaya                                   __attribute__((unused)) void * restrict dst,
866810e230b6Smaya                                   __attribute__((unused)) const struct GEN75_SO_PRIM_STORAGE_NEEDED3 * restrict values)
866910e230b6Smaya{
867010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
867110e230b6Smaya
867210e230b6Smaya   const uint64_t v0 =
867310e230b6Smaya      __gen_uint(values->PrimStorageNeededCount, 0, 63);
867410e230b6Smaya   dw[0] = v0;
867510e230b6Smaya   dw[1] = v0 >> 32;
867610e230b6Smaya}
867710e230b6Smaya
867810e230b6Smaya#define GEN75_SO_WRITE_OFFSET0_num        0x5280
867910e230b6Smaya#define GEN75_SO_WRITE_OFFSET0_length          1
868010e230b6Smayastruct GEN75_SO_WRITE_OFFSET0 {
868110e230b6Smaya   uint64_t                             WriteOffset;
868210e230b6Smaya};
868310e230b6Smaya
868410e230b6Smayastatic inline void
868510e230b6SmayaGEN75_SO_WRITE_OFFSET0_pack(__attribute__((unused)) __gen_user_data *data,
868610e230b6Smaya                            __attribute__((unused)) void * restrict dst,
868710e230b6Smaya                            __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET0 * restrict values)
868810e230b6Smaya{
868910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
869010e230b6Smaya
869110e230b6Smaya   dw[0] =
869210e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
869310e230b6Smaya}
869410e230b6Smaya
869510e230b6Smaya#define GEN75_SO_WRITE_OFFSET1_num        0x5284
869610e230b6Smaya#define GEN75_SO_WRITE_OFFSET1_length          1
869710e230b6Smayastruct GEN75_SO_WRITE_OFFSET1 {
869810e230b6Smaya   uint64_t                             WriteOffset;
869910e230b6Smaya};
870010e230b6Smaya
870110e230b6Smayastatic inline void
870210e230b6SmayaGEN75_SO_WRITE_OFFSET1_pack(__attribute__((unused)) __gen_user_data *data,
870310e230b6Smaya                            __attribute__((unused)) void * restrict dst,
870410e230b6Smaya                            __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET1 * restrict values)
870510e230b6Smaya{
870610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
870710e230b6Smaya
870810e230b6Smaya   dw[0] =
870910e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
871010e230b6Smaya}
871110e230b6Smaya
871210e230b6Smaya#define GEN75_SO_WRITE_OFFSET2_num        0x5288
871310e230b6Smaya#define GEN75_SO_WRITE_OFFSET2_length          1
871410e230b6Smayastruct GEN75_SO_WRITE_OFFSET2 {
871510e230b6Smaya   uint64_t                             WriteOffset;
871610e230b6Smaya};
871710e230b6Smaya
871810e230b6Smayastatic inline void
871910e230b6SmayaGEN75_SO_WRITE_OFFSET2_pack(__attribute__((unused)) __gen_user_data *data,
872010e230b6Smaya                            __attribute__((unused)) void * restrict dst,
872110e230b6Smaya                            __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET2 * restrict values)
872210e230b6Smaya{
872310e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
872410e230b6Smaya
872510e230b6Smaya   dw[0] =
872610e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
872710e230b6Smaya}
872810e230b6Smaya
872910e230b6Smaya#define GEN75_SO_WRITE_OFFSET3_num        0x528c
873010e230b6Smaya#define GEN75_SO_WRITE_OFFSET3_length          1
873110e230b6Smayastruct GEN75_SO_WRITE_OFFSET3 {
873210e230b6Smaya   uint64_t                             WriteOffset;
873310e230b6Smaya};
873410e230b6Smaya
873510e230b6Smayastatic inline void
873610e230b6SmayaGEN75_SO_WRITE_OFFSET3_pack(__attribute__((unused)) __gen_user_data *data,
873710e230b6Smaya                            __attribute__((unused)) void * restrict dst,
873810e230b6Smaya                            __attribute__((unused)) const struct GEN75_SO_WRITE_OFFSET3 * restrict values)
873910e230b6Smaya{
874010e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
874110e230b6Smaya
874210e230b6Smaya   dw[0] =
874310e230b6Smaya      __gen_offset(values->WriteOffset, 2, 31);
874410e230b6Smaya}
874510e230b6Smaya
874610e230b6Smaya#define GEN75_VCS_FAULT_REG_num           0x4194
874710e230b6Smaya#define GEN75_VCS_FAULT_REG_length             1
874810e230b6Smayastruct GEN75_VCS_FAULT_REG {
874910e230b6Smaya   bool                                 ValidBit;
875010e230b6Smaya   uint32_t                             FaultType;
875110e230b6Smaya#define PageFault                                0
875210e230b6Smaya#define InvalidPDFault                           1
875310e230b6Smaya#define UnloadedPDFault                          2
875410e230b6Smaya#define InvalidandUnloadedPDfault                3
875510e230b6Smaya   uint32_t                             SRCIDofFault;
875610e230b6Smaya   uint32_t                             GTTSEL;
875710e230b6Smaya#define PPGTT                                    0
875810e230b6Smaya#define GGTT                                     1
875910e230b6Smaya   __gen_address_type                   VirtualAddressofFault;
876010e230b6Smaya};
876110e230b6Smaya
876210e230b6Smayastatic inline void
876310e230b6SmayaGEN75_VCS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data,
876410e230b6Smaya                         __attribute__((unused)) void * restrict dst,
876510e230b6Smaya                         __attribute__((unused)) const struct GEN75_VCS_FAULT_REG * restrict values)
876610e230b6Smaya{
876710e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
876810e230b6Smaya
876910e230b6Smaya   const uint32_t v0 =
877010e230b6Smaya      __gen_uint(values->ValidBit, 0, 0) |
877110e230b6Smaya      __gen_uint(values->FaultType, 1, 2) |
877210e230b6Smaya      __gen_uint(values->SRCIDofFault, 3, 10) |
877310e230b6Smaya      __gen_uint(values->GTTSEL, 11, 11);
877410e230b6Smaya   dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0);
877510e230b6Smaya}
877610e230b6Smaya
877710e230b6Smaya#define GEN75_VCS_INSTDONE_num            0x1206c
877810e230b6Smaya#define GEN75_VCS_INSTDONE_length              1
877910e230b6Smayastruct GEN75_VCS_INSTDONE {
878010e230b6Smaya   bool                                 RingEnable;
878110e230b6Smaya   uint32_t                             USBDone;
878210e230b6Smaya   uint32_t                             QRCDone;
878310e230b6Smaya   uint32_t                             SECDone;
878410e230b6Smaya   uint32_t                             MPCDone;
878510e230b6Smaya   uint32_t                             VFTDone;
878610e230b6Smaya   uint32_t                             BSPDone;
878710e230b6Smaya   uint32_t                             VLFDone;
878810e230b6Smaya   uint32_t                             VOPDone;
878910e230b6Smaya   uint32_t                             VMCDone;
879010e230b6Smaya   uint32_t                             VIPDone;
879110e230b6Smaya   uint32_t                             VITDone;
879210e230b6Smaya   uint32_t                             VDSDone;
879310e230b6Smaya   uint32_t                             VMXDone;
879410e230b6Smaya   uint32_t                             VCPDone;
879510e230b6Smaya   uint32_t                             VCDDone;
879610e230b6Smaya   uint32_t                             VADDone;
879710e230b6Smaya   uint32_t                             VMDDone;
879810e230b6Smaya   uint32_t                             VISDone;
879910e230b6Smaya   uint32_t                             VACDone;
880010e230b6Smaya   uint32_t                             VAMDone;
880110e230b6Smaya   uint32_t                             JPGDone;
880210e230b6Smaya   uint32_t                             VBPDone;
880310e230b6Smaya   uint32_t                             VHRDone;
880410e230b6Smaya   uint32_t                             VCIDone;
880510e230b6Smaya   uint32_t                             VCRDone;
880610e230b6Smaya   uint32_t                             VINDone;
880710e230b6Smaya   uint32_t                             VPRDone;
880810e230b6Smaya   uint32_t                             VTQDone;
880910e230b6Smaya   uint32_t                             Reserved;
881010e230b6Smaya   uint32_t                             VCSDone;
881110e230b6Smaya   uint32_t                             GACDone;
881210e230b6Smaya};
881310e230b6Smaya
881410e230b6Smayastatic inline void
881510e230b6SmayaGEN75_VCS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
881610e230b6Smaya                        __attribute__((unused)) void * restrict dst,
881710e230b6Smaya                        __attribute__((unused)) const struct GEN75_VCS_INSTDONE * restrict values)
881810e230b6Smaya{
881910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
882010e230b6Smaya
882110e230b6Smaya   dw[0] =
882210e230b6Smaya      __gen_uint(values->RingEnable, 0, 0) |
882310e230b6Smaya      __gen_uint(values->USBDone, 1, 1) |
882410e230b6Smaya      __gen_uint(values->QRCDone, 2, 2) |
882510e230b6Smaya      __gen_uint(values->SECDone, 3, 3) |
882610e230b6Smaya      __gen_uint(values->MPCDone, 4, 4) |
882710e230b6Smaya      __gen_uint(values->VFTDone, 5, 5) |
882810e230b6Smaya      __gen_uint(values->BSPDone, 6, 6) |
882910e230b6Smaya      __gen_uint(values->VLFDone, 7, 7) |
883010e230b6Smaya      __gen_uint(values->VOPDone, 8, 8) |
883110e230b6Smaya      __gen_uint(values->VMCDone, 9, 9) |
883210e230b6Smaya      __gen_uint(values->VIPDone, 10, 10) |
883310e230b6Smaya      __gen_uint(values->VITDone, 11, 11) |
883410e230b6Smaya      __gen_uint(values->VDSDone, 12, 12) |
883510e230b6Smaya      __gen_uint(values->VMXDone, 13, 13) |
883610e230b6Smaya      __gen_uint(values->VCPDone, 14, 14) |
883710e230b6Smaya      __gen_uint(values->VCDDone, 15, 15) |
883810e230b6Smaya      __gen_uint(values->VADDone, 16, 16) |
883910e230b6Smaya      __gen_uint(values->VMDDone, 17, 17) |
884010e230b6Smaya      __gen_uint(values->VISDone, 18, 18) |
884110e230b6Smaya      __gen_uint(values->VACDone, 19, 19) |
884210e230b6Smaya      __gen_uint(values->VAMDone, 20, 20) |
884310e230b6Smaya      __gen_uint(values->JPGDone, 21, 21) |
884410e230b6Smaya      __gen_uint(values->VBPDone, 22, 22) |
884510e230b6Smaya      __gen_uint(values->VHRDone, 23, 23) |
884610e230b6Smaya      __gen_uint(values->VCIDone, 24, 24) |
884710e230b6Smaya      __gen_uint(values->VCRDone, 25, 25) |
884810e230b6Smaya      __gen_uint(values->VINDone, 26, 26) |
884910e230b6Smaya      __gen_uint(values->VPRDone, 27, 27) |
885010e230b6Smaya      __gen_uint(values->VTQDone, 28, 28) |
885110e230b6Smaya      __gen_uint(values->Reserved, 29, 29) |
885210e230b6Smaya      __gen_uint(values->VCSDone, 30, 30) |
885310e230b6Smaya      __gen_uint(values->GACDone, 31, 31);
885410e230b6Smaya}
885510e230b6Smaya
885610e230b6Smaya#define GEN75_VCS_RING_BUFFER_CTL_num     0x1203c
885710e230b6Smaya#define GEN75_VCS_RING_BUFFER_CTL_length       1
885810e230b6Smayastruct GEN75_VCS_RING_BUFFER_CTL {
885910e230b6Smaya   bool                                 RingBufferEnable;
886010e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
886110e230b6Smaya#define MI_AUTOREPORT_OFF                        0
886210e230b6Smaya#define MI_AUTOREPORT_64KB                       1
886310e230b6Smaya#define MI_AUTOREPORT_4KB                        2
886410e230b6Smaya#define MI_AUTOREPORT_128KB                      3
886510e230b6Smaya   bool                                 DisableRegisterAccesses;
886610e230b6Smaya   bool                                 SemaphoreWait;
886710e230b6Smaya   bool                                 RBWait;
886810e230b6Smaya   uint32_t                             BufferLengthinpages1;
886910e230b6Smaya};
887010e230b6Smaya
887110e230b6Smayastatic inline void
887210e230b6SmayaGEN75_VCS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
887310e230b6Smaya                               __attribute__((unused)) void * restrict dst,
887410e230b6Smaya                               __attribute__((unused)) const struct GEN75_VCS_RING_BUFFER_CTL * restrict values)
887510e230b6Smaya{
887610e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
887710e230b6Smaya
887810e230b6Smaya   dw[0] =
887910e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
888010e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
888110e230b6Smaya      __gen_uint(values->DisableRegisterAccesses, 8, 8) |
888210e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
888310e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
888410e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
888510e230b6Smaya}
888610e230b6Smaya
888710e230b6Smaya#define GEN75_VECS_FAULT_REG_num          0x4394
888810e230b6Smaya#define GEN75_VECS_FAULT_REG_length            1
888910e230b6Smayastruct GEN75_VECS_FAULT_REG {
889010e230b6Smaya   bool                                 ValidBit;
889110e230b6Smaya   uint32_t                             FaultType;
889210e230b6Smaya#define PageFault                                0
889310e230b6Smaya#define InvalidPDFault                           1
889410e230b6Smaya#define UnloadedPDFault                          2
889510e230b6Smaya#define InvalidandUnloadedPDfault                3
889610e230b6Smaya   uint32_t                             SRCIDofFault;
889710e230b6Smaya   uint32_t                             GTTSEL;
889810e230b6Smaya#define PPGTT                                    0
889910e230b6Smaya#define GGTT                                     1
890010e230b6Smaya   __gen_address_type                   VirtualAddressofFault;
890110e230b6Smaya};
890210e230b6Smaya
890310e230b6Smayastatic inline void
890410e230b6SmayaGEN75_VECS_FAULT_REG_pack(__attribute__((unused)) __gen_user_data *data,
890510e230b6Smaya                          __attribute__((unused)) void * restrict dst,
890610e230b6Smaya                          __attribute__((unused)) const struct GEN75_VECS_FAULT_REG * restrict values)
890710e230b6Smaya{
890810e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
890910e230b6Smaya
891010e230b6Smaya   const uint32_t v0 =
891110e230b6Smaya      __gen_uint(values->ValidBit, 0, 0) |
891210e230b6Smaya      __gen_uint(values->FaultType, 1, 2) |
891310e230b6Smaya      __gen_uint(values->SRCIDofFault, 3, 10) |
891410e230b6Smaya      __gen_uint(values->GTTSEL, 11, 11);
891510e230b6Smaya   dw[0] = __gen_combine_address(data, &dw[0], values->VirtualAddressofFault, v0);
891610e230b6Smaya}
891710e230b6Smaya
891810e230b6Smaya#define GEN75_VECS_INSTDONE_num           0x1a06c
891910e230b6Smaya#define GEN75_VECS_INSTDONE_length             1
892010e230b6Smayastruct GEN75_VECS_INSTDONE {
892110e230b6Smaya   bool                                 RingEnable;
892210e230b6Smaya   uint32_t                             VECSDone;
892310e230b6Smaya   uint32_t                             GAMDone;
892410e230b6Smaya};
892510e230b6Smaya
892610e230b6Smayastatic inline void
892710e230b6SmayaGEN75_VECS_INSTDONE_pack(__attribute__((unused)) __gen_user_data *data,
892810e230b6Smaya                         __attribute__((unused)) void * restrict dst,
892910e230b6Smaya                         __attribute__((unused)) const struct GEN75_VECS_INSTDONE * restrict values)
893010e230b6Smaya{
893110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
893210e230b6Smaya
893310e230b6Smaya   dw[0] =
893410e230b6Smaya      __gen_uint(values->RingEnable, 0, 0) |
893510e230b6Smaya      __gen_uint(values->VECSDone, 30, 30) |
893610e230b6Smaya      __gen_uint(values->GAMDone, 31, 31);
893710e230b6Smaya}
893810e230b6Smaya
893910e230b6Smaya#define GEN75_VECS_RING_BUFFER_CTL_num    0x1a03c
894010e230b6Smaya#define GEN75_VECS_RING_BUFFER_CTL_length      1
894110e230b6Smayastruct GEN75_VECS_RING_BUFFER_CTL {
894210e230b6Smaya   bool                                 RingBufferEnable;
894310e230b6Smaya   uint32_t                             AutomaticReportHeadPointer;
894410e230b6Smaya#define MI_AUTOREPORT_OFF                        0
894510e230b6Smaya#define MI_AUTOREPORT_64KB                       1
894610e230b6Smaya#define MI_AUTOREPORT_4KB                        2
894710e230b6Smaya#define MI_AUTOREPORT_128KB                      3
894810e230b6Smaya   bool                                 DisableRegisterAccesses;
894910e230b6Smaya   bool                                 SemaphoreWait;
895010e230b6Smaya   bool                                 RBWait;
895110e230b6Smaya   uint32_t                             BufferLengthinpages1;
895210e230b6Smaya};
895310e230b6Smaya
895410e230b6Smayastatic inline void
895510e230b6SmayaGEN75_VECS_RING_BUFFER_CTL_pack(__attribute__((unused)) __gen_user_data *data,
895610e230b6Smaya                                __attribute__((unused)) void * restrict dst,
895710e230b6Smaya                                __attribute__((unused)) const struct GEN75_VECS_RING_BUFFER_CTL * restrict values)
895810e230b6Smaya{
895910e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
896010e230b6Smaya
896110e230b6Smaya   dw[0] =
896210e230b6Smaya      __gen_uint(values->RingBufferEnable, 0, 0) |
896310e230b6Smaya      __gen_uint(values->AutomaticReportHeadPointer, 1, 2) |
896410e230b6Smaya      __gen_uint(values->DisableRegisterAccesses, 8, 8) |
896510e230b6Smaya      __gen_uint(values->SemaphoreWait, 10, 10) |
896610e230b6Smaya      __gen_uint(values->RBWait, 11, 11) |
896710e230b6Smaya      __gen_uint(values->BufferLengthinpages1, 12, 20);
896810e230b6Smaya}
896910e230b6Smaya
897010e230b6Smaya#define GEN75_VS_INVOCATION_COUNT_num     0x2320
897110e230b6Smaya#define GEN75_VS_INVOCATION_COUNT_length       2
897210e230b6Smayastruct GEN75_VS_INVOCATION_COUNT {
897310e230b6Smaya   uint64_t                             VSInvocationCountReport;
897410e230b6Smaya};
897510e230b6Smaya
897610e230b6Smayastatic inline void
897710e230b6SmayaGEN75_VS_INVOCATION_COUNT_pack(__attribute__((unused)) __gen_user_data *data,
897810e230b6Smaya                               __attribute__((unused)) void * restrict dst,
897910e230b6Smaya                               __attribute__((unused)) const struct GEN75_VS_INVOCATION_COUNT * restrict values)
898010e230b6Smaya{
898110e230b6Smaya   uint32_t * restrict dw = (uint32_t * restrict) dst;
898210e230b6Smaya
898310e230b6Smaya   const uint64_t v0 =
898410e230b6Smaya      __gen_uint(values->VSInvocationCountReport, 0, 63);
898510e230b6Smaya   dw[0] = v0;
898610e230b6Smaya   dw[1] = v0 >> 32;
898710e230b6Smaya}
898810e230b6Smaya
898910e230b6Smaya#endif /* GEN75_PACK_H */
8990