llvm-project/clang/test/CodeGenOpenCL/kernel-param-alignment.cl
Nikita Popov 29441e4f5f
[IR] Convert from nocapture to captures(none) (#123181)
This PR removes the old `nocapture` attribute, replacing it with the new
`captures` attribute introduced in #116990. This change is
intended to be essentially NFC, replacing existing uses of `nocapture`
with `captures(none)` without adding any new analysis capabilities.
Making use of non-`none` values is left for a followup.

Some notes:
* `nocapture` will be upgraded to `captures(none)` by the bitcode
   reader.
* `nocapture` will also be upgraded by the textual IR reader. This is to
   make it easier to use old IR files and somewhat reduce the test churn in
   this PR.
* Helper APIs like `doesNotCapture()` will check for `captures(none)`.
* MLIR import will convert `captures(none)` into an `llvm.nocapture`
   attribute. The representation in the LLVM IR dialect should be updated
   separately.
2025-01-29 16:56:47 +01:00

27 lines
940 B
Common Lisp

// RUN: %clang_cc1 %s -cl-std=CL1.2 -emit-llvm -triple x86_64-unknown-unknown -o - | FileCheck %s
// Test that pointer arguments to kernels are assumed to be ABI aligned.
struct __attribute__((packed, aligned(1))) packed {
int i32;
};
typedef __attribute__((ext_vector_type(4))) int int4;
typedef __attribute__((ext_vector_type(2))) float float2;
kernel void test(
global int *i32,
global long *i64,
global int4 *v4i32,
global float2 *v2f32,
global void *v,
global struct packed *p) {
// CHECK-LABEL: spir_kernel void @test(
// CHECK-SAME: ptr noundef readnone align 4 captures(none) %i32,
// CHECK-SAME: ptr noundef readnone align 8 captures(none) %i64,
// CHECK-SAME: ptr noundef readnone align 16 captures(none) %v4i32,
// CHECK-SAME: ptr noundef readnone align 8 captures(none) %v2f32,
// CHECK-SAME: ptr noundef readnone captures(none) %v,
// CHECK-SAME: ptr noundef readnone align 1 captures(none) %p)
}