[vectorIntrinsics+fp16] RFR: 8290204: FP16 initial backend implementation [v4]
Jatin Bhateja
jbhateja at openjdk.org
Wed Jan 4 08:33:12 UTC 2023
On Thu, 22 Dec 2022 20:45:32 GMT, Smita Kamath <svkamath at openjdk.org> wrote:
>> Initial backend implementation for enabling FP16.
>
> Smita Kamath has updated the pull request incrementally with one additional commit since the last revision:
>
> Updated leaf level assembly routines as per review comment
Few more comments added.
Currently all the inline expansions fails if lane is not a primitive type element. Thus backend code will not be exercised and tested.
src/hotspot/cpu/x86/assembler_x86.cpp line 2138:
> 2136:
> 2137: void Assembler::evcvtph2pd(XMMRegister dst, KRegister mask, XMMRegister src, int vector_len) {
> 2138: assert(VM_Version::supports_avx512_fp16(), "");
Asserts should also check for VL feature if vector_len < Assembler::AVX_512bit.
src/hotspot/cpu/x86/assembler_x86.cpp line 2152:
> 2150:
> 2151: void Assembler::evcvtpd2ph(XMMRegister dst, KRegister mask, XMMRegister src, int vector_len) {
> 2152: assert(VM_Version::supports_avx512_fp16(), "");
Asserts should also check for VL feature if vector_len < Assembler::AVX_512bit.
src/hotspot/cpu/x86/assembler_x86.cpp line 2166:
> 2164:
> 2165: void Assembler::evcvtps2ph(XMMRegister dst, KRegister mask, XMMRegister src, int imm8, int vector_len) {
> 2166: assert(VM_Version::supports_evex(), "");
Asserts should also check for VL feature if vector_len < Assembler::AVX_512bit.
src/hotspot/cpu/x86/assembler_x86.cpp line 2180:
> 2178:
> 2179: void Assembler::evcvtph2ps(XMMRegister dst, KRegister mask, XMMRegister src, int vector_len) {
> 2180: assert(VM_Version::supports_evex(), "");
Asserts should also check for VL feature if vector_len < Assembler::AVX_512bit.
src/hotspot/cpu/x86/assembler_x86.cpp line 6192:
> 6190:
> 6191: void Assembler::evaddsh(XMMRegister dst, XMMRegister nds, XMMRegister src) {
> 6192: assert(VM_Version::supports_avx512_fp16(), "");
Same as above.
src/hotspot/cpu/x86/assembler_x86.cpp line 6391:
> 6389: void Assembler::evaddph(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, int vector_len) {
> 6390: assert(VM_Version::supports_avx512_fp16(), "");
> 6391: InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
Same as above.
src/hotspot/cpu/x86/assembler_x86.cpp line 6455:
> 6453:
> 6454: void Assembler::evsubph(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, int vector_len) {
> 6455: assert(VM_Version::supports_avx512_fp16(), "");
Same as above.
src/hotspot/cpu/x86/assembler_x86.cpp line 6531:
> 6529:
> 6530: void Assembler::evmulph(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, int vector_len) {
> 6531: assert(VM_Version::supports_avx512_fp16(), "");
Same as above.
src/hotspot/cpu/x86/assembler_x86.cpp line 6546:
> 6544: void Assembler::evfmadd231ph(XMMRegister dst, KRegister mask, XMMRegister src1, XMMRegister src2, int vector_len) {
> 6545: assert(VM_Version::supports_avx512_fp16(), "");
> 6546: assert(VM_Version::supports_avx512vl(), "");
VL not needed if vector_len == AVX512_bit.
src/hotspot/cpu/x86/assembler_x86.cpp line 6562:
> 6560: void Assembler::evfmadd231ph(XMMRegister dst, KRegister mask, XMMRegister src1, Address src2, int vector_len) {
> 6561: assert(VM_Version::supports_avx512_fp16(), "");
> 6562: assert(VM_Version::supports_avx512vl(), "");
Same as above.
src/hotspot/cpu/x86/assembler_x86.cpp line 6665:
> 6663:
> 6664: void Assembler::evdivph(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, int vector_len) {
> 6665: assert(VM_Version::supports_avx512_fp16(), "");
Same as above.
src/hotspot/cpu/x86/x86.ad line 1963:
> 1961: return false;
> 1962: }
> 1963: break;
What if target does not support AVX512BW and vector length is 512 bits, vector size compatibility check will fail upfront and we won't reach till this point, currently the BasicType for halffloat is T_SHORT,
https://github.com/openjdk/panama-vector/pull/204/files#diff-d6a3624f0f0af65a98a47378a5c146eed5016ca09b4de1acd0a3acc823242e82L1690
-------------
PR: https://git.openjdk.org/panama-vector/pull/204
More information about the panama-dev
mailing list