| # Copyright (c) 2016 Advanced Micro Devices, Inc. | |
| # All rights reserved. | |
| # | |
| # For use for simulation and test purposes only | |
| # | |
| # Redistribution and use in source and binary forms, with or without | |
| # modification, are permitted provided that the following conditions are met: | |
| # | |
| # 1. Redistributions of source code must retain the above copyright notice, | |
| # this list of conditions and the following disclaimer. | |
| # | |
| # 2. Redistributions in binary form must reproduce the above copyright notice, | |
| # this list of conditions and the following disclaimer in the documentation | |
| # and/or other materials provided with the distribution. | |
| # | |
| # 3. Neither the name of the copyright holder nor the names of its | |
| # contributors may be used to endorse or promote products derived from this | |
| # software without specific prior written permission. | |
| # | |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | |
| # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
| # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
| # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
| # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
| # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| # POSSIBILITY OF SUCH DAMAGE. | |
| from m5.params import * | |
| class GPUStaticInstFlags(Enum): | |
| wrapper_name = 'GPUStaticInstFlags' | |
| wrapper_is_struct = True | |
| enum_name = 'Flags' | |
| vals = [ | |
| # Op types | |
| 'ALU', # ALU op | |
| 'Branch', # Branch instruction | |
| 'CondBranch', # Conditinal Branch instruction | |
| 'Nop', # No-op (no effect at all) | |
| 'Return', # Subroutine return instruction | |
| 'EndOfKernel', # Kernel termination instruction | |
| 'KernelLaunch', # Kernel launch inst | |
| 'UnconditionalJump', # | |
| 'SpecialOp', # Special op | |
| 'Waitcnt', # Is a waitcnt instruction | |
| 'Sleep', # Is a sleep instruction | |
| # Memory ops | |
| 'MemBarrier', # Barrier instruction | |
| 'MemSync', # Synchronizing instruction | |
| 'MemoryRef', # References memory (load, store, or atomic) | |
| 'Flat', # Flat memory op | |
| 'FlatGlobal', # Global memory op | |
| 'Load', # Reads from memory | |
| 'Store', # Writes to memory | |
| # Atomic ops | |
| 'AtomicReturn', # Atomic instruction that returns data | |
| 'AtomicNoReturn', # Atomic instruction that doesn't return data | |
| # Instruction attributes | |
| 'Scalar', # A scalar (not vector) operation | |
| 'ReadsSCC', # The instruction reads SCC | |
| 'WritesSCC', # The instruction writes SCC | |
| 'ReadsVCC', # The instruction reads VCC | |
| 'WritesVCC', # The instruction writes VCC | |
| 'ReadsEXEC', # The instruction reads Exec Mask | |
| 'WritesEXEC', # The instruction writes Exec Mask | |
| 'ReadsMode', # The instruction reads Mode register | |
| 'WritesMode', # The instruction writes Mode register | |
| 'IgnoreExec', # The instruction ignores the Exec Mask | |
| 'IsSDWA', # The instruction is a SDWA instruction | |
| 'IsDPP', # The instruction is a DPP instruction | |
| # Atomic OP types | |
| 'AtomicAnd', | |
| 'AtomicOr', | |
| 'AtomicXor', | |
| 'AtomicCAS', | |
| 'AtomicExch', | |
| 'AtomicAdd', | |
| 'AtomicSub', | |
| 'AtomicInc', | |
| 'AtomicDec', | |
| 'AtomicMax', | |
| 'AtomicMin', | |
| # Segment access flags | |
| 'ArgSegment', # Accesses the arg segment | |
| 'GlobalSegment', # Accesses global memory | |
| 'GroupSegment', # Accesses local memory (LDS), aka shared memory | |
| 'KernArgSegment', # Accesses the kernel argument segment | |
| 'PrivateSegment', # Accesses the private segment | |
| 'ReadOnlySegment', # Accesses read only memory | |
| 'SpillSegment', # Accesses the spill segment | |
| 'NoSegment', # Does not have an associated segment | |
| # Coherence flags | |
| 'GloballyCoherent', # Coherent with other work-items on same device | |
| 'SystemCoherent', # Coherent with a different device, or the host | |
| # Floating-point flags | |
| 'F16', # F16 operation | |
| 'F32', # F32 operation | |
| 'F64', # F64 operation | |
| # MAC, MAD, FMA | |
| 'FMA', # FMA | |
| 'MAC', # MAC | |
| 'MAD' # MAD | |
| ] |