Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .ci/compute_projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@
"mlir",
"polly",
"flang",
"libclc",
"openmp",
},
}
Expand All @@ -77,7 +76,7 @@
# This mapping describes runtimes that should be tested when the key project is
# touched.
DEPENDENT_RUNTIMES_TO_TEST = {
"clang": {"compiler-rt"},
"clang": {"compiler-rt", "libclc"},
"clang-tools-extra": {"libc"},
"libc": {"libc"},
"compiler-rt": {"compiler-rt"},
Expand Down Expand Up @@ -119,6 +118,7 @@
"cross-project-tests",
"flang",
"libc",
"libclc",
"lldb",
"openmp",
"polly",
Expand All @@ -142,14 +142,15 @@
"lld": "check-lld",
"flang": "check-flang",
"libc": "check-libc",
"libclc": "check-libclc",
"lld": "check-lld",
"lldb": "check-lldb",
"mlir": "check-mlir",
"openmp": "check-openmp",
"polly": "check-polly",
}

RUNTIMES = {"libcxx", "libcxxabi", "libunwind", "compiler-rt", "libc"}
RUNTIMES = {"libcxx", "libcxxabi", "libunwind", "compiler-rt", "libc", "libclc"}

# Meta projects are projects that need explicit handling but do not reside
# in their own top level folder. To add a meta project, the start of the path
Expand Down
22 changes: 12 additions & 10 deletions .ci/compute_projects_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,12 @@ def test_clang(self):
"check-clang check-clang-tools",
)
self.assertEqual(
env_variables["runtimes_to_build"], "compiler-rt;libcxx;libcxxabi;libunwind"
env_variables["runtimes_to_build"],
"compiler-rt;libclc;libcxx;libcxxabi;libunwind",
)
self.assertEqual(
env_variables["runtimes_check_targets"],
"check-compiler-rt",
"check-compiler-rt check-libclc",
)
self.assertEqual(
env_variables["runtimes_check_targets_needs_reconfig"],
Expand All @@ -115,10 +116,10 @@ def test_clang_windows(self):
self.assertEqual(
env_variables["project_check_targets"], "check-clang check-clang-tools"
)
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_to_build"], "libclc")
self.assertEqual(
env_variables["runtimes_check_targets"],
"",
"check-libclc",
)
self.assertEqual(
env_variables["runtimes_check_targets_needs_reconfig"],
Expand Down Expand Up @@ -165,11 +166,12 @@ def test_cir(self):
"check-clang check-clang-cir check-clang-tools",
)
self.assertEqual(
env_variables["runtimes_to_build"], "compiler-rt;libcxx;libcxxabi;libunwind"
env_variables["runtimes_to_build"],
"compiler-rt;libclc;libcxx;libcxxabi;libunwind",
)
self.assertEqual(
env_variables["runtimes_check_targets"],
"check-compiler-rt",
"check-compiler-rt check-libclc",
)
self.assertEqual(
env_variables["runtimes_check_targets_needs_reconfig"],
Expand Down Expand Up @@ -285,7 +287,7 @@ def test_ci(self):
)
self.assertEqual(
env_variables["projects_to_build"],
"bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly",
"bolt;clang;clang-tools-extra;flang;lld;lldb;llvm;mlir;polly",
)
self.assertEqual(
env_variables["project_check_targets"],
Expand All @@ -310,7 +312,7 @@ def test_windows_ci(self):
)
self.assertEqual(
env_variables["projects_to_build"],
"clang;clang-tools-extra;libclc;lld;llvm;mlir;polly",
"clang;clang-tools-extra;lld;llvm;mlir;polly",
)
self.assertEqual(
env_variables["project_check_targets"],
Expand Down Expand Up @@ -359,7 +361,7 @@ def test_premerge_workflow(self):
)
self.assertEqual(
env_variables["projects_to_build"],
"bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly",
"bolt;clang;clang-tools-extra;flang;lld;lldb;llvm;mlir;polly",
)
self.assertEqual(
env_variables["project_check_targets"],
Expand Down Expand Up @@ -394,7 +396,7 @@ def test_third_party_benchmark(self):
)
self.assertEqual(
env_variables["projects_to_build"],
"bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly",
"bolt;clang;clang-tools-extra;flang;lld;lldb;llvm;mlir;polly",
)
self.assertEqual(
env_variables["project_check_targets"],
Expand Down
4 changes: 4 additions & 0 deletions libclc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -492,3 +492,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
)
endforeach( d )
endforeach( t )

if( NOT LIBCLC_STANDALONE_BUILD )
add_subdirectory( test )
endif()
1 change: 1 addition & 0 deletions libclc/test/.clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DisableFormat: true
35 changes: 35 additions & 0 deletions libclc/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
set( LIBCLC_TEST_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} )

set( LIBCLC_TEST_TARGETS_ALL
amdgcn-mesa-mesa3d
)

foreach( target IN LISTS LIBCLC_TEST_TARGETS_ALL )
# If we haven't built this libclc target, don't build the tests
if( NOT TARGET prepare-${target} )
message( WARNING "libclc tests require target ${target}. Tests will not be built" )
# Add a dummy target
add_custom_target( check-libclc )
return()
endif()

list( APPEND LIBCLC_TEST_DEPS prepare-${target} )
endforeach()

list( APPEND LIBCLC_TEST_DEPS
${clang_target}
FileCheck
)

configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
)

add_lit_testsuite( check-libclc
"Running libclc regression tests"
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${LIBCLC_TEST_DEPS}
)
11 changes: 0 additions & 11 deletions libclc/test/add_sat.cl

This file was deleted.

11 changes: 0 additions & 11 deletions libclc/test/as_type.cl

This file was deleted.

11 changes: 0 additions & 11 deletions libclc/test/convert.cl

This file was deleted.

11 changes: 0 additions & 11 deletions libclc/test/cos.cl

This file was deleted.

11 changes: 0 additions & 11 deletions libclc/test/cross.cl

This file was deleted.

11 changes: 0 additions & 11 deletions libclc/test/fabs.cl

This file was deleted.

51 changes: 51 additions & 0 deletions libclc/test/geometric/cross.cl
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s

// CHECK-LABEL: define protected amdgpu_kernel void @foo(
// CHECK-SAME: ptr addrspace(1) noundef align 16 captures(none) [[F:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META9:![0-9]+]] !kernel_arg_type_qual [[META10:![0-9]+]] {
// CHECK-NEXT: [[ENTRY:.*:]]
// CHECK-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11:![0-9]+]]
// CHECK-NEXT: [[ARRAYIDX1_I:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(1) [[F]], i64 16
// CHECK-NEXT: [[TMP1:%.*]] = load <4 x float>, ptr addrspace(1) [[ARRAYIDX1_I]], align 16, !tbaa [[TBAA11]]
// CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x float> [[TMP0]], i64 1
// CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x float> [[TMP1]], i64 2
// CHECK-NEXT: [[TMP4:%.*]] = extractelement <4 x float> [[TMP0]], i64 2
// CHECK-NEXT: [[TMP5:%.*]] = extractelement <4 x float> [[TMP1]], i64 1
// CHECK-NEXT: [[TMP6:%.*]] = fneg float [[TMP5]]
// CHECK-NEXT: [[NEG_I_I:%.*]] = fmul float [[TMP4]], [[TMP6]]
// CHECK-NEXT: [[TMP7:%.*]] = tail call float @llvm.fmuladd.f32(float [[TMP2]], float [[TMP3]], float [[NEG_I_I]])
// CHECK-NEXT: [[TMP8:%.*]] = extractelement <4 x float> [[TMP1]], i64 0
// CHECK-NEXT: [[TMP9:%.*]] = extractelement <4 x float> [[TMP0]], i64 0
// CHECK-NEXT: [[TMP10:%.*]] = fneg float [[TMP3]]
// CHECK-NEXT: [[NEG3_I_I:%.*]] = fmul float [[TMP9]], [[TMP10]]
// CHECK-NEXT: [[TMP11:%.*]] = tail call float @llvm.fmuladd.f32(float [[TMP4]], float [[TMP8]], float [[NEG3_I_I]])
// CHECK-NEXT: [[TMP12:%.*]] = fneg float [[TMP8]]
// CHECK-NEXT: [[NEG6_I_I:%.*]] = fmul float [[TMP2]], [[TMP12]]
// CHECK-NEXT: [[TMP13:%.*]] = tail call float @llvm.fmuladd.f32(float [[TMP9]], float [[TMP5]], float [[NEG6_I_I]])
// CHECK-NEXT: [[TMP14:%.*]] = insertelement <4 x float> <float poison, float poison, float poison, float 0.000000e+00>, float [[TMP7]], i64 0
// CHECK-NEXT: [[TMP15:%.*]] = insertelement <4 x float> [[TMP14]], float [[TMP11]], i64 1
// CHECK-NEXT: [[VECINIT8_I_I:%.*]] = insertelement <4 x float> [[TMP15]], float [[TMP13]], i64 2
// CHECK-NEXT: store <4 x float> [[VECINIT8_I_I]], ptr addrspace(1) [[F]], align 16, !tbaa [[TBAA11]]
// CHECK-NEXT: ret void
//
__kernel void foo(__global float4 *f) {
*f = cross(f[0], f[1]);
}
//.
// CHECK: [[META6]] = !{i32 1}
// CHECK: [[META7]] = !{!"none"}
// CHECK: [[META8]] = !{!"float4*"}
// CHECK: [[META9]] = !{!"float __attribute__((ext_vector_type(4)))*"}
// CHECK: [[META10]] = !{!""}
// CHECK: [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0}
// CHECK: [[META12]] = !{!"omnipotent char", [[META13:![0-9]+]], i64 0}
// CHECK: [[META13]] = !{!"Simple C/C++ TBAA"}
//.
11 changes: 0 additions & 11 deletions libclc/test/get_group_id.cl

This file was deleted.

32 changes: 32 additions & 0 deletions libclc/test/integer/add_sat.cl
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// RUN: %clang -target amdgcn-mesa-mesa3d -O1 -emit-llvm -S -o - --libclc-lib=tahiti-amdgcn-mesa-mesa3d -fno-builtin --no-offloadlib %s | FileCheck %s

// CHECK-LABEL: define protected amdgpu_kernel void @foo(
// CHECK-SAME: ptr addrspace(1) noundef writeonly align 1 captures(none) initializes((0, 1)) [[A:%.*]], ptr addrspace(1) noundef readonly align 1 captures(none) [[B:%.*]], ptr addrspace(1) noundef readonly align 1 captures(none) [[C:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !kernel_arg_addr_space [[META6:![0-9]+]] !kernel_arg_access_qual [[META7:![0-9]+]] !kernel_arg_type [[META8:![0-9]+]] !kernel_arg_base_type [[META8]] !kernel_arg_type_qual [[META9:![0-9]+]] {
// CHECK-NEXT: [[ENTRY:.*:]]
// CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr addrspace(1) [[B]], align 1, !tbaa [[TBAA10:![0-9]+]]
// CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr addrspace(1) [[C]], align 1, !tbaa [[TBAA10]]
// CHECK-NEXT: [[ELT_SAT_I_I:%.*]] = tail call noundef i8 @llvm.sadd.sat.i8(i8 [[TMP0]], i8 [[TMP1]])
// CHECK-NEXT: store i8 [[ELT_SAT_I_I]], ptr addrspace(1) [[A]], align 1, !tbaa [[TBAA10]]
// CHECK-NEXT: ret void
//
__kernel void foo(__global char *a, __global char *b, __global char *c) {
*a = add_sat(*b, *c);
}
//.
// CHECK: [[META6]] = !{i32 1, i32 1, i32 1}
// CHECK: [[META7]] = !{!"none", !"none", !"none"}
// CHECK: [[META8]] = !{!"char*", !"char*", !"char*"}
// CHECK: [[META9]] = !{!"", !"", !""}
// CHECK: [[TBAA10]] = !{[[META11:![0-9]+]], [[META11]], i64 0}
// CHECK: [[META11]] = !{!"omnipotent char", [[META12:![0-9]+]], i64 0}
// CHECK: [[META12]] = !{!"Simple C/C++ TBAA"}
//.
Loading
Loading