// RUN: %clang_cc1 -fsyntax-only -cl-std=CL2.0 -triple amdgcn -target-cpu gfx90a -verify %s kernel void test_ds_atomic_fadd_f32_valid(__local float *lds_ptr, float val) { float result; result = __builtin_amdgcn_ds_atomic_fadd_f32(lds_ptr, val); } kernel void test_ds_atomic_fadd_f32_errors(__local float *lds_ptr, float val, __local double *lds_ptr_d, __global float *global_ptr) { float result; result = __builtin_amdgcn_ds_atomic_fadd_f32(lds_ptr, val, 0); // expected-error{{too many arguments to function call, expected 2, have 3}} result = __builtin_amdgcn_ds_atomic_fadd_f32(global_ptr, val); // expected-error{{passing '__global float *__private' to parameter of type '__local float *' changes address space of pointer}} result = __builtin_amdgcn_ds_atomic_fadd_f32(lds_ptr_d, val); // expected-error{{incompatible pointer types passing '__local double *__private' to parameter of type '__local float *'}} } kernel void test_ds_atomic_fadd_f64_valid(__local double *lds_ptr, double val) { double result; result = __builtin_amdgcn_ds_atomic_fadd_f64(lds_ptr, val); } kernel void test_ds_atomic_fadd_f64_errors(__local double *lds_ptr, double val, __local float *lds_ptr_f, __global double *global_ptr) { double result; result = __builtin_amdgcn_ds_atomic_fadd_f64(lds_ptr, val, 0); // expected-error{{too many arguments to function call, expected 2, have 3}} result = __builtin_amdgcn_ds_atomic_fadd_f64(global_ptr, val);// expected-error{{passing '__global double *__private' to parameter of type '__local double *' changes address space of pointer}} result = __builtin_amdgcn_ds_atomic_fadd_f64(lds_ptr_f, val); // expected-error{{incompatible pointer types passing '__local float *__private' to parameter of type '__local double *'}} }