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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to