On 10/16/2026 10:05 AM, Brian Cain wrote:
> 
> On 10/14/2026 4:24 PM, Pierrick Bouvier wrote:
>> On 10/14/2026 12:52 PM, Brian Cain wrote:
>>> Add tests for: vallocframe, atomics, trap2, CFI/restricted branches, and
>>> scalar fp instructions.
>>>
>>> New instructions not yet supported by the toolchain are manually encoded
>>> with .word directives.
>>>
>>> Signed-off-by: Brian Cain <[email protected]>
>>> ---
>>>   tests/tcg/hexagon/cfi_tgts.h         |  16 +++
>>>   tests/tcg/hexagon/atomics.c          | 102 +++++++++++++++++
>>>   tests/tcg/hexagon/cfi_user.c         |  63 +++++++++++
>>>   tests/tcg/hexagon/check_rev_gating.c |  10 ++
>>>   tests/tcg/hexagon/invalid-encoding.c |  20 ++++
>>>   tests/tcg/hexagon/trap2.c            |  34 ++++++
>>>   tests/tcg/hexagon/v83_scalar_fp.c    |  98 +++++++++++++++++
>>>   tests/tcg/hexagon/vallocframe.c      | 111 +++++++++++++++++++
>>>   tests/tcg/hexagon/cfi_tgts.S         | 157 +++++++++++++++++++++++++++
>>>   tests/tcg/hexagon/meson.build        |  19 +++-
>>>   10 files changed, 628 insertions(+), 2 deletions(-)
>>>   create mode 100644 tests/tcg/hexagon/cfi_tgts.h
>>>   create mode 100644 tests/tcg/hexagon/cfi_user.c
>>>   create mode 100644 tests/tcg/hexagon/trap2.c
>>>   create mode 100644 tests/tcg/hexagon/v83_scalar_fp.c
>>>   create mode 100644 tests/tcg/hexagon/vallocframe.c
>>>   create mode 100644 tests/tcg/hexagon/cfi_tgts.S
>>>
>> ...
>>
>>> diff --git a/tests/tcg/hexagon/invalid-encoding.c b/tests/tcg/
>>> hexagon/invalid-encoding.c
>>> index 639d7f24959..7c4dd244559 100644
>>> --- a/tests/tcg/hexagon/invalid-encoding.c
>>> +++ b/tests/tcg/hexagon/invalid-encoding.c
>>> @@ -89,6 +89,25 @@ static int test_invalid_nonduplex(void)
>>>       return sig;
>>>   }
>>>   +/* L4_loadw_phys bit 7 was reserved beginning with v83. */
>>> +static int test_v83_loadw_phys_reserved_bit(void)
>>> +{
>>> +    int sig;
>>> +
>>> +    asm volatile(
>>> +        "r0 = #0\n"
>>> +        "r1 = ##1f\n"
>>> +        "memw(%1) = r1\n"
>>> +        ".word 0x9200e080\n"
>> Please add a comments saying which instruction this is encoding.
>>
>> ...
>>>     tests += {
>>> -  'atomics.c': {'cflags': cflags},
>>> +  # The cross assembler does not know v85; v85 instructions in
>>> atomics.c
>>> +  # are encoded with .word directives.
>>> +  'atomics.c': {'cflags': cflags, 'qemu_args': ['-cpu', 'v85']},
>>>     'brev.c': {'cflags': cflags},
>>> +  # The cross assembler does not know v83; cfi_tgts.S uses raw
>>> encodings.
>>> +  'cfi_user.c': {
>>> +    'cflags': [cflags, '-O0', files('cfi_tgts.S')],
>> -O0 is part of default flags for tcg tests, no need to set it here.
>>
>> ---
> 
> ^^ will fix these in v2.
> 
>>
>> Overall, looks good to me.
>> Reviewed-by: Pierrick Bouvier <[email protected]>
>>
>> I guess we don't have yet a public toolchain available yet, but if there
>> is one (even without source code available), it would be better,
>> especially for cfi_tgts.S.
> 
> 
> Yeah it's unfortunate - these instruction encodings haven't landed in
> upstream LLVM yet.  When it lands, we can replace these encodings with
> the real mnemonics.
>

Ok, I was unsure if the recent llvm-23 had these. No worries, test can
be updated later.

> 
>> If there is a v85 toolchain available somewhere, feel free to update the
>> hexagon dockerfile as part of this series.
>>
>> Regards,
>> Pierrick

Regards,
Pierrick

Reply via email to