Skip to content

Commit 56005b9

Browse files
authored
Merge pull request #16 from antoyo/fix/bfloat16-type
Add support for the type bfloat16
2 parents 6590e87 + 88a4ad4 commit 56005b9

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

gcc/jit/dummy-frontend.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,7 @@ recording::type* tree_type_to_jit_type (tree type)
798798
}
799799
else if (type == bfloat16_type_node)
800800
{
801-
return new recording::memento_of_get_type (&target_builtins_ctxt, GCC_JIT_TYPE_VOID); // FIXME: wrong type.
801+
return new recording::memento_of_get_type (&target_builtins_ctxt, GCC_JIT_TYPE_BFLOAT16);
802802
}
803803
else if (type == dfloat128_type_node)
804804
{

gcc/jit/jit-playback.cc

+2
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,8 @@ get_tree_node_for_type (enum gcc_jit_types type_)
281281

282282
case GCC_JIT_TYPE_FLOAT:
283283
return float_type_node;
284+
case GCC_JIT_TYPE_BFLOAT16:
285+
return bfloat16_type_node;
284286
case GCC_JIT_TYPE_DOUBLE:
285287
return double_type_node;
286288
case GCC_JIT_TYPE_LONG_DOUBLE:

gcc/jit/jit-recording.cc

+10
Original file line numberDiff line numberDiff line change
@@ -2483,6 +2483,9 @@ recording::memento_of_get_type::get_size ()
24832483
case GCC_JIT_TYPE_FLOAT:
24842484
size = FLOAT_TYPE_SIZE;
24852485
break;
2486+
case GCC_JIT_TYPE_BFLOAT16:
2487+
size = 16; // TODO
2488+
break;
24862489
case GCC_JIT_TYPE_DOUBLE:
24872490
size = DOUBLE_TYPE_SIZE;
24882491
break;
@@ -2542,6 +2545,7 @@ recording::memento_of_get_type::dereference ()
25422545
case GCC_JIT_TYPE_INT64_T:
25432546
case GCC_JIT_TYPE_INT128_T:
25442547
case GCC_JIT_TYPE_FLOAT:
2548+
case GCC_JIT_TYPE_BFLOAT16:
25452549
case GCC_JIT_TYPE_DOUBLE:
25462550
case GCC_JIT_TYPE_LONG_DOUBLE:
25472551
case GCC_JIT_TYPE_COMPLEX_FLOAT:
@@ -2606,6 +2610,7 @@ recording::memento_of_get_type::is_int () const
26062610
return true;
26072611

26082612
case GCC_JIT_TYPE_FLOAT:
2613+
case GCC_JIT_TYPE_BFLOAT16:
26092614
case GCC_JIT_TYPE_DOUBLE:
26102615
case GCC_JIT_TYPE_LONG_DOUBLE:
26112616
return false;
@@ -2664,6 +2669,7 @@ recording::memento_of_get_type::is_signed () const
26642669
case GCC_JIT_TYPE_UINT128_T:
26652670

26662671
case GCC_JIT_TYPE_FLOAT:
2672+
case GCC_JIT_TYPE_BFLOAT16:
26672673
case GCC_JIT_TYPE_DOUBLE:
26682674
case GCC_JIT_TYPE_LONG_DOUBLE:
26692675

@@ -2723,6 +2729,7 @@ recording::memento_of_get_type::is_float () const
27232729
return false;
27242730

27252731
case GCC_JIT_TYPE_FLOAT:
2732+
case GCC_JIT_TYPE_BFLOAT16:
27262733
case GCC_JIT_TYPE_DOUBLE:
27272734
case GCC_JIT_TYPE_LONG_DOUBLE:
27282735
return true;
@@ -2786,6 +2793,7 @@ recording::memento_of_get_type::is_bool () const
27862793
return false;
27872794

27882795
case GCC_JIT_TYPE_FLOAT:
2796+
case GCC_JIT_TYPE_BFLOAT16:
27892797
case GCC_JIT_TYPE_DOUBLE:
27902798
case GCC_JIT_TYPE_LONG_DOUBLE:
27912799
return false;
@@ -2865,6 +2873,7 @@ static const char * const get_type_strings[] = {
28652873
"__int32_t", /* GCC_JIT_TYPE_INT32_T */
28662874
"__int64_t", /* GCC_JIT_TYPE_INT64_T */
28672875
"__int128_t", /* GCC_JIT_TYPE_INT128_T */
2876+
"bfloat16", /* GCC_JIT_TYPE_BFLOAT16 */
28682877

28692878
};
28702879

@@ -2911,6 +2920,7 @@ static const char * const get_type_enum_strings[] = {
29112920
"GCC_JIT_TYPE_INT32_T",
29122921
"GCC_JIT_TYPE_INT64_T",
29132922
"GCC_JIT_TYPE_INT128_T",
2923+
"GCC_JIT_TYPE_BFLOAT16",
29142924
};
29152925

29162926
void

gcc/jit/libgccjit.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,9 @@ enum gcc_jit_types
604604
GCC_JIT_TYPE_INT16_T,
605605
GCC_JIT_TYPE_INT32_T,
606606
GCC_JIT_TYPE_INT64_T,
607-
GCC_JIT_TYPE_INT128_T
607+
GCC_JIT_TYPE_INT128_T,
608+
609+
GCC_JIT_TYPE_BFLOAT16,
608610
};
609611

610612
extern gcc_jit_type *

0 commit comments

Comments
 (0)