On Tue, 20 Feb 2024 07:35:28 GMT, Emanuel Peter <epe...@openjdk.org> wrote:

>> Jatin Bhateja has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Review comments resolutions.
>
> src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 1584:
> 
>> 1582:     Label *larr[] = {&case0, &case1, &case2, &case3};
>> 1583:     for (int i = 0; i < 4; i++) {
>> 1584:       // dst[i] = mask ? src[index[i]] : 0
> 
> I like these comments a lot!
> They would be even better if they had a more clear relation to the register 
> names.
> 
> `dst[i] = mask[i+midx] ? src[idx_base[i]] : 0`
> It would then be helpful to know the types of these arrays.
> It seems that `idx_base` is an array with type int, right?

Ah, and can we use `base_index`? Otherwise we have an inconsistency with 
`index` vs `idx`.

> src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 1624:
> 
>> 1622:       jccb(Assembler::carryClear, *larr[i]);
>> 1623:       movl(rtmp, Address(idx_base, i * 4));
>> 1624:       addl(rtmp, offset);
> 
> This is really the only line that is additional to the code in 
> `vgather8b_masked`. Why not just put it under a `bool has_offset` flag, and 
> then you ran just reuse this code here from `vgather8b_masked`, and reduce 
> code duplication?

Ok, you basically are implementing the cross-product of gather with `offset` 
and `mask`.
Why not have 2 flags then, and a bit more comments to explain?

> src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 1716:
> 
>> 1714:                                         XMMRegister xtmp3, Register 
>> rtmp,
>> 1715:                                         Register midx, Register length,
>> 1716:                                         int vector_len, int vlen_enc) {
> 
> I would like to see more descriptive names, where I don't have to 
> reverse-engineer their meaning.
> What are the pre/post-conditions on `midx`?

I'll rereview after

> src/hotspot/cpu/x86/x86.ad line 4143:
> 
>> 4141: %}
>> 4142: 
>> 4143: instruct vgather_subwordLE8B_off(vec dst, memory mem, rRegP idx, rRegI 
>> offset, rRegP tmp, rRegI rtmp, rFlagsReg cr) %{
> 
> Suggestion:
> 
> instruct vgather_subwordLE8B_offset(vec dst, memory mem, rRegP idx, rRegI 
> offset, rRegP tmp, rRegI rtmp, rFlagsReg cr) %{

There are more instances

> src/hotspot/cpu/x86/x86.ad line 4147:
> 
>> 4145:   match(Set dst (LoadVectorGather mem (Binary idx offset)));
>> 4146:   effect(TEMP tmp, TEMP rtmp, KILL cr);
>> 4147:   format %{ "vector_gatherLE8 $dst, $mem, $idx, $offset\t! using $tmp 
>> and $rtmp as TEMP" %}
> 
> Suggestion:
> 
>   format %{ "vector_gatherLE8_offset $dst, $mem, $idx, $offset\t! using $tmp 
> and $rtmp as TEMP" %}

There may be more instances

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16354#discussion_r1495386503
PR Review Comment: https://git.openjdk.org/jdk/pull/16354#discussion_r1495364719
PR Review Comment: https://git.openjdk.org/jdk/pull/16354#discussion_r1495416109
PR Review Comment: https://git.openjdk.org/jdk/pull/16354#discussion_r1495426766
PR Review Comment: https://git.openjdk.org/jdk/pull/16354#discussion_r1495426957

Reply via email to