RFR: JDK-8331732 : [PPC64] Unify and optimize code which converts != 0 to 1 [v10]

Martin Doerr mdoerr at openjdk.org
Fri Jun 28 14:30:30 UTC 2024


On Fri, 28 Jun 2024 14:25:58 GMT, Suchismith Roy <sroy at openjdk.org> wrote:

>> [JDK-8331732](https://bugs.openjdk.org/browse/JDK-8331732)
>> The template interpreter contains branch-free conversion code for T_BOOLEAN (TemplateInterpreterGenerator::generate_result_handler_for).
>> 
>> SharedRuntime::generate_native_wrapper uses unoptimized code to "Unpack the native result" for T_BOOLEAN.
>> Power10 has the "setbc" / "setbcr" instruction.
>> 
>> A new function has been created for the conversion and use "setbcr" on Power10 (determined by VM_Version::has_brw()) and otherwise the branch-free implementation. We should have a function for 32 and one for 64 bit operations (or one with supports both).
>> 
>> The new code for MacroAssembler::verify_secondary_supers_table  also uses the new function.
>
> Suchismith Roy has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - arranging functions
>  - arranging functions

src/hotspot/cpu/ppc/macroAssembler_ppc.hpp line 183:

> 181:   // Branch-free implementation to convert !=0 to 1.
> 182:   void inline normalize_bool(Register dst, Register temp, bool use_64bit);
> 183:   inline void pd_patch_instruction(address branch, address target, const char* file, int line);

Please add an empty line to separate it from `pd_patch_instruction` which is something completely different. And remove trailing whitespaces above.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19886#discussion_r1658842945


More information about the hotspot-dev mailing list