mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 05:36:07 +00:00

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.
27 lines
940 B
Common Lisp
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)
|
|
}
|