|
| 1 | +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5 |
| 2 | +// RUN: %clang_cc1 -triple amdgcn-unknown-unknown %s -emit-llvm -o - | FileCheck %s |
| 3 | + |
| 4 | +#pragma OPENCL EXTENSION cl_khr_fp64:enable |
| 5 | + |
| 6 | +typedef int v8i __attribute__((ext_vector_type(8))); |
| 7 | + |
| 8 | +// CHECK-LABEL: define dso_local float @test_builtin_image_load_2d( |
| 9 | +// CHECK-SAME: float noundef [[F32:%.*]], i32 noundef [[I32:%.*]], <8 x i32> noundef [[VECI32:%.*]]) #[[ATTR0:[0-9]+]] { |
| 10 | +// CHECK-NEXT: [[ENTRY:.*:]] |
| 11 | +// CHECK-NEXT: [[RETVAL:%.*]] = alloca float, align 4, addrspace(5) |
| 12 | +// CHECK-NEXT: [[F32_ADDR:%.*]] = alloca float, align 4, addrspace(5) |
| 13 | +// CHECK-NEXT: [[I32_ADDR:%.*]] = alloca i32, align 4, addrspace(5) |
| 14 | +// CHECK-NEXT: [[VECI32_ADDR:%.*]] = alloca <8 x i32>, align 32, addrspace(5) |
| 15 | +// CHECK-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr |
| 16 | +// CHECK-NEXT: [[F32_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[F32_ADDR]] to ptr |
| 17 | +// CHECK-NEXT: [[I32_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[I32_ADDR]] to ptr |
| 18 | +// CHECK-NEXT: [[VECI32_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[VECI32_ADDR]] to ptr |
| 19 | +// CHECK-NEXT: store float [[F32]], ptr [[F32_ADDR_ASCAST]], align 4 |
| 20 | +// CHECK-NEXT: store i32 [[I32]], ptr [[I32_ADDR_ASCAST]], align 4 |
| 21 | +// CHECK-NEXT: store <8 x i32> [[VECI32]], ptr [[VECI32_ADDR_ASCAST]], align 32 |
| 22 | +// CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I32_ADDR_ASCAST]], align 4 |
| 23 | +// CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[I32_ADDR_ASCAST]], align 4 |
| 24 | +// CHECK-NEXT: [[TMP2:%.*]] = load <8 x i32>, ptr [[VECI32_ADDR_ASCAST]], align 32 |
| 25 | +// CHECK-NEXT: [[TMP3:%.*]] = call float @llvm.amdgcn.image.load.2d.f32.i32.v8i32(i32 1, i32 [[TMP0]], i32 [[TMP1]], <8 x i32> [[TMP2]], i32 0, i32 0) |
| 26 | +// CHECK-NEXT: ret float [[TMP3]] |
| 27 | +// |
| 28 | +float test_builtin_image_load_2d(float f32, int i32, v8i veci32) { |
| 29 | + |
| 30 | + return __builtin_amdgcn_image_load_2d_f32_i32(i32, i32, veci32); |
| 31 | +} |
0 commit comments