On Fri, 12 Sep 2025 13:44:04 GMT, SendaoYan <[email protected]> wrote:

>> Hi all,
>> 
>> Build jdk on linux-aarch64 with older assembler version(as 2.30) will report 
>> compilation failre, shows as 
>> [JDK-8366777](https://bugs.openjdk.org/browse/JDK-8366777).
>> 
>> This PR add the expression `svfloat64_t a() {}` to makefile which will 
>> trigger the compilation during configure stage. After this PR, at configure 
>> stage will check the gcc and assember support `-march=armv8-a+sve` or not 
>> more comprehensive.
>> 
>> Testing:
>> - [x] On linux-aarch64 gcc12.3.1 as2.37, configure set SVE_CFLAGS as 
>> '-march=armv8-a+sve'
>> - [x] On linux-aarch64 gcc10.3.0 as2.30, configure set SVE_CFLAGS as empty
>> 
>> 
>> The compilation fails demo as below:
>> 
>> 
>> # cat sve.c 
>> #include <arm_sve.h>
>> svfloat64_t a() {}
>> # gcc -march=armv8-a+sve sve.c 
>> /tmp/ccVOzMzb.s: Assembler messages:
>> /tmp/ccVOzMzb.s:6: Error: unknown pseudo-op: `.variant_pcs'
>
> SendaoYan has updated the pull request incrementally with three additional 
> commits since the last revision:
> 
>  - Call AC_MSG_RESULT([$AVAILABLE]) inside AC_COMPILE_IFELSE
>  - Use CC directly
>  - Move comment from called to macro definition

make/autoconf/flags-other.m4 line 120:

> 118:     DESC: [Use SVE when compiling libsleef],
> 119:     AVAILABLE: false,
> 120:     CHECK_AVAILABLE: [

You are not supposed to both provide AVAILABLE and CHECK_AVAILABLE. Also, if 
you do setup CHECK_AVAILABLE you should always provide a value to the AVAILABLE 
variable; now you don't have an else clause for the cpu and toolchain tests. 
Also, CHECK_AVAILABLE was designed for small and simple tests; this is so long 
it becames hard to read.

Instead I suggest the following:
Start by setting AARCH64_SVE_AVAILABLE to false. Then do the code that is 
currently in the CHECK_AVAILABLE block, but replace the assignment to AVAILABLE 
with an assignment to AARCH64_SVE_AVAILABLE. (Where it is true, since you 
defaulted it to false you can skip that line).

Then, finally, you can do like this:

 UTIL_ARG_ENABLE(NAME: aarch64-sve, DEFAULT: auto,
    RESULT: AARCH64_SVE_ENABLED,
    DESC: [Use SVE when compiling libsleef],
    AVAILABLE: $AARCH64_SVE_AVAILABLE)

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27073#discussion_r2344488195

Reply via email to