libclc_add_sources(${LIBCLC_CLC_TARGET} FILES
  async/clc_prefetch.cl
  atomic/clc_atomic_compare_exchange.cl
  atomic/clc_atomic_dec.cl
  atomic/clc_atomic_exchange.cl
  atomic/clc_atomic_fetch_add.cl
  atomic/clc_atomic_fetch_and.cl
  atomic/clc_atomic_fetch_max.cl
  atomic/clc_atomic_fetch_min.cl
  atomic/clc_atomic_fetch_or.cl
  atomic/clc_atomic_fetch_sub.cl
  atomic/clc_atomic_fetch_xor.cl
  atomic/clc_atomic_flag_clear.cl
  atomic/clc_atomic_flag_test_and_set.cl
  atomic/clc_atomic_inc.cl
  atomic/clc_atomic_load.cl
  atomic/clc_atomic_store.cl
  collective/clc_work_group_any_all.cl
  collective/clc_work_group_broadcast.cl
  collective/clc_work_group_scan.cl
  collective/clc_work_group_reduce.cl
  common/clc_degrees.cl
  common/clc_radians.cl
  common/clc_sign.cl
  common/clc_smoothstep.cl
  common/clc_step.cl
  conversion/clc_convert_float2float.cl
  conversion/clc_convert_float2int.cl
  conversion/clc_convert_int2float.cl
  conversion/clc_convert_integer.cl
  geometric/clc_cross.cl
  geometric/clc_distance.cl
  geometric/clc_dot.cl
  geometric/clc_fast_distance.cl
  geometric/clc_fast_length.cl
  geometric/clc_fast_normalize.cl
  geometric/clc_length.cl
  geometric/clc_normalize.cl
  integer/clc_abs.cl
  integer/clc_abs_diff.cl
  integer/clc_add_sat.cl
  integer/clc_bit_reverse.cl
  integer/clc_bitfield_extract_signed.cl
  integer/clc_bitfield_extract_unsigned.cl
  integer/clc_bitfield_insert.cl
  integer/clc_clz.cl
  integer/clc_ctz.cl
  integer/clc_hadd.cl
  integer/clc_mad24.cl
  integer/clc_mad_sat.cl
  integer/clc_mul24.cl
  integer/clc_mul_hi.cl
  integer/clc_popcount.cl
  integer/clc_rhadd.cl
  integer/clc_rotate.cl
  integer/clc_sub_sat.cl
  integer/clc_upsample.cl
  math/clc_acos.cl
  math/clc_acosh.cl
  math/clc_acospi.cl
  math/clc_asin.cl
  math/clc_asinh.cl
  math/clc_asinpi.cl
  math/clc_atan.cl
  math/clc_atan_helpers.cl
  math/clc_atan2.cl
  math/clc_atan2pi.cl
  math/clc_atanh.cl
  math/clc_atanpi.cl
  math/clc_canonicalize.cl
  math/clc_cbrt.cl
  math/clc_ceil.cl
  math/clc_copysign.cl
  math/clc_cos.cl
  math/clc_cosh.cl
  math/clc_cospi.cl
  math/clc_div_cr.cl
  math/clc_div_fast.cl
  math/clc_ep.cl
  math/clc_erf.cl
  math/clc_erfc.cl
  math/clc_exp.cl
  math/clc_exp2.cl
  math/clc_exp2_fast.cl
  math/clc_exp10.cl
  math/clc_exp_helper.cl
  math/clc_expm1.cl
  math/clc_fabs.cl
  math/clc_fdim.cl
  math/clc_floor.cl
  math/clc_flush_if_daz.cl
  math/clc_fma.cl
  math/clc_fmax.cl
  math/clc_fmin.cl
  math/clc_fmod.cl
  math/clc_fract.cl
  math/clc_frexp.cl
  math/clc_frexp_exp.cl
  math/clc_get_twobypi_bits.cl
  math/clc_half_cos.cl
  math/clc_half_divide.cl
  math/clc_half_exp.cl
  math/clc_half_exp2.cl
  math/clc_half_exp10.cl
  math/clc_half_log.cl
  math/clc_half_log2.cl
  math/clc_half_log10.cl
  math/clc_half_powr.cl
  math/clc_half_recip.cl
  math/clc_half_rsqrt.cl
  math/clc_half_sin.cl
  math/clc_half_sqrt.cl
  math/clc_half_tan.cl
  math/clc_hypot.cl
  math/clc_ilogb.cl
  math/clc_ldexp.cl
  math/clc_lgamma.cl
  math/clc_lgamma_r.cl
  math/clc_log.cl
  math/clc_log2.cl
  math/clc_log2_fast.cl
  math/clc_log10.cl
  math/clc_log1p.cl
  math/clc_logb.cl
  math/clc_mad.cl
  math/clc_maxmag.cl
  math/clc_minmag.cl
  math/clc_modf.cl
  math/clc_nan.cl
  math/clc_native_cos.cl
  math/clc_native_divide.cl
  math/clc_native_exp.cl
  math/clc_native_exp2.cl
  math/clc_native_exp10.cl
  math/clc_native_log.cl
  math/clc_native_log2.cl
  math/clc_native_log10.cl
  math/clc_native_powr.cl
  math/clc_native_recip.cl
  math/clc_native_rsqrt.cl
  math/clc_native_sin.cl
  math/clc_native_sqrt.cl
  math/clc_native_tan.cl
  math/clc_nextafter.cl
  math/clc_nextdown.cl
  math/clc_nextup.cl
  math/clc_pow.cl
  math/clc_pown.cl
  math/clc_powr.cl
  math/clc_recip_fast.cl
  math/clc_remainder.cl
  math/clc_remquo.cl
  math/clc_rint.cl
  math/clc_rootn.cl
  math/clc_round.cl
  math/clc_rsqrt.cl
  math/clc_sin.cl
  math/clc_sincos.cl
  math/clc_sincospi.cl
  math/clc_sincos_helpers.cl
  math/clc_sinh.cl
  math/clc_sinpi.cl
  math/clc_sqrt.cl
  math/clc_sqrt_cr.cl
  math/clc_sqrt_fast.cl
  math/clc_tables.cl
  math/clc_tan.cl
  math/clc_tanh.cl
  math/clc_tanpi.cl
  math/clc_tgamma.cl
  math/clc_trigpi_helpers.cl
  math/clc_trunc.cl
  mem_fence/clc_mem_fence.cl
  misc/clc_shuffle.cl
  misc/clc_shuffle2.cl
  relational/clc_all.cl
  relational/clc_any.cl
  relational/clc_bitselect.cl
  relational/clc_isequal.cl
  relational/clc_isfinite.cl
  relational/clc_isgreater.cl
  relational/clc_isgreaterequal.cl
  relational/clc_isinf.cl
  relational/clc_isless.cl
  relational/clc_islessequal.cl
  relational/clc_islessgreater.cl
  relational/clc_isnan.cl
  relational/clc_isnormal.cl
  relational/clc_isnotequal.cl
  relational/clc_isordered.cl
  relational/clc_issubnormal.cl
  relational/clc_isunordered.cl
  relational/clc_select.cl
  relational/clc_signbit.cl
  shared/clc_clamp.cl
  shared/clc_max.cl
  shared/clc_min.cl
  shared/clc_qualifier.cl
  shared/clc_vload.cl
  shared/clc_vstore.cl
  subnormal_config.cl
  subgroup/sub_group_barrier.cl
  workitem/clc_get_global_id.cl
  workitem/clc_get_global_linear_id.cl
  workitem/clc_get_local_linear_id.cl
  workitem/clc_get_num_sub_groups.cl
  workitem/clc_get_sub_group_id.cl
  workitem/clc_get_sub_group_size.cl
)

libclc_set_source_options(-fapprox-func
  math/clc_native_cos.cl
  math/clc_native_divide.cl
  math/clc_native_exp.cl
  math/clc_native_exp2.cl
  math/clc_native_exp10.cl
  math/clc_native_log.cl
  math/clc_native_log2.cl
  math/clc_native_log10.cl
  math/clc_native_powr.cl
  math/clc_native_recip.cl
  math/clc_native_rsqrt.cl
  math/clc_native_sin.cl
  math/clc_native_sqrt.cl
  math/clc_native_tan.cl
  math/clc_div_fast.cl
  math/clc_recip_fast.cl
  math/clc_sqrt_fast.cl
)

libclc_set_source_options(-cl-fp32-correctly-rounded-divide-sqrt
  math/clc_div_cr.cl
  math/clc_sqrt_cr.cl
)
