Skip to content

Commit 90065ee

Browse files
committed
[AMDGPU] Adds builtins for image load and sema checking for image load
1 parent 4fbfa90 commit 90065ee

File tree

4 files changed

+869
-12
lines changed

4 files changed

+869
-12
lines changed

clang/include/clang/Sema/SemaAMDGPU.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class SemaAMDGPU : public SemaBase {
3131
bool checkMovDPPFunctionCall(CallExpr *TheCall, unsigned NumArgs,
3232
unsigned NumDataArgs);
3333

34+
bool checkImageImmArgFunctionCall(CallExpr *TheCall, unsigned ArgCount);
35+
3436
/// Create an AMDGPUWavesPerEUAttr attribute.
3537
AMDGPUFlatWorkGroupSizeAttr *
3638
CreateAMDGPUFlatWorkGroupSizeAttr(const AttributeCommonInfo &CI, Expr *Min,

clang/lib/Sema/SemaAMDGPU.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,38 @@ bool SemaAMDGPU::CheckAMDGCNBuiltinFunctionCall(unsigned BuiltinID,
211211
(SemaRef.BuiltinConstantArg(TheCall, ArgCount, Result)) ||
212212
(SemaRef.BuiltinConstantArg(TheCall, (ArgCount - 1), Result)));
213213
}
214+
case AMDGPU::BI__builtin_amdgcn_image_load_1d_v4f32_i32:
215+
case AMDGPU::BI__builtin_amdgcn_image_load_1darray_v4f32_i32:
216+
case AMDGPU::BI__builtin_amdgcn_image_load_1d_v4f16_i32:
217+
case AMDGPU::BI__builtin_amdgcn_image_load_1darray_v4f16_i32:
218+
case AMDGPU::BI__builtin_amdgcn_image_load_2d_f32_i32:
219+
case AMDGPU::BI__builtin_amdgcn_image_load_2d_v4f32_i32:
220+
case AMDGPU::BI__builtin_amdgcn_image_load_2d_v4f16_i32:
221+
case AMDGPU::BI__builtin_amdgcn_image_load_2darray_f32_i32:
222+
case AMDGPU::BI__builtin_amdgcn_image_load_2darray_v4f32_i32:
223+
case AMDGPU::BI__builtin_amdgcn_image_load_2darray_v4f16_i32:
224+
case AMDGPU::BI__builtin_amdgcn_image_load_3d_v4f32_i32:
225+
case AMDGPU::BI__builtin_amdgcn_image_load_3d_v4f16_i32:
226+
case AMDGPU::BI__builtin_amdgcn_image_load_cube_v4f32_i32:
227+
case AMDGPU::BI__builtin_amdgcn_image_load_cube_v4f16_i32:
228+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f32_i32:
229+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f16_i32:
230+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1darray_v4f32_i32:
231+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1darray_v4f16_i32:
232+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2d_f32_i32:
233+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2d_v4f32_i32:
234+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2d_v4f16_i32:
235+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2darray_f32_i32:
236+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2darray_v4f32_i32:
237+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2darray_v4f16_i32:
238+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_3d_v4f32_i32:
239+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_3d_v4f16_i32:
240+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_cube_v4f32_i32:
241+
case AMDGPU::BI__builtin_amdgcn_image_load_mip_cube_v4f16_i32: {
242+
unsigned ArgCount = TheCall->getNumArgs() - 1;
243+
244+
return checkImageImmArgFunctionCall(TheCall, ArgCount);
245+
}
214246
default:
215247
return false;
216248
}

0 commit comments

Comments
 (0)