[llvm] Hexagon v87 v89 elf flags (PR #144584)
Alexey Karyakin via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 17 12:10:36 PDT 2025
https://github.com/quic-akaryaki created https://github.com/llvm/llvm-project/pull/144584
None
>From c8525f41061becc3002b12f7dc9f076c2814d7fc Mon Sep 17 00:00:00 2001
From: Alexey Karyakin <akaryaki at quicinc.com>
Date: Tue, 17 Jun 2025 10:58:45 -0700
Subject: [PATCH 1/2] [Hexagon] Hexagon ELF flags cleanup
Define Hexagon processor version based on the ISA version and the Tiny
flag. Change EF_HEXAGON_MACH to include all bits that define the processor
version. Make minor stylistic changes to related comments.
---
llvm/include/llvm/BinaryFormat/ELF.h | 60 +++++++++++++++-------------
1 file changed, 33 insertions(+), 27 deletions(-)
diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h
index 1f3cea4bd1ae6..bd6e5676c798b 100644
--- a/llvm/include/llvm/BinaryFormat/ELF.h
+++ b/llvm/include/llvm/BinaryFormat/ELF.h
@@ -613,33 +613,7 @@ enum {
// Hexagon-specific e_flags
enum {
- // Object processor version flags, bits[11:0]
- EF_HEXAGON_MACH_V2 = 0x00000001, // Hexagon V2
- EF_HEXAGON_MACH_V3 = 0x00000002, // Hexagon V3
- EF_HEXAGON_MACH_V4 = 0x00000003, // Hexagon V4
- EF_HEXAGON_MACH_V5 = 0x00000004, // Hexagon V5
- EF_HEXAGON_MACH_V55 = 0x00000005, // Hexagon V55
- EF_HEXAGON_MACH_V60 = 0x00000060, // Hexagon V60
- EF_HEXAGON_MACH_V61 = 0x00000061, // Hexagon V61
- EF_HEXAGON_MACH_V62 = 0x00000062, // Hexagon V62
- EF_HEXAGON_MACH_V65 = 0x00000065, // Hexagon V65
- EF_HEXAGON_MACH_V66 = 0x00000066, // Hexagon V66
- EF_HEXAGON_MACH_V67 = 0x00000067, // Hexagon V67
- EF_HEXAGON_MACH_V67T = 0x00008067, // Hexagon V67T
- EF_HEXAGON_MACH_V68 = 0x00000068, // Hexagon V68
- EF_HEXAGON_MACH_V69 = 0x00000069, // Hexagon V69
- EF_HEXAGON_MACH_V71 = 0x00000071, // Hexagon V71
- EF_HEXAGON_MACH_V71T = 0x00008071, // Hexagon V71T
- EF_HEXAGON_MACH_V73 = 0x00000073, // Hexagon V73
- EF_HEXAGON_MACH_V75 = 0x00000075, // Hexagon V75
- EF_HEXAGON_MACH_V77 = 0x00000077, // Hexagon V77
- EF_HEXAGON_MACH_V79 = 0x00000079, // Hexagon V79
- EF_HEXAGON_MACH_V81 = 0x00000081, // Hexagon V81
- EF_HEXAGON_MACH_V83 = 0x00000083, // Hexagon V83
- EF_HEXAGON_MACH_V85 = 0x00000085, // Hexagon V85
- EF_HEXAGON_MACH = 0x000003ff, // Hexagon V..
-
- // Highest ISA version flags
+ // Hexagon ISA version, bits[11:0]
EF_HEXAGON_ISA_MACH = 0x00000000, // Same as specified in bits[11:0]
// of e_flags
EF_HEXAGON_ISA_V2 = 0x00000010, // Hexagon V2 ISA
@@ -664,6 +638,38 @@ enum {
EF_HEXAGON_ISA_V83 = 0x00000083, // Hexagon V83 ISA
EF_HEXAGON_ISA_V85 = 0x00000085, // Hexagon V85 ISA
EF_HEXAGON_ISA = 0x000003ff, // Hexagon V.. ISA
+
+ // Tiny core flag, bit[15]
+ EF_HEXAGON_TINY_CORE = 0x00008000, // Hexagon Tiny Core
+
+ // Hexagon processor version, bits[15:0]
+ EF_HEXAGON_MACH_V2 = 0x00000001, // Hexagon V2
+ EF_HEXAGON_MACH_V3 = 0x00000002, // Hexagon V3
+ EF_HEXAGON_MACH_V4 = 0x00000003, // Hexagon V4
+ EF_HEXAGON_MACH_V5 = 0x00000004, // Hexagon V5
+ EF_HEXAGON_MACH_V55 = 0x00000005, // Hexagon V55
+ EF_HEXAGON_MACH_V60 = EF_HEXAGON_ISA_V60, // Hexagon V60
+ EF_HEXAGON_MACH_V61 = EF_HEXAGON_ISA_V61, // Hexagon V61
+ EF_HEXAGON_MACH_V62 = EF_HEXAGON_ISA_V62, // Hexagon V62
+ EF_HEXAGON_MACH_V65 = EF_HEXAGON_ISA_V65, // Hexagon V65
+ EF_HEXAGON_MACH_V66 = EF_HEXAGON_ISA_V66, // Hexagon V66
+ EF_HEXAGON_MACH_V67 = EF_HEXAGON_ISA_V67, // Hexagon V67
+ EF_HEXAGON_MACH_V67T =
+ EF_HEXAGON_ISA_V67 | EF_HEXAGON_TINY_CORE, // Hexagon V67T
+ EF_HEXAGON_MACH_V68 = EF_HEXAGON_ISA_V68, // Hexagon V68
+ EF_HEXAGON_MACH_V69 = EF_HEXAGON_ISA_V69, // Hexagon V69
+ EF_HEXAGON_MACH_V71 = EF_HEXAGON_ISA_V71, // Hexagon V71
+ EF_HEXAGON_MACH_V71T =
+ EF_HEXAGON_ISA_V71 | EF_HEXAGON_TINY_CORE, // Hexagon V71T
+ EF_HEXAGON_MACH_V73 = EF_HEXAGON_ISA_V73, // Hexagon V73
+ EF_HEXAGON_MACH_V75 = EF_HEXAGON_ISA_V75, // Hexagon V75
+ EF_HEXAGON_MACH_V77 = EF_HEXAGON_ISA_V77, // Hexagon V77
+ EF_HEXAGON_MACH_V79 = EF_HEXAGON_ISA_V79, // Hexagon V79
+ EF_HEXAGON_MACH_V81 = EF_HEXAGON_ISA_V81, // Hexagon V81
+ EF_HEXAGON_MACH_V83 = EF_HEXAGON_ISA_V83, // Hexagon V83
+ EF_HEXAGON_MACH_V85 = EF_HEXAGON_ISA_V85, // Hexagon V85
+
+ EF_HEXAGON_MACH = 0x0000ffff, // Hexagon V..
};
// Hexagon-specific section indexes for common small data
>From caf14d29aca20fc189c746f769e44ad475e13bd7 Mon Sep 17 00:00:00 2001
From: Alexey Karyakin <akaryaki at quicinc.com>
Date: Tue, 17 Jun 2025 11:56:52 -0700
Subject: [PATCH 2/2] [Hexagon] Define 87 and 89 ISA and processor versions in
ELF flags
These versions are not supported by upstream LLVM but are needed to add
such support in the eld linker.
---
llvm/include/llvm/BinaryFormat/ELF.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h
index bd6e5676c798b..d6d23d9df99de 100644
--- a/llvm/include/llvm/BinaryFormat/ELF.h
+++ b/llvm/include/llvm/BinaryFormat/ELF.h
@@ -637,6 +637,8 @@ enum {
EF_HEXAGON_ISA_V81 = 0x00000081, // Hexagon V81 ISA
EF_HEXAGON_ISA_V83 = 0x00000083, // Hexagon V83 ISA
EF_HEXAGON_ISA_V85 = 0x00000085, // Hexagon V85 ISA
+ EF_HEXAGON_ISA_V87 = 0x00000087, // Hexagon V87 ISA
+ EF_HEXAGON_ISA_V89 = 0x00000089, // Hexagon V89 ISA
EF_HEXAGON_ISA = 0x000003ff, // Hexagon V.. ISA
// Tiny core flag, bit[15]
@@ -668,6 +670,8 @@ enum {
EF_HEXAGON_MACH_V81 = EF_HEXAGON_ISA_V81, // Hexagon V81
EF_HEXAGON_MACH_V83 = EF_HEXAGON_ISA_V83, // Hexagon V83
EF_HEXAGON_MACH_V85 = EF_HEXAGON_ISA_V85, // Hexagon V85
+ EF_HEXAGON_MACH_V87 = EF_HEXAGON_ISA_V87, // Hexagon V87
+ EF_HEXAGON_MACH_V89 = EF_HEXAGON_ISA_V89, // Hexagon V89
EF_HEXAGON_MACH = 0x0000ffff, // Hexagon V..
};
More information about the llvm-commits
mailing list