//===-- AMDGPUNoteType.h - AMDGPU ELF PT_NOTE section info-------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
/// \file
///
/// Enums and constants for AMDGPU PT_NOTE sections.
///
//
//===----------------------------------------------------------------------===//
//
#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUPTNOTE_H
#define LLVM_LIB_TARGET_AMDGPU_AMDGPUPTNOTE_H

namespace AMDGPU {

namespace ElfNote {

const char SectionName[] = ".note";

const char NoteName[] = "AMD";

// TODO: Move this enum to include/llvm/Support so it can be used in tools?
enum NoteType{
    NT_AMDGPU_HSA_RESERVED_0 = 0,
    NT_AMDGPU_HSA_CODE_OBJECT_VERSION = 1,
    NT_AMDGPU_HSA_HSAIL = 2,
    NT_AMDGPU_HSA_ISA = 3,
    NT_AMDGPU_HSA_PRODUCER = 4,
    NT_AMDGPU_HSA_PRODUCER_OPTIONS = 5,
    NT_AMDGPU_HSA_EXTENSION = 6,
    NT_AMDGPU_HSA_RESERVED_7 = 7,
    NT_AMDGPU_HSA_RESERVED_8 = 8,
    NT_AMDGPU_HSA_RESERVED_9 = 9,
    NT_AMDGPU_HSA_CODE_OBJECT_METADATA = 10,
    NT_AMD_AMDGPU_ISA = 11,
    NT_AMDGPU_PAL_METADATA = 12,
    NT_AMDGPU_HSA_HLDEBUG_DEBUG = 101,
    NT_AMDGPU_HSA_HLDEBUG_TARGET = 102
};

enum NoteAmdGpuPalMetadataKey {
  AMDGPU_PAL_METADATA_LS_NUM_USED_VGPRS = 0x10000015,
  AMDGPU_PAL_METADATA_HS_NUM_USED_VGPRS = 0x10000016,
  AMDGPU_PAL_METADATA_ES_NUM_USED_VGPRS = 0x10000017,
  AMDGPU_PAL_METADATA_GS_NUM_USED_VGPRS = 0x10000018,
  AMDGPU_PAL_METADATA_VS_NUM_USED_VGPRS = 0x10000019,
  AMDGPU_PAL_METADATA_PS_NUM_USED_VGPRS = 0x1000001a,
  AMDGPU_PAL_METADATA_CS_NUM_USED_VGPRS = 0x1000001b,

  AMDGPU_PAL_METADATA_LS_NUM_USED_SGPRS = 0x1000001c,
  AMDGPU_PAL_METADATA_HS_NUM_USED_SGPRS = 0x1000001d,
  AMDGPU_PAL_METADATA_ES_NUM_USED_SGPRS = 0x1000001e,
  AMDGPU_PAL_METADATA_GS_NUM_USED_SGPRS = 0x1000001f,
  AMDGPU_PAL_METADATA_VS_NUM_USED_SGPRS = 0x10000020,
  AMDGPU_PAL_METADATA_PS_NUM_USED_SGPRS = 0x10000021,
  AMDGPU_PAL_METADATA_CS_NUM_USED_SGPRS = 0x10000022,

  AMDGPU_PAL_METADATA_LS_SCRATCH_SIZE = 0x10000038,
  AMDGPU_PAL_METADATA_HS_SCRATCH_SIZE = 0x10000039,
  AMDGPU_PAL_METADATA_ES_SCRATCH_SIZE = 0x1000003a,
  AMDGPU_PAL_METADATA_GS_SCRATCH_SIZE = 0x1000003b,
  AMDGPU_PAL_METADATA_VS_SCRATCH_SIZE = 0x1000003c,
  AMDGPU_PAL_METADATA_PS_SCRATCH_SIZE = 0x1000003d,
  AMDGPU_PAL_METADATA_CS_SCRATCH_SIZE = 0x1000003e,
};

}
}

#endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUNOTETYPE_H
