[libclc] aca8a5c - [libclc] Remove clspv-specific clc conversions (#128500)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 24 04:32:01 PST 2025
Author: Fraser Cormack
Date: 2025-02-24T12:31:55Z
New Revision: aca8a5cb2325767859f38894f42ce47732cbb53e
URL: https://github.com/llvm/llvm-project/commit/aca8a5cb2325767859f38894f42ce47732cbb53e
DIFF: https://github.com/llvm/llvm-project/commit/aca8a5cb2325767859f38894f42ce47732cbb53e.diff
LOG: [libclc] Remove clspv-specific clc conversions (#128500)
The clc and clc+clspv modes produced the same conversions code, so this
patch simplifies the process. It further simplifies the internal checks
the script makes by assuming the mutual exclusivity.
Added:
Modified:
libclc/CMakeLists.txt
libclc/generic/lib/gen_convert.py
Removed:
################################################################################
diff --git a/libclc/CMakeLists.txt b/libclc/CMakeLists.txt
index 2a2ebec66f6a9..22c3075801785 100644
--- a/libclc/CMakeLists.txt
+++ b/libclc/CMakeLists.txt
@@ -258,13 +258,6 @@ if ( clspv-- IN_LIST LIBCLC_TARGETS_TO_BUILD OR clspv64-- IN_LIST LIBCLC_TARGETS
DEPENDS ${script_loc} )
add_custom_target( generate-clspv-convert.cl DEPENDS clspv-convert.cl )
set_target_properties( generate-clspv-convert.cl PROPERTIES FOLDER "libclc/Sourcegenning" )
-
- add_custom_command(
- OUTPUT clc-clspv-convert.cl
- COMMAND ${Python3_EXECUTABLE} ${script_loc} --clc --clspv > clc-clspv-convert.cl
- DEPENDS ${script_loc} )
- add_custom_target( generate-clc-clspv-convert.cl DEPENDS clc-clspv-convert.cl )
- set_target_properties( generate-clc-clspv-convert.cl PROPERTIES FOLDER "libclc/Sourcegenning" )
endif()
enable_testing()
@@ -314,12 +307,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
endif()
set( clc_lib_files )
-
- if( ARCH STREQUAL clspv OR ARCH STREQUAL clspv64 )
- set( clc_gen_files clc-clspv-convert.cl )
- else()
- set( clc_gen_files clc-convert.cl )
- endif()
+ set( clc_gen_files clc-convert.cl )
libclc_configure_lib_source(
clc_lib_files
diff --git a/libclc/generic/lib/gen_convert.py b/libclc/generic/lib/gen_convert.py
index d2d5b7975275c..3359102224060 100644
--- a/libclc/generic/lib/gen_convert.py
+++ b/libclc/generic/lib/gen_convert.py
@@ -28,6 +28,7 @@
# convert_<destTypen><_sat><_roundingMode>(<sourceTypen>)
import argparse
+from sys import stderr
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -41,6 +42,14 @@
clc = args.clc
clspv = args.clspv
+
+# We don't generate clspv-specific code for clc conversions - don't allow this
+# accidentally (later checks rely on mutual exclusivity)
+if clc and clspv:
+ print("Error: clc and clspv conversions are mutually exclusive", file=stderr)
+ exit(1)
+
+
types = [
"char",
"uchar",
@@ -308,7 +317,7 @@ def generate_default_conversion(src, dst, mode):
# Do not generate user-facing default conversions for clspv as they are handled
# natively
-if clc or not clspv:
+if not clspv:
for src in types:
for dst in types:
generate_default_conversion(src, dst, "")
@@ -318,7 +327,7 @@ def generate_default_conversion(src, dst, mode):
for mode in rounding_modes:
# Do not generate user-facing "_rte" conversions for clspv as they
# are handled natively
- if clspv and not clc and mode == "_rte":
+ if clspv and mode == "_rte":
continue
generate_default_conversion(src, dst, mode)
@@ -560,6 +569,6 @@ def generate_float_conversion(src, dst, size, mode, sat):
for mode in rounding_modes:
# Do not generate user-facing "_rte" conversions for clspv as
# they are handled natively
- if clspv and not clc and mode == "_rte":
+ if clspv and mode == "_rte":
continue
generate_float_conversion(src, dst, size, mode, "")
More information about the cfe-commits
mailing list