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.
75 lines
3.5 KiB
Common Lisp
75 lines
3.5 KiB
Common Lisp
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
|
|
// RUN: %clang_cc1 -triple amdgcn-unknown-unknown -target-cpu gfx950 -emit-llvm -o - %s | FileCheck --check-prefix=GFX950 %s
|
|
|
|
typedef int v2i __attribute__((ext_vector_type(2)));
|
|
typedef int v3i __attribute__((ext_vector_type(3)));
|
|
typedef short v4s __attribute__((ext_vector_type(4)));
|
|
typedef half v4h __attribute__((ext_vector_type(4)));
|
|
typedef __bf16 v4y __attribute__((ext_vector_type(4)));
|
|
|
|
// GFX950-LABEL: define dso_local <2 x i32> @test_amdgcn_ds_read_b64_tr_b4_v2i32(
|
|
// GFX950-SAME: ptr addrspace(3) noundef readonly captures(none) [[INPTR:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
|
|
// GFX950-NEXT: entry:
|
|
// GFX950-NEXT: [[TMP0:%.*]] = tail call <2 x i32> @llvm.amdgcn.ds.read.tr4.b64.v2i32(ptr addrspace(3) [[INPTR]])
|
|
// GFX950-NEXT: ret <2 x i32> [[TMP0]]
|
|
//
|
|
v2i test_amdgcn_ds_read_b64_tr_b4_v2i32(local v2i* inptr)
|
|
{
|
|
return __builtin_amdgcn_ds_read_tr4_b64_v2i32(inptr);
|
|
}
|
|
|
|
// GFX950-LABEL: define dso_local <3 x i32> @test_amdgcn_ds_read_b96_tr_b6_v3i32(
|
|
// GFX950-SAME: ptr addrspace(3) noundef readonly captures(none) [[INPTR:%.*]]) local_unnamed_addr #[[ATTR0]] {
|
|
// GFX950-NEXT: entry:
|
|
// GFX950-NEXT: [[TMP0:%.*]] = tail call <3 x i32> @llvm.amdgcn.ds.read.tr6.b96.v3i32(ptr addrspace(3) [[INPTR]])
|
|
// GFX950-NEXT: ret <3 x i32> [[TMP0]]
|
|
//
|
|
v3i test_amdgcn_ds_read_b96_tr_b6_v3i32(local v3i* inptr)
|
|
{
|
|
return __builtin_amdgcn_ds_read_tr6_b96_v3i32(inptr);
|
|
}
|
|
|
|
// GFX950-LABEL: define dso_local <2 x i32> @test_amdgcn_ds_read_b64_tr_b8_v2i32(
|
|
// GFX950-SAME: ptr addrspace(3) noundef readonly captures(none) [[INPTR:%.*]]) local_unnamed_addr #[[ATTR0]] {
|
|
// GFX950-NEXT: entry:
|
|
// GFX950-NEXT: [[TMP0:%.*]] = tail call <2 x i32> @llvm.amdgcn.ds.read.tr8.b64.v2i32(ptr addrspace(3) [[INPTR]])
|
|
// GFX950-NEXT: ret <2 x i32> [[TMP0]]
|
|
//
|
|
v2i test_amdgcn_ds_read_b64_tr_b8_v2i32(local v2i* inptr)
|
|
{
|
|
return __builtin_amdgcn_ds_read_tr8_b64_v2i32(inptr);
|
|
}
|
|
|
|
// GFX950-LABEL: define dso_local <4 x i16> @test_amdgcn_ds_read_b64_tr_b16_v2i16(
|
|
// GFX950-SAME: ptr addrspace(3) noundef readonly captures(none) [[INPTR:%.*]]) local_unnamed_addr #[[ATTR0]] {
|
|
// GFX950-NEXT: entry:
|
|
// GFX950-NEXT: [[TMP0:%.*]] = tail call <4 x i16> @llvm.amdgcn.ds.read.tr16.b64.v4i16(ptr addrspace(3) [[INPTR]])
|
|
// GFX950-NEXT: ret <4 x i16> [[TMP0]]
|
|
//
|
|
v4s test_amdgcn_ds_read_b64_tr_b16_v2i16(local v4s* inptr)
|
|
{
|
|
return __builtin_amdgcn_ds_read_tr16_b64_v4i16(inptr);
|
|
}
|
|
|
|
// GFX950-LABEL: define dso_local <4 x half> @test_amdgcn_ds_read_b64_tr_b16_v2f16(
|
|
// GFX950-SAME: ptr addrspace(3) noundef readonly captures(none) [[INPTR:%.*]]) local_unnamed_addr #[[ATTR0]] {
|
|
// GFX950-NEXT: entry:
|
|
// GFX950-NEXT: [[TMP0:%.*]] = tail call <4 x half> @llvm.amdgcn.ds.read.tr16.b64.v4f16(ptr addrspace(3) [[INPTR]])
|
|
// GFX950-NEXT: ret <4 x half> [[TMP0]]
|
|
//
|
|
v4h test_amdgcn_ds_read_b64_tr_b16_v2f16(local v4h* inptr)
|
|
{
|
|
return __builtin_amdgcn_ds_read_tr16_b64_v4f16(inptr);
|
|
}
|
|
|
|
// GFX950-LABEL: define dso_local <4 x bfloat> @test_amdgcn_ds_read_b64_tr_b16_v2bf16(
|
|
// GFX950-SAME: ptr addrspace(3) noundef readonly captures(none) [[INPTR:%.*]]) local_unnamed_addr #[[ATTR0]] {
|
|
// GFX950-NEXT: entry:
|
|
// GFX950-NEXT: [[TMP0:%.*]] = tail call <4 x bfloat> @llvm.amdgcn.ds.read.tr16.b64.v4bf16(ptr addrspace(3) [[INPTR]])
|
|
// GFX950-NEXT: ret <4 x bfloat> [[TMP0]]
|
|
//
|
|
v4y test_amdgcn_ds_read_b64_tr_b16_v2bf16(local v4y* inptr)
|
|
{
|
|
return __builtin_amdgcn_ds_read_tr16_b64_v4bf16(inptr);
|
|
}
|