gallivm,ac: add function attributes at call sites instead of declarations
authorMarek Olšák <marek.olsak@amd.com>
Wed, 22 Feb 2017 01:29:12 +0000 (02:29 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 1 Mar 2017 17:59:36 +0000 (18:59 +0100)
commit940da36a65c767ec9fc6817df3d0262b52de42f6
treefd68b57b02c39b3c6bd60f56dff5333645a4f44f
parent408f370710a6f012fcfcb6b4d8b200f722a2ec7f
gallivm,ac: add function attributes at call sites instead of declarations

They can vary at call sites if the intrinsic is NOT a legacy SI intrinsic.
We need this to force readnone or inaccessiblememonly on some amdgcn
intrinsics.

This is only used with LLVM 4.0 and later. Intrinsics only used with
LLVM <= 3.9 don't need the LEGACY flag.

gallivm and ac code is in the same patch, because splitting would be
more complicated with all the LEGACY uses all over the place.

v2: don't change the prototype of lp_add_function_attr.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com> (v1)
src/amd/common/ac_llvm_build.c
src/amd/common/ac_llvm_util.c
src/amd/common/ac_llvm_util.h
src/amd/common/ac_nir_to_llvm.c
src/gallium/auxiliary/gallivm/lp_bld_intr.c
src/gallium/auxiliary/gallivm/lp_bld_intr.h
src/gallium/drivers/radeonsi/si_shader.c
src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c