On Tue, Sep 15, 2026 at 12:03 PM Trevor Gamblin <[email protected]> wrote:
> 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)}" > za64rs is placed before za128rs see below, but canonical order within the Za group is alphabetical (za128rs then za64rs). > > 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 (#246254): https://lists.openembedded.org/g/openembedded-core/message/246254 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]] -=-=-=-=-=-=-=-=-=-=-=-
