// Copyright Advanced Micro Devices, Inc., or its affiliates.
// SPDX-License-Identifier: MIT

#pragma once

namespace rocRoller
{
    /**
     * Dictates which instructions are generated when lowering an AssertOp.
     *
     * NoOp - no instructions are generated. Used to allow execution of kernels with AssertOps without impacting performance.
     * MemoryViolation - generates instructions to write to nullptr and trigger a memory violation in kernel code.
     * STrap - generates a s_trap instruction interpreted by HSA's trap handler as a debug trap.
     */
    enum class AssertOpKind
    {
        NoOp,
        MemoryViolation,
        STrap,
        Count,
    };
}
