111308Santhony.gutierrez@amd.com// University of Illinois/NCSA
211308Santhony.gutierrez@amd.com// Open Source License
311308Santhony.gutierrez@amd.com//
411308Santhony.gutierrez@amd.com// Copyright (c) 2013-2015, Advanced Micro Devices, Inc.
511308Santhony.gutierrez@amd.com// All rights reserved.
611308Santhony.gutierrez@amd.com//
711308Santhony.gutierrez@amd.com// Developed by:
811308Santhony.gutierrez@amd.com//
911308Santhony.gutierrez@amd.com//     HSA Team
1011308Santhony.gutierrez@amd.com//
1111308Santhony.gutierrez@amd.com//     Advanced Micro Devices, Inc
1211308Santhony.gutierrez@amd.com//
1311308Santhony.gutierrez@amd.com//     www.amd.com
1411308Santhony.gutierrez@amd.com//
1511308Santhony.gutierrez@amd.com// Permission is hereby granted, free of charge, to any person obtaining a copy of
1611308Santhony.gutierrez@amd.com// this software and associated documentation files (the "Software"), to deal with
1711308Santhony.gutierrez@amd.com// the Software without restriction, including without limitation the rights to
1811308Santhony.gutierrez@amd.com// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
1911308Santhony.gutierrez@amd.com// of the Software, and to permit persons to whom the Software is furnished to do
2011308Santhony.gutierrez@amd.com// so, subject to the following conditions:
2111308Santhony.gutierrez@amd.com//
2211308Santhony.gutierrez@amd.com//     * Redistributions of source code must retain the above copyright notice,
2311308Santhony.gutierrez@amd.com//       this list of conditions and the following disclaimers.
2411308Santhony.gutierrez@amd.com//
2511308Santhony.gutierrez@amd.com//     * Redistributions in binary form must reproduce the above copyright notice,
2611308Santhony.gutierrez@amd.com//       this list of conditions and the following disclaimers in the
2711308Santhony.gutierrez@amd.com//       documentation and/or other materials provided with the distribution.
2811308Santhony.gutierrez@amd.com//
2911308Santhony.gutierrez@amd.com//     * Neither the names of the LLVM Team, University of Illinois at
3011308Santhony.gutierrez@amd.com//       Urbana-Champaign, nor the names of its contributors may be used to
3111308Santhony.gutierrez@amd.com//       endorse or promote products derived from this Software without specific
3211308Santhony.gutierrez@amd.com//       prior written permission.
3311308Santhony.gutierrez@amd.com//
3411308Santhony.gutierrez@amd.com// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3511308Santhony.gutierrez@amd.com// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
3611308Santhony.gutierrez@amd.com// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
3711308Santhony.gutierrez@amd.com// CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3811308Santhony.gutierrez@amd.com// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3911308Santhony.gutierrez@amd.com// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
4011308Santhony.gutierrez@amd.com// SOFTWARE.
4111308Santhony.gutierrez@amd.com
4211308Santhony.gutierrez@amd.com//.ignore{
4311308Santhony.gutierrez@amd.com
4411308Santhony.gutierrez@amd.com#ifndef INCLUDED_BRIG_H
4511308Santhony.gutierrez@amd.com#define INCLUDED_BRIG_H
4611308Santhony.gutierrez@amd.com
4711308Santhony.gutierrez@amd.com#include <stdint.h>
4811308Santhony.gutierrez@amd.com
4911308Santhony.gutierrez@amd.comenum BrigAuxDefs {
5011308Santhony.gutierrez@amd.com  MAX_OPERANDS_NUM = 6
5111308Santhony.gutierrez@amd.com};
5211308Santhony.gutierrez@amd.com
5311308Santhony.gutierrez@amd.com//}
5411308Santhony.gutierrez@amd.com
5511308Santhony.gutierrez@amd.comtypedef uint32_t BrigVersion32_t;
5611308Santhony.gutierrez@amd.com
5711308Santhony.gutierrez@amd.comenum BrigVersion {
5811308Santhony.gutierrez@amd.com
5911308Santhony.gutierrez@amd.com    //.nowrap
6011308Santhony.gutierrez@amd.com    //.nodump
6111308Santhony.gutierrez@amd.com    //.nollvm
6211308Santhony.gutierrez@amd.com
6311308Santhony.gutierrez@amd.com    BRIG_VERSION_HSAIL_MAJOR = 1,
6411308Santhony.gutierrez@amd.com    BRIG_VERSION_HSAIL_MINOR = 0,
6511308Santhony.gutierrez@amd.com    BRIG_VERSION_BRIG_MAJOR  = 1,
6611308Santhony.gutierrez@amd.com    BRIG_VERSION_BRIG_MINOR  = 0
6711308Santhony.gutierrez@amd.com};
6811308Santhony.gutierrez@amd.com
6911308Santhony.gutierrez@amd.comtypedef uint8_t BrigAlignment8_t;                           //.defValue=BRIG_ALIGNMENT_NONE
7011308Santhony.gutierrez@amd.com
7111308Santhony.gutierrez@amd.comtypedef uint8_t BrigAllocation8_t;                          //.defValue=BRIG_ALLOCATION_NONE
7211308Santhony.gutierrez@amd.com
7311308Santhony.gutierrez@amd.comtypedef uint8_t BrigAluModifier8_t;
7411308Santhony.gutierrez@amd.com
7511308Santhony.gutierrez@amd.comtypedef uint8_t BrigAtomicOperation8_t;
7611308Santhony.gutierrez@amd.com
7711308Santhony.gutierrez@amd.comtypedef uint32_t BrigCodeOffset32_t;                        //.defValue=0   //.wtype=ItemRef<Code>
7811308Santhony.gutierrez@amd.com
7911308Santhony.gutierrez@amd.comtypedef uint8_t BrigCompareOperation8_t;
8011308Santhony.gutierrez@amd.com
8111308Santhony.gutierrez@amd.comtypedef uint16_t BrigControlDirective16_t;
8211308Santhony.gutierrez@amd.com
8311308Santhony.gutierrez@amd.comtypedef uint32_t BrigDataOffset32_t;
8411308Santhony.gutierrez@amd.com
8511308Santhony.gutierrez@amd.comtypedef BrigDataOffset32_t BrigDataOffsetCodeList32_t;      //.wtype=ListRef<Code>      //.defValue=0
8611308Santhony.gutierrez@amd.com
8711308Santhony.gutierrez@amd.comtypedef BrigDataOffset32_t BrigDataOffsetOperandList32_t;   //.wtype=ListRef<Operand>   //.defValue=0
8811308Santhony.gutierrez@amd.com
8911308Santhony.gutierrez@amd.comtypedef BrigDataOffset32_t BrigDataOffsetString32_t;        //.wtype=StrRef             //.defValue=0
9011308Santhony.gutierrez@amd.com
9111308Santhony.gutierrez@amd.comtypedef uint8_t BrigExecutableModifier8_t;
9211308Santhony.gutierrez@amd.com
9311308Santhony.gutierrez@amd.comtypedef uint8_t BrigImageChannelOrder8_t;                   //.defValue=BRIG_CHANNEL_ORDER_UNKNOWN
9411308Santhony.gutierrez@amd.com
9511308Santhony.gutierrez@amd.comtypedef uint8_t BrigImageChannelType8_t;                    //.defValue=BRIG_CHANNEL_TYPE_UNKNOWN
9611308Santhony.gutierrez@amd.com
9711308Santhony.gutierrez@amd.comtypedef uint8_t BrigImageGeometry8_t;                       //.defValue=BRIG_GEOMETRY_UNKNOWN
9811308Santhony.gutierrez@amd.com
9911308Santhony.gutierrez@amd.comtypedef uint8_t BrigImageQuery8_t;
10011308Santhony.gutierrez@amd.com
10111308Santhony.gutierrez@amd.comtypedef uint16_t BrigKind16_t;
10211308Santhony.gutierrez@amd.com
10311308Santhony.gutierrez@amd.comtypedef uint8_t BrigLinkage8_t;                             //.defValue=BRIG_LINKAGE_NONE
10411308Santhony.gutierrez@amd.com
10511308Santhony.gutierrez@amd.comtypedef uint8_t BrigMachineModel8_t;                        //.defValue=BRIG_MACHINE_LARGE
10611308Santhony.gutierrez@amd.com
10711308Santhony.gutierrez@amd.comtypedef uint8_t BrigMemoryModifier8_t;
10811308Santhony.gutierrez@amd.com
10911308Santhony.gutierrez@amd.comtypedef uint8_t BrigMemoryOrder8_t;                         //.defValue=BRIG_MEMORY_ORDER_RELAXED
11011308Santhony.gutierrez@amd.com
11111308Santhony.gutierrez@amd.comtypedef uint8_t BrigMemoryScope8_t;                         //.defValue=BRIG_MEMORY_SCOPE_SYSTEM
11211308Santhony.gutierrez@amd.com
11311308Santhony.gutierrez@amd.comtypedef uint16_t BrigOpcode16_t;
11411308Santhony.gutierrez@amd.com
11511308Santhony.gutierrez@amd.comtypedef uint32_t BrigOperandOffset32_t;                     //.defValue=0 //.wtype=ItemRef<Operand>
11611308Santhony.gutierrez@amd.com
11711308Santhony.gutierrez@amd.comtypedef uint8_t BrigPack8_t;                                //.defValue=BRIG_PACK_NONE
11811308Santhony.gutierrez@amd.com
11911308Santhony.gutierrez@amd.comtypedef uint8_t BrigProfile8_t;                             //.defValue=BRIG_PROFILE_FULL
12011308Santhony.gutierrez@amd.com
12111308Santhony.gutierrez@amd.comtypedef uint16_t BrigRegisterKind16_t;
12211308Santhony.gutierrez@amd.com
12311308Santhony.gutierrez@amd.comtypedef uint8_t BrigRound8_t;                               //.defValue=BRIG_ROUND_NONE
12411308Santhony.gutierrez@amd.com
12511308Santhony.gutierrez@amd.comtypedef uint8_t BrigSamplerAddressing8_t;                   //.defValue=BRIG_ADDRESSING_CLAMP_TO_EDGE
12611308Santhony.gutierrez@amd.com
12711308Santhony.gutierrez@amd.comtypedef uint8_t BrigSamplerCoordNormalization8_t;
12811308Santhony.gutierrez@amd.com
12911308Santhony.gutierrez@amd.comtypedef uint8_t BrigSamplerFilter8_t;
13011308Santhony.gutierrez@amd.com
13111308Santhony.gutierrez@amd.comtypedef uint8_t BrigSamplerQuery8_t;
13211308Santhony.gutierrez@amd.com
13311308Santhony.gutierrez@amd.comtypedef uint32_t BrigSectionIndex32_t;
13411308Santhony.gutierrez@amd.com
13511308Santhony.gutierrez@amd.comtypedef uint8_t BrigSegCvtModifier8_t;
13611308Santhony.gutierrez@amd.com
13711308Santhony.gutierrez@amd.comtypedef uint8_t BrigSegment8_t;                             //.defValue=BRIG_SEGMENT_NONE
13811308Santhony.gutierrez@amd.com
13911308Santhony.gutierrez@amd.comtypedef uint32_t BrigStringOffset32_t;                      //.defValue=0       //.wtype=StrRef
14011308Santhony.gutierrez@amd.com
14111308Santhony.gutierrez@amd.comtypedef uint16_t BrigType16_t;
14211308Santhony.gutierrez@amd.com
14311308Santhony.gutierrez@amd.comtypedef uint8_t BrigVariableModifier8_t;
14411308Santhony.gutierrez@amd.com
14511308Santhony.gutierrez@amd.comtypedef uint8_t BrigWidth8_t;
14611308Santhony.gutierrez@amd.com
14711308Santhony.gutierrez@amd.comtypedef uint32_t BrigExceptions32_t;
14811308Santhony.gutierrez@amd.com
14911308Santhony.gutierrez@amd.comenum BrigKind {
15011308Santhony.gutierrez@amd.com
15111308Santhony.gutierrez@amd.com    //.nollvm
15211308Santhony.gutierrez@amd.com    //
15311308Santhony.gutierrez@amd.com    //.wname={ s/^BRIG_KIND//; MACRO2Name($_) }
15411308Santhony.gutierrez@amd.com    //.mnemo=$wname{ $wname }
15511308Santhony.gutierrez@amd.com    //
15611308Santhony.gutierrez@amd.com    //.sizeof=$wname{ "sizeof(".$structs->{"Brig".$wname}->{rawbrig}.")" }
15711308Santhony.gutierrez@amd.com    //.sizeof_switch //.sizeof_proto="int size_of_brig_record(unsigned arg)" //.sizeof_default="return -1"
15811308Santhony.gutierrez@amd.com    //
15911308Santhony.gutierrez@amd.com    //.isBodyOnly={ "false" }
16011308Santhony.gutierrez@amd.com    //.isBodyOnly_switch //.isBodyOnly_proto="bool isBodyOnly(Directive d)" //.isBodyOnly_arg="d.kind()"
16111308Santhony.gutierrez@amd.com    //.isBodyOnly_default="assert(false); return false"
16211308Santhony.gutierrez@amd.com    //
16311308Santhony.gutierrez@amd.com    //.isToplevelOnly={ "false" }
16411308Santhony.gutierrez@amd.com    //.isToplevelOnly_switch //.isToplevelOnly_proto="bool isToplevelOnly(Directive d)" //.isToplevelOnly_arg="d.kind()"
16511308Santhony.gutierrez@amd.com    //.isToplevelOnly_default="assert(false); return false"
16611308Santhony.gutierrez@amd.com
16711308Santhony.gutierrez@amd.com    BRIG_KIND_NONE = 0x0000,                        //.skip
16811308Santhony.gutierrez@amd.com
16911308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_BEGIN = 0x1000,             //.skip
17011308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_ARG_BLOCK_END = 0x1000,     //.isBodyOnly=true
17111308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_ARG_BLOCK_START = 0x1001,   //.isBodyOnly=true
17211308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_COMMENT = 0x1002,
17311308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_CONTROL = 0x1003,           //.isBodyOnly=true
17411308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_EXTENSION = 0x1004,         //.isToplevelOnly=true
17511308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_FBARRIER = 0x1005,
17611308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_FUNCTION = 0x1006,          //.isToplevelOnly=true
17711308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_INDIRECT_FUNCTION = 0x1007, //.isToplevelOnly=true
17811308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_KERNEL = 0x1008,            //.isToplevelOnly=true
17911308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_LABEL = 0x1009,             //.isBodyOnly=true
18011308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_LOC = 0x100a,
18111308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_MODULE = 0x100b,            //.isToplevelOnly=true
18211308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_PRAGMA = 0x100c,
18311308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_SIGNATURE = 0x100d,         //.isToplevelOnly=true
18411308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_VARIABLE = 0x100e,
18511308Santhony.gutierrez@amd.com    BRIG_KIND_DIRECTIVE_END = 0x100f,               //.skip
18611308Santhony.gutierrez@amd.com
18711308Santhony.gutierrez@amd.com    BRIG_KIND_INST_BEGIN = 0x2000,                  //.skip
18811308Santhony.gutierrez@amd.com    BRIG_KIND_INST_ADDR = 0x2000,
18911308Santhony.gutierrez@amd.com    BRIG_KIND_INST_ATOMIC = 0x2001,
19011308Santhony.gutierrez@amd.com    BRIG_KIND_INST_BASIC = 0x2002,
19111308Santhony.gutierrez@amd.com    BRIG_KIND_INST_BR = 0x2003,
19211308Santhony.gutierrez@amd.com    BRIG_KIND_INST_CMP = 0x2004,
19311308Santhony.gutierrez@amd.com    BRIG_KIND_INST_CVT = 0x2005,
19411308Santhony.gutierrez@amd.com    BRIG_KIND_INST_IMAGE = 0x2006,
19511308Santhony.gutierrez@amd.com    BRIG_KIND_INST_LANE = 0x2007,
19611308Santhony.gutierrez@amd.com    BRIG_KIND_INST_MEM = 0x2008,
19711308Santhony.gutierrez@amd.com    BRIG_KIND_INST_MEM_FENCE = 0x2009,
19811308Santhony.gutierrez@amd.com    BRIG_KIND_INST_MOD = 0x200a,
19911308Santhony.gutierrez@amd.com    BRIG_KIND_INST_QUERY_IMAGE = 0x200b,
20011308Santhony.gutierrez@amd.com    BRIG_KIND_INST_QUERY_SAMPLER = 0x200c,
20111308Santhony.gutierrez@amd.com    BRIG_KIND_INST_QUEUE = 0x200d,
20211308Santhony.gutierrez@amd.com    BRIG_KIND_INST_SEG = 0x200e,
20311308Santhony.gutierrez@amd.com    BRIG_KIND_INST_SEG_CVT = 0x200f,
20411308Santhony.gutierrez@amd.com    BRIG_KIND_INST_SIGNAL = 0x2010,
20511308Santhony.gutierrez@amd.com    BRIG_KIND_INST_SOURCE_TYPE = 0x2011,
20611308Santhony.gutierrez@amd.com    BRIG_KIND_INST_END = 0x2012,                    //.skip
20711308Santhony.gutierrez@amd.com
20811308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_BEGIN = 0x3000,               //.skip
20911308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_ADDRESS = 0x3000,
21011308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_ALIGN = 0x3001,
21111308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_CODE_LIST = 0x3002,
21211308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_CODE_REF = 0x3003,
21311308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_CONSTANT_BYTES = 0x3004,
21411308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_RESERVED = 0x3005, //.skip
21511308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_CONSTANT_IMAGE = 0x3006,
21611308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_CONSTANT_OPERAND_LIST = 0x3007,
21711308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_CONSTANT_SAMPLER = 0x3008,
21811308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_OPERAND_LIST = 0x3009,
21911308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_REGISTER = 0x300a,
22011308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_STRING = 0x300b,
22111308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_WAVESIZE = 0x300c,
22211308Santhony.gutierrez@amd.com    BRIG_KIND_OPERAND_END = 0x300d                  //.skip
22311308Santhony.gutierrez@amd.com};
22411308Santhony.gutierrez@amd.com
22511308Santhony.gutierrez@amd.comenum BrigAlignment {
22611308Santhony.gutierrez@amd.com
22711308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_ALIGNMENT_//; lc }
22811308Santhony.gutierrez@amd.com    //.mnemo_proto="const char* align2str(unsigned arg)"
22911308Santhony.gutierrez@amd.com    //
23011308Santhony.gutierrez@amd.com    //.bytes={ /(\d+)/ ? $1 : undef }
23111308Santhony.gutierrez@amd.com    //.bytes_switch //.bytes_proto="unsigned align2num(unsigned arg)" //.bytes_default="assert(false); return -1"
23211308Santhony.gutierrez@amd.com    //
23311308Santhony.gutierrez@amd.com    //.rbytes=$bytes{ $bytes }
23411308Santhony.gutierrez@amd.com    //.rbytes_switch //.rbytes_reverse //.rbytes_proto="BrigAlignment num2align(uint64_t arg)"
23511308Santhony.gutierrez@amd.com    //.rbytes_default="return BRIG_ALIGNMENT_LAST"
23611308Santhony.gutierrez@amd.com    //
23711308Santhony.gutierrez@amd.com    //.print=$bytes{ $bytes>1 ? "_align($bytes)" : "" }
23811308Santhony.gutierrez@amd.com
23911308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_NONE = 0,                        //.no_mnemo
24011308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_1 = 1,                           //.mnemo=""
24111308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_2 = 2,
24211308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_4 = 3,
24311308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_8 = 4,
24411308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_16 = 5,
24511308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_32 = 6,
24611308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_64 = 7,
24711308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_128 = 8,
24811308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_256 = 9,
24911308Santhony.gutierrez@amd.com
25011308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_LAST,                            //.skip
25111308Santhony.gutierrez@amd.com    BRIG_ALIGNMENT_MAX = BRIG_ALIGNMENT_LAST - 1    //.skip
25211308Santhony.gutierrez@amd.com};
25311308Santhony.gutierrez@amd.com
25411308Santhony.gutierrez@amd.comenum BrigAllocation {
25511308Santhony.gutierrez@amd.com
25611308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_ALLOCATION_//;lc }
25711308Santhony.gutierrez@amd.com    //.mnemo_token=EAllocKind
25811308Santhony.gutierrez@amd.com
25911308Santhony.gutierrez@amd.com    BRIG_ALLOCATION_NONE = 0,       //.mnemo=""
26011308Santhony.gutierrez@amd.com    BRIG_ALLOCATION_PROGRAM = 1,
26111308Santhony.gutierrez@amd.com    BRIG_ALLOCATION_AGENT = 2,
26211308Santhony.gutierrez@amd.com    BRIG_ALLOCATION_AUTOMATIC = 3
26311308Santhony.gutierrez@amd.com};
26411308Santhony.gutierrez@amd.com
26511308Santhony.gutierrez@amd.comenum BrigAluModifierMask {
26611308Santhony.gutierrez@amd.com    BRIG_ALU_FTZ = 1
26711308Santhony.gutierrez@amd.com};
26811308Santhony.gutierrez@amd.com
26911308Santhony.gutierrez@amd.comenum BrigAtomicOperation {
27011308Santhony.gutierrez@amd.com
27111308Santhony.gutierrez@amd.com    //.tdcaption="Atomic Operations"
27211308Santhony.gutierrez@amd.com    //
27311308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_ATOMIC_//;lc }
27411308Santhony.gutierrez@amd.com    //.mnemo_token=_EMAtomicOp
27511308Santhony.gutierrez@amd.com    //.mnemo_context=EInstModifierInstAtomicContext
27611308Santhony.gutierrez@amd.com    //
27711308Santhony.gutierrez@amd.com    //.print=$mnemo{ "_$mnemo" }
27811308Santhony.gutierrez@amd.com
27911308Santhony.gutierrez@amd.com    BRIG_ATOMIC_ADD = 0,
28011308Santhony.gutierrez@amd.com    BRIG_ATOMIC_AND = 1,
28111308Santhony.gutierrez@amd.com    BRIG_ATOMIC_CAS = 2,
28211308Santhony.gutierrez@amd.com    BRIG_ATOMIC_EXCH = 3,
28311308Santhony.gutierrez@amd.com    BRIG_ATOMIC_LD = 4,
28411308Santhony.gutierrez@amd.com    BRIG_ATOMIC_MAX = 5,
28511308Santhony.gutierrez@amd.com    BRIG_ATOMIC_MIN = 6,
28611308Santhony.gutierrez@amd.com    BRIG_ATOMIC_OR = 7,
28711308Santhony.gutierrez@amd.com    BRIG_ATOMIC_ST = 8,
28811308Santhony.gutierrez@amd.com    BRIG_ATOMIC_SUB = 9,
28911308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WRAPDEC = 10,
29011308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WRAPINC = 11,
29111308Santhony.gutierrez@amd.com    BRIG_ATOMIC_XOR = 12,
29211308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAIT_EQ = 13,
29311308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAIT_NE = 14,
29411308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAIT_LT = 15,
29511308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAIT_GTE = 16,
29611308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAITTIMEOUT_EQ = 17,
29711308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAITTIMEOUT_NE = 18,
29811308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAITTIMEOUT_LT = 19,
29911308Santhony.gutierrez@amd.com    BRIG_ATOMIC_WAITTIMEOUT_GTE = 20
30011308Santhony.gutierrez@amd.com};
30111308Santhony.gutierrez@amd.com
30211308Santhony.gutierrez@amd.comenum BrigCompareOperation {
30311308Santhony.gutierrez@amd.com
30411308Santhony.gutierrez@amd.com    //.tdcaption="Comparison Operators"
30511308Santhony.gutierrez@amd.com    //
30611308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_COMPARE_//;lc }
30711308Santhony.gutierrez@amd.com    //.mnemo_token=_EMCompare
30811308Santhony.gutierrez@amd.com    //
30911308Santhony.gutierrez@amd.com    //.print=$mnemo{ "_$mnemo" }
31011308Santhony.gutierrez@amd.com
31111308Santhony.gutierrez@amd.com    BRIG_COMPARE_EQ = 0,
31211308Santhony.gutierrez@amd.com    BRIG_COMPARE_NE = 1,
31311308Santhony.gutierrez@amd.com    BRIG_COMPARE_LT = 2,
31411308Santhony.gutierrez@amd.com    BRIG_COMPARE_LE = 3,
31511308Santhony.gutierrez@amd.com    BRIG_COMPARE_GT = 4,
31611308Santhony.gutierrez@amd.com    BRIG_COMPARE_GE = 5,
31711308Santhony.gutierrez@amd.com    BRIG_COMPARE_EQU = 6,
31811308Santhony.gutierrez@amd.com    BRIG_COMPARE_NEU = 7,
31911308Santhony.gutierrez@amd.com    BRIG_COMPARE_LTU = 8,
32011308Santhony.gutierrez@amd.com    BRIG_COMPARE_LEU = 9,
32111308Santhony.gutierrez@amd.com    BRIG_COMPARE_GTU = 10,
32211308Santhony.gutierrez@amd.com    BRIG_COMPARE_GEU = 11,
32311308Santhony.gutierrez@amd.com    BRIG_COMPARE_NUM = 12,
32411308Santhony.gutierrez@amd.com    BRIG_COMPARE_NAN = 13,
32511308Santhony.gutierrez@amd.com    BRIG_COMPARE_SEQ = 14,
32611308Santhony.gutierrez@amd.com    BRIG_COMPARE_SNE = 15,
32711308Santhony.gutierrez@amd.com    BRIG_COMPARE_SLT = 16,
32811308Santhony.gutierrez@amd.com    BRIG_COMPARE_SLE = 17,
32911308Santhony.gutierrez@amd.com    BRIG_COMPARE_SGT = 18,
33011308Santhony.gutierrez@amd.com    BRIG_COMPARE_SGE = 19,
33111308Santhony.gutierrez@amd.com    BRIG_COMPARE_SGEU = 20,
33211308Santhony.gutierrez@amd.com    BRIG_COMPARE_SEQU = 21,
33311308Santhony.gutierrez@amd.com    BRIG_COMPARE_SNEU = 22,
33411308Santhony.gutierrez@amd.com    BRIG_COMPARE_SLTU = 23,
33511308Santhony.gutierrez@amd.com    BRIG_COMPARE_SLEU = 24,
33611308Santhony.gutierrez@amd.com    BRIG_COMPARE_SNUM = 25,
33711308Santhony.gutierrez@amd.com    BRIG_COMPARE_SNAN = 26,
33811308Santhony.gutierrez@amd.com    BRIG_COMPARE_SGTU = 27
33911308Santhony.gutierrez@amd.com};
34011308Santhony.gutierrez@amd.com
34111308Santhony.gutierrez@amd.comenum BrigControlDirective {
34211308Santhony.gutierrez@amd.com
34311308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_CONTROL_//;lc }
34411308Santhony.gutierrez@amd.com    //.mnemo_token=EControl
34511308Santhony.gutierrez@amd.com    //
34611308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
34711308Santhony.gutierrez@amd.com
34811308Santhony.gutierrez@amd.com    BRIG_CONTROL_NONE = 0, //.skip
34911308Santhony.gutierrez@amd.com    BRIG_CONTROL_ENABLEBREAKEXCEPTIONS = 1,
35011308Santhony.gutierrez@amd.com    BRIG_CONTROL_ENABLEDETECTEXCEPTIONS = 2,
35111308Santhony.gutierrez@amd.com    BRIG_CONTROL_MAXDYNAMICGROUPSIZE = 3,
35211308Santhony.gutierrez@amd.com    BRIG_CONTROL_MAXFLATGRIDSIZE = 4,
35311308Santhony.gutierrez@amd.com    BRIG_CONTROL_MAXFLATWORKGROUPSIZE = 5,
35411308Santhony.gutierrez@amd.com    BRIG_CONTROL_REQUIREDDIM = 6,
35511308Santhony.gutierrez@amd.com    BRIG_CONTROL_REQUIREDGRIDSIZE = 7,
35611308Santhony.gutierrez@amd.com    BRIG_CONTROL_REQUIREDWORKGROUPSIZE = 8,
35711308Santhony.gutierrez@amd.com    BRIG_CONTROL_REQUIRENOPARTIALWORKGROUPS = 9
35811308Santhony.gutierrez@amd.com};
35911308Santhony.gutierrez@amd.com
36011308Santhony.gutierrez@amd.comenum BrigExecutableModifierMask {
36111308Santhony.gutierrez@amd.com    //.nodump
36211308Santhony.gutierrez@amd.com    BRIG_EXECUTABLE_DEFINITION = 1
36311308Santhony.gutierrez@amd.com};
36411308Santhony.gutierrez@amd.com
36511308Santhony.gutierrez@amd.comenum BrigImageChannelOrder {
36611308Santhony.gutierrez@amd.com
36711308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_CHANNEL_ORDER_?//;lc }
36811308Santhony.gutierrez@amd.com    //.mnemo_token=EImageOrder
36911308Santhony.gutierrez@amd.com    //.mnemo_context=EImageOrderContext
37011308Santhony.gutierrez@amd.com    //
37111308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
37211308Santhony.gutierrez@amd.com
37311308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_A = 0,
37411308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_R = 1,
37511308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_RX = 2,
37611308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_RG = 3,
37711308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_RGX = 4,
37811308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_RA = 5,
37911308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_RGB = 6,
38011308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_RGBX = 7,
38111308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_RGBA = 8,
38211308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_BGRA = 9,
38311308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_ARGB = 10,
38411308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_ABGR = 11,
38511308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_SRGB = 12,
38611308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_SRGBX = 13,
38711308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_SRGBA = 14,
38811308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_SBGRA = 15,
38911308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_INTENSITY = 16,
39011308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_LUMINANCE = 17,
39111308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_DEPTH = 18,
39211308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_DEPTH_STENCIL = 19,
39311308Santhony.gutierrez@amd.com
39411308Santhony.gutierrez@amd.com    // used internally
39511308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_UNKNOWN, //.mnemo="" // used when no order is specified
39611308Santhony.gutierrez@amd.com
39711308Santhony.gutierrez@amd.com    BRIG_CHANNEL_ORDER_FIRST_USER_DEFINED = 128 //.skip
39811308Santhony.gutierrez@amd.com
39911308Santhony.gutierrez@amd.com};
40011308Santhony.gutierrez@amd.com
40111308Santhony.gutierrez@amd.comenum BrigImageChannelType {
40211308Santhony.gutierrez@amd.com
40311308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_CHANNEL_TYPE_//;lc }
40411308Santhony.gutierrez@amd.com    //.mnemo_token=EImageFormat
40511308Santhony.gutierrez@amd.com    //
40611308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
40711308Santhony.gutierrez@amd.com
40811308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_SNORM_INT8 = 0,
40911308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_SNORM_INT16 = 1,
41011308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNORM_INT8 = 2,
41111308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNORM_INT16 = 3,
41211308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNORM_INT24 = 4,
41311308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNORM_SHORT_555 = 5,
41411308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNORM_SHORT_565 = 6,
41511308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNORM_INT_101010 = 7,
41611308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_SIGNED_INT8 = 8,
41711308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_SIGNED_INT16 = 9,
41811308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_SIGNED_INT32 = 10,
41911308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNSIGNED_INT8 = 11,
42011308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNSIGNED_INT16 = 12,
42111308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNSIGNED_INT32 = 13,
42211308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_HALF_FLOAT = 14,
42311308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_FLOAT = 15,
42411308Santhony.gutierrez@amd.com
42511308Santhony.gutierrez@amd.com    // used internally
42611308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_UNKNOWN, //.mnemo=""
42711308Santhony.gutierrez@amd.com
42811308Santhony.gutierrez@amd.com    BRIG_CHANNEL_TYPE_FIRST_USER_DEFINED = 128 //.skip
42911308Santhony.gutierrez@amd.com};
43011308Santhony.gutierrez@amd.com
43111308Santhony.gutierrez@amd.comenum BrigImageGeometry {
43211308Santhony.gutierrez@amd.com
43311308Santhony.gutierrez@amd.com    //.tdcaption="Geometry"
43411308Santhony.gutierrez@amd.com    //
43511308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_GEOMETRY_//;lc }
43611308Santhony.gutierrez@amd.com    //.mnemo_token=EImageGeometry
43711308Santhony.gutierrez@amd.com    //
43811308Santhony.gutierrez@amd.com    //.dim={/_([0-9]+D)(A)?/ ? $1+(defined $2?1:0) : undef}
43911308Santhony.gutierrez@amd.com    //.dim_switch //.dim_proto="unsigned getBrigGeometryDim(unsigned geo)" //.dim_arg="geo"
44011308Santhony.gutierrez@amd.com    //.dim_default="assert(0); return 0"
44111308Santhony.gutierrez@amd.com    //
44211308Santhony.gutierrez@amd.com    //.depth={/DEPTH$/?"true":"false"}
44311308Santhony.gutierrez@amd.com    //.depth_switch //.depth_proto="bool isBrigGeometryDepth(unsigned geo)" //.depth_arg="geo"
44411308Santhony.gutierrez@amd.com    //.depth_default="return false"
44511308Santhony.gutierrez@amd.com
44611308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_1D = 0,
44711308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_2D = 1,
44811308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_3D = 2,
44911308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_1DA = 3,
45011308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_2DA = 4,
45111308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_1DB = 5,
45211308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_2DDEPTH = 6,
45311308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_2DADEPTH = 7,
45411308Santhony.gutierrez@amd.com
45511308Santhony.gutierrez@amd.com    // used internally
45611308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_UNKNOWN, //.mnemo=""
45711308Santhony.gutierrez@amd.com
45811308Santhony.gutierrez@amd.com    BRIG_GEOMETRY_FIRST_USER_DEFINED = 128 //.skip
45911308Santhony.gutierrez@amd.com};
46011308Santhony.gutierrez@amd.com
46111308Santhony.gutierrez@amd.comenum BrigImageQuery {
46211308Santhony.gutierrez@amd.com
46311308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_IMAGE_QUERY_//;lc }
46411308Santhony.gutierrez@amd.com    //
46511308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
46611308Santhony.gutierrez@amd.com
46711308Santhony.gutierrez@amd.com    BRIG_IMAGE_QUERY_WIDTH = 0,
46811308Santhony.gutierrez@amd.com    BRIG_IMAGE_QUERY_HEIGHT = 1,
46911308Santhony.gutierrez@amd.com    BRIG_IMAGE_QUERY_DEPTH = 2,
47011308Santhony.gutierrez@amd.com    BRIG_IMAGE_QUERY_ARRAY = 3,
47111308Santhony.gutierrez@amd.com    BRIG_IMAGE_QUERY_CHANNELORDER = 4,
47211308Santhony.gutierrez@amd.com    BRIG_IMAGE_QUERY_CHANNELTYPE = 5,
47311308Santhony.gutierrez@amd.com    BRIG_IMAGE_QUERY_NUMMIPLEVELS = 6
47411308Santhony.gutierrez@amd.com};
47511308Santhony.gutierrez@amd.com
47611308Santhony.gutierrez@amd.comenum BrigLinkage {
47711308Santhony.gutierrez@amd.com
47811308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_LINKAGE_//;s/NONE//;lc }
47911308Santhony.gutierrez@amd.com
48011308Santhony.gutierrez@amd.com    BRIG_LINKAGE_NONE = 0,
48111308Santhony.gutierrez@amd.com    BRIG_LINKAGE_PROGRAM = 1,
48211308Santhony.gutierrez@amd.com    BRIG_LINKAGE_MODULE = 2,
48311308Santhony.gutierrez@amd.com    BRIG_LINKAGE_FUNCTION = 3,
48411308Santhony.gutierrez@amd.com    BRIG_LINKAGE_ARG = 4
48511308Santhony.gutierrez@amd.com};
48611308Santhony.gutierrez@amd.com
48711308Santhony.gutierrez@amd.comenum BrigMachineModel {
48811308Santhony.gutierrez@amd.com
48911308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_MACHINE_//; '$'.lc }
49011308Santhony.gutierrez@amd.com    //.mnemo_token=ETargetMachine
49111308Santhony.gutierrez@amd.com    //
49211308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
49311308Santhony.gutierrez@amd.com
49411308Santhony.gutierrez@amd.com    BRIG_MACHINE_SMALL = 0,
49511308Santhony.gutierrez@amd.com    BRIG_MACHINE_LARGE = 1,
49611308Santhony.gutierrez@amd.com
49711308Santhony.gutierrez@amd.com    BRIG_MACHINE_UNDEF = 2 //.skip
49811308Santhony.gutierrez@amd.com};
49911308Santhony.gutierrez@amd.com
50011308Santhony.gutierrez@amd.comenum BrigMemoryModifierMask { //.tddef=0
50111308Santhony.gutierrez@amd.com    BRIG_MEMORY_CONST = 1
50211308Santhony.gutierrez@amd.com};
50311308Santhony.gutierrez@amd.com
50411308Santhony.gutierrez@amd.comenum BrigMemoryOrder {
50511308Santhony.gutierrez@amd.com
50611308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_MEMORY_ORDER_//; lc }
50711308Santhony.gutierrez@amd.com    //.mnemo_token=_EMMemoryOrder
50811308Santhony.gutierrez@amd.com    //
50911308Santhony.gutierrez@amd.com    //.print=$mnemo{ "_$mnemo" }
51011308Santhony.gutierrez@amd.com
51111308Santhony.gutierrez@amd.com    BRIG_MEMORY_ORDER_NONE = 0,                 //.mnemo=""
51211308Santhony.gutierrez@amd.com    BRIG_MEMORY_ORDER_RELAXED = 1,              //.mnemo=rlx
51311308Santhony.gutierrez@amd.com    BRIG_MEMORY_ORDER_SC_ACQUIRE = 2,           //.mnemo=scacq
51411308Santhony.gutierrez@amd.com    BRIG_MEMORY_ORDER_SC_RELEASE = 3,           //.mnemo=screl
51511308Santhony.gutierrez@amd.com    BRIG_MEMORY_ORDER_SC_ACQUIRE_RELEASE = 4,   //.mnemo=scar
51611308Santhony.gutierrez@amd.com
51711308Santhony.gutierrez@amd.com    BRIG_MEMORY_ORDER_LAST = 5 //.skip
51811308Santhony.gutierrez@amd.com};
51911308Santhony.gutierrez@amd.com
52011308Santhony.gutierrez@amd.comenum BrigMemoryScope {
52111308Santhony.gutierrez@amd.com
52211308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_MEMORY_SCOPE_//; lc }
52311308Santhony.gutierrez@amd.com    //.mnemo_token=_EMMemoryScope
52411308Santhony.gutierrez@amd.com    //
52511308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
52611308Santhony.gutierrez@amd.com
52711308Santhony.gutierrez@amd.com    BRIG_MEMORY_SCOPE_NONE = 0,         //.mnemo=""
52811308Santhony.gutierrez@amd.com    BRIG_MEMORY_SCOPE_WORKITEM = 1,     //.mnemo=""
52911308Santhony.gutierrez@amd.com    BRIG_MEMORY_SCOPE_WAVEFRONT = 2,    //.mnemo=wave
53011308Santhony.gutierrez@amd.com    BRIG_MEMORY_SCOPE_WORKGROUP = 3,    //.mnemo=wg
53111308Santhony.gutierrez@amd.com    BRIG_MEMORY_SCOPE_AGENT = 4,        //.mnemo=agent
53211308Santhony.gutierrez@amd.com    BRIG_MEMORY_SCOPE_SYSTEM = 5,       //.mnemo=system
53311308Santhony.gutierrez@amd.com
53411308Santhony.gutierrez@amd.com    BRIG_MEMORY_SCOPE_LAST = 6 //.skip
53511308Santhony.gutierrez@amd.com};
53611308Santhony.gutierrez@amd.com
53711308Santhony.gutierrez@amd.comenum BrigOpcode {
53811308Santhony.gutierrez@amd.com
53911308Santhony.gutierrez@amd.com    //.tdcaption="Instruction Opcodes"
54011308Santhony.gutierrez@amd.com    //
54111308Santhony.gutierrez@amd.com    //.k={ "BASIC" }
54211308Santhony.gutierrez@amd.com    //.pscode=$k{ MACRO2Name("_".$k) }
54311308Santhony.gutierrez@amd.com    //.opcodeparser=$pscode{ return $pscode && "parseMnemo$pscode" }
54411308Santhony.gutierrez@amd.com    //.opcodeparser_incfile=ParserUtilities
54511308Santhony.gutierrez@amd.com    //.opcodeparser_switch //.opcodeparser_proto="OpcodeParser getOpcodeParser(BrigOpcode16_t arg)" //.opcodeparser_default="return parseMnemoBasic"
54611308Santhony.gutierrez@amd.com    //
54711308Santhony.gutierrez@amd.com    //.psopnd={undef}
54811308Santhony.gutierrez@amd.com    //.opndparser=$psopnd{ return $psopnd && "&Parser::parse$psopnd" }
54911308Santhony.gutierrez@amd.com    //.opndparser_incfile=ParserUtilities
55011308Santhony.gutierrez@amd.com    //.opndparser_switch //.opndparser_proto="Parser::OperandParser Parser::getOperandParser(BrigOpcode16_t arg)" //.opndparser_default="return &Parser::parseOperands"
55111308Santhony.gutierrez@amd.com    //
55211308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_OPCODE_//; s/GCN([^_])/GCN_$1/; lc }
55311308Santhony.gutierrez@amd.com    //.mnemo_scanner=Instructions //.mnemo_token=EInstruction
55411308Santhony.gutierrez@amd.com    //.mnemo_context=EDefaultContext
55511308Santhony.gutierrez@amd.com    //
55611308Santhony.gutierrez@amd.com    //.has_memory_order={undef}
55711308Santhony.gutierrez@amd.com    //.semsupport=$has_memory_order{ return $has_memory_order && "true" }
55811308Santhony.gutierrez@amd.com    //
55911308Santhony.gutierrez@amd.com    //.hasType=$k{ return ($k and $k eq "BASIC_NO_TYPE") ? "false" : undef; }
56011308Santhony.gutierrez@amd.com    //.hasType_switch //.hasType_proto="bool instHasType(BrigOpcode16_t arg)" //.hasType_default="return true"
56111308Santhony.gutierrez@amd.com    //
56211308Santhony.gutierrez@amd.com    //.opcodevis=$pscode{ s/^BRIG_OPCODE_//; sprintf("%-47s(","vis.visitOpcode_".$_) . ($pscode =~m/^(BasicOrMod|Nop)$/? "inst" : "HSAIL_ASM::Inst". ($pscode=~m/BasicNoType/? "Basic":$pscode) ."(inst)").")" }
56311308Santhony.gutierrez@amd.com    //.opcodevis_switch //.opcodevis_proto="template <typename RetType, typename Visitor> RetType visitOpcode_gen(HSAIL_ASM::Inst inst, Visitor& vis)"
56411308Santhony.gutierrez@amd.com    //.opcodevis_arg="inst.opcode()" //.opcodevis_default="return RetType()"
56511308Santhony.gutierrez@amd.com    //.opcodevis_incfile=ItemUtils
56611308Santhony.gutierrez@amd.com    //
56711308Santhony.gutierrez@amd.com    //.ftz=$k{ return ($k eq "BASIC_OR_MOD" or $k eq "CMP" or $k eq "CVT") ? "true" : undef }
56811308Santhony.gutierrez@amd.com    //.ftz_incfile=ItemUtils //.ftz_switch //.ftz_proto="inline bool instSupportsFtz(BrigOpcode16_t arg)" //.ftz_default="return false"
56911308Santhony.gutierrez@amd.com    //
57011308Santhony.gutierrez@amd.com    //.vecOpndIndex={undef}
57111308Santhony.gutierrez@amd.com    //.vecOpndIndex_switch  //.vecOpndIndex_proto="int vecOpndIndex(BrigOpcode16_t arg)" //.vecOpndIndex_default="return -1"
57211308Santhony.gutierrez@amd.com    //.vecOpndIndex_incfile=ParserUtilities
57311308Santhony.gutierrez@amd.com    //
57411308Santhony.gutierrez@amd.com    //.numdst={undef}
57511308Santhony.gutierrez@amd.com    //.numdst_switch //.numdst_proto="int instNumDstOperands(BrigOpcode16_t arg)" //.numdst_default="return 1"
57611308Santhony.gutierrez@amd.com    //
57711308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
57811308Santhony.gutierrez@amd.com
57911308Santhony.gutierrez@amd.com    BRIG_OPCODE_NOP = 0,                    //.k=NOP            //.hasType=false
58011308Santhony.gutierrez@amd.com    BRIG_OPCODE_ABS = 1,                    //.k=BASIC_OR_MOD
58111308Santhony.gutierrez@amd.com    BRIG_OPCODE_ADD = 2,                    //.k=BASIC_OR_MOD
58211308Santhony.gutierrez@amd.com    BRIG_OPCODE_BORROW = 3,
58311308Santhony.gutierrez@amd.com    BRIG_OPCODE_CARRY = 4,
58411308Santhony.gutierrez@amd.com    BRIG_OPCODE_CEIL = 5,                   //.k=BASIC_OR_MOD
58511308Santhony.gutierrez@amd.com    BRIG_OPCODE_COPYSIGN = 6,               //.k=BASIC_OR_MOD
58611308Santhony.gutierrez@amd.com    BRIG_OPCODE_DIV = 7,                    //.k=BASIC_OR_MOD
58711308Santhony.gutierrez@amd.com    BRIG_OPCODE_FLOOR = 8,                  //.k=BASIC_OR_MOD
58811308Santhony.gutierrez@amd.com    BRIG_OPCODE_FMA = 9,                    //.k=BASIC_OR_MOD
58911308Santhony.gutierrez@amd.com    BRIG_OPCODE_FRACT = 10,                 //.k=BASIC_OR_MOD
59011308Santhony.gutierrez@amd.com    BRIG_OPCODE_MAD = 11,                   //.k=BASIC_OR_MOD
59111308Santhony.gutierrez@amd.com    BRIG_OPCODE_MAX = 12,                   //.k=BASIC_OR_MOD
59211308Santhony.gutierrez@amd.com    BRIG_OPCODE_MIN = 13,                   //.k=BASIC_OR_MOD
59311308Santhony.gutierrez@amd.com    BRIG_OPCODE_MUL = 14,                   //.k=BASIC_OR_MOD
59411308Santhony.gutierrez@amd.com    BRIG_OPCODE_MULHI = 15,                 //.k=BASIC_OR_MOD
59511308Santhony.gutierrez@amd.com    BRIG_OPCODE_NEG = 16,                   //.k=BASIC_OR_MOD
59611308Santhony.gutierrez@amd.com    BRIG_OPCODE_REM = 17,
59711308Santhony.gutierrez@amd.com    BRIG_OPCODE_RINT = 18,                  //.k=BASIC_OR_MOD
59811308Santhony.gutierrez@amd.com    BRIG_OPCODE_SQRT = 19,                  //.k=BASIC_OR_MOD
59911308Santhony.gutierrez@amd.com    BRIG_OPCODE_SUB = 20,                   //.k=BASIC_OR_MOD
60011308Santhony.gutierrez@amd.com    BRIG_OPCODE_TRUNC = 21,                 //.k=BASIC_OR_MOD
60111308Santhony.gutierrez@amd.com    BRIG_OPCODE_MAD24 = 22,
60211308Santhony.gutierrez@amd.com    BRIG_OPCODE_MAD24HI = 23,
60311308Santhony.gutierrez@amd.com    BRIG_OPCODE_MUL24 = 24,
60411308Santhony.gutierrez@amd.com    BRIG_OPCODE_MUL24HI = 25,
60511308Santhony.gutierrez@amd.com    BRIG_OPCODE_SHL = 26,
60611308Santhony.gutierrez@amd.com    BRIG_OPCODE_SHR = 27,
60711308Santhony.gutierrez@amd.com    BRIG_OPCODE_AND = 28,
60811308Santhony.gutierrez@amd.com    BRIG_OPCODE_NOT = 29,
60911308Santhony.gutierrez@amd.com    BRIG_OPCODE_OR = 30,
61011308Santhony.gutierrez@amd.com    BRIG_OPCODE_POPCOUNT = 31,              //.k=SOURCE_TYPE
61111308Santhony.gutierrez@amd.com    BRIG_OPCODE_XOR = 32,
61211308Santhony.gutierrez@amd.com    BRIG_OPCODE_BITEXTRACT = 33,
61311308Santhony.gutierrez@amd.com    BRIG_OPCODE_BITINSERT = 34,
61411308Santhony.gutierrez@amd.com    BRIG_OPCODE_BITMASK = 35,
61511308Santhony.gutierrez@amd.com    BRIG_OPCODE_BITREV = 36,
61611308Santhony.gutierrez@amd.com    BRIG_OPCODE_BITSELECT = 37,
61711308Santhony.gutierrez@amd.com    BRIG_OPCODE_FIRSTBIT = 38,              //.k=SOURCE_TYPE
61811308Santhony.gutierrez@amd.com    BRIG_OPCODE_LASTBIT = 39,               //.k=SOURCE_TYPE
61911308Santhony.gutierrez@amd.com    BRIG_OPCODE_COMBINE = 40,               //.k=SOURCE_TYPE    //.vecOpndIndex=1
62011308Santhony.gutierrez@amd.com    BRIG_OPCODE_EXPAND = 41,                //.k=SOURCE_TYPE    //.vecOpndIndex=0
62111308Santhony.gutierrez@amd.com    BRIG_OPCODE_LDA = 42,                   //.k=ADDR
62211308Santhony.gutierrez@amd.com    BRIG_OPCODE_MOV = 43,
62311308Santhony.gutierrez@amd.com    BRIG_OPCODE_SHUFFLE = 44,
62411308Santhony.gutierrez@amd.com    BRIG_OPCODE_UNPACKHI = 45,
62511308Santhony.gutierrez@amd.com    BRIG_OPCODE_UNPACKLO = 46,
62611308Santhony.gutierrez@amd.com    BRIG_OPCODE_PACK = 47,                  //.k=SOURCE_TYPE
62711308Santhony.gutierrez@amd.com    BRIG_OPCODE_UNPACK = 48,                //.k=SOURCE_TYPE
62811308Santhony.gutierrez@amd.com    BRIG_OPCODE_CMOV = 49,
62911308Santhony.gutierrez@amd.com    BRIG_OPCODE_CLASS = 50,                 //.k=SOURCE_TYPE
63011308Santhony.gutierrez@amd.com    BRIG_OPCODE_NCOS = 51,
63111308Santhony.gutierrez@amd.com    BRIG_OPCODE_NEXP2 = 52,
63211308Santhony.gutierrez@amd.com    BRIG_OPCODE_NFMA = 53,
63311308Santhony.gutierrez@amd.com    BRIG_OPCODE_NLOG2 = 54,
63411308Santhony.gutierrez@amd.com    BRIG_OPCODE_NRCP = 55,
63511308Santhony.gutierrez@amd.com    BRIG_OPCODE_NRSQRT = 56,
63611308Santhony.gutierrez@amd.com    BRIG_OPCODE_NSIN = 57,
63711308Santhony.gutierrez@amd.com    BRIG_OPCODE_NSQRT = 58,
63811308Santhony.gutierrez@amd.com    BRIG_OPCODE_BITALIGN = 59,
63911308Santhony.gutierrez@amd.com    BRIG_OPCODE_BYTEALIGN = 60,
64011308Santhony.gutierrez@amd.com    BRIG_OPCODE_PACKCVT = 61,               //.k=SOURCE_TYPE
64111308Santhony.gutierrez@amd.com    BRIG_OPCODE_UNPACKCVT = 62,             //.k=SOURCE_TYPE
64211308Santhony.gutierrez@amd.com    BRIG_OPCODE_LERP = 63,
64311308Santhony.gutierrez@amd.com    BRIG_OPCODE_SAD = 64,                   //.k=SOURCE_TYPE
64411308Santhony.gutierrez@amd.com    BRIG_OPCODE_SADHI = 65,                 //.k=SOURCE_TYPE
64511308Santhony.gutierrez@amd.com    BRIG_OPCODE_SEGMENTP = 66,              //.k=SEG_CVT
64611308Santhony.gutierrez@amd.com    BRIG_OPCODE_FTOS = 67,                  //.k=SEG_CVT
64711308Santhony.gutierrez@amd.com    BRIG_OPCODE_STOF = 68,                  //.k=SEG_CVT
64811308Santhony.gutierrez@amd.com    BRIG_OPCODE_CMP = 69,                   //.k=CMP
64911308Santhony.gutierrez@amd.com    BRIG_OPCODE_CVT = 70,                   //.k=CVT
65011308Santhony.gutierrez@amd.com    BRIG_OPCODE_LD = 71,                    //.k=MEM            //.has_memory_order //.vecOpndIndex=0
65111308Santhony.gutierrez@amd.com    BRIG_OPCODE_ST = 72,                    //.k=MEM            //.has_memory_order //.vecOpndIndex=0 //.numdst=0
65211308Santhony.gutierrez@amd.com    BRIG_OPCODE_ATOMIC = 73,                //.k=ATOMIC
65311308Santhony.gutierrez@amd.com    BRIG_OPCODE_ATOMICNORET = 74,           //.k=ATOMIC         //.numdst=0
65411308Santhony.gutierrez@amd.com    BRIG_OPCODE_SIGNAL = 75,                //.k=SIGNAL
65511308Santhony.gutierrez@amd.com    BRIG_OPCODE_SIGNALNORET = 76,           //.k=SIGNAL         //.numdst=0
65611308Santhony.gutierrez@amd.com    BRIG_OPCODE_MEMFENCE = 77,              //.k=MEM_FENCE      //.numdst=0
65711308Santhony.gutierrez@amd.com    BRIG_OPCODE_RDIMAGE = 78,               //.k=IMAGE          //.vecOpndIndex=0
65811308Santhony.gutierrez@amd.com    BRIG_OPCODE_LDIMAGE = 79,               //.k=IMAGE          //.vecOpndIndex=0
65911308Santhony.gutierrez@amd.com    BRIG_OPCODE_STIMAGE = 80,               //.k=IMAGE          //.vecOpndIndex=0 //.numdst=0
66011308Santhony.gutierrez@amd.com    BRIG_OPCODE_IMAGEFENCE = 81,            //.k=BASIC_NO_TYPE
66111308Santhony.gutierrez@amd.com    BRIG_OPCODE_QUERYIMAGE = 82,            //.k=QUERY_IMAGE
66211308Santhony.gutierrez@amd.com    BRIG_OPCODE_QUERYSAMPLER = 83,          //.k=QUERY_SAMPLER
66311308Santhony.gutierrez@amd.com    BRIG_OPCODE_CBR = 84,                   //.k=BR             //.numdst=0
66411308Santhony.gutierrez@amd.com    BRIG_OPCODE_BR = 85,                    //.k=BR             //.numdst=0     //.hasType=false
66511308Santhony.gutierrez@amd.com    BRIG_OPCODE_SBR = 86,                   //.k=BR             //.numdst=0     //.psopnd=SbrOperands
66611308Santhony.gutierrez@amd.com    BRIG_OPCODE_BARRIER = 87,               //.k=BR             //.numdst=0     //.hasType=false
66711308Santhony.gutierrez@amd.com    BRIG_OPCODE_WAVEBARRIER = 88,           //.k=BR             //.numdst=0     //.hasType=false
66811308Santhony.gutierrez@amd.com    BRIG_OPCODE_ARRIVEFBAR = 89,            //.k=BR             //.numdst=0     //.hasType=false
66911308Santhony.gutierrez@amd.com    BRIG_OPCODE_INITFBAR = 90,              //.k=BASIC_NO_TYPE  //.numdst=0     //.hasType=false
67011308Santhony.gutierrez@amd.com    BRIG_OPCODE_JOINFBAR = 91,              //.k=BR             //.numdst=0     //.hasType=false
67111308Santhony.gutierrez@amd.com    BRIG_OPCODE_LEAVEFBAR = 92,             //.k=BR             //.numdst=0     //.hasType=false
67211308Santhony.gutierrez@amd.com    BRIG_OPCODE_RELEASEFBAR = 93,           //.k=BASIC_NO_TYPE  //.numdst=0
67311308Santhony.gutierrez@amd.com    BRIG_OPCODE_WAITFBAR = 94,              //.k=BR             //.numdst=0     //.hasType=false
67411308Santhony.gutierrez@amd.com    BRIG_OPCODE_LDF = 95,
67511308Santhony.gutierrez@amd.com    BRIG_OPCODE_ACTIVELANECOUNT = 96,       //.k=LANE
67611308Santhony.gutierrez@amd.com    BRIG_OPCODE_ACTIVELANEID = 97,          //.k=LANE
67711308Santhony.gutierrez@amd.com    BRIG_OPCODE_ACTIVELANEMASK = 98,        //.k=LANE           //.vecOpndIndex=0
67811308Santhony.gutierrez@amd.com    BRIG_OPCODE_ACTIVELANEPERMUTE = 99,     //.k=LANE
67911308Santhony.gutierrez@amd.com    BRIG_OPCODE_CALL = 100,                 //.k=BR             //.psopnd=CallOperands //.numdst=0 //.hasType=false
68011308Santhony.gutierrez@amd.com    BRIG_OPCODE_SCALL = 101,                //.k=BR             //.psopnd=CallOperands //.numdst=0
68111308Santhony.gutierrez@amd.com    BRIG_OPCODE_ICALL = 102,                //.k=BR             //.psopnd=CallOperands //.numdst=0
68211308Santhony.gutierrez@amd.com    BRIG_OPCODE_RET = 103,                  //.k=BASIC_NO_TYPE
68311308Santhony.gutierrez@amd.com    BRIG_OPCODE_ALLOCA = 104,               //.k=MEM
68411308Santhony.gutierrez@amd.com    BRIG_OPCODE_CURRENTWORKGROUPSIZE = 105,
68511308Santhony.gutierrez@amd.com    BRIG_OPCODE_CURRENTWORKITEMFLATID = 106,
68611308Santhony.gutierrez@amd.com    BRIG_OPCODE_DIM = 107,
68711308Santhony.gutierrez@amd.com    BRIG_OPCODE_GRIDGROUPS = 108,
68811308Santhony.gutierrez@amd.com    BRIG_OPCODE_GRIDSIZE = 109,
68911308Santhony.gutierrez@amd.com    BRIG_OPCODE_PACKETCOMPLETIONSIG = 110,
69011308Santhony.gutierrez@amd.com    BRIG_OPCODE_PACKETID = 111,
69111308Santhony.gutierrez@amd.com    BRIG_OPCODE_WORKGROUPID = 112,
69211308Santhony.gutierrez@amd.com    BRIG_OPCODE_WORKGROUPSIZE = 113,
69311308Santhony.gutierrez@amd.com    BRIG_OPCODE_WORKITEMABSID = 114,
69411308Santhony.gutierrez@amd.com    BRIG_OPCODE_WORKITEMFLATABSID = 115,
69511308Santhony.gutierrez@amd.com    BRIG_OPCODE_WORKITEMFLATID = 116,
69611308Santhony.gutierrez@amd.com    BRIG_OPCODE_WORKITEMID = 117,
69711308Santhony.gutierrez@amd.com    BRIG_OPCODE_CLEARDETECTEXCEPT = 118,    //.numdst=0
69811308Santhony.gutierrez@amd.com    BRIG_OPCODE_GETDETECTEXCEPT = 119,
69911308Santhony.gutierrez@amd.com    BRIG_OPCODE_SETDETECTEXCEPT = 120,      //.numdst=0
70011308Santhony.gutierrez@amd.com    BRIG_OPCODE_ADDQUEUEWRITEINDEX = 121,   //.k=QUEUE
70111308Santhony.gutierrez@amd.com    BRIG_OPCODE_CASQUEUEWRITEINDEX = 122,   //.k=QUEUE
70211308Santhony.gutierrez@amd.com    BRIG_OPCODE_LDQUEUEREADINDEX = 123,     //.k=QUEUE
70311308Santhony.gutierrez@amd.com    BRIG_OPCODE_LDQUEUEWRITEINDEX = 124,    //.k=QUEUE
70411308Santhony.gutierrez@amd.com    BRIG_OPCODE_STQUEUEREADINDEX = 125,     //.k=QUEUE      //.numdst=0
70511308Santhony.gutierrez@amd.com    BRIG_OPCODE_STQUEUEWRITEINDEX = 126,    //.k=QUEUE      //.numdst=0
70611308Santhony.gutierrez@amd.com    BRIG_OPCODE_CLOCK = 127,
70711308Santhony.gutierrez@amd.com    BRIG_OPCODE_CUID = 128,
70811308Santhony.gutierrez@amd.com    BRIG_OPCODE_DEBUGTRAP = 129,            //.numdst=0
70911308Santhony.gutierrez@amd.com    BRIG_OPCODE_GROUPBASEPTR = 130,
71011308Santhony.gutierrez@amd.com    BRIG_OPCODE_KERNARGBASEPTR = 131,
71111308Santhony.gutierrez@amd.com    BRIG_OPCODE_LANEID = 132,
71211308Santhony.gutierrez@amd.com    BRIG_OPCODE_MAXCUID = 133,
71311308Santhony.gutierrez@amd.com    BRIG_OPCODE_MAXWAVEID = 134,
71411308Santhony.gutierrez@amd.com    BRIG_OPCODE_NULLPTR = 135,              //.k=SEG
71511308Santhony.gutierrez@amd.com    BRIG_OPCODE_WAVEID = 136,
71611308Santhony.gutierrez@amd.com    BRIG_OPCODE_FIRST_USER_DEFINED = 32768, //.skip
71711308Santhony.gutierrez@amd.com
71811308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMADU = (1u << 15) | 0,           //.k=BASIC_NO_TYPE
71911308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMADS = (1u << 15) | 1,           //.k=BASIC_NO_TYPE
72011308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMAX3 = (1u << 15) | 2,
72111308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMIN3 = (1u << 15) | 3,
72211308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMED3 = (1u << 15) | 4,
72311308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNFLDEXP = (1u << 15) | 5,         //.k=BASIC_OR_MOD
72411308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNFREXP_EXP = (1u << 15) | 6,      //.k=BASIC_OR_MOD
72511308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNFREXP_MANT = (1u << 15) | 7,     //.k=BASIC_OR_MOD
72611308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNTRIG_PREOP = (1u << 15) | 8,     //.k=BASIC_OR_MOD
72711308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNBFM = (1u << 15) | 9,
72811308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNLD = (1u << 15) | 10,            //.k=MEM            //.has_memory_order //.vecOpndIndex=0
72911308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNST = (1u << 15) | 11,            //.k=MEM            //.has_memory_order //.vecOpndIndex=0
73011308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNATOMIC = (1u << 15) | 12,        //.k=ATOMIC
73111308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNATOMICNORET = (1u << 15) | 13,   //.k=ATOMIC         //.mnemo=gcn_atomicNoRet
73211308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNSLEEP = (1u << 15) | 14,
73311308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNPRIORITY = (1u << 15) | 15,
73411308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNREGIONALLOC = (1u << 15) | 16,   //.k=BASIC_NO_TYPE //.mnemo=gcn_region_alloc
73511308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMSAD = (1u << 15) | 17,
73611308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNQSAD = (1u << 15) | 18,
73711308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMQSAD = (1u << 15) | 19,
73811308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMQSAD4 = (1u << 15) | 20,        //.k=BASIC_NO_TYPE
73911308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNSADW = (1u << 15) | 21,
74011308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNSADD = (1u << 15) | 22,
74111308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNCONSUME = (1u << 15) | 23,       //.k=ADDR           //.mnemo=gcn_atomic_consume
74211308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNAPPEND = (1u << 15) | 24,        //.k=ADDR           //.mnemo=gcn_atomic_append
74311308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNB4XCHG = (1u << 15) | 25,        //.mnemo=gcn_b4xchg
74411308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNB32XCHG = (1u << 15) | 26,       //.mnemo=gcn_b32xchg
74511308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMAX = (1u << 15) | 27,
74611308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNMIN = (1u << 15) | 28,
74711308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNDIVRELAXED = (1u << 15) | 29,    //.k=BASIC_OR_MOD
74811308Santhony.gutierrez@amd.com    BRIG_OPCODE_GCNDIVRELAXEDNARROW = (1u << 15) | 30,
74911308Santhony.gutierrez@amd.com
75011308Santhony.gutierrez@amd.com    BRIG_OPCODE_AMDRDIMAGELOD  = (1u << 15) | 31,    //.k=IMAGE //.mnemo=amd_rdimagelod  //.vecOpndIndex=0
75111308Santhony.gutierrez@amd.com    BRIG_OPCODE_AMDRDIMAGEGRAD = (1u << 15) | 32,    //.k=IMAGE //.mnemo=amd_rdimagegrad //.vecOpndIndex=0
75211308Santhony.gutierrez@amd.com    BRIG_OPCODE_AMDLDIMAGEMIP  = (1u << 15) | 33,    //.k=IMAGE //.mnemo=amd_ldimagemip //.vecOpndIndex=0
75311308Santhony.gutierrez@amd.com    BRIG_OPCODE_AMDSTIMAGEMIP  = (1u << 15) | 34,    //.k=IMAGE //.mnemo=amd_stimagemip //.vecOpndIndex=0 //.numdst=0
75411308Santhony.gutierrez@amd.com    BRIG_OPCODE_AMDQUERYIMAGE  = (1u << 15) | 35     //.k=QUERY_IMAGE //.mnemo=amd_queryimage
75511308Santhony.gutierrez@amd.com};
75611308Santhony.gutierrez@amd.com
75711308Santhony.gutierrez@amd.comenum BrigPack {
75811308Santhony.gutierrez@amd.com
75911308Santhony.gutierrez@amd.com    //.tdcaption="Packing"
76011308Santhony.gutierrez@amd.com    //
76111308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_PACK_//;s/SAT$/_sat/;lc }
76211308Santhony.gutierrez@amd.com    //.mnemo_token=_EMPacking
76311308Santhony.gutierrez@amd.com    //
76411308Santhony.gutierrez@amd.com    //.print=$mnemo{ "_$mnemo" }
76511308Santhony.gutierrez@amd.com
76611308Santhony.gutierrez@amd.com    BRIG_PACK_NONE = 0, //.mnemo=""
76711308Santhony.gutierrez@amd.com    BRIG_PACK_PP = 1,
76811308Santhony.gutierrez@amd.com    BRIG_PACK_PS = 2,
76911308Santhony.gutierrez@amd.com    BRIG_PACK_SP = 3,
77011308Santhony.gutierrez@amd.com    BRIG_PACK_SS = 4,
77111308Santhony.gutierrez@amd.com    BRIG_PACK_S = 5,
77211308Santhony.gutierrez@amd.com    BRIG_PACK_P = 6,
77311308Santhony.gutierrez@amd.com    BRIG_PACK_PPSAT = 7,
77411308Santhony.gutierrez@amd.com    BRIG_PACK_PSSAT = 8,
77511308Santhony.gutierrez@amd.com    BRIG_PACK_SPSAT = 9,
77611308Santhony.gutierrez@amd.com    BRIG_PACK_SSSAT = 10,
77711308Santhony.gutierrez@amd.com    BRIG_PACK_SSAT = 11,
77811308Santhony.gutierrez@amd.com    BRIG_PACK_PSAT = 12
77911308Santhony.gutierrez@amd.com};
78011308Santhony.gutierrez@amd.com
78111308Santhony.gutierrez@amd.comenum BrigProfile {
78211308Santhony.gutierrez@amd.com
78311308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_PROFILE_//;'$'.lc }
78411308Santhony.gutierrez@amd.com    //.mnemo_token=ETargetProfile
78511308Santhony.gutierrez@amd.com    //
78611308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
78711308Santhony.gutierrez@amd.com
78811308Santhony.gutierrez@amd.com    BRIG_PROFILE_BASE = 0,
78911308Santhony.gutierrez@amd.com    BRIG_PROFILE_FULL = 1,
79011308Santhony.gutierrez@amd.com
79111308Santhony.gutierrez@amd.com    BRIG_PROFILE_UNDEF = 2 //.skip
79211308Santhony.gutierrez@amd.com};
79311308Santhony.gutierrez@amd.com
79411308Santhony.gutierrez@amd.comenum BrigRegisterKind {
79511308Santhony.gutierrez@amd.com
79611308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_REGISTER_KIND_//;'$'.lc(substr($_,0,1)) }
79711308Santhony.gutierrez@amd.com    //
79811308Santhony.gutierrez@amd.com    //.bits={ }
79911308Santhony.gutierrez@amd.com    //.bits_switch //.bits_proto="unsigned getRegBits(BrigRegisterKind16_t arg)" //.bits_default="return (unsigned)-1"
80011308Santhony.gutierrez@amd.com    //
80111308Santhony.gutierrez@amd.com    //.nollvm
80211308Santhony.gutierrez@amd.com
80311308Santhony.gutierrez@amd.com    BRIG_REGISTER_KIND_CONTROL = 0, //.bits=1
80411308Santhony.gutierrez@amd.com    BRIG_REGISTER_KIND_SINGLE = 1,  //.bits=32
80511308Santhony.gutierrez@amd.com    BRIG_REGISTER_KIND_DOUBLE = 2,  //.bits=64
80611308Santhony.gutierrez@amd.com    BRIG_REGISTER_KIND_QUAD = 3     //.bits=128
80711308Santhony.gutierrez@amd.com};
80811308Santhony.gutierrez@amd.com
80911308Santhony.gutierrez@amd.comenum BrigRound {
81011308Santhony.gutierrez@amd.com
81111308Santhony.gutierrez@amd.com    //.mnemo={}
81211308Santhony.gutierrez@amd.com    //.mnemo_fn=round2str //.mnemo_token=_EMRound
81311308Santhony.gutierrez@amd.com    //
81411308Santhony.gutierrez@amd.com    //.sat={/_SAT$/? "true" : "false"}
81511308Santhony.gutierrez@amd.com    //.sat_switch //.sat_proto="bool isSatRounding(unsigned rounding)" //.sat_arg="rounding"
81611308Santhony.gutierrez@amd.com    //.sat_default="return false"
81711308Santhony.gutierrez@amd.com    //
81811308Santhony.gutierrez@amd.com    //.sig={/_SIGNALING_/? "true" : "false"}
81911308Santhony.gutierrez@amd.com    //.sig_switch //.sig_proto="bool isSignalingRounding(unsigned rounding)" //.sig_arg="rounding"
82011308Santhony.gutierrez@amd.com    //.sig_default="return false"
82111308Santhony.gutierrez@amd.com    //
82211308Santhony.gutierrez@amd.com    //.int={/_INTEGER_/? "true" : "false"}
82311308Santhony.gutierrez@amd.com    //.int_switch //.int_proto="bool isIntRounding(unsigned rounding)" //.int_arg="rounding"
82411308Santhony.gutierrez@amd.com    //.int_default="return false"
82511308Santhony.gutierrez@amd.com    //
82611308Santhony.gutierrez@amd.com    //.flt={/_FLOAT_/? "true" : "false"}
82711308Santhony.gutierrez@amd.com    //.flt_switch //.flt_proto="bool isFloatRounding(unsigned rounding)" //.flt_arg="rounding"
82811308Santhony.gutierrez@amd.com    //.flt_default="return false"
82911308Santhony.gutierrez@amd.com    //
83011308Santhony.gutierrez@amd.com    //.print=$mnemo{ "_$mnemo" }
83111308Santhony.gutierrez@amd.com
83211308Santhony.gutierrez@amd.com    BRIG_ROUND_NONE = 0,                                    //.no_mnemo
83311308Santhony.gutierrez@amd.com    BRIG_ROUND_FLOAT_DEFAULT = 1,                           //.no_mnemo
83411308Santhony.gutierrez@amd.com    BRIG_ROUND_FLOAT_NEAR_EVEN = 2,                         //.mnemo=near
83511308Santhony.gutierrez@amd.com    BRIG_ROUND_FLOAT_ZERO = 3,                              //.mnemo=zero
83611308Santhony.gutierrez@amd.com    BRIG_ROUND_FLOAT_PLUS_INFINITY = 4,                     //.mnemo=up
83711308Santhony.gutierrez@amd.com    BRIG_ROUND_FLOAT_MINUS_INFINITY = 5,                    //.mnemo=down
83811308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_NEAR_EVEN = 6,                       //.mnemo=neari
83911308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_ZERO = 7,                            //.mnemo=zeroi
84011308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_PLUS_INFINITY = 8,                   //.mnemo=upi
84111308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_MINUS_INFINITY = 9,                  //.mnemo=downi
84211308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_NEAR_EVEN_SAT = 10,                  //.mnemo=neari_sat
84311308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_ZERO_SAT = 11,                       //.mnemo=zeroi_sat
84411308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_PLUS_INFINITY_SAT = 12,              //.mnemo=upi_sat
84511308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_MINUS_INFINITY_SAT = 13,             //.mnemo=downi_sat
84611308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_NEAR_EVEN = 14,            //.mnemo=sneari
84711308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_ZERO = 15,                 //.mnemo=szeroi
84811308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_PLUS_INFINITY = 16,        //.mnemo=supi
84911308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_MINUS_INFINITY = 17,       //.mnemo=sdowni
85011308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_NEAR_EVEN_SAT = 18,        //.mnemo=sneari_sat
85111308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_ZERO_SAT = 19,             //.mnemo=szeroi_sat
85211308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_PLUS_INFINITY_SAT = 20,    //.mnemo=supi_sat
85311308Santhony.gutierrez@amd.com    BRIG_ROUND_INTEGER_SIGNALING_MINUS_INFINITY_SAT = 21    //.mnemo=sdowni_sat
85411308Santhony.gutierrez@amd.com};
85511308Santhony.gutierrez@amd.com
85611308Santhony.gutierrez@amd.comenum BrigSamplerAddressing {
85711308Santhony.gutierrez@amd.com
85811308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_ADDRESSING_//;lc }
85911308Santhony.gutierrez@amd.com    //.mnemo_token=ESamplerAddressingMode
86011308Santhony.gutierrez@amd.com
86111308Santhony.gutierrez@amd.com    BRIG_ADDRESSING_UNDEFINED = 0,
86211308Santhony.gutierrez@amd.com    BRIG_ADDRESSING_CLAMP_TO_EDGE = 1,
86311308Santhony.gutierrez@amd.com    BRIG_ADDRESSING_CLAMP_TO_BORDER = 2,
86411308Santhony.gutierrez@amd.com    BRIG_ADDRESSING_REPEAT = 3,
86511308Santhony.gutierrez@amd.com    BRIG_ADDRESSING_MIRRORED_REPEAT = 4,
86611308Santhony.gutierrez@amd.com
86711308Santhony.gutierrez@amd.com    BRIG_ADDRESSING_FIRST_USER_DEFINED = 128 //.skip
86811308Santhony.gutierrez@amd.com};
86911308Santhony.gutierrez@amd.com
87011308Santhony.gutierrez@amd.comenum BrigSamplerCoordNormalization {
87111308Santhony.gutierrez@amd.com
87211308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_COORD_//;lc }
87311308Santhony.gutierrez@amd.com    //.mnemo_token=ESamplerCoord
87411308Santhony.gutierrez@amd.com    //
87511308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
87611308Santhony.gutierrez@amd.com
87711308Santhony.gutierrez@amd.com    BRIG_COORD_UNNORMALIZED = 0,
87811308Santhony.gutierrez@amd.com    BRIG_COORD_NORMALIZED = 1
87911308Santhony.gutierrez@amd.com};
88011308Santhony.gutierrez@amd.com
88111308Santhony.gutierrez@amd.comenum BrigSamplerFilter {
88211308Santhony.gutierrez@amd.com
88311308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_FILTER_//;lc }
88411308Santhony.gutierrez@amd.com    //
88511308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
88611308Santhony.gutierrez@amd.com
88711308Santhony.gutierrez@amd.com    BRIG_FILTER_NEAREST = 0,
88811308Santhony.gutierrez@amd.com    BRIG_FILTER_LINEAR = 1,
88911308Santhony.gutierrez@amd.com
89011308Santhony.gutierrez@amd.com    BRIG_FILTER_FIRST_USER_DEFINED = 128 //.skip
89111308Santhony.gutierrez@amd.com};
89211308Santhony.gutierrez@amd.com
89311308Santhony.gutierrez@amd.comenum BrigSamplerQuery {
89411308Santhony.gutierrez@amd.com
89511308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_SAMPLER_QUERY_//;lc }
89611308Santhony.gutierrez@amd.com    //.mnemo_token=_EMSamplerQuery
89711308Santhony.gutierrez@amd.com    //
89811308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo }
89911308Santhony.gutierrez@amd.com
90011308Santhony.gutierrez@amd.com    BRIG_SAMPLER_QUERY_ADDRESSING = 0,
90111308Santhony.gutierrez@amd.com    BRIG_SAMPLER_QUERY_COORD = 1,
90211308Santhony.gutierrez@amd.com    BRIG_SAMPLER_QUERY_FILTER = 2
90311308Santhony.gutierrez@amd.com};
90411308Santhony.gutierrez@amd.com
90511308Santhony.gutierrez@amd.comenum BrigSectionIndex {
90611308Santhony.gutierrez@amd.com
90711308Santhony.gutierrez@amd.com    //.nollvm
90811308Santhony.gutierrez@amd.com    //
90911308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_SECTION_INDEX_/HSA_/;lc }
91011308Santhony.gutierrez@amd.com
91111308Santhony.gutierrez@amd.com    BRIG_SECTION_INDEX_DATA = 0,
91211308Santhony.gutierrez@amd.com    BRIG_SECTION_INDEX_CODE = 1,
91311308Santhony.gutierrez@amd.com    BRIG_SECTION_INDEX_OPERAND = 2,
91411308Santhony.gutierrez@amd.com    BRIG_SECTION_INDEX_BEGIN_IMPLEMENTATION_DEFINED = 3,
91511308Santhony.gutierrez@amd.com
91611308Santhony.gutierrez@amd.com    // used internally
91711308Santhony.gutierrez@amd.com    BRIG_SECTION_INDEX_IMPLEMENTATION_DEFINED = BRIG_SECTION_INDEX_BEGIN_IMPLEMENTATION_DEFINED //.skip
91811308Santhony.gutierrez@amd.com};
91911308Santhony.gutierrez@amd.com
92011308Santhony.gutierrez@amd.comenum BrigSegCvtModifierMask {
92111308Santhony.gutierrez@amd.com    BRIG_SEG_CVT_NONULL = 1         //.mnemo="nonull" //.print="_nonull"
92211308Santhony.gutierrez@amd.com};
92311308Santhony.gutierrez@amd.com
92411308Santhony.gutierrez@amd.comenum BrigSegment {
92511308Santhony.gutierrez@amd.com
92611308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_SEGMENT_//;lc}
92711308Santhony.gutierrez@amd.com    //.mnemo_token=_EMSegment
92811308Santhony.gutierrez@amd.com    //.mnemo_context=EInstModifierContext
92911308Santhony.gutierrez@amd.com    //
93011308Santhony.gutierrez@amd.com    //.print=$mnemo{ $mnemo ? "_$mnemo" : "" }
93111308Santhony.gutierrez@amd.com
93211308Santhony.gutierrez@amd.com    BRIG_SEGMENT_NONE = 0, //.mnemo=""
93311308Santhony.gutierrez@amd.com    BRIG_SEGMENT_FLAT = 1, //.mnemo=""
93411308Santhony.gutierrez@amd.com    BRIG_SEGMENT_GLOBAL = 2,
93511308Santhony.gutierrez@amd.com    BRIG_SEGMENT_READONLY = 3,
93611308Santhony.gutierrez@amd.com    BRIG_SEGMENT_KERNARG = 4,
93711308Santhony.gutierrez@amd.com    BRIG_SEGMENT_GROUP = 5,
93811308Santhony.gutierrez@amd.com    BRIG_SEGMENT_PRIVATE = 6,
93911308Santhony.gutierrez@amd.com    BRIG_SEGMENT_SPILL = 7,
94011308Santhony.gutierrez@amd.com    BRIG_SEGMENT_ARG = 8,
94111308Santhony.gutierrez@amd.com
94211308Santhony.gutierrez@amd.com    BRIG_SEGMENT_FIRST_USER_DEFINED = 128, //.skip
94311308Santhony.gutierrez@amd.com
94411308Santhony.gutierrez@amd.com    BRIG_SEGMENT_AMD_GCN = 9, //.mnemo="region"
94511308Santhony.gutierrez@amd.com};
94611308Santhony.gutierrez@amd.com
94711308Santhony.gutierrez@amd.comenum BrigPackedTypeBits {
94811308Santhony.gutierrez@amd.com
94911308Santhony.gutierrez@amd.com    //.nodump
95011308Santhony.gutierrez@amd.com    //
95111308Santhony.gutierrez@amd.com    //.nollvm
95211308Santhony.gutierrez@amd.com
95311308Santhony.gutierrez@amd.com    BRIG_TYPE_BASE_SIZE  = 5,
95411308Santhony.gutierrez@amd.com    BRIG_TYPE_PACK_SIZE  = 2,
95511308Santhony.gutierrez@amd.com    BRIG_TYPE_ARRAY_SIZE = 1,
95611308Santhony.gutierrez@amd.com
95711308Santhony.gutierrez@amd.com    BRIG_TYPE_BASE_SHIFT  = 0,
95811308Santhony.gutierrez@amd.com    BRIG_TYPE_PACK_SHIFT  = BRIG_TYPE_BASE_SHIFT + BRIG_TYPE_BASE_SIZE,
95911308Santhony.gutierrez@amd.com    BRIG_TYPE_ARRAY_SHIFT = BRIG_TYPE_PACK_SHIFT + BRIG_TYPE_PACK_SIZE,
96011308Santhony.gutierrez@amd.com
96111308Santhony.gutierrez@amd.com    BRIG_TYPE_BASE_MASK  = ((1 << BRIG_TYPE_BASE_SIZE)  - 1) << BRIG_TYPE_BASE_SHIFT,
96211308Santhony.gutierrez@amd.com    BRIG_TYPE_PACK_MASK  = ((1 << BRIG_TYPE_PACK_SIZE)  - 1) << BRIG_TYPE_PACK_SHIFT,
96311308Santhony.gutierrez@amd.com    BRIG_TYPE_ARRAY_MASK = ((1 << BRIG_TYPE_ARRAY_SIZE) - 1) << BRIG_TYPE_ARRAY_SHIFT,
96411308Santhony.gutierrez@amd.com
96511308Santhony.gutierrez@amd.com    BRIG_TYPE_PACK_NONE = 0 << BRIG_TYPE_PACK_SHIFT,
96611308Santhony.gutierrez@amd.com    BRIG_TYPE_PACK_32   = 1 << BRIG_TYPE_PACK_SHIFT,
96711308Santhony.gutierrez@amd.com    BRIG_TYPE_PACK_64   = 2 << BRIG_TYPE_PACK_SHIFT,
96811308Santhony.gutierrez@amd.com    BRIG_TYPE_PACK_128  = 3 << BRIG_TYPE_PACK_SHIFT,
96911308Santhony.gutierrez@amd.com
97011308Santhony.gutierrez@amd.com    BRIG_TYPE_ARRAY     = 1 << BRIG_TYPE_ARRAY_SHIFT
97111308Santhony.gutierrez@amd.com};
97211308Santhony.gutierrez@amd.com
97311308Santhony.gutierrez@amd.comenum BrigType {
97411308Santhony.gutierrez@amd.com
97511308Santhony.gutierrez@amd.com    //.numBits={ /ARRAY$/ ? undef : /([0-9]+)X([0-9]+)/ ? $1*$2 : /([0-9]+)/ ? $1 : undef }
97611308Santhony.gutierrez@amd.com    //.numBits_switch //.numBits_proto="unsigned getBrigTypeNumBits(unsigned arg)" //.numBits_default="assert(0); return 0"
97711308Santhony.gutierrez@amd.com    //.numBytes=$numBits{ $numBits > 1 ? $numBits/8 : undef }
97811308Santhony.gutierrez@amd.com    //.numBytes_switch //.numBytes_proto="unsigned getBrigTypeNumBytes(unsigned arg)" //.numBytes_default="assert(0); return 0"
97911308Santhony.gutierrez@amd.com    //
98011308Santhony.gutierrez@amd.com    //.mnemo={ s/^BRIG_TYPE_//;lc }
98111308Santhony.gutierrez@amd.com    //.mnemo_token=_EMType
98211308Santhony.gutierrez@amd.com    //
98311308Santhony.gutierrez@amd.com    //.array={/ARRAY$/?"true":"false"}
98411308Santhony.gutierrez@amd.com    //.array_switch //.array_proto="bool isArrayType(unsigned type)" //.array_arg="type"
98511308Santhony.gutierrez@amd.com    //.array_default="return false"
98611308Santhony.gutierrez@amd.com    //
98711308Santhony.gutierrez@amd.com    //.a2e={/(.*)_ARRAY$/? $1 : "BRIG_TYPE_NONE"}
98811308Santhony.gutierrez@amd.com    //.a2e_switch //.a2e_proto="unsigned arrayType2elementType(unsigned type)" //.a2e_arg="type"
98911308Santhony.gutierrez@amd.com    //.a2e_default="return BRIG_TYPE_NONE"
99011308Santhony.gutierrez@amd.com    //
99111308Santhony.gutierrez@amd.com    //.e2a={/_ARRAY$/? "BRIG_TYPE_NONE" : /_NONE$/ ? "BRIG_TYPE_NONE" : /_B1$/ ? "BRIG_TYPE_NONE" : $_ . "_ARRAY"}
99211308Santhony.gutierrez@amd.com    //.e2a_switch //.e2a_proto="unsigned elementType2arrayType(unsigned type)" //.e2a_arg="type"
99311308Santhony.gutierrez@amd.com    //.e2a_default="return BRIG_TYPE_NONE"
99411308Santhony.gutierrez@amd.com    //
99511308Santhony.gutierrez@amd.com    //.t2s={s/^BRIG_TYPE_//;lc s/_ARRAY$/[]/;lc}
99611308Santhony.gutierrez@amd.com    //.t2s_switch //.t2s_proto="const char* type2name(unsigned type)" //.t2s_arg="type"
99711308Santhony.gutierrez@amd.com    //.t2s_default="return NULL"
99811308Santhony.gutierrez@amd.com    //
99911308Santhony.gutierrez@amd.com    //.dispatch_switch //.dispatch_incfile=TemplateUtilities
100011308Santhony.gutierrez@amd.com    //.dispatch_proto="template<typename RetType, typename Visitor>\nRetType dispatchByType_gen(unsigned type, Visitor& v)"
100111308Santhony.gutierrez@amd.com    //.dispatch={ /ARRAY$/ ? "v.visitNone(type)" : /^BRIG_TYPE_([BUSF]|SIG)[0-9]+/ ? "v.template visit< BrigTypeTraits<$_> >()" : "v.visitNone(type)" }
100211308Santhony.gutierrez@amd.com    //.dispatch_arg="type" //.dispatch_default="return v.visitNone(type)"
100311308Santhony.gutierrez@amd.com    //
100411308Santhony.gutierrez@amd.com    //- .tdname=BrigType
100511308Santhony.gutierrez@amd.com    //
100611308Santhony.gutierrez@amd.com    //.print=$mnemo{ "_$mnemo" }
100711308Santhony.gutierrez@amd.com
100811308Santhony.gutierrez@amd.com    BRIG_TYPE_NONE  = 0,  //.mnemo=""       //.print=""
100911308Santhony.gutierrez@amd.com    BRIG_TYPE_U8    = 1,  //.ctype=uint8_t
101011308Santhony.gutierrez@amd.com    BRIG_TYPE_U16   = 2,  //.ctype=uint16_t
101111308Santhony.gutierrez@amd.com    BRIG_TYPE_U32   = 3,  //.ctype=uint32_t
101211308Santhony.gutierrez@amd.com    BRIG_TYPE_U64   = 4,  //.ctype=uint64_t
101311308Santhony.gutierrez@amd.com    BRIG_TYPE_S8    = 5,  //.ctype=int8_t
101411308Santhony.gutierrez@amd.com    BRIG_TYPE_S16   = 6,  //.ctype=int16_t
101511308Santhony.gutierrez@amd.com    BRIG_TYPE_S32   = 7,  //.ctype=int32_t
101611308Santhony.gutierrez@amd.com    BRIG_TYPE_S64   = 8,  //.ctype=int64_t
101711308Santhony.gutierrez@amd.com    BRIG_TYPE_F16   = 9,  //.ctype=f16_t
101811308Santhony.gutierrez@amd.com    BRIG_TYPE_F32   = 10, //.ctype=float
101911308Santhony.gutierrez@amd.com    BRIG_TYPE_F64   = 11, //.ctype=double
102011308Santhony.gutierrez@amd.com    BRIG_TYPE_B1    = 12, //.ctype=bool     //.numBytes=1
102111308Santhony.gutierrez@amd.com    BRIG_TYPE_B8    = 13, //.ctype=uint8_t
102211308Santhony.gutierrez@amd.com    BRIG_TYPE_B16   = 14, //.ctype=uint16_t
102311308Santhony.gutierrez@amd.com    BRIG_TYPE_B32   = 15, //.ctype=uint32_t
102411308Santhony.gutierrez@amd.com    BRIG_TYPE_B64   = 16, //.ctype=uint64_t
102511308Santhony.gutierrez@amd.com    BRIG_TYPE_B128  = 17, //.ctype=b128_t
102611308Santhony.gutierrez@amd.com    BRIG_TYPE_SAMP  = 18, //.mnemo=samp     //.numBits=64
102711308Santhony.gutierrez@amd.com    BRIG_TYPE_ROIMG = 19, //.mnemo=roimg    //.numBits=64
102811308Santhony.gutierrez@amd.com    BRIG_TYPE_WOIMG = 20, //.mnemo=woimg    //.numBits=64
102911308Santhony.gutierrez@amd.com    BRIG_TYPE_RWIMG = 21, //.mnemo=rwimg    //.numBits=64
103011308Santhony.gutierrez@amd.com    BRIG_TYPE_SIG32 = 22, //.mnemo=sig32    //.numBits=64
103111308Santhony.gutierrez@amd.com    BRIG_TYPE_SIG64 = 23, //.mnemo=sig64    //.numBits=64
103211308Santhony.gutierrez@amd.com
103311308Santhony.gutierrez@amd.com    BRIG_TYPE_U8X4  = BRIG_TYPE_U8  | BRIG_TYPE_PACK_32,  //.ctype=uint8_t
103411308Santhony.gutierrez@amd.com    BRIG_TYPE_U8X8  = BRIG_TYPE_U8  | BRIG_TYPE_PACK_64,  //.ctype=uint8_t
103511308Santhony.gutierrez@amd.com    BRIG_TYPE_U8X16 = BRIG_TYPE_U8  | BRIG_TYPE_PACK_128, //.ctype=uint8_t
103611308Santhony.gutierrez@amd.com    BRIG_TYPE_U16X2 = BRIG_TYPE_U16 | BRIG_TYPE_PACK_32,  //.ctype=uint16_t
103711308Santhony.gutierrez@amd.com    BRIG_TYPE_U16X4 = BRIG_TYPE_U16 | BRIG_TYPE_PACK_64,  //.ctype=uint16_t
103811308Santhony.gutierrez@amd.com    BRIG_TYPE_U16X8 = BRIG_TYPE_U16 | BRIG_TYPE_PACK_128, //.ctype=uint16_t
103911308Santhony.gutierrez@amd.com    BRIG_TYPE_U32X2 = BRIG_TYPE_U32 | BRIG_TYPE_PACK_64,  //.ctype=uint32_t
104011308Santhony.gutierrez@amd.com    BRIG_TYPE_U32X4 = BRIG_TYPE_U32 | BRIG_TYPE_PACK_128, //.ctype=uint32_t
104111308Santhony.gutierrez@amd.com    BRIG_TYPE_U64X2 = BRIG_TYPE_U64 | BRIG_TYPE_PACK_128, //.ctype=uint64_t
104211308Santhony.gutierrez@amd.com    BRIG_TYPE_S8X4  = BRIG_TYPE_S8  | BRIG_TYPE_PACK_32,  //.ctype=int8_t
104311308Santhony.gutierrez@amd.com    BRIG_TYPE_S8X8  = BRIG_TYPE_S8  | BRIG_TYPE_PACK_64,  //.ctype=int8_t
104411308Santhony.gutierrez@amd.com    BRIG_TYPE_S8X16 = BRIG_TYPE_S8  | BRIG_TYPE_PACK_128, //.ctype=int8_t
104511308Santhony.gutierrez@amd.com    BRIG_TYPE_S16X2 = BRIG_TYPE_S16 | BRIG_TYPE_PACK_32,  //.ctype=int16_t
104611308Santhony.gutierrez@amd.com    BRIG_TYPE_S16X4 = BRIG_TYPE_S16 | BRIG_TYPE_PACK_64,  //.ctype=int16_t
104711308Santhony.gutierrez@amd.com    BRIG_TYPE_S16X8 = BRIG_TYPE_S16 | BRIG_TYPE_PACK_128, //.ctype=int16_t
104811308Santhony.gutierrez@amd.com    BRIG_TYPE_S32X2 = BRIG_TYPE_S32 | BRIG_TYPE_PACK_64,  //.ctype=int32_t
104911308Santhony.gutierrez@amd.com    BRIG_TYPE_S32X4 = BRIG_TYPE_S32 | BRIG_TYPE_PACK_128, //.ctype=int32_t
105011308Santhony.gutierrez@amd.com    BRIG_TYPE_S64X2 = BRIG_TYPE_S64 | BRIG_TYPE_PACK_128, //.ctype=int64_t
105111308Santhony.gutierrez@amd.com    BRIG_TYPE_F16X2 = BRIG_TYPE_F16 | BRIG_TYPE_PACK_32,  //.ctype=f16_t
105211308Santhony.gutierrez@amd.com    BRIG_TYPE_F16X4 = BRIG_TYPE_F16 | BRIG_TYPE_PACK_64,  //.ctype=f16_t
105311308Santhony.gutierrez@amd.com    BRIG_TYPE_F16X8 = BRIG_TYPE_F16 | BRIG_TYPE_PACK_128, //.ctype=f16_t
105411308Santhony.gutierrez@amd.com    BRIG_TYPE_F32X2 = BRIG_TYPE_F32 | BRIG_TYPE_PACK_64,  //.ctype=float
105511308Santhony.gutierrez@amd.com    BRIG_TYPE_F32X4 = BRIG_TYPE_F32 | BRIG_TYPE_PACK_128, //.ctype=float
105611308Santhony.gutierrez@amd.com    BRIG_TYPE_F64X2 = BRIG_TYPE_F64 | BRIG_TYPE_PACK_128, //.ctype=double
105711308Santhony.gutierrez@amd.com
105811308Santhony.gutierrez@amd.com    BRIG_TYPE_U8_ARRAY    = BRIG_TYPE_U8    | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
105911308Santhony.gutierrez@amd.com    BRIG_TYPE_U16_ARRAY   = BRIG_TYPE_U16   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106011308Santhony.gutierrez@amd.com    BRIG_TYPE_U32_ARRAY   = BRIG_TYPE_U32   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106111308Santhony.gutierrez@amd.com    BRIG_TYPE_U64_ARRAY   = BRIG_TYPE_U64   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106211308Santhony.gutierrez@amd.com    BRIG_TYPE_S8_ARRAY    = BRIG_TYPE_S8    | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106311308Santhony.gutierrez@amd.com    BRIG_TYPE_S16_ARRAY   = BRIG_TYPE_S16   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106411308Santhony.gutierrez@amd.com    BRIG_TYPE_S32_ARRAY   = BRIG_TYPE_S32   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106511308Santhony.gutierrez@amd.com    BRIG_TYPE_S64_ARRAY   = BRIG_TYPE_S64   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106611308Santhony.gutierrez@amd.com    BRIG_TYPE_F16_ARRAY   = BRIG_TYPE_F16   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106711308Santhony.gutierrez@amd.com    BRIG_TYPE_F32_ARRAY   = BRIG_TYPE_F32   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106811308Santhony.gutierrez@amd.com    BRIG_TYPE_F64_ARRAY   = BRIG_TYPE_F64   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
106911308Santhony.gutierrez@amd.com    BRIG_TYPE_B8_ARRAY    = BRIG_TYPE_B8    | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107011308Santhony.gutierrez@amd.com    BRIG_TYPE_B16_ARRAY   = BRIG_TYPE_B16   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107111308Santhony.gutierrez@amd.com    BRIG_TYPE_B32_ARRAY   = BRIG_TYPE_B32   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107211308Santhony.gutierrez@amd.com    BRIG_TYPE_B64_ARRAY   = BRIG_TYPE_B64   | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107311308Santhony.gutierrez@amd.com    BRIG_TYPE_B128_ARRAY  = BRIG_TYPE_B128  | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107411308Santhony.gutierrez@amd.com    BRIG_TYPE_SAMP_ARRAY  = BRIG_TYPE_SAMP  | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107511308Santhony.gutierrez@amd.com    BRIG_TYPE_ROIMG_ARRAY = BRIG_TYPE_ROIMG | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107611308Santhony.gutierrez@amd.com    BRIG_TYPE_WOIMG_ARRAY = BRIG_TYPE_WOIMG | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107711308Santhony.gutierrez@amd.com    BRIG_TYPE_RWIMG_ARRAY = BRIG_TYPE_RWIMG | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107811308Santhony.gutierrez@amd.com    BRIG_TYPE_SIG32_ARRAY = BRIG_TYPE_SIG32 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
107911308Santhony.gutierrez@amd.com    BRIG_TYPE_SIG64_ARRAY = BRIG_TYPE_SIG64 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108011308Santhony.gutierrez@amd.com    BRIG_TYPE_U8X4_ARRAY  = BRIG_TYPE_U8X4  | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108111308Santhony.gutierrez@amd.com    BRIG_TYPE_U8X8_ARRAY  = BRIG_TYPE_U8X8  | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108211308Santhony.gutierrez@amd.com    BRIG_TYPE_U8X16_ARRAY = BRIG_TYPE_U8X16 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108311308Santhony.gutierrez@amd.com    BRIG_TYPE_U16X2_ARRAY = BRIG_TYPE_U16X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108411308Santhony.gutierrez@amd.com    BRIG_TYPE_U16X4_ARRAY = BRIG_TYPE_U16X4 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108511308Santhony.gutierrez@amd.com    BRIG_TYPE_U16X8_ARRAY = BRIG_TYPE_U16X8 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108611308Santhony.gutierrez@amd.com    BRIG_TYPE_U32X2_ARRAY = BRIG_TYPE_U32X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108711308Santhony.gutierrez@amd.com    BRIG_TYPE_U32X4_ARRAY = BRIG_TYPE_U32X4 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108811308Santhony.gutierrez@amd.com    BRIG_TYPE_U64X2_ARRAY = BRIG_TYPE_U64X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
108911308Santhony.gutierrez@amd.com    BRIG_TYPE_S8X4_ARRAY  = BRIG_TYPE_S8X4  | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109011308Santhony.gutierrez@amd.com    BRIG_TYPE_S8X8_ARRAY  = BRIG_TYPE_S8X8  | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109111308Santhony.gutierrez@amd.com    BRIG_TYPE_S8X16_ARRAY = BRIG_TYPE_S8X16 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109211308Santhony.gutierrez@amd.com    BRIG_TYPE_S16X2_ARRAY = BRIG_TYPE_S16X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109311308Santhony.gutierrez@amd.com    BRIG_TYPE_S16X4_ARRAY = BRIG_TYPE_S16X4 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109411308Santhony.gutierrez@amd.com    BRIG_TYPE_S16X8_ARRAY = BRIG_TYPE_S16X8 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109511308Santhony.gutierrez@amd.com    BRIG_TYPE_S32X2_ARRAY = BRIG_TYPE_S32X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109611308Santhony.gutierrez@amd.com    BRIG_TYPE_S32X4_ARRAY = BRIG_TYPE_S32X4 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109711308Santhony.gutierrez@amd.com    BRIG_TYPE_S64X2_ARRAY = BRIG_TYPE_S64X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109811308Santhony.gutierrez@amd.com    BRIG_TYPE_F16X2_ARRAY = BRIG_TYPE_F16X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
109911308Santhony.gutierrez@amd.com    BRIG_TYPE_F16X4_ARRAY = BRIG_TYPE_F16X4 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
110011308Santhony.gutierrez@amd.com    BRIG_TYPE_F16X8_ARRAY = BRIG_TYPE_F16X8 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
110111308Santhony.gutierrez@amd.com    BRIG_TYPE_F32X2_ARRAY = BRIG_TYPE_F32X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
110211308Santhony.gutierrez@amd.com    BRIG_TYPE_F32X4_ARRAY = BRIG_TYPE_F32X4 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
110311308Santhony.gutierrez@amd.com    BRIG_TYPE_F64X2_ARRAY = BRIG_TYPE_F64X2 | BRIG_TYPE_ARRAY,  //.mnemo=""     //.print=""
110411308Santhony.gutierrez@amd.com
110511308Santhony.gutierrez@amd.com    // Used internally
110611308Santhony.gutierrez@amd.com    BRIG_TYPE_INVALID = (unsigned) -1 //.skip
110711308Santhony.gutierrez@amd.com};
110811308Santhony.gutierrez@amd.com
110911308Santhony.gutierrez@amd.comenum BrigVariableModifierMask {
111011308Santhony.gutierrez@amd.com
111111308Santhony.gutierrez@amd.com    //.nodump
111211308Santhony.gutierrez@amd.com
111311308Santhony.gutierrez@amd.com    BRIG_VARIABLE_DEFINITION = 1,
111411308Santhony.gutierrez@amd.com    BRIG_VARIABLE_CONST = 2
111511308Santhony.gutierrez@amd.com};
111611308Santhony.gutierrez@amd.com
111711308Santhony.gutierrez@amd.comenum BrigWidth {
111811308Santhony.gutierrez@amd.com
111911308Santhony.gutierrez@amd.com    //.tddef=1
112011308Santhony.gutierrez@amd.com    //
112111308Santhony.gutierrez@amd.com    //.print={ s/^BRIG_WIDTH_//; "_width($_)" }
112211308Santhony.gutierrez@amd.com
112311308Santhony.gutierrez@amd.com    BRIG_WIDTH_NONE = 0,
112411308Santhony.gutierrez@amd.com    BRIG_WIDTH_1 = 1,
112511308Santhony.gutierrez@amd.com    BRIG_WIDTH_2 = 2,
112611308Santhony.gutierrez@amd.com    BRIG_WIDTH_4 = 3,
112711308Santhony.gutierrez@amd.com    BRIG_WIDTH_8 = 4,
112811308Santhony.gutierrez@amd.com    BRIG_WIDTH_16 = 5,
112911308Santhony.gutierrez@amd.com    BRIG_WIDTH_32 = 6,
113011308Santhony.gutierrez@amd.com    BRIG_WIDTH_64 = 7,
113111308Santhony.gutierrez@amd.com    BRIG_WIDTH_128 = 8,
113211308Santhony.gutierrez@amd.com    BRIG_WIDTH_256 = 9,
113311308Santhony.gutierrez@amd.com    BRIG_WIDTH_512 = 10,
113411308Santhony.gutierrez@amd.com    BRIG_WIDTH_1024 = 11,
113511308Santhony.gutierrez@amd.com    BRIG_WIDTH_2048 = 12,
113611308Santhony.gutierrez@amd.com    BRIG_WIDTH_4096 = 13,
113711308Santhony.gutierrez@amd.com    BRIG_WIDTH_8192 = 14,
113811308Santhony.gutierrez@amd.com    BRIG_WIDTH_16384 = 15,
113911308Santhony.gutierrez@amd.com    BRIG_WIDTH_32768 = 16,
114011308Santhony.gutierrez@amd.com    BRIG_WIDTH_65536 = 17,
114111308Santhony.gutierrez@amd.com    BRIG_WIDTH_131072 = 18,
114211308Santhony.gutierrez@amd.com    BRIG_WIDTH_262144 = 19,
114311308Santhony.gutierrez@amd.com    BRIG_WIDTH_524288 = 20,
114411308Santhony.gutierrez@amd.com    BRIG_WIDTH_1048576 = 21,
114511308Santhony.gutierrez@amd.com    BRIG_WIDTH_2097152 = 22,
114611308Santhony.gutierrez@amd.com    BRIG_WIDTH_4194304 = 23,
114711308Santhony.gutierrez@amd.com    BRIG_WIDTH_8388608 = 24,
114811308Santhony.gutierrez@amd.com    BRIG_WIDTH_16777216 = 25,
114911308Santhony.gutierrez@amd.com    BRIG_WIDTH_33554432 = 26,
115011308Santhony.gutierrez@amd.com    BRIG_WIDTH_67108864 = 27,
115111308Santhony.gutierrez@amd.com    BRIG_WIDTH_134217728 = 28,
115211308Santhony.gutierrez@amd.com    BRIG_WIDTH_268435456 = 29,
115311308Santhony.gutierrez@amd.com    BRIG_WIDTH_536870912 = 30,
115411308Santhony.gutierrez@amd.com    BRIG_WIDTH_1073741824 = 31,
115511308Santhony.gutierrez@amd.com    BRIG_WIDTH_2147483648 = 32,
115611308Santhony.gutierrez@amd.com    BRIG_WIDTH_WAVESIZE = 33,
115711308Santhony.gutierrez@amd.com    BRIG_WIDTH_ALL = 34,
115811308Santhony.gutierrez@amd.com
115911308Santhony.gutierrez@amd.com    BRIG_WIDTH_LAST //.skip
116011308Santhony.gutierrez@amd.com};
116111308Santhony.gutierrez@amd.com
116211308Santhony.gutierrez@amd.comstruct BrigUInt64 { //.isroot //.standalone
116311308Santhony.gutierrez@amd.com    uint32_t lo;     //.defValue=0
116411308Santhony.gutierrez@amd.com    uint32_t hi;     //.defValue=0
116511308Santhony.gutierrez@amd.com
116611308Santhony.gutierrez@amd.com    //+hcode KLASS& operator=(uint64_t rhs);
116711308Santhony.gutierrez@amd.com    //+hcode operator uint64_t();
116811308Santhony.gutierrez@amd.com    //+implcode inline KLASS& KLASS::operator=(uint64_t rhs) { lo() = (uint32_t)rhs; hi() = (uint32_t)(rhs >> 32); return *this; }
116911308Santhony.gutierrez@amd.com    //+implcode inline KLASS::operator uint64_t() { return ((uint64_t)hi()) << 32 | lo(); }
117011308Santhony.gutierrez@amd.com};
117111308Santhony.gutierrez@amd.com
117211308Santhony.gutierrez@amd.comstruct BrigAluModifier { //.isroot //.standalone
117311308Santhony.gutierrez@amd.com    BrigAluModifier8_t allBits; //.defValue=0
117411308Santhony.gutierrez@amd.com    //^^ bool ftz; //.wtype=BitValRef<0>
117511308Santhony.gutierrez@amd.com};
117611308Santhony.gutierrez@amd.com
117711308Santhony.gutierrez@amd.comstruct BrigBase { //.nowrap
117811308Santhony.gutierrez@amd.com    uint16_t byteCount;
117911308Santhony.gutierrez@amd.com    BrigKind16_t kind;
118011308Santhony.gutierrez@amd.com};
118111308Santhony.gutierrez@amd.com
118211308Santhony.gutierrez@amd.com//.alias Code:Base { //.generic //.isroot //.section=BRIG_SECTION_INDEX_CODE };
118311308Santhony.gutierrez@amd.com//.alias Directive:Code { //.generic };
118411308Santhony.gutierrez@amd.com//.alias Operand:Base { //.generic //.isroot //.section=BRIG_SECTION_INDEX_OPERAND };
118511308Santhony.gutierrez@amd.com
118611308Santhony.gutierrez@amd.comstruct BrigData {
118711308Santhony.gutierrez@amd.com    //.nowrap
118811308Santhony.gutierrez@amd.com    uint32_t byteCount;
118911308Santhony.gutierrez@amd.com    uint8_t bytes[1];
119011308Santhony.gutierrez@amd.com};
119111308Santhony.gutierrez@amd.com
119211308Santhony.gutierrez@amd.comstruct BrigExecutableModifier { //.isroot //.standalone
119311308Santhony.gutierrez@amd.com    BrigExecutableModifier8_t allBits; //.defValue=0
119411308Santhony.gutierrez@amd.com    //^^ bool isDefinition; //.wtype=BitValRef<0>
119511308Santhony.gutierrez@amd.com};
119611308Santhony.gutierrez@amd.com
119711308Santhony.gutierrez@amd.comstruct BrigMemoryModifier { //.isroot //.standalone
119811308Santhony.gutierrez@amd.com    BrigMemoryModifier8_t allBits; //.defValue=0
119911308Santhony.gutierrez@amd.com    //^^ bool isConst; //.wtype=BitValRef<0>
120011308Santhony.gutierrez@amd.com};
120111308Santhony.gutierrez@amd.com
120211308Santhony.gutierrez@amd.comstruct BrigSegCvtModifier { //.isroot //.standalone
120311308Santhony.gutierrez@amd.com    BrigSegCvtModifier8_t allBits; //.defValue=0
120411308Santhony.gutierrez@amd.com    //^^ bool isNoNull; //.wtype=BitValRef<0>
120511308Santhony.gutierrez@amd.com};
120611308Santhony.gutierrez@amd.com
120711308Santhony.gutierrez@amd.comstruct BrigVariableModifier { //.isroot //.standalone
120811308Santhony.gutierrez@amd.com    BrigVariableModifier8_t allBits;    //.defValue=0
120911308Santhony.gutierrez@amd.com
121011308Santhony.gutierrez@amd.com    //^^ bool isDefinition;     //.wtype=BitValRef<0>
121111308Santhony.gutierrez@amd.com    //^^ bool isConst;          //.wtype=BitValRef<1>
121211308Santhony.gutierrez@amd.com};
121311308Santhony.gutierrez@amd.com
121411308Santhony.gutierrez@amd.comstruct BrigDirectiveArgBlockEnd {
121511308Santhony.gutierrez@amd.com    BrigBase base;
121611308Santhony.gutierrez@amd.com};
121711308Santhony.gutierrez@amd.com
121811308Santhony.gutierrez@amd.comstruct BrigDirectiveArgBlockStart {
121911308Santhony.gutierrez@amd.com    BrigBase base;
122011308Santhony.gutierrez@amd.com};
122111308Santhony.gutierrez@amd.com
122211308Santhony.gutierrez@amd.comstruct BrigDirectiveComment {
122311308Santhony.gutierrez@amd.com    BrigBase base;
122411308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t name;
122511308Santhony.gutierrez@amd.com};
122611308Santhony.gutierrez@amd.com
122711308Santhony.gutierrez@amd.comstruct BrigDirectiveControl {
122811308Santhony.gutierrez@amd.com    BrigBase base;
122911308Santhony.gutierrez@amd.com    BrigControlDirective16_t control;
123011308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
123111308Santhony.gutierrez@amd.com    BrigDataOffsetOperandList32_t operands;
123211308Santhony.gutierrez@amd.com};
123311308Santhony.gutierrez@amd.com
123411308Santhony.gutierrez@amd.comstruct BrigDirectiveExecutable { //.generic
123511308Santhony.gutierrez@amd.com    BrigBase base;
123611308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t name;
123711308Santhony.gutierrez@amd.com    uint16_t outArgCount; //.defValue=0
123811308Santhony.gutierrez@amd.com    uint16_t inArgCount;  //.defValue=0
123911308Santhony.gutierrez@amd.com    BrigCodeOffset32_t firstInArg;
124011308Santhony.gutierrez@amd.com    BrigCodeOffset32_t firstCodeBlockEntry;
124111308Santhony.gutierrez@amd.com    BrigCodeOffset32_t nextModuleEntry;
124211308Santhony.gutierrez@amd.com    BrigExecutableModifier modifier; //.acc=subItem<ExecutableModifier> //.wtype=ExecutableModifier
124311308Santhony.gutierrez@amd.com    BrigLinkage8_t linkage;
124411308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
124511308Santhony.gutierrez@amd.com};
124611308Santhony.gutierrez@amd.com
124711308Santhony.gutierrez@amd.com//.alias DirectiveKernel:DirectiveExecutable { };
124811308Santhony.gutierrez@amd.com//.alias DirectiveFunction:DirectiveExecutable { };
124911308Santhony.gutierrez@amd.com//.alias DirectiveSignature:DirectiveExecutable { };
125011308Santhony.gutierrez@amd.com//.alias DirectiveIndirectFunction:DirectiveExecutable { };
125111308Santhony.gutierrez@amd.com
125211308Santhony.gutierrez@amd.comstruct BrigDirectiveExtension {
125311308Santhony.gutierrez@amd.com    BrigBase base;
125411308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t name;
125511308Santhony.gutierrez@amd.com};
125611308Santhony.gutierrez@amd.com
125711308Santhony.gutierrez@amd.comstruct BrigDirectiveFbarrier {
125811308Santhony.gutierrez@amd.com    BrigBase base;
125911308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t name;
126011308Santhony.gutierrez@amd.com    BrigVariableModifier modifier; //.acc=subItem<VariableModifier> //.wtype=VariableModifier
126111308Santhony.gutierrez@amd.com    BrigLinkage8_t linkage;
126211308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
126311308Santhony.gutierrez@amd.com};
126411308Santhony.gutierrez@amd.com
126511308Santhony.gutierrez@amd.comstruct BrigDirectiveLabel {
126611308Santhony.gutierrez@amd.com    BrigBase base;
126711308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t name;
126811308Santhony.gutierrez@amd.com};
126911308Santhony.gutierrez@amd.com
127011308Santhony.gutierrez@amd.comstruct BrigDirectiveLoc {
127111308Santhony.gutierrez@amd.com    BrigBase base;
127211308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t filename;
127311308Santhony.gutierrez@amd.com    uint32_t line;
127411308Santhony.gutierrez@amd.com    uint32_t column; //.defValue=1
127511308Santhony.gutierrez@amd.com};
127611308Santhony.gutierrez@amd.com
127711308Santhony.gutierrez@amd.comstruct BrigDirectiveNone { //.enum=BRIG_KIND_NONE
127811308Santhony.gutierrez@amd.com    BrigBase base;
127911308Santhony.gutierrez@amd.com};
128011308Santhony.gutierrez@amd.com
128111308Santhony.gutierrez@amd.comstruct BrigDirectivePragma {
128211308Santhony.gutierrez@amd.com    BrigBase base;
128311308Santhony.gutierrez@amd.com    BrigDataOffsetOperandList32_t operands;
128411308Santhony.gutierrez@amd.com};
128511308Santhony.gutierrez@amd.com
128611308Santhony.gutierrez@amd.comstruct BrigDirectiveVariable {
128711308Santhony.gutierrez@amd.com    BrigBase base;
128811308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t name;
128911308Santhony.gutierrez@amd.com    BrigOperandOffset32_t init;
129011308Santhony.gutierrez@amd.com    BrigType16_t type;
129111308Santhony.gutierrez@amd.com
129211308Santhony.gutierrez@amd.com    //+hcode bool isArray();
129311308Santhony.gutierrez@amd.com    //+implcode inline bool KLASS::isArray() { return isArrayType(type()); }
129411308Santhony.gutierrez@amd.com
129511308Santhony.gutierrez@amd.com    //+hcode unsigned elementType();
129611308Santhony.gutierrez@amd.com    //+implcode inline unsigned KLASS::elementType() { return isArray()? arrayType2elementType(type()) : type(); }
129711308Santhony.gutierrez@amd.com
129811308Santhony.gutierrez@amd.com    BrigSegment8_t segment;
129911308Santhony.gutierrez@amd.com    BrigAlignment8_t align;
130011308Santhony.gutierrez@amd.com    BrigUInt64 dim; //.acc=subItem<UInt64> //.wtype=UInt64
130111308Santhony.gutierrez@amd.com    BrigVariableModifier modifier; //.acc=subItem<VariableModifier> //.wtype=VariableModifier
130211308Santhony.gutierrez@amd.com    BrigLinkage8_t linkage;
130311308Santhony.gutierrez@amd.com    BrigAllocation8_t allocation;
130411308Santhony.gutierrez@amd.com    uint8_t reserved; //.defValue=0
130511308Santhony.gutierrez@amd.com};
130611308Santhony.gutierrez@amd.com
130711308Santhony.gutierrez@amd.comstruct BrigDirectiveModule {
130811308Santhony.gutierrez@amd.com    BrigBase base;
130911308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t name;
131011308Santhony.gutierrez@amd.com    BrigVersion32_t hsailMajor;         //.wtype=ValRef<uint32_t>
131111308Santhony.gutierrez@amd.com    BrigVersion32_t hsailMinor;         //.wtype=ValRef<uint32_t>
131211308Santhony.gutierrez@amd.com    BrigProfile8_t profile;
131311308Santhony.gutierrez@amd.com    BrigMachineModel8_t machineModel;
131411308Santhony.gutierrez@amd.com    BrigRound8_t defaultFloatRound;
131511308Santhony.gutierrez@amd.com    uint8_t reserved;                   //.defValue=0
131611308Santhony.gutierrez@amd.com};
131711308Santhony.gutierrez@amd.com
131811308Santhony.gutierrez@amd.comstruct BrigInstBase { //.wname=Inst //.generic //.parent=BrigCode
131911308Santhony.gutierrez@amd.com    BrigBase base;
132011308Santhony.gutierrez@amd.com    BrigOpcode16_t opcode;
132111308Santhony.gutierrez@amd.com    BrigType16_t type;
132211308Santhony.gutierrez@amd.com    BrigDataOffsetOperandList32_t operands;
132311308Santhony.gutierrez@amd.com
132411308Santhony.gutierrez@amd.com    //+hcode Operand operand(int index);
132511308Santhony.gutierrez@amd.com    //+implcode inline Operand KLASS::operand(int index) { return operands()[index]; }
132611308Santhony.gutierrez@amd.com};
132711308Santhony.gutierrez@amd.com
132811308Santhony.gutierrez@amd.comstruct BrigInstAddr {
132911308Santhony.gutierrez@amd.com    BrigInstBase base;
133011308Santhony.gutierrez@amd.com    BrigSegment8_t segment;
133111308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
133211308Santhony.gutierrez@amd.com};
133311308Santhony.gutierrez@amd.com
133411308Santhony.gutierrez@amd.comstruct BrigInstAtomic {
133511308Santhony.gutierrez@amd.com    BrigInstBase base;
133611308Santhony.gutierrez@amd.com    BrigSegment8_t segment;
133711308Santhony.gutierrez@amd.com    BrigMemoryOrder8_t memoryOrder;
133811308Santhony.gutierrez@amd.com    BrigMemoryScope8_t memoryScope;
133911308Santhony.gutierrez@amd.com    BrigAtomicOperation8_t atomicOperation;
134011308Santhony.gutierrez@amd.com    uint8_t equivClass;
134111308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
134211308Santhony.gutierrez@amd.com};
134311308Santhony.gutierrez@amd.com
134411308Santhony.gutierrez@amd.comstruct BrigInstBasic {
134511308Santhony.gutierrez@amd.com    BrigInstBase base;
134611308Santhony.gutierrez@amd.com};
134711308Santhony.gutierrez@amd.com
134811308Santhony.gutierrez@amd.comstruct BrigInstBr {
134911308Santhony.gutierrez@amd.com    BrigInstBase base;
135011308Santhony.gutierrez@amd.com    BrigWidth8_t width;
135111308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
135211308Santhony.gutierrez@amd.com};
135311308Santhony.gutierrez@amd.com
135411308Santhony.gutierrez@amd.comstruct BrigInstCmp {
135511308Santhony.gutierrez@amd.com    BrigInstBase base;
135611308Santhony.gutierrez@amd.com    BrigType16_t sourceType;
135711308Santhony.gutierrez@amd.com    BrigAluModifier modifier; //.acc=subItem<AluModifier> //.wtype=AluModifier
135811308Santhony.gutierrez@amd.com    BrigCompareOperation8_t compare;
135911308Santhony.gutierrez@amd.com    BrigPack8_t pack;
136011308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
136111308Santhony.gutierrez@amd.com};
136211308Santhony.gutierrez@amd.com
136311308Santhony.gutierrez@amd.comstruct BrigInstCvt {
136411308Santhony.gutierrez@amd.com    BrigInstBase base;
136511308Santhony.gutierrez@amd.com    BrigType16_t sourceType;
136611308Santhony.gutierrez@amd.com    BrigAluModifier modifier; //.acc=subItem<AluModifier> //.wtype=AluModifier
136711308Santhony.gutierrez@amd.com    BrigRound8_t round;
136811308Santhony.gutierrez@amd.com};
136911308Santhony.gutierrez@amd.com
137011308Santhony.gutierrez@amd.comstruct BrigInstImage {
137111308Santhony.gutierrez@amd.com    BrigInstBase base;
137211308Santhony.gutierrez@amd.com    BrigType16_t imageType;
137311308Santhony.gutierrez@amd.com    BrigType16_t coordType;
137411308Santhony.gutierrez@amd.com    BrigImageGeometry8_t geometry;
137511308Santhony.gutierrez@amd.com    uint8_t equivClass;
137611308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
137711308Santhony.gutierrez@amd.com};
137811308Santhony.gutierrez@amd.com
137911308Santhony.gutierrez@amd.comstruct BrigInstLane {
138011308Santhony.gutierrez@amd.com    BrigInstBase base;
138111308Santhony.gutierrez@amd.com    BrigType16_t sourceType;
138211308Santhony.gutierrez@amd.com    BrigWidth8_t width;
138311308Santhony.gutierrez@amd.com    uint8_t reserved; //.defValue=0
138411308Santhony.gutierrez@amd.com};
138511308Santhony.gutierrez@amd.com
138611308Santhony.gutierrez@amd.comstruct BrigInstMem {
138711308Santhony.gutierrez@amd.com    BrigInstBase base;
138811308Santhony.gutierrez@amd.com    BrigSegment8_t segment;
138911308Santhony.gutierrez@amd.com    BrigAlignment8_t align;
139011308Santhony.gutierrez@amd.com    uint8_t equivClass;
139111308Santhony.gutierrez@amd.com    BrigWidth8_t width;
139211308Santhony.gutierrez@amd.com    BrigMemoryModifier modifier; //.acc=subItem<MemoryModifier> //.wtype=MemoryModifier
139311308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
139411308Santhony.gutierrez@amd.com};
139511308Santhony.gutierrez@amd.com
139611308Santhony.gutierrez@amd.comstruct BrigInstMemFence {
139711308Santhony.gutierrez@amd.com    BrigInstBase base;
139811308Santhony.gutierrez@amd.com    BrigMemoryOrder8_t memoryOrder;
139911308Santhony.gutierrez@amd.com    BrigMemoryScope8_t globalSegmentMemoryScope;
140011308Santhony.gutierrez@amd.com    BrigMemoryScope8_t groupSegmentMemoryScope;
140111308Santhony.gutierrez@amd.com    BrigMemoryScope8_t imageSegmentMemoryScope;
140211308Santhony.gutierrez@amd.com};
140311308Santhony.gutierrez@amd.com
140411308Santhony.gutierrez@amd.comstruct BrigInstMod {
140511308Santhony.gutierrez@amd.com    BrigInstBase base;
140611308Santhony.gutierrez@amd.com    BrigAluModifier modifier; //.acc=subItem<AluModifier> //.wtype=AluModifier
140711308Santhony.gutierrez@amd.com    BrigRound8_t round;
140811308Santhony.gutierrez@amd.com    BrigPack8_t pack;
140911308Santhony.gutierrez@amd.com    uint8_t reserved; //.defValue=0
141011308Santhony.gutierrez@amd.com};
141111308Santhony.gutierrez@amd.com
141211308Santhony.gutierrez@amd.comstruct BrigInstQueryImage {
141311308Santhony.gutierrez@amd.com    BrigInstBase base;
141411308Santhony.gutierrez@amd.com    BrigType16_t imageType;
141511308Santhony.gutierrez@amd.com    BrigImageGeometry8_t geometry;
141611308Santhony.gutierrez@amd.com    BrigImageQuery8_t imageQuery;
141711308Santhony.gutierrez@amd.com};
141811308Santhony.gutierrez@amd.com
141911308Santhony.gutierrez@amd.comstruct BrigInstQuerySampler {
142011308Santhony.gutierrez@amd.com    BrigInstBase base;
142111308Santhony.gutierrez@amd.com    BrigSamplerQuery8_t samplerQuery;
142211308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
142311308Santhony.gutierrez@amd.com};
142411308Santhony.gutierrez@amd.com
142511308Santhony.gutierrez@amd.comstruct BrigInstQueue {
142611308Santhony.gutierrez@amd.com    BrigInstBase base;
142711308Santhony.gutierrez@amd.com    BrigSegment8_t segment;
142811308Santhony.gutierrez@amd.com    BrigMemoryOrder8_t memoryOrder;
142911308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
143011308Santhony.gutierrez@amd.com};
143111308Santhony.gutierrez@amd.com
143211308Santhony.gutierrez@amd.comstruct BrigInstSeg {
143311308Santhony.gutierrez@amd.com    BrigInstBase base;
143411308Santhony.gutierrez@amd.com    BrigSegment8_t segment;
143511308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
143611308Santhony.gutierrez@amd.com};
143711308Santhony.gutierrez@amd.com
143811308Santhony.gutierrez@amd.comstruct BrigInstSegCvt {
143911308Santhony.gutierrez@amd.com    BrigInstBase base;
144011308Santhony.gutierrez@amd.com    BrigType16_t sourceType;
144111308Santhony.gutierrez@amd.com    BrigSegment8_t segment;
144211308Santhony.gutierrez@amd.com    BrigSegCvtModifier modifier; //.acc=subItem<SegCvtModifier> //.wtype=SegCvtModifier
144311308Santhony.gutierrez@amd.com};
144411308Santhony.gutierrez@amd.com
144511308Santhony.gutierrez@amd.comstruct BrigInstSignal {
144611308Santhony.gutierrez@amd.com    BrigInstBase base;
144711308Santhony.gutierrez@amd.com    BrigType16_t signalType;
144811308Santhony.gutierrez@amd.com    BrigMemoryOrder8_t memoryOrder;
144911308Santhony.gutierrez@amd.com    BrigAtomicOperation8_t signalOperation;
145011308Santhony.gutierrez@amd.com};
145111308Santhony.gutierrez@amd.com
145211308Santhony.gutierrez@amd.comstruct BrigInstSourceType {
145311308Santhony.gutierrez@amd.com    BrigInstBase base;
145411308Santhony.gutierrez@amd.com    BrigType16_t sourceType;
145511308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
145611308Santhony.gutierrez@amd.com};
145711308Santhony.gutierrez@amd.com
145811737Sbrandon.potter@amd.comtypedef BrigInstSourceType BrigInstPopcount;
145911737Sbrandon.potter@amd.com
146011308Santhony.gutierrez@amd.comstruct BrigOperandAddress {
146111308Santhony.gutierrez@amd.com    BrigBase base;
146211308Santhony.gutierrez@amd.com    BrigCodeOffset32_t symbol; //.wtype=ItemRef<DirectiveVariable>
146311308Santhony.gutierrez@amd.com    BrigOperandOffset32_t reg; //.wtype=ItemRef<OperandRegister>
146411308Santhony.gutierrez@amd.com    BrigUInt64 offset; //.acc=subItem<UInt64> //.wtype=UInt64
146511308Santhony.gutierrez@amd.com};
146611308Santhony.gutierrez@amd.com
146711308Santhony.gutierrez@amd.comstruct BrigOperandAlign {
146811308Santhony.gutierrez@amd.com    BrigBase base;
146911308Santhony.gutierrez@amd.com    BrigAlignment8_t align;
147011308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
147111308Santhony.gutierrez@amd.com};
147211308Santhony.gutierrez@amd.com
147311308Santhony.gutierrez@amd.comstruct BrigOperandCodeList {
147411308Santhony.gutierrez@amd.com    BrigBase base;
147511308Santhony.gutierrez@amd.com    BrigDataOffsetCodeList32_t elements;
147611308Santhony.gutierrez@amd.com
147711308Santhony.gutierrez@amd.com    //+hcode unsigned elementCount();
147811308Santhony.gutierrez@amd.com    //+implcode inline unsigned KLASS::elementCount() { return elements().size(); }
147911308Santhony.gutierrez@amd.com    //+hcode Code elements(int index);
148011308Santhony.gutierrez@amd.com    //+implcode inline Code KLASS::elements(int index) { return elements()[index]; }
148111308Santhony.gutierrez@amd.com};
148211308Santhony.gutierrez@amd.com
148311308Santhony.gutierrez@amd.comstruct BrigOperandCodeRef {
148411308Santhony.gutierrez@amd.com    BrigBase base;
148511308Santhony.gutierrez@amd.com    BrigCodeOffset32_t ref;
148611308Santhony.gutierrez@amd.com};
148711308Santhony.gutierrez@amd.com
148811308Santhony.gutierrez@amd.comstruct BrigOperandConstantBytes {
148911308Santhony.gutierrez@amd.com    BrigBase base;
149011308Santhony.gutierrez@amd.com    BrigType16_t type; //.defValue=0
149111308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
149211308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t bytes;
149311308Santhony.gutierrez@amd.com};
149411308Santhony.gutierrez@amd.com
149511308Santhony.gutierrez@amd.comstruct BrigOperandConstantOperandList {
149611308Santhony.gutierrez@amd.com    BrigBase base;
149711308Santhony.gutierrez@amd.com    BrigType16_t type;
149811308Santhony.gutierrez@amd.com    uint16_t reserved; //.defValue=0
149911308Santhony.gutierrez@amd.com    BrigDataOffsetOperandList32_t elements;
150011308Santhony.gutierrez@amd.com
150111308Santhony.gutierrez@amd.com    //+hcode unsigned elementCount();
150211308Santhony.gutierrez@amd.com    //+implcode inline unsigned KLASS::elementCount() { return elements().size(); }
150311308Santhony.gutierrez@amd.com    //+hcode Operand elements(int index);
150411308Santhony.gutierrez@amd.com    //+implcode inline Operand KLASS::elements(int index) { return elements()[index]; }
150511308Santhony.gutierrez@amd.com};
150611308Santhony.gutierrez@amd.com
150711308Santhony.gutierrez@amd.comstruct BrigOperandConstantImage {
150811308Santhony.gutierrez@amd.com    BrigBase base;
150911308Santhony.gutierrez@amd.com    BrigType16_t type;
151011308Santhony.gutierrez@amd.com    BrigImageGeometry8_t geometry;
151111308Santhony.gutierrez@amd.com    BrigImageChannelOrder8_t channelOrder;
151211308Santhony.gutierrez@amd.com    BrigImageChannelType8_t channelType;
151311308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
151411308Santhony.gutierrez@amd.com    BrigUInt64 width;    //.acc=subItem<UInt64> //.wtype=UInt64
151511308Santhony.gutierrez@amd.com    BrigUInt64 height;   //.acc=subItem<UInt64> //.wtype=UInt64
151611308Santhony.gutierrez@amd.com    BrigUInt64 depth;    //.acc=subItem<UInt64> //.wtype=UInt64
151711308Santhony.gutierrez@amd.com    BrigUInt64 array;    //.acc=subItem<UInt64> //.wtype=UInt64
151811308Santhony.gutierrez@amd.com};
151911308Santhony.gutierrez@amd.com
152011308Santhony.gutierrez@amd.comstruct BrigOperandOperandList {
152111308Santhony.gutierrez@amd.com    BrigBase base;
152211308Santhony.gutierrez@amd.com    BrigDataOffsetOperandList32_t elements;
152311308Santhony.gutierrez@amd.com
152411308Santhony.gutierrez@amd.com    //+hcode unsigned elementCount();
152511308Santhony.gutierrez@amd.com    //+implcode inline unsigned KLASS::elementCount() { return elements().size(); }
152611308Santhony.gutierrez@amd.com    //+hcode Operand elements(int index);
152711308Santhony.gutierrez@amd.com    //+implcode inline Operand KLASS::elements(int index) { return elements()[index]; }
152811308Santhony.gutierrez@amd.com};
152911308Santhony.gutierrez@amd.com
153011308Santhony.gutierrez@amd.comstruct BrigOperandRegister {
153111308Santhony.gutierrez@amd.com    BrigBase base;
153211308Santhony.gutierrez@amd.com    BrigRegisterKind16_t regKind;
153311308Santhony.gutierrez@amd.com    uint16_t regNum;
153411308Santhony.gutierrez@amd.com};
153511308Santhony.gutierrez@amd.com
153611308Santhony.gutierrez@amd.comstruct BrigOperandConstantSampler {
153711308Santhony.gutierrez@amd.com    BrigBase base;
153811308Santhony.gutierrez@amd.com    BrigType16_t type;
153911308Santhony.gutierrez@amd.com    BrigSamplerCoordNormalization8_t coord;
154011308Santhony.gutierrez@amd.com    BrigSamplerFilter8_t filter;
154111308Santhony.gutierrez@amd.com    BrigSamplerAddressing8_t addressing;
154211308Santhony.gutierrez@amd.com    uint8_t reserved[3]; //.defValue=0
154311308Santhony.gutierrez@amd.com};
154411308Santhony.gutierrez@amd.com
154511308Santhony.gutierrez@amd.comstruct BrigOperandString {
154611308Santhony.gutierrez@amd.com    BrigBase base;
154711308Santhony.gutierrez@amd.com    BrigDataOffsetString32_t string;
154811308Santhony.gutierrez@amd.com};
154911308Santhony.gutierrez@amd.com
155011308Santhony.gutierrez@amd.comstruct BrigOperandWavesize {
155111308Santhony.gutierrez@amd.com    BrigBase base;
155211308Santhony.gutierrez@amd.com};
155311308Santhony.gutierrez@amd.com
155411308Santhony.gutierrez@amd.com//.ignore{
155511308Santhony.gutierrez@amd.com
155611308Santhony.gutierrez@amd.comenum BrigExceptionsMask {
155711308Santhony.gutierrez@amd.com    BRIG_EXCEPTIONS_INVALID_OPERATION = 1 << 0,
155811308Santhony.gutierrez@amd.com    BRIG_EXCEPTIONS_DIVIDE_BY_ZERO = 1 << 1,
155911308Santhony.gutierrez@amd.com    BRIG_EXCEPTIONS_OVERFLOW = 1 << 2,
156011308Santhony.gutierrez@amd.com    BRIG_EXCEPTIONS_UNDERFLOW = 1 << 3,
156111308Santhony.gutierrez@amd.com    BRIG_EXCEPTIONS_INEXACT = 1 << 4,
156211308Santhony.gutierrez@amd.com
156311308Santhony.gutierrez@amd.com    BRIG_EXCEPTIONS_FIRST_USER_DEFINED = 1 << 16
156411308Santhony.gutierrez@amd.com};
156511308Santhony.gutierrez@amd.com
156611308Santhony.gutierrez@amd.comstruct BrigSectionHeader {
156711308Santhony.gutierrez@amd.com    uint64_t byteCount;
156811308Santhony.gutierrez@amd.com    uint32_t headerByteCount;
156911308Santhony.gutierrez@amd.com    uint32_t nameLength;
157011308Santhony.gutierrez@amd.com    uint8_t name[1];
157111308Santhony.gutierrez@amd.com};
157211308Santhony.gutierrez@amd.com
157311308Santhony.gutierrez@amd.com#define MODULE_IDENTIFICATION_LENGTH (8)
157411308Santhony.gutierrez@amd.com
157511308Santhony.gutierrez@amd.comstruct BrigModuleHeader {
157611308Santhony.gutierrez@amd.com    char identification[MODULE_IDENTIFICATION_LENGTH];
157711308Santhony.gutierrez@amd.com    BrigVersion32_t brigMajor;
157811308Santhony.gutierrez@amd.com    BrigVersion32_t brigMinor;
157911308Santhony.gutierrez@amd.com    uint64_t byteCount;
158011308Santhony.gutierrez@amd.com    uint8_t hash[64];
158111308Santhony.gutierrez@amd.com    uint32_t reserved;
158211308Santhony.gutierrez@amd.com    uint32_t sectionCount;
158311308Santhony.gutierrez@amd.com    uint64_t sectionIndex;
158411308Santhony.gutierrez@amd.com};
158511308Santhony.gutierrez@amd.com
158611308Santhony.gutierrez@amd.comtypedef BrigModuleHeader* BrigModule_t;
158711308Santhony.gutierrez@amd.com
158811308Santhony.gutierrez@amd.com#endif // defined(INCLUDED_BRIG_H)
158911308Santhony.gutierrez@amd.com//}
1590