// 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); }