[PATCH] D153226: OpenMP: Don't include stdbool.h in builtin headers

2023-06-26 Thread Matt Arsenault via Phabricator via cfe-commits
arsenm closed this revision.
arsenm added a comment.

dee1f5b32c3a6a5694c3bb2fbf68d162447a5970 



CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153226/new/

https://reviews.llvm.org/D153226

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D153226: OpenMP: Don't include stdbool.h in builtin headers

2023-06-18 Thread Ron Lieberman via Phabricator via cfe-commits
ronlieb accepted this revision.
ronlieb added a comment.
This revision is now accepted and ready to land.

patch applied to local build resolves issues seen


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153226/new/

https://reviews.llvm.org/D153226

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D153226: OpenMP: Don't include stdbool.h in builtin headers

2023-06-18 Thread Ron Lieberman via Phabricator via cfe-commits
ronlieb added a subscriber: mhalk.
ronlieb added a comment.

@mhalk  to review


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153226/new/

https://reviews.llvm.org/D153226

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D153226: OpenMP: Don't include stdbool.h in builtin headers

2023-06-18 Thread Matt Arsenault via Phabricator via cfe-commits
arsenm created this revision.
arsenm added reviewers: ronlieb, jdoerfert, doru1004.
Herald added subscribers: sunshaoce, guansong, yaxunl.
Herald added a project: All.
arsenm requested review of this revision.
Herald added subscribers: jplehr, sstefan1, wdng.

Pre-C99 didn't include bool, and C99 allows you to redefine true/false
apparently.


https://reviews.llvm.org/D153226

Files:
  clang/lib/Headers/__clang_hip_libdevice_declares.h
  clang/lib/Headers/openmp_wrappers/__clang_openmp_device_functions.h
  clang/test/Headers/openmp-device-functions-bool.c

Index: clang/test/Headers/openmp-device-functions-bool.c
===
--- /dev/null
+++ clang/test/Headers/openmp-device-functions-bool.c
@@ -0,0 +1,89 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 2
+// RUN: %clang_cc1 -x c -fopenmp -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-unknown -fopenmp-targets=amdgcn-amd-amdhsa -internal-isystem %S/../../lib/Headers/openmp_wrappers -include __clang_openmp_device_functions.h -internal-isystem %S/../../lib/Headers/openmp_wrappers -internal-isystem %S/Inputs/include -emit-llvm %s -fopenmp-is-device  -o - | FileCheck %s --check-prefixes=CHECK,CHECK-C
+// RUN: %clang_cc1 -x c++ -fopenmp -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-unknown -fopenmp-targets=amdgcn-amd-amdhsa -internal-isystem %S/../../lib/Headers/openmp_wrappers -include __clang_openmp_device_functions.h -internal-isystem %S/../../lib/Headers/openmp_wrappers -internal-isystem %S/Inputs/include -emit-llvm %s -fopenmp-is-device  -o - | FileCheck %s --check-prefixes=CHECK,CHECK-CPP
+
+// Test that we did not include  in C, and OCKL functions using bool
+// produce an i1
+
+#ifdef __cplusplus
+typedef bool ockl_bool;
+#define EXTERN_C extern "C"
+#else
+typedef _Bool ockl_bool;
+#define EXTERN_C
+#endif
+
+#pragma omp begin declare target
+
+// CHECK-LABEL: define hidden float @test_fdot2
+// CHECK-SAME: (<2 x half> noundef [[A:%.*]], <2 x half> noundef [[B:%.*]], float noundef [[C:%.*]], i1 noundef zeroext [[S:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-NEXT:  entry:
+// CHECK-NEXT:[[RETVAL:%.*]] = alloca float, align 4, addrspace(5)
+// CHECK-NEXT:[[A_ADDR:%.*]] = alloca <2 x half>, align 4, addrspace(5)
+// CHECK-NEXT:[[B_ADDR:%.*]] = alloca <2 x half>, align 4, addrspace(5)
+// CHECK-NEXT:[[C_ADDR:%.*]] = alloca float, align 4, addrspace(5)
+// CHECK-NEXT:[[S_ADDR:%.*]] = alloca i8, align 1, addrspace(5)
+// CHECK-NEXT:[[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
+// CHECK-NEXT:[[A_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[A_ADDR]] to ptr
+// CHECK-NEXT:[[B_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[B_ADDR]] to ptr
+// CHECK-NEXT:[[C_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[C_ADDR]] to ptr
+// CHECK-NEXT:[[S_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[S_ADDR]] to ptr
+// CHECK-NEXT:store <2 x half> [[A]], ptr [[A_ADDR_ASCAST]], align 4
+// CHECK-NEXT:store <2 x half> [[B]], ptr [[B_ADDR_ASCAST]], align 4
+// CHECK-NEXT:store float [[C]], ptr [[C_ADDR_ASCAST]], align 4
+// CHECK-NEXT:[[FROMBOOL:%.*]] = zext i1 [[S]] to i8
+// CHECK-NEXT:store i8 [[FROMBOOL]], ptr [[S_ADDR_ASCAST]], align 1
+// CHECK-NEXT:[[TMP0:%.*]] = load <2 x half>, ptr [[A_ADDR_ASCAST]], align 4
+// CHECK-NEXT:[[TMP1:%.*]] = load <2 x half>, ptr [[B_ADDR_ASCAST]], align 4
+// CHECK-NEXT:[[TMP2:%.*]] = load float, ptr [[C_ADDR_ASCAST]], align 4
+// CHECK-NEXT:[[TMP3:%.*]] = load i8, ptr [[S_ADDR_ASCAST]], align 1
+// CHECK-NEXT:[[TOBOOL:%.*]] = trunc i8 [[TMP3]] to i1
+// CHECK-NEXT:[[CALL:%.*]] = call float @__ockl_fdot2(<2 x half> noundef [[TMP0]], <2 x half> noundef [[TMP1]], float noundef [[TMP2]], i1 noundef zeroext [[TOBOOL]]) #[[ATTR2:[0-9]+]]
+// CHECK-NEXT:ret float [[CALL]]
+//
+EXTERN_C float test_fdot2(__2f16 a, __2f16 b, float c, ockl_bool s) {
+  return __ockl_fdot2(a, b, c, s);
+}
+
+
+#ifndef __cplusplus
+
+enum my_bool {
+  false,
+  true
+};
+
+// CHECK-C-LABEL: define hidden i32 @use_my_bool
+// CHECK-C-SAME: (i32 noundef [[B:%.*]]) #[[ATTR0]] {
+// CHECK-C-NEXT:  entry:
+// CHECK-C-NEXT:[[RETVAL:%.*]] = alloca i32, align 4, addrspace(5)
+// CHECK-C-NEXT:[[B_ADDR:%.*]] = alloca i32, align 4, addrspace(5)
+// CHECK-C-NEXT:[[T:%.*]] = alloca i32, align 4, addrspace(5)
+// CHECK-C-NEXT:[[F:%.*]] = alloca i32, align 4, addrspace(5)
+// CHECK-C-NEXT:[[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
+// CHECK-C-NEXT:[[B_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[B_ADDR]] to ptr
+// CHECK-C-NEXT:[[T_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[T]] to ptr
+// CHECK-C-NEXT:[[F_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[F]] to ptr
+// CHECK-C-NEXT:store i32 [[B]], ptr [[B_ADDR_ASCAST]], align 4
+// CHECK-C-NEXT:store