Skip to content

Commit 41c9510

Browse files
authored
[libc][math][c++23] Add bf16fma{,f,l,f128} math functions (#153231)
This PR adds the following basic math functions for BFloat16 type along with the tests: - bf16fma - bf16fmaf - bf16fmal - bf16fmaf128 --------- Signed-off-by: Krishna Pandey <[email protected]>
1 parent a2899c4 commit 41c9510

33 files changed

+549
-4
lines changed

libc/config/baremetal/aarch64/entrypoints.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
763763
libc.src.math.bf16div
764764
libc.src.math.bf16divf
765765
libc.src.math.bf16divl
766+
libc.src.math.bf16fma
767+
libc.src.math.bf16fmaf
768+
libc.src.math.bf16fmal
766769
libc.src.math.bf16mul
767770
libc.src.math.bf16mulf
768771
libc.src.math.bf16mull
@@ -792,6 +795,7 @@ if(LIBC_TYPES_HAS_FLOAT128)
792795
# math.h C++23 mixed bfloat16 and _Float128 entrypoints
793796
libc.src.math.bf16addf128
794797
libc.src.math.bf16divf128
798+
libc.src.math.bf16fmaf128
795799
libc.src.math.bf16mulf128
796800
libc.src.math.bf16subf128
797801
)

libc/config/baremetal/arm/entrypoints.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
766766
libc.src.math.bf16div
767767
libc.src.math.bf16divf
768768
libc.src.math.bf16divl
769+
libc.src.math.bf16fma
770+
libc.src.math.bf16fmaf
771+
libc.src.math.bf16fmal
769772
libc.src.math.bf16mul
770773
libc.src.math.bf16mulf
771774
libc.src.math.bf16mull
@@ -795,6 +798,7 @@ if(LIBC_TYPES_HAS_FLOAT128)
795798
# math.h C++23 mixed bfloat16 and _Float128 entrypoints
796799
libc.src.math.bf16addf128
797800
libc.src.math.bf16divf128
801+
libc.src.math.bf16fmaf128
798802
libc.src.math.bf16mulf128
799803
libc.src.math.bf16subf128
800804
)

libc/config/baremetal/riscv/entrypoints.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
766766
libc.src.math.bf16div
767767
libc.src.math.bf16divf
768768
libc.src.math.bf16divl
769+
libc.src.math.bf16fma
770+
libc.src.math.bf16fmaf
771+
libc.src.math.bf16fmal
769772
libc.src.math.bf16mul
770773
libc.src.math.bf16mulf
771774
libc.src.math.bf16mull
@@ -795,6 +798,7 @@ if(LIBC_TYPES_HAS_FLOAT128)
795798
# math.h C++23 mixed bfloat16 and _Float128 entrypoints
796799
libc.src.math.bf16addf128
797800
libc.src.math.bf16divf128
801+
libc.src.math.bf16fmaf128
798802
libc.src.math.bf16mulf128
799803
libc.src.math.bf16subf128
800804
)

libc/config/darwin/aarch64/entrypoints.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
596596
libc.src.math.bf16div
597597
libc.src.math.bf16divf
598598
libc.src.math.bf16divl
599+
libc.src.math.bf16fma
600+
libc.src.math.bf16fmaf
601+
libc.src.math.bf16fmal
599602
libc.src.math.bf16mul
600603
libc.src.math.bf16mulf
601604
libc.src.math.bf16mull

libc/config/darwin/x86_64/entrypoints.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
239239
libc.src.math.bf16div
240240
libc.src.math.bf16divf
241241
libc.src.math.bf16divl
242+
libc.src.math.bf16fma
243+
libc.src.math.bf16fmaf
244+
libc.src.math.bf16fmal
242245
libc.src.math.bf16mul
243246
libc.src.math.bf16mulf
244247
libc.src.math.bf16mull

libc/config/gpu/amdgpu/entrypoints.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
622622
libc.src.math.bf16div
623623
libc.src.math.bf16divf
624624
libc.src.math.bf16divl
625+
libc.src.math.bf16fma
626+
libc.src.math.bf16fmaf
627+
libc.src.math.bf16fmal
625628
libc.src.math.bf16mul
626629
libc.src.math.bf16mulf
627630
libc.src.math.bf16mull

libc/config/gpu/nvptx/entrypoints.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
623623
libc.src.math.bf16div
624624
libc.src.math.bf16divf
625625
libc.src.math.bf16divl
626+
libc.src.math.bf16fma
627+
libc.src.math.bf16fmaf
628+
libc.src.math.bf16fmal
626629
libc.src.math.bf16mul
627630
libc.src.math.bf16mulf
628631
libc.src.math.bf16mull

libc/config/linux/aarch64/entrypoints.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
850850
libc.src.math.bf16div
851851
libc.src.math.bf16divf
852852
libc.src.math.bf16divl
853+
libc.src.math.bf16fma
854+
libc.src.math.bf16fmaf
855+
libc.src.math.bf16fmal
853856
libc.src.math.bf16mul
854857
libc.src.math.bf16mulf
855858
libc.src.math.bf16mull
@@ -879,6 +882,7 @@ if(LIBC_TYPES_HAS_FLOAT128)
879882
# math.h C++23 mixed bfloat16 and _Float128 entrypoints
880883
libc.src.math.bf16addf128
881884
libc.src.math.bf16divf128
885+
libc.src.math.bf16fmaf128
882886
libc.src.math.bf16mulf128
883887
libc.src.math.bf16subf128
884888
)

libc/config/linux/arm/entrypoints.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
466466
libc.src.math.bf16div
467467
libc.src.math.bf16divf
468468
libc.src.math.bf16divl
469+
libc.src.math.bf16fma
470+
libc.src.math.bf16fmaf
471+
libc.src.math.bf16fmal
469472
libc.src.math.bf16mul
470473
libc.src.math.bf16mulf
471474
libc.src.math.bf16mull

libc/config/linux/riscv/entrypoints.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,9 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
869869
libc.src.math.bf16div
870870
libc.src.math.bf16divf
871871
libc.src.math.bf16divl
872+
libc.src.math.bf16fma
873+
libc.src.math.bf16fmaf
874+
libc.src.math.bf16fmal
872875
libc.src.math.bf16mul
873876
libc.src.math.bf16mulf
874877
libc.src.math.bf16mull
@@ -898,6 +901,7 @@ if(LIBC_TYPES_HAS_FLOAT128)
898901
# math.h C++23 mixed bfloat16 and _Float128 entrypoints
899902
libc.src.math.bf16addf128
900903
libc.src.math.bf16divf128
904+
libc.src.math.bf16fmaf128
901905
libc.src.math.bf16mulf128
902906
libc.src.math.bf16subf128
903907
)

0 commit comments

Comments
 (0)