RFR: 8327283: RISC-V: Minimal build failed after JDK-8319716

Robbin Ehn rehn at openjdk.org
Wed Mar 6 12:23:45 UTC 2024


On Tue, 5 Mar 2024 12:52:29 GMT, Robbin Ehn <rehn at openjdk.org> wrote:

>> Hi, please review this patch that fix the minimal build failed for riscv.
>> 
>> Error log for minimal build:
>> 
>> Creating support/modules_libs/java.base/minimal/libjvm.so from 591 file(s)
>> ^@/home/zifeihan/jdk/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp: In member function ‘u_char* StubGenerator::Sha2Generator::generate_sha2_implCompress(Assembler::SEW, bool)’:
>> /home/zifeihan/jdk/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp:3938:41: error: ‘MaxVectorSize’ was not declared in this scope; did you mean ‘MaxNewSize’?
>>  3938 |       if (vset_sew == Assembler::e64 && MaxVectorSize == 16) { // SHA512 and VLEN = 128
>>       |                                         ^~~~~~~~~~~~~
>>       |                                         MaxNewSize
>> gmake[3]: *** [lib/CompileJvm.gmk:165: /home/zifeihan/jdk/build/linux-riscv64-minimal-fastdebug/hotspot/variant-minimal/libjvm/objs/stubGenerator_riscv.o] Error 1
>> gmake[3]: *** Waiting for unfinished jobs....
>> ^@gmake[2]: *** [make/Main.gmk:253: hotspot-minimal-libs] Error 2
>> gmake[2]: *** Waiting for unfinished jobs....
>> ^@
>> ERROR: Build failed for target 'images' in configuration 'linux-riscv64-minimal-fastdebug' (exit code 2)
>> 
>> === Output from failing command(s) repeated here ===
>> * For target hotspot_variant-minimal_libjvm_objs_stubGenerator_riscv.o:
>> /home/zifeihan/jdk/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp: In member function ‘u_char* StubGenerator::Sha2Generator::generate_sha2_implCompress(Assembler::SEW, bool)’:
>> /home/zifeihan/jdk/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp:3938:41: error: ‘MaxVectorSize’ was not declared in this scope; did you mean ‘MaxNewSize’?
>>  3938 |       if (vset_sew == Assembler::e64 && MaxVectorSize == 16) { // SHA512 and VLEN = 128
>>       |                                         ^~~~~~~~~~~~~
>>       |                                         MaxNewSize
>> 
>> * All command lines available in /home/zifeihan/jdk/build/linux-riscv64-minimal-fastdebug/make-support/failure-logs.
>> === End of repeated output ===
>> 
>> No indication of failed target found.
>> HELP: Try searching the build log for '] Error'.
>> HELP: Run 'make doctor' to diagnose build problems.
>> 
>> make[1]: *** [/home/zifeihan/jdk/make/Init.gmk:323: main] Error 2
>> make: *** [/home/zifeihan/jdk/make/Init.gmk:189: images] Error 2
>> 
>> 
>> The root cause is that MaxVectorSize is only defined under COMPILER2 , We should use VM_Version::_initial_vector_length instead of MaxVectorSize.  
>> 
>> Testing:
>> 
>> - [...
>
> The SHA intrinsic are only used in "LibraryCallKit::inline_digestBase_implCompress" and JVMCI.
> So I think these (plus md5 and chacha) should be put into a ifdef COMPILER2_OR_JVMCI block. (I was going todo that but it slipped my mind)
> 
> The MaxVectorSize is defined if JVMCI and/or C2 is defined:
> `NOT_COMPILER2(product(intx, MaxVectorSize, 64,`

> I agree with @robehn ! We can put those functions definitions into a ifdef COMPILER2_OR_JVMCI block to avoid such a problem. I don't see other uses of them for now.

This also makes it clear that C1/interpreter don't use them, hence if someone needs a speed up there they could try to make use of them.

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

PR Comment: https://git.openjdk.org/jdk/pull/18114#issuecomment-1980750493


More information about the hotspot-compiler-dev mailing list