111692Santhony.gutierrez@amd.com# Copyright (c) 2016 Advanced Micro Devices, Inc.
211692Santhony.gutierrez@amd.com# All rights reserved.
311692Santhony.gutierrez@amd.com#
411692Santhony.gutierrez@amd.com# For use for simulation and test purposes only
511692Santhony.gutierrez@amd.com#
611692Santhony.gutierrez@amd.com# Redistribution and use in source and binary forms, with or without
711692Santhony.gutierrez@amd.com# modification, are permitted provided that the following conditions are met:
811692Santhony.gutierrez@amd.com#
911692Santhony.gutierrez@amd.com# 1. Redistributions of source code must retain the above copyright notice,
1011692Santhony.gutierrez@amd.com# this list of conditions and the following disclaimer.
1111692Santhony.gutierrez@amd.com#
1211692Santhony.gutierrez@amd.com# 2. Redistributions in binary form must reproduce the above copyright notice,
1311692Santhony.gutierrez@amd.com# this list of conditions and the following disclaimer in the documentation
1411692Santhony.gutierrez@amd.com# and/or other materials provided with the distribution.
1511692Santhony.gutierrez@amd.com#
1611692Santhony.gutierrez@amd.com# 3. Neither the name of the copyright holder nor the names of its contributors
1711692Santhony.gutierrez@amd.com# may be used to endorse or promote products derived from this software
1811692Santhony.gutierrez@amd.com# without specific prior written permission.
1911692Santhony.gutierrez@amd.com#
2011692Santhony.gutierrez@amd.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2111692Santhony.gutierrez@amd.com# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2211692Santhony.gutierrez@amd.com# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2311692Santhony.gutierrez@amd.com# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
2411692Santhony.gutierrez@amd.com# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2511692Santhony.gutierrez@amd.com# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2611692Santhony.gutierrez@amd.com# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2711692Santhony.gutierrez@amd.com# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2811692Santhony.gutierrez@amd.com# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2911692Santhony.gutierrez@amd.com# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
3011692Santhony.gutierrez@amd.com# POSSIBILITY OF SUCH DAMAGE.
3111692Santhony.gutierrez@amd.com#
3211692Santhony.gutierrez@amd.com# Authors: Anthony Gutierrez
3311692Santhony.gutierrez@amd.com
3411692Santhony.gutierrez@amd.comfrom m5.params import *
3511692Santhony.gutierrez@amd.com
3611692Santhony.gutierrez@amd.comclass GPUStaticInstFlags(Enum):
3711692Santhony.gutierrez@amd.com    wrapper_name = 'GPUStaticInstFlags'
3811692Santhony.gutierrez@amd.com    wrapper_is_struct = True
3911692Santhony.gutierrez@amd.com    enum_name = 'Flags'
4011692Santhony.gutierrez@amd.com
4111692Santhony.gutierrez@amd.com    vals = [
4211692Santhony.gutierrez@amd.com        # Op types
4311692Santhony.gutierrez@amd.com        'ALU',               # ALU op
4411692Santhony.gutierrez@amd.com        'Branch',            # Branch instruction
4511692Santhony.gutierrez@amd.com        'Nop',               # No-op (no effect at all)
4611692Santhony.gutierrez@amd.com        'Return',            # Return instruction
4711692Santhony.gutierrez@amd.com        'UnconditionalJump', #
4811692Santhony.gutierrez@amd.com        'SpecialOp',         # Special op
4911692Santhony.gutierrez@amd.com        'Waitcnt',           # Is a waitcnt instruction
5011692Santhony.gutierrez@amd.com
5111692Santhony.gutierrez@amd.com        # Memory ops
5211692Santhony.gutierrez@amd.com        'MemBarrier',        # Barrier instruction
5311692Santhony.gutierrez@amd.com        'MemFence',          # Memory fence instruction
5411692Santhony.gutierrez@amd.com        'MemoryRef',         # References memory (load, store, or atomic)
5511692Santhony.gutierrez@amd.com        'Flat',              # Flat memory op
5611692Santhony.gutierrez@amd.com        'Load',              # Reads from memory
5711692Santhony.gutierrez@amd.com        'Store',             # Writes to memory
5811692Santhony.gutierrez@amd.com
5911692Santhony.gutierrez@amd.com        # Atomic ops
6011692Santhony.gutierrez@amd.com        'AtomicReturn',      # Atomic instruction that returns data
6111692Santhony.gutierrez@amd.com        'AtomicNoReturn',    # Atomic instruction that doesn't return data
6211692Santhony.gutierrez@amd.com
6311692Santhony.gutierrez@amd.com        # Instruction attributes
6411692Santhony.gutierrez@amd.com        'Scalar',            # A scalar (not vector) operation
6511692Santhony.gutierrez@amd.com        'ReadsSCC',          # The instruction reads SCC
6611692Santhony.gutierrez@amd.com        'WritesSCC',         # The instruction writes SCC
6711692Santhony.gutierrez@amd.com        'ReadsVCC',          # The instruction reads VCC
6811692Santhony.gutierrez@amd.com        'WritesVCC',         # The instruction writes VCC
6911692Santhony.gutierrez@amd.com
7011692Santhony.gutierrez@amd.com        # Atomic OP types
7111692Santhony.gutierrez@amd.com        'AtomicAnd',
7211692Santhony.gutierrez@amd.com        'AtomicOr',
7311692Santhony.gutierrez@amd.com        'AtomicXor',
7411692Santhony.gutierrez@amd.com        'AtomicCAS',
7511692Santhony.gutierrez@amd.com        'AtomicExch',
7611692Santhony.gutierrez@amd.com        'AtomicAdd',
7711692Santhony.gutierrez@amd.com        'AtomicSub',
7811692Santhony.gutierrez@amd.com        'AtomicInc',
7911692Santhony.gutierrez@amd.com        'AtomicDec',
8011692Santhony.gutierrez@amd.com        'AtomicMax',
8111692Santhony.gutierrez@amd.com        'AtomicMin',
8211692Santhony.gutierrez@amd.com
8311692Santhony.gutierrez@amd.com        # Memory order flags
8411692Santhony.gutierrez@amd.com        'RelaxedOrder',
8511692Santhony.gutierrez@amd.com        'Acquire',           # Has acquire semantics
8611692Santhony.gutierrez@amd.com        'Release',           # Has release semantics
8711692Santhony.gutierrez@amd.com        'AcquireRelease',    # Has acquire and release semantics
8811692Santhony.gutierrez@amd.com        'NoOrder',           # Has no ordering restrictions
8911692Santhony.gutierrez@amd.com
9011692Santhony.gutierrez@amd.com        # Segment access flags
9111692Santhony.gutierrez@amd.com        'ArgSegment',        # Accesses the arg segment
9211692Santhony.gutierrez@amd.com        'GlobalSegment',     # Accesses global memory
9311692Santhony.gutierrez@amd.com        'GroupSegment',      # Accesses local memory (LDS), aka shared memory
9411692Santhony.gutierrez@amd.com        'KernArgSegment',    # Accesses the kernel argument segment
9511692Santhony.gutierrez@amd.com        'PrivateSegment',    # Accesses the private segment
9611692Santhony.gutierrez@amd.com        'ReadOnlySegment',   # Accesses read only memory
9711692Santhony.gutierrez@amd.com        'SpillSegment',      # Accesses the spill segment
9811692Santhony.gutierrez@amd.com        'NoSegment',         # Does not have an associated segment
9911692Santhony.gutierrez@amd.com
10011692Santhony.gutierrez@amd.com        # Scope flags
10111692Santhony.gutierrez@amd.com        'WorkitemScope',
10211692Santhony.gutierrez@amd.com        'WavefrontScope',
10311692Santhony.gutierrez@amd.com        'WorkgroupScope',
10411692Santhony.gutierrez@amd.com        'DeviceScope',
10511692Santhony.gutierrez@amd.com        'SystemScope',
10611692Santhony.gutierrez@amd.com        'NoScope',           # Does not have an associated scope
10711692Santhony.gutierrez@amd.com
10811692Santhony.gutierrez@amd.com        # Coherence flags
10911692Santhony.gutierrez@amd.com        'GloballyCoherent',  # Coherent with other workitems on same device
11011692Santhony.gutierrez@amd.com        'SystemCoherent'     # Coherent with a different device, or the host
11111692Santhony.gutierrez@amd.com        ]
112