[PATCH 2/2] [PATCH 2/2] Add tests for Intel AVX512_FP16 instructions

Jan Beulich jbeulich@suse.com
Fri Jul 2 15:44:00 GMT 2021


On 01.07.2021 09:47, Cui,Lili wrote:
> 
> Intel AVX512 FP16 instructions use maps 3, 5 and 6. Maps 5 and 6 use 3 bits
> in the EVEX.mmm field (0b101, 0b110). Map 5 is for instructions that were FP32
> in map 1 (0Fxx). Map 6 is for instructions that were FP32 in map 2 (0F38xx).
> There are some exceptions to this rule. Some things in map 1 (0Fxx) with imm8
> operands predated our current conventions; those instructions moved to map 3.
> FP32 things in map 3 (0F3Axx) found new opcodes in map3 for FP16 because map3
> is very sparsely populated. Most of the FP16 instructions share opcodes and
> prefix (EVEX.pp) bits with the related FP32 operations.
> 
> Intel AVX512 FP16 instructions has new displacements scaling rules, please refer
> to the public software developer manual for detail information.
> 
> gas/
> 
> 2021-07-01  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
>             H.J. Lu  <hongjiu.lu@intel.com>
>             Wei Xiao <wei3.xiao@intel.com>
>             Lili Cui  <lili.cui@intel.com>
> 
> 	* gas/testsuite/gas/i386/i386.exp: Run FP16 tests.
> 	* gas/testsuite/gas/i386/avx512_fp16-intel.d: New test.
> 	* gas/testsuite/gas/i386/avx512_fp16-inval-bcast.l: Ditto.
> 	* gas/testsuite/gas/i386/avx512_fp16-inval-bcast.s: Ditto.
> 	* gas/testsuite/gas/i386/avx512_fp16.d: Ditto.
> 	* gas/testsuite/gas/i386/avx512_fp16.s: Ditto.

This, just to pick an example, has

	vaddph	8128(%ecx), %zmm5, %zmm6	 #AVX512_FP16 Disp8
	vaddph	-8192(%edx){1to32}, %zmm5, %zmm6{%k7}{z}	 #AVX512_FP16 Disp8 BROADCAST_EN MASK_ENABLING ZEROCTL

The former is indeed using disp8, but the latter isn't despite the
comment suggesting so. I'd consider it particularly important that
disp8-scaling be covered both without and with broadcast, yet I
don't think I've been able to spot any instance of the latter.

> 	* gas/testsuite/gas/i386/avx512_fp16_disp8-intel.d: Ditto.
> 	* gas/testsuite/gas/i386/avx512_fp16_disp8.d: Ditto.
> 	* gas/testsuite/gas/i386/avx512_fp16_disp8.s: Ditto.

So what are these about? Their name suggests disp8 handling, but
the produced code has no single instance of an 8-bit displacement.
Same for the 64-bit equivalents further down.

Overall this patch if of course close to impossible to review
properly.

Jan



More information about the Binutils mailing list