Re: [PATCH] Add loongarch native checksum implementation.

Поиск
Список
Период
Сортировка
От YANG Xudong
Тема Re: [PATCH] Add loongarch native checksum implementation.
Дата
Msg-id 7845a437-ffd1-5c98-f606-6d19a8d0ea30@ymatrix.cn
обсуждение исходный текст
Ответ на Re: [PATCH] Add loongarch native checksum implementation.  (YANG Xudong <yangxudong@ymatrix.cn>)
Ответы Re: [PATCH] Add loongarch native checksum implementation.  (John Naylor <john.naylor@enterprisedb.com>)
Re: Re: [PATCH] Add loongarch native checksum implementation.  (huchangqi <huchangqi@loongson.cn>)
Список pgsql-hackers
Is there any other comment?

If the patch looks OK, I would like to update its status to ready for 
committer in the commitfest.

Thanks!

On 2023/6/16 09:28, YANG Xudong wrote:
> Updated the patch based on the comments.
> 
> On 2023/6/15 18:30, John Naylor wrote:
>>
>> On Wed, Jun 14, 2023 at 9:20 AM YANG Xudong <yangxudong@ymatrix.cn 
>> <mailto:yangxudong@ymatrix.cn>> wrote:
>>  >
>>  > Attached a new patch with fixes based on the comment below.
>>
>> Note: It's helpful to pass "-v" to git format-patch, to have different 
>> versions.
>>
> 
> Added v2
> 
>>  > > For x86 and Arm, if it fails to link without an -march flag, we 
>> allow
>>  > > for a runtime check. The flags "-march=armv8-a+crc" and 
>> "-msse4.2" are
>>  > > for instructions not found on all platforms. The patch also 
>> checks both
>>  > > ways, and each one results in "Use LoongArch CRC instruction
>>  > > unconditionally". The -march flag here is general, not specific. In
>>  > > other words, if this only runs inside "+elif host_cpu == 
>> 'loongarch64'",
>>  > > why do we need both with -march and without?
>>  > >
>>  >
>>  > Removed the elif branch.
>>
>> Okay, since we've confirmed that no arch flag is necessary, some other 
>> places can be simplified:
>>
>> --- a/src/port/Makefile
>> +++ b/src/port/Makefile
>> @@ -98,6 +98,11 @@ pg_crc32c_armv8.o: CFLAGS+=$(CFLAGS_CRC)
>>   pg_crc32c_armv8_shlib.o: CFLAGS+=$(CFLAGS_CRC)
>>   pg_crc32c_armv8_srv.o: CFLAGS+=$(CFLAGS_CRC)
>>
>> +# all versions of pg_crc32c_loongarch.o need CFLAGS_CRC
>> +pg_crc32c_loongarch.o: CFLAGS+=$(CFLAGS_CRC)
>> +pg_crc32c_loongarch_shlib.o: CFLAGS+=$(CFLAGS_CRC)
>> +pg_crc32c_loongarch_srv.o: CFLAGS+=$(CFLAGS_CRC)
>>
>> This was copy-and-pasted from platforms that use a runtime check, so 
>> should be unnecessary.
>>
> 
> Removed these lines.
> 
>> +# If the intrinsics are supported, sets 
>> pgac_loongarch_crc32c_intrinsics,
>> +# and CFLAGS_CRC.
>>
>> +# Check if __builtin_loongarch_crcc_* intrinsics can be used
>> +# with the default compiler flags.
>> +# CFLAGS_CRC is set if the extra flag is required.
>>
>> Same here -- it seems we don't need to set CFLAGS_CRC at all. Can you 
>> confirm?
>>
> 
> We don't need to set CFLAGS_CRC as commented. I have updated the 
> configure script to make it align with the logic in meson build script.
> 
>>  > > Also, I don't have a Loongarch machine for testing. Could you 
>> show that
>>  > > the instructions are found in the binary, maybe using objdump and 
>> grep?
>>  > > Or a performance test?
>>  > >
>>  >
>>  > The output of the objdump command `objdump -dS
>>  > ../postgres-build/tmp_install/usr/local/pgsql/bin/postgres  | grep 
>> -B 30
>>  > -A 10 crcc` is attached.
>>
>> Thanks for confirming.
>>
>> -- 
>> John Naylor
>> EDB: http://www.enterprisedb.com <http://www.enterprisedb.com>



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Masahiko Sawada
Дата:
Сообщение: Re: Initial Schema Sync for Logical Replication
Следующее
От: Peter Smith
Дата:
Сообщение: Re: doc: improve the restriction description of using indexes on REPLICA IDENTITY FULL table.