aboutsummaryrefslogtreecommitdiff
path: root/gcc/jit/jit-playback.cc
diff options
context:
space:
mode:
authorAntoni Boucher <bouanto@zoho.com>2022-04-12 17:16:45 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2022-04-12 17:16:45 -0400
commitaf80ea97b61847d91da0d303e85faed437059092 (patch)
tree88bd7c9a068ead6db362db4dc97907fe76d68669 /gcc/jit/jit-playback.cc
parent791a968630b3846b614a435b9a75a52f29147a08 (diff)
downloadgcc-af80ea97b61847d91da0d303e85faed437059092.zip
gcc-af80ea97b61847d91da0d303e85faed437059092.tar.gz
gcc-af80ea97b61847d91da0d303e85faed437059092.tar.bz2
libgccjit: Add support for sized integer types, including 128-bit integers [PR95325]
gcc/jit/ PR target/95325 * docs/_build/texinfo/libgccjit.texi: Regenerate * docs/topics/compatibility.rst (LIBGCCJIT_ABI_20): New ABI tag. * docs/topics/types.rst: Add documentation for the new types GCC_JIT_TYPE_UINT8_T, GCC_JIT_TYPE_UINT16_T, GCC_JIT_TYPE_UINT32_T, GCC_JIT_TYPE_UINT64_T, GCC_JIT_TYPE_UINT128_T, GCC_JIT_TYPE_INT8_T, GCC_JIT_TYPE_INT16_T, GCC_JIT_TYPE_INT32_T, GCC_JIT_TYPE_INT64_T, GCC_JIT_TYPE_INT128_T and new functions (gcc_jit_compatible_types, gcc_jit_type_get_size). * jit-builtins.cc: Add support for BT_UINT128. * jit-common.h: Update the value of NUM_GCC_JIT_TYPES. * jit-playback.cc: Add support for the sized integer types. * jit-recording.cc: Add support for the sized integer types. * jit-recording.h: Add support for comparing integer types and new function (is_signed). * libgccjit.cc (gcc_jit_compatible_types): New. (gcc_jit_type_get_size) New. * libgccjit.h: New enum variants for gcc_jit_types (GCC_JIT_TYPE_UINT8_T, GCC_JIT_TYPE_UINT16_T, GCC_JIT_TYPE_UINT32_T, GCC_JIT_TYPE_UINT64_T, GCC_JIT_TYPE_UINT128_T, GCC_JIT_TYPE_INT8_T, GCC_JIT_TYPE_INT16_T, GCC_JIT_TYPE_INT32_T, GCC_JIT_TYPE_INT64_T, GCC_JIT_TYPE_INT128_T) and new functions (gcc_jit_compatible_types, gcc_jit_type_get_size). * libgccjit.map (LIBGCCJIT_ABI_20): New ABI tag. gcc/testsuite/ PR target/95325 * jit.dg/test-types.c: Add tests for sized integer types.
Diffstat (limited to 'gcc/jit/jit-playback.cc')
-rw-r--r--gcc/jit/jit-playback.cc40
1 files changed, 36 insertions, 4 deletions
diff --git a/gcc/jit/jit-playback.cc b/gcc/jit/jit-playback.cc
index d1835c7..3133d30 100644
--- a/gcc/jit/jit-playback.cc
+++ b/gcc/jit/jit-playback.cc
@@ -237,6 +237,38 @@ get_tree_node_for_type (enum gcc_jit_types type_)
case GCC_JIT_TYPE_UNSIGNED_INT:
return unsigned_type_node;
+ case GCC_JIT_TYPE_UINT8_T:
+ return unsigned_intQI_type_node;
+ case GCC_JIT_TYPE_UINT16_T:
+ return uint16_type_node;
+ case GCC_JIT_TYPE_UINT32_T:
+ return uint32_type_node;
+ case GCC_JIT_TYPE_UINT64_T:
+ return uint64_type_node;
+ case GCC_JIT_TYPE_UINT128_T:
+ if (targetm.scalar_mode_supported_p (TImode))
+ return uint128_type_node;
+
+ add_error (NULL, "gcc_jit_types value unsupported on this target: %i",
+ type_);
+ return NULL;
+
+ case GCC_JIT_TYPE_INT8_T:
+ return intQI_type_node;
+ case GCC_JIT_TYPE_INT16_T:
+ return intHI_type_node;
+ case GCC_JIT_TYPE_INT32_T:
+ return intSI_type_node;
+ case GCC_JIT_TYPE_INT64_T:
+ return intDI_type_node;
+ case GCC_JIT_TYPE_INT128_T:
+ if (targetm.scalar_mode_supported_p (TImode))
+ return intTI_type_node;
+
+ add_error (NULL, "gcc_jit_types value unsupported on this target: %i",
+ type_);
+ return NULL;
+
case GCC_JIT_TYPE_LONG:
return long_integer_type_node;
case GCC_JIT_TYPE_UNSIGNED_LONG:
@@ -268,6 +300,9 @@ get_tree_node_for_type (enum gcc_jit_types type_)
return complex_long_double_type_node;
}
+ add_error (NULL, "unrecognized (enum gcc_jit_types) value: %i",
+ type_);
+
return NULL;
}
@@ -280,10 +315,7 @@ get_type (enum gcc_jit_types type_)
{
tree type_node = get_tree_node_for_type (type_);
if (type_node == NULL)
- {
- add_error (NULL, "unrecognized (enum gcc_jit_types) value: %i", type_);
- return NULL;
- }
+ return NULL;
return new type (type_node);
}