[clang] 80b46c9 - [CIR][NFC] Add vector of boolean test to __builtin_nondeterministic_value (#219550)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 27 02:45:22 PDT 2026
Author: Letu Ren
Date: 2026-09-27T17:45:15+08:00
New Revision: 80b46c9d74a868cd20720cc7932a2f88bda43d25
URL: https://github.com/llvm/llvm-project/commit/80b46c9d74a868cd20720cc7932a2f88bda43d25
DIFF: https://github.com/llvm/llvm-project/commit/80b46c9d74a868cd20720cc7932a2f88bda43d25.diff
LOG: [CIR][NFC] Add vector of boolean test to __builtin_nondeterministic_value (#219550)
Assisted-by: grok-4.6
Signed-off-by: Letu Ren <fantasquex at gmail.com>
Added:
Modified:
clang/test/CIR/CodeGenBuiltins/builtin-nondeterministic-value.c
Removed:
################################################################################
diff --git a/clang/test/CIR/CodeGenBuiltins/builtin-nondeterministic-value.c b/clang/test/CIR/CodeGenBuiltins/builtin-nondeterministic-value.c
index d7d9224fc0440..4ef5a9308fa52 100644
--- a/clang/test/CIR/CodeGenBuiltins/builtin-nondeterministic-value.c
+++ b/clang/test/CIR/CodeGenBuiltins/builtin-nondeterministic-value.c
@@ -6,11 +6,7 @@
// RUN: FileCheck --input-file=%t.ll %s -check-prefix=LLVM
typedef float float4 __attribute__((ext_vector_type(4)));
-
-// TODO: the bool4 (ext_vector_type _Bool) case from the classic CodeGen test is
-// omitted here: CIR does not yet implement storing ext-vector-bool types
-// (emitStoreOfScalar ExtVectorBoolType is NYI). The cir.freeze lowering itself
-// works for <N x !cir.bool>; only the surrounding store is unsupported.
+typedef _Bool bool4 __attribute__((ext_vector_type(4)));
int clang_nondet_i(int x) {
return __builtin_nondeterministic_value(x);
@@ -66,3 +62,15 @@ void clang_nondet_fv(void) {
// LLVM-LABEL: @clang_nondet_fv
// LLVM: %[[RES:.*]] = freeze <4 x float> poison
+
+void clang_nondet_bv(void) {
+ bool4 x = __builtin_nondeterministic_value(x);
+}
+
+// CIR-LABEL: cir.func {{.*}}@clang_nondet_bv
+// CIR: %[[POISON:.*]] = cir.const #cir.poison : !cir.vector<4 x !cir.bool>
+// CIR: %[[RES:.*]] = cir.freeze %[[POISON]] : !cir.vector<4 x !cir.bool>
+// CIR: cir.store{{.*}} %[[RES]], {{.*}} : !cir.vector<4 x !cir.bool>, !cir.ptr<!cir.vector<4 x !cir.bool>>
+
+// LLVM-LABEL: @clang_nondet_bv
+// LLVM: %[[RES:.*]] = freeze <4 x i1> poison
More information about the cfe-commits
mailing list