[libc-commits] [libc] 2e3ee31 - [libc] Enable 'sscanf' on the GPU #100211
Joseph Huber via libc-commits
libc-commits at lists.llvm.org
Wed Jul 24 12:17:23 PDT 2024
Author: Joseph Huber
Date: 2024-07-24T14:16:57-05:00
New Revision: 2e3ee31d2901bd1faeb57703992358130d5f2dcc
URL: https://github.com/llvm/llvm-project/commit/2e3ee31d2901bd1faeb57703992358130d5f2dcc
DIFF: https://github.com/llvm/llvm-project/commit/2e3ee31d2901bd1faeb57703992358130d5f2dcc.diff
LOG: [libc] Enable 'sscanf' on the GPU #100211
Summary:
We can enable the sscanf function on the GPU now. This required adding
the configs to the scanf list so that the GPU build didn't do float
conversions.
Added:
Modified:
libc/config/gpu/entrypoints.txt
libc/docs/gpu/support.rst
libc/test/src/stdio/CMakeLists.txt
libc/test/src/stdio/sscanf_test.cpp
Removed:
################################################################################
diff --git a/libc/config/gpu/entrypoints.txt b/libc/config/gpu/entrypoints.txt
index fa878d8999227..f7e89bdcd95cc 100644
--- a/libc/config/gpu/entrypoints.txt
+++ b/libc/config/gpu/entrypoints.txt
@@ -186,6 +186,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.stdio.sprintf
libc.src.stdio.vsnprintf
libc.src.stdio.vsprintf
+ libc.src.stdio.sscanf
libc.src.stdio.feof
libc.src.stdio.ferror
libc.src.stdio.fflush
diff --git a/libc/docs/gpu/support.rst b/libc/docs/gpu/support.rst
index 71dd1b30c5e3a..5ef298a2ba58f 100644
--- a/libc/docs/gpu/support.rst
+++ b/libc/docs/gpu/support.rst
@@ -234,10 +234,11 @@ printf |check| |check|
vprintf |check| |check|
fprintf |check| |check|
vfprintf |check| |check|
-sprintf |check| |check|
-snprintf |check| |check|
-vsprintf |check| |check|
-vsnprintf |check| |check|
+sprintf |check|
+snprintf |check|
+vsprintf |check|
+vsnprintf |check|
+sscanf |check|
putchar |check| |check|
fclose |check| |check|
fopen |check| |check|
diff --git a/libc/test/src/stdio/CMakeLists.txt b/libc/test/src/stdio/CMakeLists.txt
index 5eb8c9577893b..10ec890b043a7 100644
--- a/libc/test/src/stdio/CMakeLists.txt
+++ b/libc/test/src/stdio/CMakeLists.txt
@@ -261,6 +261,13 @@ add_libc_test(
${use_system_file}
)
+if(LIBC_CONF_SCANF_DISABLE_FLOAT)
+ list(APPEND sscanf_test_copts "-DLIBC_COPT_SCANF_DISABLE_FLOAT")
+endif()
+if(LIBC_CONF_SCANF_DISABLE_INDEX_MODE)
+ list(APPEND sscanf_test_copts "-DLIBC_COPT_SCANF_DISABLE_INDEX_MODE")
+endif()
+
add_libc_test(
sscanf_test
SUITE
@@ -271,6 +278,8 @@ add_libc_test(
libc.src.stdio.sscanf
LINK_LIBRARIES
LibcFPTestHelpers
+ COMPILE_OPTIONS
+ ${sscanf_test_copts}
)
add_libc_test(
diff --git a/libc/test/src/stdio/sscanf_test.cpp b/libc/test/src/stdio/sscanf_test.cpp
index 741815bb15171..59be4e6de6ed6 100644
--- a/libc/test/src/stdio/sscanf_test.cpp
+++ b/libc/test/src/stdio/sscanf_test.cpp
@@ -226,6 +226,7 @@ TEST(LlvmLibcSScanfTest, IntConvNoWriteTests) {
EXPECT_EQ(result, 0);
}
+#ifndef LIBC_COPT_SCANF_DISABLE_FLOAT
TEST(LlvmLibcSScanfTest, FloatConvSimple) {
int ret_val;
float result = 0;
@@ -580,7 +581,9 @@ TEST(LlvmLibcSScanfTest, FloatConvNoWrite) {
ret_val = LIBC_NAMESPACE::sscanf("Not a float", "%*f", &result);
EXPECT_EQ(ret_val, 0);
}
+#endif
+#ifndef LIBC_COPT_SCANF_DISABLE_INDEX_MODE
TEST(LlvmLibcSScanfTest, CurPosCombined) {
int ret_val;
int result = -1;
@@ -628,6 +631,7 @@ TEST(LlvmLibcSScanfTest, CurPosCombined) {
EXPECT_EQ(ret_val, 1);
EXPECT_EQ(result, 320);
}
+#endif
TEST(LlvmLibcSScanfTest, PointerConvCombined) {
int ret_val;
More information about the libc-commits
mailing list