Change the naming convention we use when determining TUNE_RISCV_PKGARCH,
so that we have the option of relying on a known RISC-V profile name
(e.g. 'rva22u64') as a baseline, rather than always specifying the full
ISA extension set. An example from 'bitbake -e opensbi' with
'DEFAULTTUNE = "rva22u64" in conf/local.conf:

|TUNE_RISCV_PKGARCH="rva22u64"
|# $TUNE_RISCV_PKGARCH_EXACT [48 operations]
|TUNE_RISCV_PKGARCH_EXACT="riscv64imafdc_zic64b_zicbom_zicbop_zicboz_ziccamoa_ziccif_zicclsm_ziccrse_zicntr_zicsr_zihintpause_zmmul_za64rs_zaamo_zalrsc_zfhmin_zca_zcd_zba_zbb_zbs_zkt"

Signed-off-by: Trevor Gamblin <[email protected]>
---
 .../conf/machine/include/riscv/arch-riscv.inc | 118 +++++++++---------
 1 file changed, 62 insertions(+), 56 deletions(-)

diff --git a/meta/conf/machine/include/riscv/arch-riscv.inc 
b/meta/conf/machine/include/riscv/arch-riscv.inc
index e60b88fe44..b0c2460f26 100644
--- a/meta/conf/machine/include/riscv/arch-riscv.inc
+++ b/meta/conf/machine/include/riscv/arch-riscv.inc
@@ -32,7 +32,7 @@ TUNE_RISCV_ABI .= "${@bb.utils.contains("TUNE_FEATURES", 
"64", "lp64", "", d)}"
 
 # The package arch starts with the canonical arch, but adds some extensions to 
make
 # package compatibility clear
-TUNE_RISCV_PKGARCH = "${TUNE_RISCV_ARCH}"
+TUNE_RISCV_PKGARCH_EXACT = "${TUNE_RISCV_ARCH}"
 
 # i, e, or g are defined by gcc, but 'g' refers to 'i' + extensions 'MAFD 
Zicsr Zifencei'
 # So 'g' will not be defined here as it is an abbreviation of the expanded 
version
@@ -40,231 +40,237 @@ TUNEVALID[e] = "Reduced register base integer extension"
 TUNECONFLICTS[e] = "i"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "e", "e", "", d)}"
 TUNE_RISCV_ABI .= "${@bb.utils.contains("TUNE_FEATURES", "e", "e", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "e", "e", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "e", "e", 
"", d)}"
 
 TUNEVALID[i] = "Base integer extension"
 TUNECONFLICTS[i] = "e"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "i", "i", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "i", "i", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "i", "i", 
"", d)}"
 
 # Extensions
 TUNEVALID[m] = "Integer multiplication and division extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m", "m", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m", "m", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "m", "m", 
"", d)}"
 
 TUNEVALID[a] = "Atomic extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a", "a", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a", "a", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "a", "a", 
"", d)}"
 
 TUNEVALID[f] = "Single-precision floating-point extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "f d", "f", "", 
d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "f d", "f", 
"", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "f d", 
"f", "", d)}"
 
 TUNEVALID[d] = "Double-precision floating-point extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "d", "d", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "d", "d", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "d", "d", 
"", d)}"
 
 # Only f OR d, but just one
 TUNE_RISCV_ABI .= "${@bb.utils.contains("TUNE_FEATURES", "d", "d", 
bb.utils.contains("TUNE_FEATURES", "f", "f", "", d), d)}"
 
 TUNEVALID[c] = "Compressed extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c", "c", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c", "c", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "c", "c", 
"", d)}"
 
 TUNEVALID[b] = "Bit Manipulation extension"
 # Handled below via zba, zbb, zbs
 # This matches current Linux kernel behavior
 #TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "b", "b", "", d)}"
-#TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "b", "b", "", 
d)}"
+#TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "b", "b", 
"", d)}"
 
 TUNEVALID[v] = "Vector operations extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "v", "v", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "v", "v", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "v", "v", 
"", d)}"
 
 # Now the special Z extensions
 TUNEVALID[zic64b] = "Cache block size is 64 bytes extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zic64b", 
"_zic64b", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zic64b", 
"_zic64b", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zic64b", "_zic64b", "", d)}"
 
 TUNEVALID[zicbom] = "Cache-block management extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbom", 
"_zicbom", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbom", 
"_zicbom", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zicbom", "_zicbom", "", d)}"
 
 TUNEVALID[zicbop] = "Cache-block prefetching extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbop", 
"_zicbop", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbop", 
"_zicbop", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zicbop", "_zicbop", "", d)}"
 
 TUNEVALID[zicboz] = "Cache-block zeroing extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicboz", 
"_zicboz", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicboz", 
"_zicboz", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zicboz", "_zicboz", "", d)}"
 
 TUNEVALID[ziccamoa] = "PMA guarantees for A-extension atomics extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccamoa", 
"_ziccamoa", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccamoa", 
"_ziccamoa", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "ziccamoa", 
"_ziccamoa", "", d)}"
 
 TUNEVALID[ziccif] = "Patching instructions at run time extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccif", 
"_ziccif", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccif", 
"_ziccif", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "ziccif", 
"_ziccif", "", d)}"
 
 TUNEVALID[zicclsm] = "Software that assumes misaligned access works extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zicclsm", 
"_zicclsm", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zicclsm", 
"_zicclsm", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zicclsm", 
"_zicclsm", "", d)}"
 
 TUNEVALID[ziccrse] = "Guarantees LR/SC forward progress extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccrse", 
"_ziccrse", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccrse", 
"_ziccrse", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "ziccrse", 
"_ziccrse", "", d)}"
 
 TUNEVALID[zicntr] = "Cycle and instruction counting for profiling extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zicntr", 
"_zicntr", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zicntr", 
"_zicntr", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zicntr", 
"_zicntr", "", d)}"
 
 TUNEVALID[zicond] = "Conditional zeroing operations extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zicond", 
"_zicond", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zicond", 
"_zicond", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zicond", 
"_zicond", "", d)}"
 
 TUNEVALID[zicsr] = "Control and status register access extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicsr f d", 
"_zicsr", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicsr f d", 
"_zicsr", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicsr 
f d", "_zicsr", "", d)}"
 
 TUNEVALID[zifencei] = "Instruction-fetch fence extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zifencei", 
"_zifencei", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zifencei", 
"_zifencei", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zifencei", 
"_zifencei", "", d)}"
 
 TUNEVALID[zihintntl] = "Non-temporal locality hints extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zihintntl", 
"_zihintntl", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zihintntl", 
"_zihintntl", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", 
"zihintntl", "_zihintntl", "", d)}"
 
 TUNEVALID[zihintpause] = "Pause hint extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zihintpause", 
"_zihintpause", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zihintpause", 
"_zihintpause", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", 
"zihintpause", "_zihintpause", "", d)}"
 
 TUNEVALID[zihpm] = "Hardware performance counters extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zihpm", "_zihpm", 
"", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zihpm", 
"_zihpm", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zihpm", 
"_zihpm", "", d)}"
 
 TUNEVALID[zimop] = "Hardware performance counters extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zimop", "_zimop", 
"", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zimop", 
"_zimop", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zimop", 
"_zimop", "", d)}"
 
 TUNEVALID[zmmul] = "Cheaper M subset (mul only) extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m zmmul", 
"_zmmul", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m zmmul", 
"_zmmul", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "m zmmul", 
"_zmmul", "", d)}"
 
 TUNEVALID[za64rs] = "Reservation set size of at most 64 bytes extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za64rs", 
"_za64rs", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za64rs", 
"_za64rs", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "za64rs", 
"_za64rs", "", d)}"
 
 TUNEVALID[za128rs] = "Reservation set granularity (128-byte) extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za128rs", 
"_za128rs", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za128rs", 
"_za128rs", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "za128rs", 
"_za128rs", "", d)}"
 
 TUNEVALID[zaamo] = "Atomic read-modify-write memory operations extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a zaamo", 
"_zaamo", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a zaamo", 
"_zaamo", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "a zaamo", 
"_zaamo", "", d)}"
 
 TUNEVALID[zalrsc] = "Extended LR/SC semantics extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a zalrsc", 
"_zalrsc", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a zalrsc", 
"_zalrsc", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "a zalrsc", 
"_zalrsc", "", d)}"
 
 TUNEVALID[zawrs] = "Wait-on-reservation-set instructions extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zawrs", "_zawrs", 
"", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zawrs", 
"_zawrs", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zawrs", 
"_zawrs", "", d)}"
 
 TUNEVALID[zfa] = "Additional floating point instructions extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zfa", "_zfa", "", 
d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zfa", "_zfa", 
"", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zfa", 
"_zfa", "", d)}"
 
 TUNEVALID[zfhmin] = "Minimal half-precision floating point extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zfhmin", 
"_zfhmin", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zfhmin", 
"_zfhmin", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zfhmin", 
"_zfhmin", "", d)}"
 
 TUNEVALID[zca] = "Compressed base integer ops extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c zca", "_zca", 
"", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c zca", "_zca", 
"", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "c zca", 
"_zca", "", d)}"
 
 TUNEVALID[zcb] = "Extra compressed integer ops extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zcb", "_zcb", "", 
d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zcb", "_zcb", 
"", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zcb", 
"_zcb", "", d)}"
 
 TUNEVALID[zcd] = "16-bit encodings for 64-bit FP extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zcd", "_zcd", "", 
d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zcd", "_zcd", 
"", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zcd", 
"_zcd", "", d)}"
 
 TUNEVALID[zcmop] = "Compressed may-be-ops extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zcmop", "_zcmop", 
"", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zcmop", 
"_zcmop", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains("TUNE_FEATURES", "zcmop", 
"_zcmop", "", d)}"
 
 TUNEVALID[zba] = "Address bit manipulation extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zba", 
"_zba", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zba", 
"_zba", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "b 
zba", "_zba", "", d)}"
 
 TUNEVALID[zbb] = "Basic bit manipulation extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbb", 
"_zbb", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbb", 
"_zbb", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "b 
zbb", "_zbb", "", d)}"
 
 TUNEVALID[zbc] = "Carry-less multiplication extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zbc", "_zbc", 
"", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zbc", 
"_zbc", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "zbc", 
"_zbc", "", d)}"
 
 TUNEVALID[zbs] = "Single-bit manipulation extension"
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbs", 
"_zbs", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbs", 
"_zbs", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "b 
zbs", "_zbs", "", d)}"
 
 TUNEVALID[zkt] = "Data-independent execution latency extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zkt", 
"_zkt", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zkt", 
"_zkt", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "b 
zkt", "_zkt", "", d)}"
 
 TUNEVALID[zvbb] = "Vector basic bit-manipulation extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvbb", 
"_zvbb", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvbb", 
"_zvbb", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvbb", 
"_zvbb", "", d)}"
 
 TUNEVALID[zve32f] = "Embedded vector computation (32-bit integer, 32-bit FP) 
extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve32f", 
"_zve32f", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve32f", 
"_zve32f", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zve32f", "_zve32f", "", d)}"
 
 TUNEVALID[zve32x] = "Embedded vector computation (32-bit integer) extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve32x", 
"_zve32x", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve32x", 
"_zve32x", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zve32x", "_zve32x", "", d)}"
 
 TUNEVALID[zve64d] = "Embedded vector computation (64-bit integer, 64-bit FP) 
extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve64d", 
"_zve64d", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve64d", 
"_zve64d", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zve64d", "_zve64d", "", d)}"
 
 TUNEVALID[zve64f] = "Embedded vector computation (64-bit integer, 32-bit FP) 
extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve64f", 
"_zve64f", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve64f", 
"_zve64f", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zve64f", "_zve64f", "", d)}"
 
 TUNEVALID[zve64x] = "Embedded vector computation (64-bit integer) extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve64x", 
"_zve64x", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zve64x", 
"_zve64x", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zve64x", "_zve64x", "", d)}"
 
 TUNEVALID[zvfhmin] = "Vector half-precision minimal extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvfhmin", 
"_zvfhmin", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvfhmin", 
"_zvfhmin", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zvfhmin", "_zvfhmin", "", d)}"
 
 TUNEVALID[zvkb] = "Vector cryptography bit-manipulation extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvkb", 
"_zvkb", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvkb", 
"_zvkb", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvkb", 
"_zvkb", "", d)}"
 
 TUNEVALID[zvkt] = "Vector data independent execution latency extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvkt", 
"_zvkt", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvkt", 
"_zvkt", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvkt", 
"_zvkt", "", d)}"
 
 TUNEVALID[zvl128b] = "Minimum vector length standard extensions (128-bit)."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvl128b", 
"_zvl128b", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvl128b", 
"_zvl128b", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zvl128b", "_zvl128b", "", d)}"
 
 TUNEVALID[zvl32b] = "Minimum vector length standard extensions (32-bit)."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvl32b", 
"_zvl32b", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvl32b", 
"_zvl32b", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zvl32b", "_zvl32b", "", d)}"
 
 TUNEVALID[zvl64b] = "Minimum vector length standard extensions (64-bit)."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvl64b", 
"_zvl64b", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zvl64b", 
"_zvl64b", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", 
"zvl64b", "_zvl64b", "", d)}"
 
 TUNEVALID[supm] = "User-mode pointer masking extension."
 TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "supm", 
"_supm", "", d)}"
-TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "supm", 
"_supm", "", d)}"
+TUNE_RISCV_PKGARCH_EXACT .= "${@bb.utils.contains_any("TUNE_FEATURES", "supm", 
"_supm", "", d)}"
+
+# Prefer a known RVA profile name (e.g. "rva22u64"), plus any extensions on
+# top of the profile (e.g. "rva22u64_zvbb"), over the fully expanded exact
+# extension list, when TUNE_FEATURES clearly matches a profile. Falls back
+# to TUNE_RISCV_PKGARCH_EXACT for combinations that don't match a profile.
+TUNE_RISCV_PKGARCH = "${@oe.tune.riscv_pkgarch(d.getVar('TUNE_FEATURES'), 
d.getVar('TUNE_RISCV_PKGARCH_EXACT'))}"
 
 # Construct TUNE_CCARGS
 # This should result in a CCARG similar to:
-- 
2.55.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#245887): 
https://lists.openembedded.org/g/openembedded-core/message/245887
Mute This Topic: https://lists.openembedded.org/mt/121267444/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to