2023-12-06 11:33 Tsukasa OI wrote:
>On 2023/12/06 11:45, Feng Wang wrote:
>> Due to the crypto vector entension is depend on the Vector extension,
>> so the "v" info is added into implied ISA info with the corresponding
>> crypto vector extension.
>
>Hi Feng,
>
>It's true that vector crypto extensions are based on the vector
>extension but it *does not* mean that it requires full the 'V'
>extension. Vector crypto extensions also consider about embedded
>processors where VLEN < 128.
>
>Quoting the documentation:
>
>> The Zvknhb and Zvbc Vector Crypto Extensions --and accordingly the composite
>> extensions Zvkn
>> and Zvks-- require a Zve64x base, or application ("V") base Vector Extension.
>>
>> All of the other Vector Crypto Extensions can be built on any embedded
>> (Zve*) or application ("V")
>> base Vector Extension.
>
>So, correct dependencies to add are like follows:
>
>> + {"zvbb", "zvkb"},
>> + {"zvbc", "zve64x"},
>> + {"zvkb", "zve32x"},
>> + {"zvkg", "zve32x"},
>> + {"zvkned", "zve32x"},
>> + {"zvknha", "zve32x"},
>> + {"zvknhb", "zve64x"},
>> + {"zvksed", "zve32x"},
>> + {"zvksh", "zve32x"},
>
>Note that 'V' indirectly depends on both 'Zve32x' and 'Zve64x' so this
>would be fine to represent "or application ('V')" part quoted above.
>
>Also, consider adding those dependencies to the Python script
>gcc/config/riscv/arch-canonicalize.
>
>Thanks,
>Tsukasa
>
I modified this part. Thank you for your correction.
>
>
>
>>
>> gcc/ChangeLog:
>>
>> * common/config/riscv/riscv-common.cc: Add "v" into implied ISA info.
>> ---
>> gcc/common/config/riscv/riscv-common.cc | 9 +
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/gcc/common/config/riscv/riscv-common.cc
>> b/gcc/common/config/riscv/riscv-common.cc
>> index 6c210412515..dbb42ca2f1e 100644
>> --- a/gcc/common/config/riscv/riscv-common.cc
>> +++ b/gcc/common/config/riscv/riscv-common.cc
>> @@ -120,6 +120,15 @@ static const riscv_implied_info_t riscv_implied_info[] =
>> {"zvksc", "zvbc"},
>> {"zvksg", "zvks"},
>> {"zvksg", "zvkg"},
>> + {"zvbb", "zvkb"},
>> + {"zvbc", "v"},
>> + {"zvkb", "v"},
>> + {"zvkg", "v"},
>> + {"zvkned", "v"},
>> + {"zvknha", "v"},
>> + {"zvknhb", "v"},
>> + {"zvksed", "v"},
>> + {"zvksh", "v"},
>>
>> {"zfh", "zfhmin"},
>> {"zfhmin", "f"},