diff --git a/clang/include/clang/Basic/BuiltinsNVPTX.def b/clang/include/clang/Basic/BuiltinsNVPTX.def --- a/clang/include/clang/Basic/BuiltinsNVPTX.def +++ b/clang/include/clang/Basic/BuiltinsNVPTX.def @@ -605,9 +605,22 @@ BUILTIN(__nvvm_atom_inc_gen_ui, "UiUiD*Ui", "n") TARGET_BUILTIN(__nvvm_atom_cta_inc_gen_ui, "UiUiD*Ui", "n", SM_60) TARGET_BUILTIN(__nvvm_atom_sys_inc_gen_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_inc_gen_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_gen_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_gen_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_inc_gen_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) + BUILTIN(__nvvm_atom_dec_gen_ui, "UiUiD*Ui", "n") TARGET_BUILTIN(__nvvm_atom_cta_dec_gen_ui, "UiUiD*Ui", "n", SM_60) TARGET_BUILTIN(__nvvm_atom_sys_dec_gen_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_dec_gen_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_gen_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_gen_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_dec_gen_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_60) BUILTIN(__nvvm_atom_and_gen_i, "iiD*i", "n") TARGET_BUILTIN(__nvvm_atom_cta_and_gen_i, "iiD*i", "n", SM_60) @@ -649,6 +662,1378 @@ TARGET_BUILTIN(__nvvm_atom_cta_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_60) TARGET_BUILTIN(__nvvm_atom_sys_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_acquire_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_gen_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_gen_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_gen_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_gen_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_gen_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_gen_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_gen_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_gen_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_gen_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_gen_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_gen_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_gen_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_gen_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_gen_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_gen_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_gen_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_gen_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_gen_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_gen_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +BUILTIN(__nvvm_atom_add_global_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_global_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_global_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_add_global_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_global_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_global_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_add_global_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_global_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_global_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_add_global_f, "ffD*f", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_global_f, "ffD*f", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_global_f, "ffD*f", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_add_global_d, "ddD*d", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_cta_add_global_d, "ddD*d", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_global_d, "ddD*d", "n", SM_60) + +BUILTIN(__nvvm_atom_sub_global_i, "iiD*i", "n") +BUILTIN(__nvvm_atom_sub_global_l, "LiLiD*Li", "n") +BUILTIN(__nvvm_atom_sub_global_ll, "LLiLLiD*LLi", "n") + +BUILTIN(__nvvm_atom_xchg_global_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_global_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_global_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_xchg_global_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_global_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_global_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_xchg_global_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_global_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_global_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_max_global_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_global_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_global_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_max_global_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_global_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_global_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_max_global_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_global_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_global_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_max_global_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_global_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_global_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_max_global_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_global_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_global_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_max_global_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_global_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_global_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_min_global_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_global_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_global_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_min_global_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_global_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_global_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_min_global_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_global_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_global_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_min_global_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_global_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_global_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_min_global_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_global_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_global_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_min_global_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_global_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_global_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_inc_global_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_global_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_global_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_inc_global_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_global_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_global_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_inc_global_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_dec_global_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_global_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_global_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_dec_global_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_global_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_global_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_dec_global_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_and_global_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_global_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_global_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_and_global_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_global_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_global_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_and_global_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_global_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_global_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_or_global_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_global_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_global_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_or_global_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_global_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_global_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_or_global_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_global_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_global_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_xor_global_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_global_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_global_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_xor_global_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_global_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_global_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_xor_global_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_global_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_global_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_cas_global_i, "iiD*ii", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_global_i, "iiD*ii", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_global_i, "iiD*ii", "n", SM_60) +BUILTIN(__nvvm_atom_cas_global_l, "LiLiD*LiLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_global_l, "LiLiD*LiLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_global_l, "LiLiD*LiLi", "n", SM_60) +BUILTIN(__nvvm_atom_cas_global_ll, "LLiLLiD*LLiLLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_60) + +TARGET_BUILTIN(__nvvm_atom_acquire_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_global_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_global_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_global_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_and_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_or_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_global_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_global_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_global_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_and_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_or_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_global_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_global_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_global_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_global_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_global_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_global_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_global_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_global_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_global_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_global_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_global_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_global_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_global_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +BUILTIN(__nvvm_atom_add_shared_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_shared_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_shared_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_add_shared_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_shared_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_shared_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_add_shared_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_shared_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_shared_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_add_shared_f, "ffD*f", "n") +TARGET_BUILTIN(__nvvm_atom_cta_add_shared_f, "ffD*f", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_shared_f, "ffD*f", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_add_shared_d, "ddD*d", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_cta_add_shared_d, "ddD*d", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_add_shared_d, "ddD*d", "n", SM_60) + +BUILTIN(__nvvm_atom_sub_shared_i, "iiD*i", "n") +BUILTIN(__nvvm_atom_sub_shared_l, "LiLiD*Li", "n") +BUILTIN(__nvvm_atom_sub_shared_ll, "LLiLLiD*LLi", "n") + +BUILTIN(__nvvm_atom_xchg_shared_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_shared_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_shared_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_xchg_shared_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_shared_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_shared_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_xchg_shared_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_max_shared_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_shared_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_shared_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_max_shared_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_shared_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_shared_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_max_shared_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_shared_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_shared_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_max_shared_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_shared_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_shared_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_max_shared_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_shared_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_shared_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_max_shared_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_min_shared_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_shared_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_shared_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_min_shared_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_shared_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_shared_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_min_shared_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_shared_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_shared_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_min_shared_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_shared_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_shared_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_min_shared_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_shared_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_shared_ll, "LLiLLiD*LLi", "n", SM_60) +BUILTIN(__nvvm_atom_min_shared_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_inc_shared_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_shared_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_shared_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_inc_shared_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_shared_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_shared_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_inc_shared_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_dec_shared_ui, "UiUiD*Ui", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_shared_ui, "UiUiD*Ui", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_shared_ui, "UiUiD*Ui", "n", SM_60) +BUILTIN(__nvvm_atom_dec_shared_ul, "ULiULiD*ULi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_shared_ul, "ULiULiD*ULi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_shared_ul, "ULiULiD*ULi", "n", SM_60) +BUILTIN(__nvvm_atom_dec_shared_ull, "ULLiULLiD*ULLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_60) + +BUILTIN(__nvvm_atom_and_shared_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_shared_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_shared_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_and_shared_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_shared_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_shared_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_and_shared_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_and_shared_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_and_shared_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_or_shared_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_shared_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_shared_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_or_shared_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_shared_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_shared_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_or_shared_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_or_shared_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_or_shared_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_xor_shared_i, "iiD*i", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_shared_i, "iiD*i", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_shared_i, "iiD*i", "n", SM_60) +BUILTIN(__nvvm_atom_xor_shared_l, "LiLiD*Li", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_shared_l, "LiLiD*Li", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_shared_l, "LiLiD*Li", "n", SM_60) +BUILTIN(__nvvm_atom_xor_shared_ll, "LLiLLiD*LLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_xor_shared_ll, "LLiLLiD*LLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_xor_shared_ll, "LLiLLiD*LLi", "n", SM_60) + +BUILTIN(__nvvm_atom_cas_shared_i, "iiD*ii", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_shared_i, "iiD*ii", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_shared_i, "iiD*ii", "n", SM_60) +BUILTIN(__nvvm_atom_cas_shared_l, "LiLiD*LiLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_shared_l, "LiLiD*LiLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_shared_l, "LiLiD*LiLi", "n", SM_60) +BUILTIN(__nvvm_atom_cas_shared_ll, "LLiLLiD*LLiLLi", "n") +TARGET_BUILTIN(__nvvm_atom_cta_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_60) +TARGET_BUILTIN(__nvvm_atom_sys_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_60) + +TARGET_BUILTIN(__nvvm_atom_acquire_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_add_shared_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_add_shared_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_add_shared_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acquire_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_cta_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acquire_sys_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_add_shared_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_add_shared_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_add_shared_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_release_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_cta_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_release_sys_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_shared_f, "ffD*f", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_add_shared_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_add_shared_d, "ddD*d", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_add_shared_d, "ddD*d", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xchg_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_max_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_min_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_inc_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_shared_ui, "UiUiD*Ui", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_shared_ul, "ULiULiD*ULi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_dec_shared_ull, "ULLiULLiD*ULLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_and_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_or_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_shared_i, "iiD*i", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_shared_l, "LiLiD*Li", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_xor_shared_ll, "LLiLLiD*LLi", "n", SM_70) + +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_shared_i, "iiD*ii", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_shared_l, "LiLiD*LiLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_cta_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) +TARGET_BUILTIN(__nvvm_atom_acq_rel_sys_cas_shared_ll, "LLiLLiD*LLiLLi", "n", SM_70) + // Compiler Error Warn BUILTIN(__nvvm_compiler_error, "vcC*4", "n") BUILTIN(__nvvm_compiler_warn, "vcC*4", "n") diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -17490,6 +17490,13 @@ Ptr->getType()}), {Ptr, EmitScalarExpr(E->getArg(1))}); }; + auto MakeScopedCasAtomic = [&](unsigned IntrinsicID) { + Value *Ptr = EmitScalarExpr(E->getArg(0)); + return Builder.CreateCall( + CGM.getIntrinsic(IntrinsicID, {Ptr->getType()->getPointerElementType(), + Ptr->getType()}), + {Ptr, EmitScalarExpr(E->getArg(1)), EmitScalarExpr(E->getArg(2))}); + }; switch (BuiltinID) { case NVPTX::BI__nvvm_atom_add_gen_i: case NVPTX::BI__nvvm_atom_add_gen_l: @@ -17630,40 +17637,52 @@ case NVPTX::BI__nvvm_atom_sys_xchg_gen_ll: return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_sys); case NVPTX::BI__nvvm_atom_cta_max_gen_i: - case NVPTX::BI__nvvm_atom_cta_max_gen_ui: case NVPTX::BI__nvvm_atom_cta_max_gen_l: - case NVPTX::BI__nvvm_atom_cta_max_gen_ul: case NVPTX::BI__nvvm_atom_cta_max_gen_ll: - case NVPTX::BI__nvvm_atom_cta_max_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_cta); + case NVPTX::BI__nvvm_atom_cta_max_gen_ui: + case NVPTX::BI__nvvm_atom_cta_max_gen_ul: + case NVPTX::BI__nvvm_atom_cta_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_cta); case NVPTX::BI__nvvm_atom_sys_max_gen_i: - case NVPTX::BI__nvvm_atom_sys_max_gen_ui: case NVPTX::BI__nvvm_atom_sys_max_gen_l: - case NVPTX::BI__nvvm_atom_sys_max_gen_ul: case NVPTX::BI__nvvm_atom_sys_max_gen_ll: - case NVPTX::BI__nvvm_atom_sys_max_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_sys); + case NVPTX::BI__nvvm_atom_sys_max_gen_ui: + case NVPTX::BI__nvvm_atom_sys_max_gen_ul: + case NVPTX::BI__nvvm_atom_sys_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_sys); case NVPTX::BI__nvvm_atom_cta_min_gen_i: - case NVPTX::BI__nvvm_atom_cta_min_gen_ui: case NVPTX::BI__nvvm_atom_cta_min_gen_l: - case NVPTX::BI__nvvm_atom_cta_min_gen_ul: case NVPTX::BI__nvvm_atom_cta_min_gen_ll: - case NVPTX::BI__nvvm_atom_cta_min_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_cta); + case NVPTX::BI__nvvm_atom_cta_min_gen_ui: + case NVPTX::BI__nvvm_atom_cta_min_gen_ul: + case NVPTX::BI__nvvm_atom_cta_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_cta); case NVPTX::BI__nvvm_atom_sys_min_gen_i: - case NVPTX::BI__nvvm_atom_sys_min_gen_ui: case NVPTX::BI__nvvm_atom_sys_min_gen_l: - case NVPTX::BI__nvvm_atom_sys_min_gen_ul: case NVPTX::BI__nvvm_atom_sys_min_gen_ll: - case NVPTX::BI__nvvm_atom_sys_min_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_sys); + case NVPTX::BI__nvvm_atom_sys_min_gen_ui: + case NVPTX::BI__nvvm_atom_sys_min_gen_ul: + case NVPTX::BI__nvvm_atom_sys_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_sys); case NVPTX::BI__nvvm_atom_cta_inc_gen_ui: + case NVPTX::BI__nvvm_atom_cta_inc_gen_ul: + case NVPTX::BI__nvvm_atom_cta_inc_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_cta); case NVPTX::BI__nvvm_atom_cta_dec_gen_ui: + case NVPTX::BI__nvvm_atom_cta_dec_gen_ul: + case NVPTX::BI__nvvm_atom_cta_dec_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_cta); case NVPTX::BI__nvvm_atom_sys_inc_gen_ui: + case NVPTX::BI__nvvm_atom_sys_inc_gen_ul: + case NVPTX::BI__nvvm_atom_sys_inc_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_sys); case NVPTX::BI__nvvm_atom_sys_dec_gen_ui: + case NVPTX::BI__nvvm_atom_sys_dec_gen_ul: + case NVPTX::BI__nvvm_atom_sys_dec_gen_ull: return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_sys); case NVPTX::BI__nvvm_atom_cta_and_gen_i: case NVPTX::BI__nvvm_atom_cta_and_gen_l: @@ -17691,24 +17710,1696 @@ return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_sys); case NVPTX::BI__nvvm_atom_cta_cas_gen_i: case NVPTX::BI__nvvm_atom_cta_cas_gen_l: - case NVPTX::BI__nvvm_atom_cta_cas_gen_ll: { - Value *Ptr = EmitScalarExpr(E->getArg(0)); - return Builder.CreateCall( - CGM.getIntrinsic( - Intrinsic::nvvm_atomic_cas_gen_i_cta, - {Ptr->getType()->getPointerElementType(), Ptr->getType()}), - {Ptr, EmitScalarExpr(E->getArg(1)), EmitScalarExpr(E->getArg(2))}); - } + case NVPTX::BI__nvvm_atom_cta_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_cta); case NVPTX::BI__nvvm_atom_sys_cas_gen_i: case NVPTX::BI__nvvm_atom_sys_cas_gen_l: - case NVPTX::BI__nvvm_atom_sys_cas_gen_ll: { - Value *Ptr = EmitScalarExpr(E->getArg(0)); - return Builder.CreateCall( - CGM.getIntrinsic( - Intrinsic::nvvm_atomic_cas_gen_i_sys, - {Ptr->getType()->getPointerElementType(), Ptr->getType()}), - {Ptr, EmitScalarExpr(E->getArg(1)), EmitScalarExpr(E->getArg(2))}); - } + case NVPTX::BI__nvvm_atom_sys_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_sys); + case NVPTX::BI__nvvm_atom_acquire_add_gen_i: + case NVPTX::BI__nvvm_atom_acquire_add_gen_l: + case NVPTX::BI__nvvm_atom_acquire_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_add_gen_f: + case NVPTX::BI__nvvm_atom_acquire_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_acquire); + case NVPTX::BI__nvvm_atom_acquire_xchg_gen_i: + case NVPTX::BI__nvvm_atom_acquire_xchg_gen_l: + case NVPTX::BI__nvvm_atom_acquire_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_max_gen_i: + case NVPTX::BI__nvvm_atom_acquire_max_gen_l: + case NVPTX::BI__nvvm_atom_acquire_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_max_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_max_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_acquire); + case NVPTX::BI__nvvm_atom_acquire_min_gen_i: + case NVPTX::BI__nvvm_atom_acquire_min_gen_l: + case NVPTX::BI__nvvm_atom_acquire_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_min_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_min_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_acquire); + case NVPTX::BI__nvvm_atom_acquire_inc_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_inc_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_dec_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_dec_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_and_gen_i: + case NVPTX::BI__nvvm_atom_acquire_and_gen_l: + case NVPTX::BI__nvvm_atom_acquire_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_or_gen_i: + case NVPTX::BI__nvvm_atom_acquire_or_gen_l: + case NVPTX::BI__nvvm_atom_acquire_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_xor_gen_i: + case NVPTX::BI__nvvm_atom_acquire_xor_gen_l: + case NVPTX::BI__nvvm_atom_acquire_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_cas_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cas_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_cta_add_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_add_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_add_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_add_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_add_gen_f: + case NVPTX::BI__nvvm_atom_acquire_cta_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_add_gen_f: + case NVPTX::BI__nvvm_atom_acquire_sys_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_max_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_max_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_max_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_max_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_max_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_max_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_max_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_max_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_min_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_min_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_min_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_min_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_min_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_min_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_min_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_min_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_inc_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_inc_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_dec_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_dec_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_inc_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_inc_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_dec_gen_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_dec_gen_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_and_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_and_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_and_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_and_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_or_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_or_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_or_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_or_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_xor_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_xor_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_xor_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_xor_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_cas_gen_i: + case NVPTX::BI__nvvm_atom_acquire_cta_cas_gen_l: + case NVPTX::BI__nvvm_atom_acquire_cta_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_cas_gen_i: + case NVPTX::BI__nvvm_atom_acquire_sys_cas_gen_l: + case NVPTX::BI__nvvm_atom_acquire_sys_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_acquire_sys); + case NVPTX::BI__nvvm_atom_release_add_gen_i: + case NVPTX::BI__nvvm_atom_release_add_gen_l: + case NVPTX::BI__nvvm_atom_release_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_release); + case NVPTX::BI__nvvm_atom_release_add_gen_f: + case NVPTX::BI__nvvm_atom_release_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_release); + case NVPTX::BI__nvvm_atom_release_xchg_gen_i: + case NVPTX::BI__nvvm_atom_release_xchg_gen_l: + case NVPTX::BI__nvvm_atom_release_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_release); + case NVPTX::BI__nvvm_atom_release_max_gen_i: + case NVPTX::BI__nvvm_atom_release_max_gen_l: + case NVPTX::BI__nvvm_atom_release_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_release); + case NVPTX::BI__nvvm_atom_release_max_gen_ui: + case NVPTX::BI__nvvm_atom_release_max_gen_ul: + case NVPTX::BI__nvvm_atom_release_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_release); + case NVPTX::BI__nvvm_atom_release_min_gen_i: + case NVPTX::BI__nvvm_atom_release_min_gen_l: + case NVPTX::BI__nvvm_atom_release_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_release); + case NVPTX::BI__nvvm_atom_release_min_gen_ui: + case NVPTX::BI__nvvm_atom_release_min_gen_ul: + case NVPTX::BI__nvvm_atom_release_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_release); + case NVPTX::BI__nvvm_atom_release_inc_gen_ui: + case NVPTX::BI__nvvm_atom_release_inc_gen_ul: + case NVPTX::BI__nvvm_atom_release_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_release); + case NVPTX::BI__nvvm_atom_release_dec_gen_ui: + case NVPTX::BI__nvvm_atom_release_dec_gen_ul: + case NVPTX::BI__nvvm_atom_release_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_release); + case NVPTX::BI__nvvm_atom_release_and_gen_i: + case NVPTX::BI__nvvm_atom_release_and_gen_l: + case NVPTX::BI__nvvm_atom_release_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_release); + case NVPTX::BI__nvvm_atom_release_or_gen_i: + case NVPTX::BI__nvvm_atom_release_or_gen_l: + case NVPTX::BI__nvvm_atom_release_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_release); + case NVPTX::BI__nvvm_atom_release_xor_gen_i: + case NVPTX::BI__nvvm_atom_release_xor_gen_l: + case NVPTX::BI__nvvm_atom_release_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_release); + case NVPTX::BI__nvvm_atom_release_cas_gen_i: + case NVPTX::BI__nvvm_atom_release_cas_gen_l: + case NVPTX::BI__nvvm_atom_release_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_release); + case NVPTX::BI__nvvm_atom_release_cta_add_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_add_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_add_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_add_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_add_gen_f: + case NVPTX::BI__nvvm_atom_release_cta_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_add_gen_f: + case NVPTX::BI__nvvm_atom_release_sys_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_xchg_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_xchg_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_xchg_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_xchg_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_max_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_max_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_max_gen_ui: + case NVPTX::BI__nvvm_atom_release_cta_max_gen_ul: + case NVPTX::BI__nvvm_atom_release_cta_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_max_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_max_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_max_gen_ui: + case NVPTX::BI__nvvm_atom_release_sys_max_gen_ul: + case NVPTX::BI__nvvm_atom_release_sys_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_min_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_min_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_min_gen_ui: + case NVPTX::BI__nvvm_atom_release_cta_min_gen_ul: + case NVPTX::BI__nvvm_atom_release_cta_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_min_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_min_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_min_gen_ui: + case NVPTX::BI__nvvm_atom_release_sys_min_gen_ul: + case NVPTX::BI__nvvm_atom_release_sys_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_inc_gen_ui: + case NVPTX::BI__nvvm_atom_release_cta_inc_gen_ul: + case NVPTX::BI__nvvm_atom_release_cta_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_dec_gen_ui: + case NVPTX::BI__nvvm_atom_release_cta_dec_gen_ul: + case NVPTX::BI__nvvm_atom_release_cta_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_inc_gen_ui: + case NVPTX::BI__nvvm_atom_release_sys_inc_gen_ul: + case NVPTX::BI__nvvm_atom_release_sys_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_dec_gen_ui: + case NVPTX::BI__nvvm_atom_release_sys_dec_gen_ul: + case NVPTX::BI__nvvm_atom_release_sys_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_and_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_and_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_and_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_and_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_or_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_or_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_or_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_or_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_xor_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_xor_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_xor_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_xor_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_cas_gen_i: + case NVPTX::BI__nvvm_atom_release_cta_cas_gen_l: + case NVPTX::BI__nvvm_atom_release_cta_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_cas_gen_i: + case NVPTX::BI__nvvm_atom_release_sys_cas_gen_l: + case NVPTX::BI__nvvm_atom_release_sys_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_release_sys); + case NVPTX::BI__nvvm_atom_acq_rel_add_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_add_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_add_gen_f: + case NVPTX::BI__nvvm_atom_acq_rel_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_xchg_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_xchg_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_max_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_max_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_max_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_max_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_min_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_min_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_min_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_min_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_inc_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_inc_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_dec_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_dec_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_and_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_and_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_or_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_or_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_xor_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_xor_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_cas_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cas_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_gen_f: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_gen_f: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_gen_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_gen_f_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_gen_ui_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_gen_ui_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_gen_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_gen_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_gen_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_gen_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_gen_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_gen_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_gen_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_gen_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_add_global_i: + case NVPTX::BI__nvvm_atom_add_global_l: + case NVPTX::BI__nvvm_atom_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i); + case NVPTX::BI__nvvm_atom_add_global_f: + case NVPTX::BI__nvvm_atom_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f); + case NVPTX::BI__nvvm_atom_xchg_global_i: + case NVPTX::BI__nvvm_atom_xchg_global_l: + case NVPTX::BI__nvvm_atom_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i); + case NVPTX::BI__nvvm_atom_max_global_i: + case NVPTX::BI__nvvm_atom_max_global_l: + case NVPTX::BI__nvvm_atom_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i); + case NVPTX::BI__nvvm_atom_max_global_ui: + case NVPTX::BI__nvvm_atom_max_global_ul: + case NVPTX::BI__nvvm_atom_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui); + case NVPTX::BI__nvvm_atom_min_global_i: + case NVPTX::BI__nvvm_atom_min_global_l: + case NVPTX::BI__nvvm_atom_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i); + case NVPTX::BI__nvvm_atom_min_global_ui: + case NVPTX::BI__nvvm_atom_min_global_ul: + case NVPTX::BI__nvvm_atom_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui); + case NVPTX::BI__nvvm_atom_inc_global_ui: + case NVPTX::BI__nvvm_atom_inc_global_ul: + case NVPTX::BI__nvvm_atom_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i); + case NVPTX::BI__nvvm_atom_dec_global_ui: + case NVPTX::BI__nvvm_atom_dec_global_ul: + case NVPTX::BI__nvvm_atom_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i); + case NVPTX::BI__nvvm_atom_and_global_i: + case NVPTX::BI__nvvm_atom_and_global_l: + case NVPTX::BI__nvvm_atom_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i); + case NVPTX::BI__nvvm_atom_or_global_i: + case NVPTX::BI__nvvm_atom_or_global_l: + case NVPTX::BI__nvvm_atom_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i); + case NVPTX::BI__nvvm_atom_xor_global_i: + case NVPTX::BI__nvvm_atom_xor_global_l: + case NVPTX::BI__nvvm_atom_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i); + case NVPTX::BI__nvvm_atom_cas_global_i: + case NVPTX::BI__nvvm_atom_cas_global_l: + case NVPTX::BI__nvvm_atom_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i); + case NVPTX::BI__nvvm_atom_cta_add_global_i: + case NVPTX::BI__nvvm_atom_cta_add_global_l: + case NVPTX::BI__nvvm_atom_cta_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_cta); + case NVPTX::BI__nvvm_atom_sys_add_global_i: + case NVPTX::BI__nvvm_atom_sys_add_global_l: + case NVPTX::BI__nvvm_atom_sys_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_sys); + case NVPTX::BI__nvvm_atom_cta_add_global_f: + case NVPTX::BI__nvvm_atom_cta_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_cta); + case NVPTX::BI__nvvm_atom_sys_add_global_f: + case NVPTX::BI__nvvm_atom_sys_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_sys); + case NVPTX::BI__nvvm_atom_cta_xchg_global_i: + case NVPTX::BI__nvvm_atom_cta_xchg_global_l: + case NVPTX::BI__nvvm_atom_cta_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_cta); + case NVPTX::BI__nvvm_atom_sys_xchg_global_i: + case NVPTX::BI__nvvm_atom_sys_xchg_global_l: + case NVPTX::BI__nvvm_atom_sys_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_sys); + case NVPTX::BI__nvvm_atom_cta_max_global_i: + case NVPTX::BI__nvvm_atom_cta_max_global_l: + case NVPTX::BI__nvvm_atom_cta_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_cta); + case NVPTX::BI__nvvm_atom_cta_max_global_ui: + case NVPTX::BI__nvvm_atom_cta_max_global_ul: + case NVPTX::BI__nvvm_atom_cta_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_cta); + case NVPTX::BI__nvvm_atom_sys_max_global_i: + case NVPTX::BI__nvvm_atom_sys_max_global_l: + case NVPTX::BI__nvvm_atom_sys_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_sys); + case NVPTX::BI__nvvm_atom_sys_max_global_ui: + case NVPTX::BI__nvvm_atom_sys_max_global_ul: + case NVPTX::BI__nvvm_atom_sys_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_sys); + case NVPTX::BI__nvvm_atom_cta_min_global_i: + case NVPTX::BI__nvvm_atom_cta_min_global_l: + case NVPTX::BI__nvvm_atom_cta_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_cta); + case NVPTX::BI__nvvm_atom_cta_min_global_ui: + case NVPTX::BI__nvvm_atom_cta_min_global_ul: + case NVPTX::BI__nvvm_atom_cta_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_cta); + case NVPTX::BI__nvvm_atom_sys_min_global_i: + case NVPTX::BI__nvvm_atom_sys_min_global_l: + case NVPTX::BI__nvvm_atom_sys_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_sys); + case NVPTX::BI__nvvm_atom_sys_min_global_ui: + case NVPTX::BI__nvvm_atom_sys_min_global_ul: + case NVPTX::BI__nvvm_atom_sys_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_sys); + case NVPTX::BI__nvvm_atom_cta_inc_global_ui: + case NVPTX::BI__nvvm_atom_cta_inc_global_ul: + case NVPTX::BI__nvvm_atom_cta_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_cta); + case NVPTX::BI__nvvm_atom_cta_dec_global_ui: + case NVPTX::BI__nvvm_atom_cta_dec_global_ul: + case NVPTX::BI__nvvm_atom_cta_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_cta); + case NVPTX::BI__nvvm_atom_sys_inc_global_ui: + case NVPTX::BI__nvvm_atom_sys_inc_global_ul: + case NVPTX::BI__nvvm_atom_sys_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_sys); + case NVPTX::BI__nvvm_atom_sys_dec_global_ui: + case NVPTX::BI__nvvm_atom_sys_dec_global_ul: + case NVPTX::BI__nvvm_atom_sys_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_sys); + case NVPTX::BI__nvvm_atom_cta_and_global_i: + case NVPTX::BI__nvvm_atom_cta_and_global_l: + case NVPTX::BI__nvvm_atom_cta_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_cta); + case NVPTX::BI__nvvm_atom_sys_and_global_i: + case NVPTX::BI__nvvm_atom_sys_and_global_l: + case NVPTX::BI__nvvm_atom_sys_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_sys); + case NVPTX::BI__nvvm_atom_cta_or_global_i: + case NVPTX::BI__nvvm_atom_cta_or_global_l: + case NVPTX::BI__nvvm_atom_cta_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_cta); + case NVPTX::BI__nvvm_atom_sys_or_global_i: + case NVPTX::BI__nvvm_atom_sys_or_global_l: + case NVPTX::BI__nvvm_atom_sys_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_sys); + case NVPTX::BI__nvvm_atom_cta_xor_global_i: + case NVPTX::BI__nvvm_atom_cta_xor_global_l: + case NVPTX::BI__nvvm_atom_cta_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_cta); + case NVPTX::BI__nvvm_atom_sys_xor_global_i: + case NVPTX::BI__nvvm_atom_sys_xor_global_l: + case NVPTX::BI__nvvm_atom_sys_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_sys); + case NVPTX::BI__nvvm_atom_cta_cas_global_i: + case NVPTX::BI__nvvm_atom_cta_cas_global_l: + case NVPTX::BI__nvvm_atom_cta_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_cta); + case NVPTX::BI__nvvm_atom_sys_cas_global_i: + case NVPTX::BI__nvvm_atom_sys_cas_global_l: + case NVPTX::BI__nvvm_atom_sys_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_sys); + case NVPTX::BI__nvvm_atom_acquire_add_global_i: + case NVPTX::BI__nvvm_atom_acquire_add_global_l: + case NVPTX::BI__nvvm_atom_acquire_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_add_global_f: + case NVPTX::BI__nvvm_atom_acquire_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_acquire); + case NVPTX::BI__nvvm_atom_acquire_xchg_global_i: + case NVPTX::BI__nvvm_atom_acquire_xchg_global_l: + case NVPTX::BI__nvvm_atom_acquire_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_max_global_i: + case NVPTX::BI__nvvm_atom_acquire_max_global_l: + case NVPTX::BI__nvvm_atom_acquire_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_max_global_ui: + case NVPTX::BI__nvvm_atom_acquire_max_global_ul: + case NVPTX::BI__nvvm_atom_acquire_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_acquire); + case NVPTX::BI__nvvm_atom_acquire_min_global_i: + case NVPTX::BI__nvvm_atom_acquire_min_global_l: + case NVPTX::BI__nvvm_atom_acquire_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_min_global_ui: + case NVPTX::BI__nvvm_atom_acquire_min_global_ul: + case NVPTX::BI__nvvm_atom_acquire_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_acquire); + case NVPTX::BI__nvvm_atom_acquire_inc_global_ui: + case NVPTX::BI__nvvm_atom_acquire_inc_global_ul: + case NVPTX::BI__nvvm_atom_acquire_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_dec_global_ui: + case NVPTX::BI__nvvm_atom_acquire_dec_global_ul: + case NVPTX::BI__nvvm_atom_acquire_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_and_global_i: + case NVPTX::BI__nvvm_atom_acquire_and_global_l: + case NVPTX::BI__nvvm_atom_acquire_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_or_global_i: + case NVPTX::BI__nvvm_atom_acquire_or_global_l: + case NVPTX::BI__nvvm_atom_acquire_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_xor_global_i: + case NVPTX::BI__nvvm_atom_acquire_xor_global_l: + case NVPTX::BI__nvvm_atom_acquire_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_cas_global_i: + case NVPTX::BI__nvvm_atom_acquire_cas_global_l: + case NVPTX::BI__nvvm_atom_acquire_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_cta_add_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_add_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_add_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_add_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_add_global_f: + case NVPTX::BI__nvvm_atom_acquire_cta_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_add_global_f: + case NVPTX::BI__nvvm_atom_acquire_sys_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_max_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_max_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_max_global_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_max_global_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_max_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_max_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_max_global_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_max_global_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_min_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_min_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_min_global_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_min_global_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_min_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_min_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_min_global_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_min_global_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_inc_global_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_inc_global_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_dec_global_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_dec_global_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_inc_global_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_inc_global_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_dec_global_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_dec_global_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_and_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_and_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_and_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_and_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_or_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_or_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_or_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_or_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_xor_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_xor_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_xor_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_xor_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_cas_global_i: + case NVPTX::BI__nvvm_atom_acquire_cta_cas_global_l: + case NVPTX::BI__nvvm_atom_acquire_cta_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_cas_global_i: + case NVPTX::BI__nvvm_atom_acquire_sys_cas_global_l: + case NVPTX::BI__nvvm_atom_acquire_sys_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_acquire_sys); + case NVPTX::BI__nvvm_atom_release_add_global_i: + case NVPTX::BI__nvvm_atom_release_add_global_l: + case NVPTX::BI__nvvm_atom_release_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_release); + case NVPTX::BI__nvvm_atom_release_add_global_f: + case NVPTX::BI__nvvm_atom_release_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_release); + case NVPTX::BI__nvvm_atom_release_xchg_global_i: + case NVPTX::BI__nvvm_atom_release_xchg_global_l: + case NVPTX::BI__nvvm_atom_release_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_release); + case NVPTX::BI__nvvm_atom_release_max_global_i: + case NVPTX::BI__nvvm_atom_release_max_global_l: + case NVPTX::BI__nvvm_atom_release_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_release); + case NVPTX::BI__nvvm_atom_release_max_global_ui: + case NVPTX::BI__nvvm_atom_release_max_global_ul: + case NVPTX::BI__nvvm_atom_release_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_release); + case NVPTX::BI__nvvm_atom_release_min_global_i: + case NVPTX::BI__nvvm_atom_release_min_global_l: + case NVPTX::BI__nvvm_atom_release_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_release); + case NVPTX::BI__nvvm_atom_release_min_global_ui: + case NVPTX::BI__nvvm_atom_release_min_global_ul: + case NVPTX::BI__nvvm_atom_release_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_release); + case NVPTX::BI__nvvm_atom_release_inc_global_ui: + case NVPTX::BI__nvvm_atom_release_inc_global_ul: + case NVPTX::BI__nvvm_atom_release_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_release); + case NVPTX::BI__nvvm_atom_release_dec_global_ui: + case NVPTX::BI__nvvm_atom_release_dec_global_ul: + case NVPTX::BI__nvvm_atom_release_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_release); + case NVPTX::BI__nvvm_atom_release_and_global_i: + case NVPTX::BI__nvvm_atom_release_and_global_l: + case NVPTX::BI__nvvm_atom_release_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_release); + case NVPTX::BI__nvvm_atom_release_or_global_i: + case NVPTX::BI__nvvm_atom_release_or_global_l: + case NVPTX::BI__nvvm_atom_release_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_release); + case NVPTX::BI__nvvm_atom_release_xor_global_i: + case NVPTX::BI__nvvm_atom_release_xor_global_l: + case NVPTX::BI__nvvm_atom_release_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_release); + case NVPTX::BI__nvvm_atom_release_cas_global_i: + case NVPTX::BI__nvvm_atom_release_cas_global_l: + case NVPTX::BI__nvvm_atom_release_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_release); + case NVPTX::BI__nvvm_atom_release_cta_add_global_i: + case NVPTX::BI__nvvm_atom_release_cta_add_global_l: + case NVPTX::BI__nvvm_atom_release_cta_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_add_global_i: + case NVPTX::BI__nvvm_atom_release_sys_add_global_l: + case NVPTX::BI__nvvm_atom_release_sys_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_add_global_f: + case NVPTX::BI__nvvm_atom_release_cta_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_add_global_f: + case NVPTX::BI__nvvm_atom_release_sys_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_xchg_global_i: + case NVPTX::BI__nvvm_atom_release_cta_xchg_global_l: + case NVPTX::BI__nvvm_atom_release_cta_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_xchg_global_i: + case NVPTX::BI__nvvm_atom_release_sys_xchg_global_l: + case NVPTX::BI__nvvm_atom_release_sys_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_max_global_i: + case NVPTX::BI__nvvm_atom_release_cta_max_global_l: + case NVPTX::BI__nvvm_atom_release_cta_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_max_global_ui: + case NVPTX::BI__nvvm_atom_release_cta_max_global_ul: + case NVPTX::BI__nvvm_atom_release_cta_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_max_global_i: + case NVPTX::BI__nvvm_atom_release_sys_max_global_l: + case NVPTX::BI__nvvm_atom_release_sys_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_max_global_ui: + case NVPTX::BI__nvvm_atom_release_sys_max_global_ul: + case NVPTX::BI__nvvm_atom_release_sys_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_min_global_i: + case NVPTX::BI__nvvm_atom_release_cta_min_global_l: + case NVPTX::BI__nvvm_atom_release_cta_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_min_global_ui: + case NVPTX::BI__nvvm_atom_release_cta_min_global_ul: + case NVPTX::BI__nvvm_atom_release_cta_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_min_global_i: + case NVPTX::BI__nvvm_atom_release_sys_min_global_l: + case NVPTX::BI__nvvm_atom_release_sys_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_min_global_ui: + case NVPTX::BI__nvvm_atom_release_sys_min_global_ul: + case NVPTX::BI__nvvm_atom_release_sys_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_inc_global_ui: + case NVPTX::BI__nvvm_atom_release_cta_inc_global_ul: + case NVPTX::BI__nvvm_atom_release_cta_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_dec_global_ui: + case NVPTX::BI__nvvm_atom_release_cta_dec_global_ul: + case NVPTX::BI__nvvm_atom_release_cta_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_inc_global_ui: + case NVPTX::BI__nvvm_atom_release_sys_inc_global_ul: + case NVPTX::BI__nvvm_atom_release_sys_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_dec_global_ui: + case NVPTX::BI__nvvm_atom_release_sys_dec_global_ul: + case NVPTX::BI__nvvm_atom_release_sys_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_and_global_i: + case NVPTX::BI__nvvm_atom_release_cta_and_global_l: + case NVPTX::BI__nvvm_atom_release_cta_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_and_global_i: + case NVPTX::BI__nvvm_atom_release_sys_and_global_l: + case NVPTX::BI__nvvm_atom_release_sys_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_or_global_i: + case NVPTX::BI__nvvm_atom_release_cta_or_global_l: + case NVPTX::BI__nvvm_atom_release_cta_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_or_global_i: + case NVPTX::BI__nvvm_atom_release_sys_or_global_l: + case NVPTX::BI__nvvm_atom_release_sys_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_xor_global_i: + case NVPTX::BI__nvvm_atom_release_cta_xor_global_l: + case NVPTX::BI__nvvm_atom_release_cta_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_xor_global_i: + case NVPTX::BI__nvvm_atom_release_sys_xor_global_l: + case NVPTX::BI__nvvm_atom_release_sys_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_cas_global_i: + case NVPTX::BI__nvvm_atom_release_cta_cas_global_l: + case NVPTX::BI__nvvm_atom_release_cta_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_cas_global_i: + case NVPTX::BI__nvvm_atom_release_sys_cas_global_l: + case NVPTX::BI__nvvm_atom_release_sys_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_release_sys); + case NVPTX::BI__nvvm_atom_acq_rel_add_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_add_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_add_global_f: + case NVPTX::BI__nvvm_atom_acq_rel_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_xchg_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_xchg_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_max_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_max_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_max_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_max_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_min_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_min_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_min_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_min_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_inc_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_inc_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_dec_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_dec_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_and_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_and_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_or_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_or_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_xor_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_xor_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_cas_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cas_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_global_f: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_global_f: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_global_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_global_f_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_global_ui_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_global_ui_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_global_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_global_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_global_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_global_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_global_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_global_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_global_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_global_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_add_shared_i: + case NVPTX::BI__nvvm_atom_add_shared_l: + case NVPTX::BI__nvvm_atom_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i); + case NVPTX::BI__nvvm_atom_add_shared_f: + case NVPTX::BI__nvvm_atom_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f); + case NVPTX::BI__nvvm_atom_xchg_shared_i: + case NVPTX::BI__nvvm_atom_xchg_shared_l: + case NVPTX::BI__nvvm_atom_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i); + case NVPTX::BI__nvvm_atom_max_shared_i: + case NVPTX::BI__nvvm_atom_max_shared_l: + case NVPTX::BI__nvvm_atom_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i); + case NVPTX::BI__nvvm_atom_max_shared_ui: + case NVPTX::BI__nvvm_atom_max_shared_ul: + case NVPTX::BI__nvvm_atom_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui); + case NVPTX::BI__nvvm_atom_min_shared_i: + case NVPTX::BI__nvvm_atom_min_shared_l: + case NVPTX::BI__nvvm_atom_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i); + case NVPTX::BI__nvvm_atom_min_shared_ui: + case NVPTX::BI__nvvm_atom_min_shared_ul: + case NVPTX::BI__nvvm_atom_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui); + case NVPTX::BI__nvvm_atom_inc_shared_ui: + case NVPTX::BI__nvvm_atom_inc_shared_ul: + case NVPTX::BI__nvvm_atom_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i); + case NVPTX::BI__nvvm_atom_dec_shared_ui: + case NVPTX::BI__nvvm_atom_dec_shared_ul: + case NVPTX::BI__nvvm_atom_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i); + case NVPTX::BI__nvvm_atom_and_shared_i: + case NVPTX::BI__nvvm_atom_and_shared_l: + case NVPTX::BI__nvvm_atom_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i); + case NVPTX::BI__nvvm_atom_or_shared_i: + case NVPTX::BI__nvvm_atom_or_shared_l: + case NVPTX::BI__nvvm_atom_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i); + case NVPTX::BI__nvvm_atom_xor_shared_i: + case NVPTX::BI__nvvm_atom_xor_shared_l: + case NVPTX::BI__nvvm_atom_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i); + case NVPTX::BI__nvvm_atom_cas_shared_i: + case NVPTX::BI__nvvm_atom_cas_shared_l: + case NVPTX::BI__nvvm_atom_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i); + case NVPTX::BI__nvvm_atom_cta_add_shared_i: + case NVPTX::BI__nvvm_atom_cta_add_shared_l: + case NVPTX::BI__nvvm_atom_cta_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_cta); + case NVPTX::BI__nvvm_atom_sys_add_shared_i: + case NVPTX::BI__nvvm_atom_sys_add_shared_l: + case NVPTX::BI__nvvm_atom_sys_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_sys); + case NVPTX::BI__nvvm_atom_cta_add_shared_f: + case NVPTX::BI__nvvm_atom_cta_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_cta); + case NVPTX::BI__nvvm_atom_sys_add_shared_f: + case NVPTX::BI__nvvm_atom_sys_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_sys); + case NVPTX::BI__nvvm_atom_cta_xchg_shared_i: + case NVPTX::BI__nvvm_atom_cta_xchg_shared_l: + case NVPTX::BI__nvvm_atom_cta_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_cta); + case NVPTX::BI__nvvm_atom_sys_xchg_shared_i: + case NVPTX::BI__nvvm_atom_sys_xchg_shared_l: + case NVPTX::BI__nvvm_atom_sys_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_sys); + case NVPTX::BI__nvvm_atom_cta_max_shared_i: + case NVPTX::BI__nvvm_atom_cta_max_shared_l: + case NVPTX::BI__nvvm_atom_cta_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_cta); + case NVPTX::BI__nvvm_atom_cta_max_shared_ui: + case NVPTX::BI__nvvm_atom_cta_max_shared_ul: + case NVPTX::BI__nvvm_atom_cta_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_cta); + case NVPTX::BI__nvvm_atom_sys_max_shared_i: + case NVPTX::BI__nvvm_atom_sys_max_shared_l: + case NVPTX::BI__nvvm_atom_sys_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_sys); + case NVPTX::BI__nvvm_atom_sys_max_shared_ui: + case NVPTX::BI__nvvm_atom_sys_max_shared_ul: + case NVPTX::BI__nvvm_atom_sys_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_sys); + case NVPTX::BI__nvvm_atom_cta_min_shared_i: + case NVPTX::BI__nvvm_atom_cta_min_shared_l: + case NVPTX::BI__nvvm_atom_cta_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_cta); + case NVPTX::BI__nvvm_atom_cta_min_shared_ui: + case NVPTX::BI__nvvm_atom_cta_min_shared_ul: + case NVPTX::BI__nvvm_atom_cta_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_cta); + case NVPTX::BI__nvvm_atom_sys_min_shared_i: + case NVPTX::BI__nvvm_atom_sys_min_shared_l: + case NVPTX::BI__nvvm_atom_sys_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_sys); + case NVPTX::BI__nvvm_atom_sys_min_shared_ui: + case NVPTX::BI__nvvm_atom_sys_min_shared_ul: + case NVPTX::BI__nvvm_atom_sys_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_sys); + case NVPTX::BI__nvvm_atom_cta_inc_shared_ui: + case NVPTX::BI__nvvm_atom_cta_inc_shared_ul: + case NVPTX::BI__nvvm_atom_cta_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_cta); + case NVPTX::BI__nvvm_atom_cta_dec_shared_ui: + case NVPTX::BI__nvvm_atom_cta_dec_shared_ul: + case NVPTX::BI__nvvm_atom_cta_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_cta); + case NVPTX::BI__nvvm_atom_sys_inc_shared_ui: + case NVPTX::BI__nvvm_atom_sys_inc_shared_ul: + case NVPTX::BI__nvvm_atom_sys_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_sys); + case NVPTX::BI__nvvm_atom_sys_dec_shared_ui: + case NVPTX::BI__nvvm_atom_sys_dec_shared_ul: + case NVPTX::BI__nvvm_atom_sys_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_sys); + case NVPTX::BI__nvvm_atom_cta_and_shared_i: + case NVPTX::BI__nvvm_atom_cta_and_shared_l: + case NVPTX::BI__nvvm_atom_cta_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_cta); + case NVPTX::BI__nvvm_atom_sys_and_shared_i: + case NVPTX::BI__nvvm_atom_sys_and_shared_l: + case NVPTX::BI__nvvm_atom_sys_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_sys); + case NVPTX::BI__nvvm_atom_cta_or_shared_i: + case NVPTX::BI__nvvm_atom_cta_or_shared_l: + case NVPTX::BI__nvvm_atom_cta_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_cta); + case NVPTX::BI__nvvm_atom_sys_or_shared_i: + case NVPTX::BI__nvvm_atom_sys_or_shared_l: + case NVPTX::BI__nvvm_atom_sys_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_sys); + case NVPTX::BI__nvvm_atom_cta_xor_shared_i: + case NVPTX::BI__nvvm_atom_cta_xor_shared_l: + case NVPTX::BI__nvvm_atom_cta_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_cta); + case NVPTX::BI__nvvm_atom_sys_xor_shared_i: + case NVPTX::BI__nvvm_atom_sys_xor_shared_l: + case NVPTX::BI__nvvm_atom_sys_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_sys); + case NVPTX::BI__nvvm_atom_cta_cas_shared_i: + case NVPTX::BI__nvvm_atom_cta_cas_shared_l: + case NVPTX::BI__nvvm_atom_cta_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_cta); + case NVPTX::BI__nvvm_atom_sys_cas_shared_i: + case NVPTX::BI__nvvm_atom_sys_cas_shared_l: + case NVPTX::BI__nvvm_atom_sys_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_sys); + case NVPTX::BI__nvvm_atom_acquire_add_shared_i: + case NVPTX::BI__nvvm_atom_acquire_add_shared_l: + case NVPTX::BI__nvvm_atom_acquire_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_add_shared_f: + case NVPTX::BI__nvvm_atom_acquire_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_acquire); + case NVPTX::BI__nvvm_atom_acquire_xchg_shared_i: + case NVPTX::BI__nvvm_atom_acquire_xchg_shared_l: + case NVPTX::BI__nvvm_atom_acquire_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_max_shared_i: + case NVPTX::BI__nvvm_atom_acquire_max_shared_l: + case NVPTX::BI__nvvm_atom_acquire_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_max_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_max_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_acquire); + case NVPTX::BI__nvvm_atom_acquire_min_shared_i: + case NVPTX::BI__nvvm_atom_acquire_min_shared_l: + case NVPTX::BI__nvvm_atom_acquire_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_min_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_min_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_acquire); + case NVPTX::BI__nvvm_atom_acquire_inc_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_inc_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_dec_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_dec_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_and_shared_i: + case NVPTX::BI__nvvm_atom_acquire_and_shared_l: + case NVPTX::BI__nvvm_atom_acquire_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_or_shared_i: + case NVPTX::BI__nvvm_atom_acquire_or_shared_l: + case NVPTX::BI__nvvm_atom_acquire_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_xor_shared_i: + case NVPTX::BI__nvvm_atom_acquire_xor_shared_l: + case NVPTX::BI__nvvm_atom_acquire_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_cas_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cas_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_acquire); + case NVPTX::BI__nvvm_atom_acquire_cta_add_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_add_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_add_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_add_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_add_shared_f: + case NVPTX::BI__nvvm_atom_acquire_cta_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_add_shared_f: + case NVPTX::BI__nvvm_atom_acquire_sys_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_max_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_max_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_max_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_max_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_max_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_max_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_max_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_max_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_min_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_min_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_min_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_min_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_min_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_min_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_min_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_min_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_inc_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_inc_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_cta_dec_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_cta_dec_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_cta_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_inc_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_inc_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_sys_dec_shared_ui: + case NVPTX::BI__nvvm_atom_acquire_sys_dec_shared_ul: + case NVPTX::BI__nvvm_atom_acquire_sys_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_and_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_and_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_and_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_and_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_or_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_or_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_or_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_or_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_xor_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_xor_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_xor_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_xor_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_acquire_cta_cas_shared_i: + case NVPTX::BI__nvvm_atom_acquire_cta_cas_shared_l: + case NVPTX::BI__nvvm_atom_acquire_cta_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_acquire_cta); + case NVPTX::BI__nvvm_atom_acquire_sys_cas_shared_i: + case NVPTX::BI__nvvm_atom_acquire_sys_cas_shared_l: + case NVPTX::BI__nvvm_atom_acquire_sys_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_acquire_sys); + case NVPTX::BI__nvvm_atom_release_add_shared_i: + case NVPTX::BI__nvvm_atom_release_add_shared_l: + case NVPTX::BI__nvvm_atom_release_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_release); + case NVPTX::BI__nvvm_atom_release_add_shared_f: + case NVPTX::BI__nvvm_atom_release_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_release); + case NVPTX::BI__nvvm_atom_release_xchg_shared_i: + case NVPTX::BI__nvvm_atom_release_xchg_shared_l: + case NVPTX::BI__nvvm_atom_release_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_release); + case NVPTX::BI__nvvm_atom_release_max_shared_i: + case NVPTX::BI__nvvm_atom_release_max_shared_l: + case NVPTX::BI__nvvm_atom_release_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_release); + case NVPTX::BI__nvvm_atom_release_max_shared_ui: + case NVPTX::BI__nvvm_atom_release_max_shared_ul: + case NVPTX::BI__nvvm_atom_release_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_release); + case NVPTX::BI__nvvm_atom_release_min_shared_i: + case NVPTX::BI__nvvm_atom_release_min_shared_l: + case NVPTX::BI__nvvm_atom_release_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_release); + case NVPTX::BI__nvvm_atom_release_min_shared_ui: + case NVPTX::BI__nvvm_atom_release_min_shared_ul: + case NVPTX::BI__nvvm_atom_release_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_release); + case NVPTX::BI__nvvm_atom_release_inc_shared_ui: + case NVPTX::BI__nvvm_atom_release_inc_shared_ul: + case NVPTX::BI__nvvm_atom_release_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_release); + case NVPTX::BI__nvvm_atom_release_dec_shared_ui: + case NVPTX::BI__nvvm_atom_release_dec_shared_ul: + case NVPTX::BI__nvvm_atom_release_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_release); + case NVPTX::BI__nvvm_atom_release_and_shared_i: + case NVPTX::BI__nvvm_atom_release_and_shared_l: + case NVPTX::BI__nvvm_atom_release_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_release); + case NVPTX::BI__nvvm_atom_release_or_shared_i: + case NVPTX::BI__nvvm_atom_release_or_shared_l: + case NVPTX::BI__nvvm_atom_release_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_release); + case NVPTX::BI__nvvm_atom_release_xor_shared_i: + case NVPTX::BI__nvvm_atom_release_xor_shared_l: + case NVPTX::BI__nvvm_atom_release_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_release); + case NVPTX::BI__nvvm_atom_release_cas_shared_i: + case NVPTX::BI__nvvm_atom_release_cas_shared_l: + case NVPTX::BI__nvvm_atom_release_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_release); + case NVPTX::BI__nvvm_atom_release_cta_add_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_add_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_add_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_add_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_add_shared_f: + case NVPTX::BI__nvvm_atom_release_cta_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_add_shared_f: + case NVPTX::BI__nvvm_atom_release_sys_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_xchg_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_xchg_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_xchg_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_xchg_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_max_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_max_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_max_shared_ui: + case NVPTX::BI__nvvm_atom_release_cta_max_shared_ul: + case NVPTX::BI__nvvm_atom_release_cta_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_max_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_max_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_max_shared_ui: + case NVPTX::BI__nvvm_atom_release_sys_max_shared_ul: + case NVPTX::BI__nvvm_atom_release_sys_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_min_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_min_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_min_shared_ui: + case NVPTX::BI__nvvm_atom_release_cta_min_shared_ul: + case NVPTX::BI__nvvm_atom_release_cta_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_min_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_min_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_min_shared_ui: + case NVPTX::BI__nvvm_atom_release_sys_min_shared_ul: + case NVPTX::BI__nvvm_atom_release_sys_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_inc_shared_ui: + case NVPTX::BI__nvvm_atom_release_cta_inc_shared_ul: + case NVPTX::BI__nvvm_atom_release_cta_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_cta_dec_shared_ui: + case NVPTX::BI__nvvm_atom_release_cta_dec_shared_ul: + case NVPTX::BI__nvvm_atom_release_cta_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_inc_shared_ui: + case NVPTX::BI__nvvm_atom_release_sys_inc_shared_ul: + case NVPTX::BI__nvvm_atom_release_sys_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_sys_dec_shared_ui: + case NVPTX::BI__nvvm_atom_release_sys_dec_shared_ul: + case NVPTX::BI__nvvm_atom_release_sys_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_and_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_and_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_and_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_and_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_or_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_or_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_or_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_or_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_xor_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_xor_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_xor_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_xor_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_release_cta_cas_shared_i: + case NVPTX::BI__nvvm_atom_release_cta_cas_shared_l: + case NVPTX::BI__nvvm_atom_release_cta_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_release_cta); + case NVPTX::BI__nvvm_atom_release_sys_cas_shared_i: + case NVPTX::BI__nvvm_atom_release_sys_cas_shared_l: + case NVPTX::BI__nvvm_atom_release_sys_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_release_sys); + case NVPTX::BI__nvvm_atom_acq_rel_add_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_add_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_add_shared_f: + case NVPTX::BI__nvvm_atom_acq_rel_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_xchg_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_xchg_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_max_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_max_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_max_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_max_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_min_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_min_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_min_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_min_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_inc_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_inc_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_dec_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_dec_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_and_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_and_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_or_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_or_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_xor_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_xor_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_cas_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cas_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_acq_rel); + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_shared_f: + case NVPTX::BI__nvvm_atom_acq_rel_cta_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_shared_f: + case NVPTX::BI__nvvm_atom_acq_rel_sys_add_shared_d: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_add_shared_f_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xchg_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_exch_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_max_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_max_shared_ui_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_min_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_min_shared_ui_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_cta_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_inc_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_inc_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_shared_ui: + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_shared_ul: + case NVPTX::BI__nvvm_atom_acq_rel_sys_dec_shared_ull: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_dec_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_and_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_and_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_or_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_or_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_xor_shared_ll: + return MakeScopedAtomic(Intrinsic::nvvm_atomic_xor_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_cta_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_acq_rel_cta); + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_shared_i: + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_shared_l: + case NVPTX::BI__nvvm_atom_acq_rel_sys_cas_shared_ll: + return MakeScopedCasAtomic(Intrinsic::nvvm_atomic_cas_shared_i_acq_rel_sys); + case NVPTX::BI__nvvm_match_all_sync_i32p: case NVPTX::BI__nvvm_match_all_sync_i64p: { Value *Mask = EmitScalarExpr(E->getArg(0)); diff --git a/clang/test/CodeGen/builtins-nvptx.c b/clang/test/CodeGen/builtins-nvptx.c --- a/clang/test/CodeGen/builtins-nvptx.c +++ b/clang/test/CodeGen/builtins-nvptx.c @@ -4,7 +4,7 @@ // RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK_PTX70_SM80 -check-prefix=LP32 %s // RUN: %clang_cc1 -ffp-contract=off -triple nvptx64-unknown-unknown -target-cpu sm_80 -target-feature +ptx70 \ // RUN: -fcuda-is-device -S -emit-llvm -o - -x cuda %s \ -// RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK_PTX70_SM80 -check-prefix=LP64 %s +// RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK_PTX70_SM80 -check-prefix=LP64 -check-prefix=CHECK_SM70_LP64 %s // RUN: %clang_cc1 -ffp-contract=off -triple nvptx-unknown-unknown -target-cpu sm_60 \ // RUN: -fcuda-is-device -S -emit-llvm -o - -x cuda %s \ // RUN: | FileCheck -check-prefix=CHECK -check-prefix=LP32 %s @@ -359,84 +359,84 @@ // CHECK: call i32 @llvm.nvvm.atomic.max.gen.i.cta.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_cta_max_gen_i' needs target feature sm_60}} __nvvm_atom_cta_max_gen_i(ip, i); - // CHECK: call i32 @llvm.nvvm.atomic.max.gen.i.cta.i32.p0i32 + // CHECK: call i32 @llvm.nvvm.atomic.max.gen.ui.cta.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_cta_max_gen_ui' needs target feature sm_60}} __nvvm_atom_cta_max_gen_ui((unsigned int *)ip, i); // LP32: call i32 @llvm.nvvm.atomic.max.gen.i.cta.i32.p0i32 // LP64: call i64 @llvm.nvvm.atomic.max.gen.i.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_max_gen_l' needs target feature sm_60}} __nvvm_atom_cta_max_gen_l(&dl, l); - // LP32: call i32 @llvm.nvvm.atomic.max.gen.i.cta.i32.p0i32 - // LP64: call i64 @llvm.nvvm.atomic.max.gen.i.cta.i64.p0i64 + // LP32: call i32 @llvm.nvvm.atomic.max.gen.ui.cta.i32.p0i32 + // LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_max_gen_ul' needs target feature sm_60}} __nvvm_atom_cta_max_gen_ul((unsigned long *)lp, l); // CHECK: call i64 @llvm.nvvm.atomic.max.gen.i.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_max_gen_ll' needs target feature sm_60}} __nvvm_atom_cta_max_gen_ll(&sll, ll); - // CHECK: call i64 @llvm.nvvm.atomic.max.gen.i.cta.i64.p0i64 + // CHECK: call i64 @llvm.nvvm.atomic.max.gen.ui.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_max_gen_ull' needs target feature sm_60}} __nvvm_atom_cta_max_gen_ull((unsigned long long *)llp, ll); // CHECK: call i32 @llvm.nvvm.atomic.max.gen.i.sys.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_sys_max_gen_i' needs target feature sm_60}} __nvvm_atom_sys_max_gen_i(ip, i); - // CHECK: call i32 @llvm.nvvm.atomic.max.gen.i.sys.i32.p0i32 + // CHECK: call i32 @llvm.nvvm.atomic.max.gen.ui.sys.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_sys_max_gen_ui' needs target feature sm_60}} __nvvm_atom_sys_max_gen_ui((unsigned int *)ip, i); // LP32: call i32 @llvm.nvvm.atomic.max.gen.i.sys.i32.p0i32 // LP64: call i64 @llvm.nvvm.atomic.max.gen.i.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_max_gen_l' needs target feature sm_60}} __nvvm_atom_sys_max_gen_l(&dl, l); - // LP32: call i32 @llvm.nvvm.atomic.max.gen.i.sys.i32.p0i32 - // LP64: call i64 @llvm.nvvm.atomic.max.gen.i.sys.i64.p0i64 + // LP32: call i32 @llvm.nvvm.atomic.max.gen.ui.sys.i32.p0i32 + // LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_max_gen_ul' needs target feature sm_60}} __nvvm_atom_sys_max_gen_ul((unsigned long *)lp, l); // CHECK: call i64 @llvm.nvvm.atomic.max.gen.i.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_max_gen_ll' needs target feature sm_60}} __nvvm_atom_sys_max_gen_ll(&sll, ll); - // CHECK: call i64 @llvm.nvvm.atomic.max.gen.i.sys.i64.p0i64 + // CHECK: call i64 @llvm.nvvm.atomic.max.gen.ui.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_max_gen_ull' needs target feature sm_60}} __nvvm_atom_sys_max_gen_ull((unsigned long long *)llp, ll); // CHECK: call i32 @llvm.nvvm.atomic.min.gen.i.cta.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_cta_min_gen_i' needs target feature sm_60}} __nvvm_atom_cta_min_gen_i(ip, i); - // CHECK: call i32 @llvm.nvvm.atomic.min.gen.i.cta.i32.p0i32 + // CHECK: call i32 @llvm.nvvm.atomic.min.gen.ui.cta.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_cta_min_gen_ui' needs target feature sm_60}} __nvvm_atom_cta_min_gen_ui((unsigned int *)ip, i); // LP32: call i32 @llvm.nvvm.atomic.min.gen.i.cta.i32.p0i32 // LP64: call i64 @llvm.nvvm.atomic.min.gen.i.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_min_gen_l' needs target feature sm_60}} __nvvm_atom_cta_min_gen_l(&dl, l); - // LP32: call i32 @llvm.nvvm.atomic.min.gen.i.cta.i32.p0i32 - // LP64: call i64 @llvm.nvvm.atomic.min.gen.i.cta.i64.p0i64 + // LP32: call i32 @llvm.nvvm.atomic.min.gen.ui.cta.i32.p0i32 + // LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_min_gen_ul' needs target feature sm_60}} __nvvm_atom_cta_min_gen_ul((unsigned long *)lp, l); // CHECK: call i64 @llvm.nvvm.atomic.min.gen.i.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_min_gen_ll' needs target feature sm_60}} __nvvm_atom_cta_min_gen_ll(&sll, ll); - // CHECK: call i64 @llvm.nvvm.atomic.min.gen.i.cta.i64.p0i64 + // CHECK: call i64 @llvm.nvvm.atomic.min.gen.ui.cta.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_cta_min_gen_ull' needs target feature sm_60}} __nvvm_atom_cta_min_gen_ull((unsigned long long *)llp, ll); // CHECK: call i32 @llvm.nvvm.atomic.min.gen.i.sys.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_sys_min_gen_i' needs target feature sm_60}} __nvvm_atom_sys_min_gen_i(ip, i); - // CHECK: call i32 @llvm.nvvm.atomic.min.gen.i.sys.i32.p0i32 + // CHECK: call i32 @llvm.nvvm.atomic.min.gen.ui.sys.i32.p0i32 // expected-error@+1 {{'__nvvm_atom_sys_min_gen_ui' needs target feature sm_60}} __nvvm_atom_sys_min_gen_ui((unsigned int *)ip, i); // LP32: call i32 @llvm.nvvm.atomic.min.gen.i.sys.i32.p0i32 // LP64: call i64 @llvm.nvvm.atomic.min.gen.i.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_min_gen_l' needs target feature sm_60}} __nvvm_atom_sys_min_gen_l(&dl, l); - // LP32: call i32 @llvm.nvvm.atomic.min.gen.i.sys.i32.p0i32 - // LP64: call i64 @llvm.nvvm.atomic.min.gen.i.sys.i64.p0i64 + // LP32: call i32 @llvm.nvvm.atomic.min.gen.ui.sys.i32.p0i32 + // LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_min_gen_ul' needs target feature sm_60}} __nvvm_atom_sys_min_gen_ul((unsigned long *)lp, l); // CHECK: call i64 @llvm.nvvm.atomic.min.gen.i.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_min_gen_ll' needs target feature sm_60}} __nvvm_atom_sys_min_gen_ll(&sll, ll); - // CHECK: call i64 @llvm.nvvm.atomic.min.gen.i.sys.i64.p0i64 + // CHECK: call i64 @llvm.nvvm.atomic.min.gen.ui.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_min_gen_ull' needs target feature sm_60}} __nvvm_atom_sys_min_gen_ull((unsigned long long *)llp, ll); @@ -541,6 +541,2821 @@ // CHECK: call i64 @llvm.nvvm.atomic.cas.gen.i.sys.i64.p0i64 // expected-error@+1 {{'__nvvm_atom_sys_cas_gen_ll' needs target feature sm_60}} __nvvm_atom_sys_cas_gen_ll(&sll, ll, 0); +#endif + + ////////////////////////////////////////////////////////////////// + // Atomics with semantics (only supported on sm_70+). + +#if ERROR_CHECK || __CUDA_ARCH__ >= 700 + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_add_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_add_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_add_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_add_gen_i' needs target feature sm_70}} + __nvvm_atom_release_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_add_global_i' needs target feature sm_70}} + __nvvm_atom_release_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_add_shared_i' needs target feature sm_70}} + __nvvm_atom_release_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_add_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_add_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_add_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_add_gen_l' needs target feature sm_70}} + __nvvm_atom_release_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_add_global_l' needs target feature sm_70}} + __nvvm_atom_release_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_add_shared_l' needs target feature sm_70}} + __nvvm_atom_release_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.acquire.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_acquire_add_gen_f' needs target feature sm_70}} + __nvvm_atom_acquire_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.acquire.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_acquire_add_global_f' needs target feature sm_70}} + __nvvm_atom_acquire_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.acquire.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_acquire_add_shared_f' needs target feature sm_70}} + __nvvm_atom_acquire_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.release.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_release_add_gen_f' needs target feature sm_70}} + __nvvm_atom_release_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.release.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_release_add_global_f' needs target feature sm_70}} + __nvvm_atom_release_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.release.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_release_add_shared_f' needs target feature sm_70}} + __nvvm_atom_release_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.acq.rel.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_gen_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.acq.rel.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_global_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.acq.rel.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_shared_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.acquire.sys.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_gen_f' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.acquire.sys.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_global_f' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.acquire.sys.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_shared_f' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.release.sys.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_gen_f' needs target feature sm_70}} + __nvvm_atom_release_sys_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.release.sys.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_global_f' needs target feature sm_70}} + __nvvm_atom_release_sys_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.release.sys.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_shared_f' needs target feature sm_70}} + __nvvm_atom_release_sys_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.acq.rel.sys.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_gen_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.acq.rel.sys.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_global_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.acq.rel.sys.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_shared_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.acquire.cta.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_gen_f' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.acquire.cta.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_global_f' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.acquire.cta.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_shared_f' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.release.cta.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_gen_f' needs target feature sm_70}} + __nvvm_atom_release_cta_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.release.cta.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_global_f' needs target feature sm_70}} + __nvvm_atom_release_cta_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.release.cta.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_shared_f' needs target feature sm_70}} + __nvvm_atom_release_cta_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.gen.f.acq.rel.cta.f32.p0f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_gen_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_gen_f(fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.global.f.acq.rel.cta.f32.p1f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_global_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_global_f((__attribute__((address_space(1))) float *)fp, f); + + // CHECK_SM70_LP64: call float @llvm.nvvm.atomic.add.shared.f.acq.rel.cta.f32.p3f32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_shared_f' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_shared_f((__attribute__((address_space(3))) float *)fp, f); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.acquire.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_acquire_add_gen_d' needs target feature sm_70}} + __nvvm_atom_acquire_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.acquire.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_acquire_add_global_d' needs target feature sm_70}} + __nvvm_atom_acquire_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.acquire.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_acquire_add_shared_d' needs target feature sm_70}} + __nvvm_atom_acquire_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.release.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_release_add_gen_d' needs target feature sm_70}} + __nvvm_atom_release_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.release.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_release_add_global_d' needs target feature sm_70}} + __nvvm_atom_release_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.release.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_release_add_shared_d' needs target feature sm_70}} + __nvvm_atom_release_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.acq.rel.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_gen_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.acq.rel.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_global_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.acq.rel.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_add_shared_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.acquire.sys.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_gen_d' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.acquire.sys.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_global_d' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.acquire.sys.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_add_shared_d' needs target feature sm_70}} + __nvvm_atom_acquire_sys_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.release.sys.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_gen_d' needs target feature sm_70}} + __nvvm_atom_release_sys_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.release.sys.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_global_d' needs target feature sm_70}} + __nvvm_atom_release_sys_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.release.sys.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_release_sys_add_shared_d' needs target feature sm_70}} + __nvvm_atom_release_sys_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.acq.rel.sys.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_gen_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.acq.rel.sys.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_global_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.acq.rel.sys.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_add_shared_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.acquire.cta.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_gen_d' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.acquire.cta.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_global_d' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.acquire.cta.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_add_shared_d' needs target feature sm_70}} + __nvvm_atom_acquire_cta_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.release.cta.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_gen_d' needs target feature sm_70}} + __nvvm_atom_release_cta_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.release.cta.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_global_d' needs target feature sm_70}} + __nvvm_atom_release_cta_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.release.cta.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_release_cta_add_shared_d' needs target feature sm_70}} + __nvvm_atom_release_cta_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.gen.f.acq.rel.cta.f64.p0f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_gen_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_gen_d(dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.global.f.acq.rel.cta.f64.p1f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_global_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_global_d((__attribute__((address_space(1))) double *)dfp, df); + + // CHECK_SM70_LP64: call double @llvm.nvvm.atomic.add.shared.f.acq.rel.cta.f64.p3f64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_add_shared_d' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_add_shared_d((__attribute__((address_space(3))) double *)dfp, df); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_release_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_release_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_release_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xchg_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xchg_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xchg_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xchg_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xchg_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xchg_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_release_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_release_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_release_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xchg_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xchg_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xchg_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xchg_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xchg_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xchg_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_max_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_max_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_max_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_max_gen_i' needs target feature sm_70}} + __nvvm_atom_release_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_max_global_i' needs target feature sm_70}} + __nvvm_atom_release_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_max_shared_i' needs target feature sm_70}} + __nvvm_atom_release_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_max_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_max_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_max_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_max_gen_l' needs target feature sm_70}} + __nvvm_atom_release_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_max_global_l' needs target feature sm_70}} + __nvvm_atom_release_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_max_shared_l' needs target feature sm_70}} + __nvvm_atom_release_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_max_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_max_global_ui' needs target feature sm_70}} + __nvvm_atom_release_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_global_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_global_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_max_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_max_global_ul' needs target feature sm_70}} + __nvvm_atom_release_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_global_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_global_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_max_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_max_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_min_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_min_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_min_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_min_gen_i' needs target feature sm_70}} + __nvvm_atom_release_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_min_global_i' needs target feature sm_70}} + __nvvm_atom_release_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_min_shared_i' needs target feature sm_70}} + __nvvm_atom_release_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_min_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_min_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_min_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_min_gen_l' needs target feature sm_70}} + __nvvm_atom_release_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_min_global_l' needs target feature sm_70}} + __nvvm_atom_release_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_min_shared_l' needs target feature sm_70}} + __nvvm_atom_release_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_min_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_min_global_ui' needs target feature sm_70}} + __nvvm_atom_release_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_global_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_global_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_min_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_min_global_ul' needs target feature sm_70}} + __nvvm_atom_release_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_global_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_global_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_min_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_min_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_release_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_inc_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_inc_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_inc_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_inc_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_inc_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_inc_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_release_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_inc_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_inc_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_inc_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_inc_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_inc_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_inc_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_release_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_sys_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_sys_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_acquire_cta_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_release_cta_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_dec_gen_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_dec_gen_ui((unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_dec_global_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_dec_global_ui((__attribute__((address_space(1))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_dec_shared_ui' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_dec_shared_ui((__attribute__((address_space(3))) unsigned int *)(unsigned int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_release_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_sys_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_sys_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_acquire_cta_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_release_cta_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_dec_gen_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_dec_gen_ul((unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_dec_global_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_dec_global_ul((__attribute__((address_space(1))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_dec_shared_ul' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_dec_shared_ul((__attribute__((address_space(3))) unsigned long *)(unsigned long *)lp, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_and_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_and_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_and_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_and_gen_i' needs target feature sm_70}} + __nvvm_atom_release_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_and_global_i' needs target feature sm_70}} + __nvvm_atom_release_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_and_shared_i' needs target feature sm_70}} + __nvvm_atom_release_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_and_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_and_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_and_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_and_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_and_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_and_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_and_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_and_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_and_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_and_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_and_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_and_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_and_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_and_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_and_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_and_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_and_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_and_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_and_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_and_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_and_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_and_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_and_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_and_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_and_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_and_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_and_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_and_gen_l' needs target feature sm_70}} + __nvvm_atom_release_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_and_global_l' needs target feature sm_70}} + __nvvm_atom_release_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_and_shared_l' needs target feature sm_70}} + __nvvm_atom_release_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_and_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_and_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_and_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_and_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_and_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_and_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_and_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_and_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_and_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_and_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_and_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_and_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_and_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_and_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_and_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_and_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_and_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_and_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_and_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_and_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_and_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_and_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_and_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_and_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_or_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_or_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_or_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_or_gen_i' needs target feature sm_70}} + __nvvm_atom_release_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_or_global_i' needs target feature sm_70}} + __nvvm_atom_release_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_or_shared_i' needs target feature sm_70}} + __nvvm_atom_release_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_or_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_or_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_or_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_or_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_or_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_or_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_or_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_or_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_or_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_or_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_or_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_or_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_or_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_or_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_or_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_or_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_or_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_or_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_or_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_or_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_or_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_or_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_or_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_or_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_or_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_or_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_or_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_or_gen_l' needs target feature sm_70}} + __nvvm_atom_release_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_or_global_l' needs target feature sm_70}} + __nvvm_atom_release_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_or_shared_l' needs target feature sm_70}} + __nvvm_atom_release_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_or_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_or_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_or_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_or_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_or_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_or_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_or_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_or_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_or_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_or_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_or_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_or_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_or_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_or_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_or_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_or_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_or_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_or_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_or_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_or_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_or_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_or_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_or_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_or_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_xor_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_release_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_xor_global_i' needs target feature sm_70}} + __nvvm_atom_release_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_release_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xor_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xor_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_xor_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xor_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xor_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_xor_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xor_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xor_gen_i(ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xor_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xor_global_i((__attribute__((address_space(1))) int *)ip, i); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xor_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xor_shared_i((__attribute__((address_space(3))) int *)ip, i); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_xor_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_release_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_xor_global_l' needs target feature sm_70}} + __nvvm_atom_release_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_release_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xor_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xor_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_xor_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xor_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xor_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_xor_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xor_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xor_gen_l(&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xor_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xor_global_l((__attribute__((address_space(1))) long *)&dl, l); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_xor_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_xor_shared_l((__attribute__((address_space(3))) long *)&dl, l); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.acquire.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.acquire.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cas_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.acquire.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.release.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.release.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cas_global_i' needs target feature sm_70}} + __nvvm_atom_release_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.release.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cas_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.acquire.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.acquire.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_cas_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.acquire.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_sys_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.release.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_release_sys_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.release.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_cas_global_i' needs target feature sm_70}} + __nvvm_atom_release_sys_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.release.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_sys_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_release_sys_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.sys.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.sys.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_cas_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.sys.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.acquire.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.acquire.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_cas_global_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.acquire.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_acquire_cta_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.release.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_release_cta_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.release.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_cas_global_i' needs target feature sm_70}} + __nvvm_atom_release_cta_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.release.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_release_cta_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_release_cta_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.cta.i32.p0i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_cas_gen_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_cas_gen_i(ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.cta.i32.p1i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_cas_global_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_cas_global_i((__attribute__((address_space(1))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.cta.i32.p3i32 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_cas_shared_i' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_cas_shared_i((__attribute__((address_space(3))) int *)ip, i, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.acquire.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.acquire.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cas_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.acquire.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.release.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.release.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cas_global_l' needs target feature sm_70}} + __nvvm_atom_release_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.release.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cas_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.acquire.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.acquire.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_cas_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.acquire.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_sys_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_sys_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.release.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_release_sys_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.release.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_cas_global_l' needs target feature sm_70}} + __nvvm_atom_release_sys_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.release.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_sys_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_release_sys_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.sys.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.sys.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_cas_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.sys.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_sys_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_sys_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.acquire.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.acquire.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_cas_global_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.acquire.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acquire_cta_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_acquire_cta_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.release.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_release_cta_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.release.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_cas_global_l' needs target feature sm_70}} + __nvvm_atom_release_cta_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.release.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_release_cta_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_release_cta_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.cta.i64.p0i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_cas_gen_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_cas_gen_l(&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.cta.i64.p1i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_cas_global_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_cas_global_l((__attribute__((address_space(1))) long *)&dl, l, 0); + + // CHECK_SM70_LP64: call i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.cta.i64.p3i64 + // expected-error@+1 {{'__nvvm_atom_acq_rel_cta_cas_shared_l' needs target feature sm_70}} + __nvvm_atom_acq_rel_cta_cas_shared_l((__attribute__((address_space(3))) long *)&dl, l, 0); + #endif // CHECK: ret diff --git a/llvm/include/llvm/IR/IntrinsicsNVVM.td b/llvm/include/llvm/IR/IntrinsicsNVVM.td --- a/llvm/include/llvm/IR/IntrinsicsNVVM.td +++ b/llvm/include/llvm/IR/IntrinsicsNVVM.td @@ -1224,27 +1224,69 @@ [IntrArgMemOnly, NoCapture>]>; multiclass PTXAtomicWithScope2 { + def "" : SCOPED_ATOMIC2_impl; def _cta : SCOPED_ATOMIC2_impl; def _sys : SCOPED_ATOMIC2_impl; } multiclass PTXAtomicWithScope3 { + def "" : SCOPED_ATOMIC3_impl; def _cta : SCOPED_ATOMIC3_impl; def _sys : SCOPED_ATOMIC3_impl; } + multiclass PTXAtomicWithScope2_sem { + defm "": PTXAtomicWithScope2; + defm _acquire: PTXAtomicWithScope2; + defm _release: PTXAtomicWithScope2; + defm _acq_rel: PTXAtomicWithScope2; + } + multiclass PTXAtomicWithScope3_sem { + defm "": PTXAtomicWithScope3; + defm _acquire: PTXAtomicWithScope3; + defm _release: PTXAtomicWithScope3; + defm _acq_rel: PTXAtomicWithScope3; + } multiclass PTXAtomicWithScope2_fi { - defm _f: PTXAtomicWithScope2; - defm _i: PTXAtomicWithScope2; + defm _f: PTXAtomicWithScope2_sem; + defm _i: PTXAtomicWithScope2_sem; } defm int_nvvm_atomic_add_gen : PTXAtomicWithScope2_fi; - defm int_nvvm_atomic_inc_gen_i : PTXAtomicWithScope2; - defm int_nvvm_atomic_dec_gen_i : PTXAtomicWithScope2; - defm int_nvvm_atomic_exch_gen_i: PTXAtomicWithScope2; - defm int_nvvm_atomic_xor_gen_i : PTXAtomicWithScope2; - defm int_nvvm_atomic_max_gen_i : PTXAtomicWithScope2; - defm int_nvvm_atomic_min_gen_i : PTXAtomicWithScope2; - defm int_nvvm_atomic_or_gen_i : PTXAtomicWithScope2; - defm int_nvvm_atomic_and_gen_i : PTXAtomicWithScope2; - defm int_nvvm_atomic_cas_gen_i : PTXAtomicWithScope3; + defm int_nvvm_atomic_inc_gen_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_dec_gen_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_exch_gen_i: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_xor_gen_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_max_gen_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_max_gen_ui: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_min_gen_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_min_gen_ui: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_or_gen_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_and_gen_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_cas_gen_i : PTXAtomicWithScope3_sem; + + defm int_nvvm_atomic_add_shared : PTXAtomicWithScope2_fi; + defm int_nvvm_atomic_inc_shared_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_dec_shared_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_exch_shared_i: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_xor_shared_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_max_shared_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_max_shared_ui: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_min_shared_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_min_shared_ui: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_or_shared_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_and_shared_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_cas_shared_i : PTXAtomicWithScope3_sem; + + defm int_nvvm_atomic_add_global : PTXAtomicWithScope2_fi; + defm int_nvvm_atomic_inc_global_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_dec_global_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_exch_global_i: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_xor_global_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_max_global_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_max_global_ui: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_min_global_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_min_global_ui: PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_or_global_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_and_global_i : PTXAtomicWithScope2_sem; + defm int_nvvm_atomic_cas_global_i : PTXAtomicWithScope3_sem; // Bar.Sync diff --git a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td --- a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td +++ b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td @@ -112,6 +112,7 @@ def hasAtomAddF64 : Predicate<"Subtarget->hasAtomAddF64()">; def hasAtomScope : Predicate<"Subtarget->hasAtomScope()">; +def hasAtomSemantics : Predicate<"Subtarget->hasAtomSemantics()">; def hasAtomBitwise64 : Predicate<"Subtarget->hasAtomBitwise64()">; def hasAtomMinMax64 : Predicate<"Subtarget->hasAtomMinMax64()">; def hasVote : Predicate<"Subtarget->hasVote()">; diff --git a/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td b/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td --- a/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td +++ b/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td @@ -1758,55 +1758,95 @@ // Constructs instrinsic name and instruction asm strings. multiclass ATOM2N_impl Preds> { - defm : ATOM2P_impl<"atom" # !if(!eq(SpaceStr, "gen"), "", "." # SpaceStr) + defm : ATOM2P_impl<"atom" # !if(!eq(SemStr, "relaxed"), "", "." # SemStr) # !if(!eq(ScopeStr, "gpu"), "", "." # ScopeStr) + # !if(!eq(SpaceStr, "gen"), "", "." # SpaceStr) # "." # OpStr # "." # TypeStr # " \t$result, [$src], $b;", !cast( "int_nvvm_atomic_" # OpStr # "_" # SpaceStr # "_" # IntTypeStr - # !if(!empty(ScopeStr), "", "_" # ScopeStr)), + # !if(!eq(SemStr, "relaxed"), "", "_" # SemStr) + # !if(!eq(ScopeStr, "gpu"), "", "_" # ScopeStr)), regclass, ImmType, Imm, ImmTy, Preds>; } multiclass ATOM3N_impl Preds> { - defm : ATOM3P_impl<"atom" # !if(!eq(SpaceStr, "gen"), "", "." # SpaceStr) + defm : ATOM3P_impl<"atom" # !if(!eq(SemStr, "relaxed"), "", "." # SemStr) # !if(!eq(ScopeStr, "gpu"), "", "." # ScopeStr) + # !if(!eq(SpaceStr, "gen"), "", "." # SpaceStr) # "." # OpStr # "." # TypeStr # " \t$result, [$src], $b, $c;", !cast( "int_nvvm_atomic_" # OpStr # "_" # SpaceStr # "_" # IntTypeStr - # !if(!empty(ScopeStr), "", "_" # ScopeStr)), + # !if(!eq(SemStr, "relaxed"), "", "_" # SemStr) + # !if(!eq(ScopeStr, "gpu"), "", "_" # ScopeStr)), regclass, ImmType, Imm, ImmTy, Preds>; } + +multiclass ATOM2N_spaces_impl Preds> { + defm _gen : ATOM2N_impl; + defm _global : ATOM2N_impl; + defm _shared : ATOM2N_impl; +} +multiclass ATOM3N_spaces_impl Preds> { + defm _gen : ATOM3N_impl; + defm _global : ATOM3N_impl; + defm _shared : ATOM3N_impl; +} + // Constructs variants for different address spaces. -// For now we only need variants for generic space pointers. multiclass ATOM2A_impl Preds> { - defm _gen_ : ATOM2N_impl; + defm _acquire_ : ATOM2N_spaces_impl; + defm _release_ : ATOM2N_spaces_impl; + defm _acq_rel_ : ATOM2N_spaces_impl; } multiclass ATOM3A_impl Preds> { - defm _gen_ : ATOM3N_impl; + defm _acquire_ : ATOM3N_spaces_impl; + defm _release_ : ATOM3N_spaces_impl; + defm _acq_rel_ : ATOM3N_spaces_impl; } // Constructs variants for different scopes of atomic op. multiclass ATOM2S_impl Preds> { - // .gpu scope is default and is currently covered by existing - // atomics w/o explicitly specified scope. + defm "" : ATOM2A_impl; defm _cta : ATOM2A_impl; @@ -1817,8 +1857,9 @@ multiclass ATOM3S_impl Preds> { - // No need to define ".gpu"-scoped atomics. They do the same thing - // as the regular, non-scoped atomics defined elsewhere. + defm "" : ATOM3A_impl; defm _cta : ATOM3A_impl; @@ -1854,16 +1895,17 @@ // atom.{min,max} multiclass ATOM2_minmax_impl { defm _s32 : ATOM2S_impl; - defm _u32 : ATOM2S_impl; + defm _u32 : ATOM2S_impl; defm _s64 : ATOM2S_impl; - defm _u64 : ATOM2S_impl; } // atom.{inc,dec} multiclass ATOM2_incdec_impl { defm _u32 : ATOM2S_impl; + defm _u64 : ATOM2S_impl; } // atom.cas diff --git a/llvm/lib/Target/NVPTX/NVPTXSubtarget.h b/llvm/lib/Target/NVPTX/NVPTXSubtarget.h --- a/llvm/lib/Target/NVPTX/NVPTXSubtarget.h +++ b/llvm/lib/Target/NVPTX/NVPTXSubtarget.h @@ -70,6 +70,7 @@ bool hasAtomAddF64() const { return SmVersion >= 60; } bool hasAtomScope() const { return SmVersion >= 60; } + bool hasAtomSemantics() const { return SmVersion >= 70; } bool hasAtomBitwise64() const { return SmVersion >= 32; } bool hasAtomMinMax64() const { return SmVersion >= 32; } bool hasLDG() const { return SmVersion >= 32; } diff --git a/llvm/test/CodeGen/NVPTX/atomics-with-semantics.ll b/llvm/test/CodeGen/NVPTX/atomics-with-semantics.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/NVPTX/atomics-with-semantics.ll @@ -0,0 +1,2852 @@ +; RUN: llc < %s -march=nvptx -mcpu=sm_70 | FileCheck %s +; RUN: llc < %s -march=nvptx64 -mcpu=sm_70 | FileCheck %s + +; CHECK-LABEL: .func test_atomics_scope( +define void @test_atomics_scope(float* %fp, float %f, + double* %dfp, double %df, + i32* %ip, i32 %i, + i32* %uip, i32 %ui, + i64* %llp, i64 %ll, + float addrspace(1)* %fp1, + double addrspace(1)* %dfp1, + i32 addrspace(1)* %ip1, + i32 addrspace(1)* %uip1, + i64 addrspace(1)* %llp1, + float addrspace(3)* %fp3, + double addrspace(3)* %dfp3, + i32 addrspace(3)* %ip3, + i32 addrspace(3)* %uip3, + i64 addrspace(3)* %llp3) #0 { +entry: + + + ; CHECK: atom.acquire.add.s32 + %tmp0 = tail call i32 @llvm.nvvm.atomic.add.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.add.s32 + %tmp1 = tail call i32 @llvm.nvvm.atomic.add.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.add.s32 + %tmp2 = tail call i32 @llvm.nvvm.atomic.add.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.add.s32 + %tmp3 = tail call i32 @llvm.nvvm.atomic.add.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.add.s32 + %tmp4 = tail call i32 @llvm.nvvm.atomic.add.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.add.s32 + %tmp5 = tail call i32 @llvm.nvvm.atomic.add.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.add.s32 + %tmp6 = tail call i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.add.s32 + %tmp7 = tail call i32 @llvm.nvvm.atomic.add.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.add.s32 + %tmp8 = tail call i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.add.s32 + %tmp9 = tail call i32 @llvm.nvvm.atomic.add.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.add.s32 + %tmp10 = tail call i32 @llvm.nvvm.atomic.add.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.add.s32 + %tmp11 = tail call i32 @llvm.nvvm.atomic.add.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.add.s32 + %tmp12 = tail call i32 @llvm.nvvm.atomic.add.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.add.s32 + %tmp13 = tail call i32 @llvm.nvvm.atomic.add.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.add.s32 + %tmp14 = tail call i32 @llvm.nvvm.atomic.add.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.add.s32 + %tmp15 = tail call i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.add.s32 + %tmp16 = tail call i32 @llvm.nvvm.atomic.add.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.add.s32 + %tmp17 = tail call i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.add.s32 + %tmp18 = tail call i32 @llvm.nvvm.atomic.add.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.add.s32 + %tmp19 = tail call i32 @llvm.nvvm.atomic.add.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.add.s32 + %tmp20 = tail call i32 @llvm.nvvm.atomic.add.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.add.s32 + %tmp21 = tail call i32 @llvm.nvvm.atomic.add.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.add.s32 + %tmp22 = tail call i32 @llvm.nvvm.atomic.add.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.add.s32 + %tmp23 = tail call i32 @llvm.nvvm.atomic.add.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.add.s32 + %tmp24 = tail call i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.add.s32 + %tmp25 = tail call i32 @llvm.nvvm.atomic.add.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.add.s32 + %tmp26 = tail call i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.add.u64 + %tmp27 = tail call i64 @llvm.nvvm.atomic.add.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.add.u64 + %tmp28 = tail call i64 @llvm.nvvm.atomic.add.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.add.u64 + %tmp29 = tail call i64 @llvm.nvvm.atomic.add.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.add.u64 + %tmp30 = tail call i64 @llvm.nvvm.atomic.add.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.add.u64 + %tmp31 = tail call i64 @llvm.nvvm.atomic.add.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.add.u64 + %tmp32 = tail call i64 @llvm.nvvm.atomic.add.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.add.u64 + %tmp33 = tail call i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.add.u64 + %tmp34 = tail call i64 @llvm.nvvm.atomic.add.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.add.u64 + %tmp35 = tail call i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.add.u64 + %tmp36 = tail call i64 @llvm.nvvm.atomic.add.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.add.u64 + %tmp37 = tail call i64 @llvm.nvvm.atomic.add.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.add.u64 + %tmp38 = tail call i64 @llvm.nvvm.atomic.add.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.add.u64 + %tmp39 = tail call i64 @llvm.nvvm.atomic.add.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.add.u64 + %tmp40 = tail call i64 @llvm.nvvm.atomic.add.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.add.u64 + %tmp41 = tail call i64 @llvm.nvvm.atomic.add.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.add.u64 + %tmp42 = tail call i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.add.u64 + %tmp43 = tail call i64 @llvm.nvvm.atomic.add.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.add.u64 + %tmp44 = tail call i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.add.u64 + %tmp45 = tail call i64 @llvm.nvvm.atomic.add.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.add.u64 + %tmp46 = tail call i64 @llvm.nvvm.atomic.add.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.add.u64 + %tmp47 = tail call i64 @llvm.nvvm.atomic.add.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.add.u64 + %tmp48 = tail call i64 @llvm.nvvm.atomic.add.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.add.u64 + %tmp49 = tail call i64 @llvm.nvvm.atomic.add.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.add.u64 + %tmp50 = tail call i64 @llvm.nvvm.atomic.add.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.add.u64 + %tmp51 = tail call i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.add.u64 + %tmp52 = tail call i64 @llvm.nvvm.atomic.add.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.add.u64 + %tmp53 = tail call i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.add.f32 + %tmp54 = tail call float @llvm.nvvm.atomic.add.gen.f.acquire.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.acquire.global.add.f32 + %tmp55 = tail call float @llvm.nvvm.atomic.add.global.f.acquire.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.acquire.shared.add.f32 + %tmp56 = tail call float @llvm.nvvm.atomic.add.shared.f.acquire.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.release.add.f32 + %tmp57 = tail call float @llvm.nvvm.atomic.add.gen.f.release.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.release.global.add.f32 + %tmp58 = tail call float @llvm.nvvm.atomic.add.global.f.release.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.release.shared.add.f32 + %tmp59 = tail call float @llvm.nvvm.atomic.add.shared.f.release.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.acq_rel.add.f32 + %tmp60 = tail call float @llvm.nvvm.atomic.add.gen.f.acq.rel.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.acq_rel.global.add.f32 + %tmp61 = tail call float @llvm.nvvm.atomic.add.global.f.acq.rel.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.acq_rel.shared.add.f32 + %tmp62 = tail call float @llvm.nvvm.atomic.add.shared.f.acq.rel.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.acquire.sys.add.f32 + %tmp63 = tail call float @llvm.nvvm.atomic.add.gen.f.acquire.sys.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.acquire.sys.global.add.f32 + %tmp64 = tail call float @llvm.nvvm.atomic.add.global.f.acquire.sys.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.acquire.sys.shared.add.f32 + %tmp65 = tail call float @llvm.nvvm.atomic.add.shared.f.acquire.sys.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.release.sys.add.f32 + %tmp66 = tail call float @llvm.nvvm.atomic.add.gen.f.release.sys.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.release.sys.global.add.f32 + %tmp67 = tail call float @llvm.nvvm.atomic.add.global.f.release.sys.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.release.sys.shared.add.f32 + %tmp68 = tail call float @llvm.nvvm.atomic.add.shared.f.release.sys.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.acq_rel.sys.add.f32 + %tmp69 = tail call float @llvm.nvvm.atomic.add.gen.f.acq.rel.sys.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.acq_rel.sys.global.add.f32 + %tmp70 = tail call float @llvm.nvvm.atomic.add.global.f.acq.rel.sys.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.acq_rel.sys.shared.add.f32 + %tmp71 = tail call float @llvm.nvvm.atomic.add.shared.f.acq.rel.sys.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.acquire.cta.add.f32 + %tmp72 = tail call float @llvm.nvvm.atomic.add.gen.f.acquire.cta.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.acquire.cta.global.add.f32 + %tmp73 = tail call float @llvm.nvvm.atomic.add.global.f.acquire.cta.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.acquire.cta.shared.add.f32 + %tmp74 = tail call float @llvm.nvvm.atomic.add.shared.f.acquire.cta.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.release.cta.add.f32 + %tmp75 = tail call float @llvm.nvvm.atomic.add.gen.f.release.cta.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.release.cta.global.add.f32 + %tmp76 = tail call float @llvm.nvvm.atomic.add.global.f.release.cta.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.release.cta.shared.add.f32 + %tmp77 = tail call float @llvm.nvvm.atomic.add.shared.f.release.cta.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.acq_rel.cta.add.f32 + %tmp78 = tail call float @llvm.nvvm.atomic.add.gen.f.acq.rel.cta.f32.p0f32(float* %fp, float %f); + + ; CHECK: atom.acq_rel.cta.global.add.f32 + %tmp79 = tail call float @llvm.nvvm.atomic.add.global.f.acq.rel.cta.f32.p1f32(float addrspace(1)* %fp1, float %f); + + ; CHECK: atom.acq_rel.cta.shared.add.f32 + %tmp80 = tail call float @llvm.nvvm.atomic.add.shared.f.acq.rel.cta.f32.p3f32(float addrspace(3)* %fp3, float %f); + + ; CHECK: atom.acquire.add.f64 + %tmp81 = tail call double @llvm.nvvm.atomic.add.gen.f.acquire.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.acquire.global.add.f64 + %tmp82 = tail call double @llvm.nvvm.atomic.add.global.f.acquire.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.acquire.shared.add.f64 + %tmp83 = tail call double @llvm.nvvm.atomic.add.shared.f.acquire.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.release.add.f64 + %tmp84 = tail call double @llvm.nvvm.atomic.add.gen.f.release.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.release.global.add.f64 + %tmp85 = tail call double @llvm.nvvm.atomic.add.global.f.release.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.release.shared.add.f64 + %tmp86 = tail call double @llvm.nvvm.atomic.add.shared.f.release.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.acq_rel.add.f64 + %tmp87 = tail call double @llvm.nvvm.atomic.add.gen.f.acq.rel.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.acq_rel.global.add.f64 + %tmp88 = tail call double @llvm.nvvm.atomic.add.global.f.acq.rel.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.acq_rel.shared.add.f64 + %tmp89 = tail call double @llvm.nvvm.atomic.add.shared.f.acq.rel.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.acquire.sys.add.f64 + %tmp90 = tail call double @llvm.nvvm.atomic.add.gen.f.acquire.sys.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.acquire.sys.global.add.f64 + %tmp91 = tail call double @llvm.nvvm.atomic.add.global.f.acquire.sys.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.acquire.sys.shared.add.f64 + %tmp92 = tail call double @llvm.nvvm.atomic.add.shared.f.acquire.sys.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.release.sys.add.f64 + %tmp93 = tail call double @llvm.nvvm.atomic.add.gen.f.release.sys.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.release.sys.global.add.f64 + %tmp94 = tail call double @llvm.nvvm.atomic.add.global.f.release.sys.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.release.sys.shared.add.f64 + %tmp95 = tail call double @llvm.nvvm.atomic.add.shared.f.release.sys.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.acq_rel.sys.add.f64 + %tmp96 = tail call double @llvm.nvvm.atomic.add.gen.f.acq.rel.sys.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.acq_rel.sys.global.add.f64 + %tmp97 = tail call double @llvm.nvvm.atomic.add.global.f.acq.rel.sys.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.acq_rel.sys.shared.add.f64 + %tmp98 = tail call double @llvm.nvvm.atomic.add.shared.f.acq.rel.sys.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.acquire.cta.add.f64 + %tmp99 = tail call double @llvm.nvvm.atomic.add.gen.f.acquire.cta.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.acquire.cta.global.add.f64 + %tmp100 = tail call double @llvm.nvvm.atomic.add.global.f.acquire.cta.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.acquire.cta.shared.add.f64 + %tmp101 = tail call double @llvm.nvvm.atomic.add.shared.f.acquire.cta.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.release.cta.add.f64 + %tmp102 = tail call double @llvm.nvvm.atomic.add.gen.f.release.cta.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.release.cta.global.add.f64 + %tmp103 = tail call double @llvm.nvvm.atomic.add.global.f.release.cta.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.release.cta.shared.add.f64 + %tmp104 = tail call double @llvm.nvvm.atomic.add.shared.f.release.cta.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.acq_rel.cta.add.f64 + %tmp105 = tail call double @llvm.nvvm.atomic.add.gen.f.acq.rel.cta.f64.p0f64(double* %dfp, double %df); + + ; CHECK: atom.acq_rel.cta.global.add.f64 + %tmp106 = tail call double @llvm.nvvm.atomic.add.global.f.acq.rel.cta.f64.p1f64(double addrspace(1)* %dfp1, double %df); + + ; CHECK: atom.acq_rel.cta.shared.add.f64 + %tmp107 = tail call double @llvm.nvvm.atomic.add.shared.f.acq.rel.cta.f64.p3f64(double addrspace(3)* %dfp3, double %df); + + ; CHECK: atom.acquire.exch.b32 + %tmp108 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.exch.b32 + %tmp109 = tail call i32 @llvm.nvvm.atomic.exch.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.exch.b32 + %tmp110 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.exch.b32 + %tmp111 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.exch.b32 + %tmp112 = tail call i32 @llvm.nvvm.atomic.exch.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.exch.b32 + %tmp113 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.exch.b32 + %tmp114 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.exch.b32 + %tmp115 = tail call i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.exch.b32 + %tmp116 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.exch.b32 + %tmp117 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.exch.b32 + %tmp118 = tail call i32 @llvm.nvvm.atomic.exch.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.exch.b32 + %tmp119 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.exch.b32 + %tmp120 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.exch.b32 + %tmp121 = tail call i32 @llvm.nvvm.atomic.exch.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.exch.b32 + %tmp122 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.exch.b32 + %tmp123 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.exch.b32 + %tmp124 = tail call i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.exch.b32 + %tmp125 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.exch.b32 + %tmp126 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.exch.b32 + %tmp127 = tail call i32 @llvm.nvvm.atomic.exch.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.exch.b32 + %tmp128 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.exch.b32 + %tmp129 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.exch.b32 + %tmp130 = tail call i32 @llvm.nvvm.atomic.exch.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.exch.b32 + %tmp131 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.exch.b32 + %tmp132 = tail call i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.exch.b32 + %tmp133 = tail call i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.exch.b32 + %tmp134 = tail call i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.exch.b64 + %tmp135 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.exch.b64 + %tmp136 = tail call i64 @llvm.nvvm.atomic.exch.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.exch.b64 + %tmp137 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.exch.b64 + %tmp138 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.exch.b64 + %tmp139 = tail call i64 @llvm.nvvm.atomic.exch.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.exch.b64 + %tmp140 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.exch.b64 + %tmp141 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.exch.b64 + %tmp142 = tail call i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.exch.b64 + %tmp143 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.exch.b64 + %tmp144 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.exch.b64 + %tmp145 = tail call i64 @llvm.nvvm.atomic.exch.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.exch.b64 + %tmp146 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.exch.b64 + %tmp147 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.exch.b64 + %tmp148 = tail call i64 @llvm.nvvm.atomic.exch.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.exch.b64 + %tmp149 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.exch.b64 + %tmp150 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.exch.b64 + %tmp151 = tail call i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.exch.b64 + %tmp152 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.exch.b64 + %tmp153 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.exch.b64 + %tmp154 = tail call i64 @llvm.nvvm.atomic.exch.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.exch.b64 + %tmp155 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.exch.b64 + %tmp156 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.exch.b64 + %tmp157 = tail call i64 @llvm.nvvm.atomic.exch.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.exch.b64 + %tmp158 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.exch.b64 + %tmp159 = tail call i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.exch.b64 + %tmp160 = tail call i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.exch.b64 + %tmp161 = tail call i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.max.s32 + %tmp162 = tail call i32 @llvm.nvvm.atomic.max.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.max.s32 + %tmp163 = tail call i32 @llvm.nvvm.atomic.max.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.max.s32 + %tmp164 = tail call i32 @llvm.nvvm.atomic.max.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.max.s32 + %tmp165 = tail call i32 @llvm.nvvm.atomic.max.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.max.s32 + %tmp166 = tail call i32 @llvm.nvvm.atomic.max.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.max.s32 + %tmp167 = tail call i32 @llvm.nvvm.atomic.max.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.max.s32 + %tmp168 = tail call i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.max.s32 + %tmp169 = tail call i32 @llvm.nvvm.atomic.max.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.max.s32 + %tmp170 = tail call i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.max.s32 + %tmp171 = tail call i32 @llvm.nvvm.atomic.max.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.max.s32 + %tmp172 = tail call i32 @llvm.nvvm.atomic.max.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.max.s32 + %tmp173 = tail call i32 @llvm.nvvm.atomic.max.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.max.s32 + %tmp174 = tail call i32 @llvm.nvvm.atomic.max.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.max.s32 + %tmp175 = tail call i32 @llvm.nvvm.atomic.max.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.max.s32 + %tmp176 = tail call i32 @llvm.nvvm.atomic.max.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.max.s32 + %tmp177 = tail call i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.max.s32 + %tmp178 = tail call i32 @llvm.nvvm.atomic.max.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.max.s32 + %tmp179 = tail call i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.max.s32 + %tmp180 = tail call i32 @llvm.nvvm.atomic.max.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.max.s32 + %tmp181 = tail call i32 @llvm.nvvm.atomic.max.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.max.s32 + %tmp182 = tail call i32 @llvm.nvvm.atomic.max.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.max.s32 + %tmp183 = tail call i32 @llvm.nvvm.atomic.max.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.max.s32 + %tmp184 = tail call i32 @llvm.nvvm.atomic.max.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.max.s32 + %tmp185 = tail call i32 @llvm.nvvm.atomic.max.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.max.s32 + %tmp186 = tail call i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.max.s32 + %tmp187 = tail call i32 @llvm.nvvm.atomic.max.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.max.s32 + %tmp188 = tail call i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.max.s64 + %tmp189 = tail call i64 @llvm.nvvm.atomic.max.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.max.s64 + %tmp190 = tail call i64 @llvm.nvvm.atomic.max.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.max.s64 + %tmp191 = tail call i64 @llvm.nvvm.atomic.max.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.max.s64 + %tmp192 = tail call i64 @llvm.nvvm.atomic.max.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.max.s64 + %tmp193 = tail call i64 @llvm.nvvm.atomic.max.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.max.s64 + %tmp194 = tail call i64 @llvm.nvvm.atomic.max.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.max.s64 + %tmp195 = tail call i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.max.s64 + %tmp196 = tail call i64 @llvm.nvvm.atomic.max.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.max.s64 + %tmp197 = tail call i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.max.s64 + %tmp198 = tail call i64 @llvm.nvvm.atomic.max.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.max.s64 + %tmp199 = tail call i64 @llvm.nvvm.atomic.max.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.max.s64 + %tmp200 = tail call i64 @llvm.nvvm.atomic.max.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.max.s64 + %tmp201 = tail call i64 @llvm.nvvm.atomic.max.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.max.s64 + %tmp202 = tail call i64 @llvm.nvvm.atomic.max.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.max.s64 + %tmp203 = tail call i64 @llvm.nvvm.atomic.max.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.max.s64 + %tmp204 = tail call i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.max.s64 + %tmp205 = tail call i64 @llvm.nvvm.atomic.max.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.max.s64 + %tmp206 = tail call i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.max.s64 + %tmp207 = tail call i64 @llvm.nvvm.atomic.max.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.max.s64 + %tmp208 = tail call i64 @llvm.nvvm.atomic.max.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.max.s64 + %tmp209 = tail call i64 @llvm.nvvm.atomic.max.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.max.s64 + %tmp210 = tail call i64 @llvm.nvvm.atomic.max.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.max.s64 + %tmp211 = tail call i64 @llvm.nvvm.atomic.max.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.max.s64 + %tmp212 = tail call i64 @llvm.nvvm.atomic.max.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.max.s64 + %tmp213 = tail call i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.max.s64 + %tmp214 = tail call i64 @llvm.nvvm.atomic.max.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.max.s64 + %tmp215 = tail call i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.max.u32 + %tmp216 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.max.u32 + %tmp217 = tail call i32 @llvm.nvvm.atomic.max.global.ui.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.max.u32 + %tmp218 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.max.u32 + %tmp219 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.max.u32 + %tmp220 = tail call i32 @llvm.nvvm.atomic.max.global.ui.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.max.u32 + %tmp221 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.max.u32 + %tmp222 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.max.u32 + %tmp223 = tail call i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.max.u32 + %tmp224 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.max.u32 + %tmp225 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.max.u32 + %tmp226 = tail call i32 @llvm.nvvm.atomic.max.global.ui.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.max.u32 + %tmp227 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.max.u32 + %tmp228 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.max.u32 + %tmp229 = tail call i32 @llvm.nvvm.atomic.max.global.ui.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.max.u32 + %tmp230 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.max.u32 + %tmp231 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.max.u32 + %tmp232 = tail call i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.max.u32 + %tmp233 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.max.u32 + %tmp234 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.max.u32 + %tmp235 = tail call i32 @llvm.nvvm.atomic.max.global.ui.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.max.u32 + %tmp236 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.max.u32 + %tmp237 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.max.u32 + %tmp238 = tail call i32 @llvm.nvvm.atomic.max.global.ui.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.max.u32 + %tmp239 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.max.u32 + %tmp240 = tail call i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.max.u32 + %tmp241 = tail call i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.max.u32 + %tmp242 = tail call i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.max.u64 + %tmp243 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.max.u64 + %tmp244 = tail call i64 @llvm.nvvm.atomic.max.global.ui.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.max.u64 + %tmp245 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.max.u64 + %tmp246 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.max.u64 + %tmp247 = tail call i64 @llvm.nvvm.atomic.max.global.ui.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.max.u64 + %tmp248 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.max.u64 + %tmp249 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.max.u64 + %tmp250 = tail call i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.max.u64 + %tmp251 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.max.u64 + %tmp252 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.max.u64 + %tmp253 = tail call i64 @llvm.nvvm.atomic.max.global.ui.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.max.u64 + %tmp254 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.max.u64 + %tmp255 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.max.u64 + %tmp256 = tail call i64 @llvm.nvvm.atomic.max.global.ui.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.max.u64 + %tmp257 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.max.u64 + %tmp258 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.max.u64 + %tmp259 = tail call i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.max.u64 + %tmp260 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.max.u64 + %tmp261 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.max.u64 + %tmp262 = tail call i64 @llvm.nvvm.atomic.max.global.ui.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.max.u64 + %tmp263 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.max.u64 + %tmp264 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.max.u64 + %tmp265 = tail call i64 @llvm.nvvm.atomic.max.global.ui.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.max.u64 + %tmp266 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.max.u64 + %tmp267 = tail call i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.max.u64 + %tmp268 = tail call i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.max.u64 + %tmp269 = tail call i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.min.s32 + %tmp270 = tail call i32 @llvm.nvvm.atomic.min.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.min.s32 + %tmp271 = tail call i32 @llvm.nvvm.atomic.min.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.min.s32 + %tmp272 = tail call i32 @llvm.nvvm.atomic.min.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.min.s32 + %tmp273 = tail call i32 @llvm.nvvm.atomic.min.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.min.s32 + %tmp274 = tail call i32 @llvm.nvvm.atomic.min.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.min.s32 + %tmp275 = tail call i32 @llvm.nvvm.atomic.min.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.min.s32 + %tmp276 = tail call i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.min.s32 + %tmp277 = tail call i32 @llvm.nvvm.atomic.min.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.min.s32 + %tmp278 = tail call i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.min.s32 + %tmp279 = tail call i32 @llvm.nvvm.atomic.min.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.min.s32 + %tmp280 = tail call i32 @llvm.nvvm.atomic.min.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.min.s32 + %tmp281 = tail call i32 @llvm.nvvm.atomic.min.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.min.s32 + %tmp282 = tail call i32 @llvm.nvvm.atomic.min.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.min.s32 + %tmp283 = tail call i32 @llvm.nvvm.atomic.min.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.min.s32 + %tmp284 = tail call i32 @llvm.nvvm.atomic.min.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.min.s32 + %tmp285 = tail call i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.min.s32 + %tmp286 = tail call i32 @llvm.nvvm.atomic.min.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.min.s32 + %tmp287 = tail call i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.min.s32 + %tmp288 = tail call i32 @llvm.nvvm.atomic.min.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.min.s32 + %tmp289 = tail call i32 @llvm.nvvm.atomic.min.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.min.s32 + %tmp290 = tail call i32 @llvm.nvvm.atomic.min.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.min.s32 + %tmp291 = tail call i32 @llvm.nvvm.atomic.min.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.min.s32 + %tmp292 = tail call i32 @llvm.nvvm.atomic.min.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.min.s32 + %tmp293 = tail call i32 @llvm.nvvm.atomic.min.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.min.s32 + %tmp294 = tail call i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.min.s32 + %tmp295 = tail call i32 @llvm.nvvm.atomic.min.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.min.s32 + %tmp296 = tail call i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.min.s64 + %tmp297 = tail call i64 @llvm.nvvm.atomic.min.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.min.s64 + %tmp298 = tail call i64 @llvm.nvvm.atomic.min.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.min.s64 + %tmp299 = tail call i64 @llvm.nvvm.atomic.min.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.min.s64 + %tmp300 = tail call i64 @llvm.nvvm.atomic.min.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.min.s64 + %tmp301 = tail call i64 @llvm.nvvm.atomic.min.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.min.s64 + %tmp302 = tail call i64 @llvm.nvvm.atomic.min.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.min.s64 + %tmp303 = tail call i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.min.s64 + %tmp304 = tail call i64 @llvm.nvvm.atomic.min.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.min.s64 + %tmp305 = tail call i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.min.s64 + %tmp306 = tail call i64 @llvm.nvvm.atomic.min.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.min.s64 + %tmp307 = tail call i64 @llvm.nvvm.atomic.min.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.min.s64 + %tmp308 = tail call i64 @llvm.nvvm.atomic.min.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.min.s64 + %tmp309 = tail call i64 @llvm.nvvm.atomic.min.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.min.s64 + %tmp310 = tail call i64 @llvm.nvvm.atomic.min.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.min.s64 + %tmp311 = tail call i64 @llvm.nvvm.atomic.min.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.min.s64 + %tmp312 = tail call i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.min.s64 + %tmp313 = tail call i64 @llvm.nvvm.atomic.min.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.min.s64 + %tmp314 = tail call i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.min.s64 + %tmp315 = tail call i64 @llvm.nvvm.atomic.min.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.min.s64 + %tmp316 = tail call i64 @llvm.nvvm.atomic.min.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.min.s64 + %tmp317 = tail call i64 @llvm.nvvm.atomic.min.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.min.s64 + %tmp318 = tail call i64 @llvm.nvvm.atomic.min.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.min.s64 + %tmp319 = tail call i64 @llvm.nvvm.atomic.min.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.min.s64 + %tmp320 = tail call i64 @llvm.nvvm.atomic.min.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.min.s64 + %tmp321 = tail call i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.min.s64 + %tmp322 = tail call i64 @llvm.nvvm.atomic.min.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.min.s64 + %tmp323 = tail call i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.min.u32 + %tmp324 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.min.u32 + %tmp325 = tail call i32 @llvm.nvvm.atomic.min.global.ui.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.min.u32 + %tmp326 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.min.u32 + %tmp327 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.min.u32 + %tmp328 = tail call i32 @llvm.nvvm.atomic.min.global.ui.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.min.u32 + %tmp329 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.min.u32 + %tmp330 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.min.u32 + %tmp331 = tail call i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.min.u32 + %tmp332 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.min.u32 + %tmp333 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.min.u32 + %tmp334 = tail call i32 @llvm.nvvm.atomic.min.global.ui.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.min.u32 + %tmp335 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.min.u32 + %tmp336 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.min.u32 + %tmp337 = tail call i32 @llvm.nvvm.atomic.min.global.ui.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.min.u32 + %tmp338 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.min.u32 + %tmp339 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.min.u32 + %tmp340 = tail call i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.min.u32 + %tmp341 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.min.u32 + %tmp342 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.min.u32 + %tmp343 = tail call i32 @llvm.nvvm.atomic.min.global.ui.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.min.u32 + %tmp344 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.min.u32 + %tmp345 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.min.u32 + %tmp346 = tail call i32 @llvm.nvvm.atomic.min.global.ui.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.min.u32 + %tmp347 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.min.u32 + %tmp348 = tail call i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.min.u32 + %tmp349 = tail call i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.min.u32 + %tmp350 = tail call i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.min.u64 + %tmp351 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.min.u64 + %tmp352 = tail call i64 @llvm.nvvm.atomic.min.global.ui.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.min.u64 + %tmp353 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.min.u64 + %tmp354 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.min.u64 + %tmp355 = tail call i64 @llvm.nvvm.atomic.min.global.ui.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.min.u64 + %tmp356 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.min.u64 + %tmp357 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.min.u64 + %tmp358 = tail call i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.min.u64 + %tmp359 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.min.u64 + %tmp360 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.min.u64 + %tmp361 = tail call i64 @llvm.nvvm.atomic.min.global.ui.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.min.u64 + %tmp362 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.min.u64 + %tmp363 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.min.u64 + %tmp364 = tail call i64 @llvm.nvvm.atomic.min.global.ui.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.min.u64 + %tmp365 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.min.u64 + %tmp366 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.min.u64 + %tmp367 = tail call i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.min.u64 + %tmp368 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.min.u64 + %tmp369 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.min.u64 + %tmp370 = tail call i64 @llvm.nvvm.atomic.min.global.ui.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.min.u64 + %tmp371 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.min.u64 + %tmp372 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.min.u64 + %tmp373 = tail call i64 @llvm.nvvm.atomic.min.global.ui.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.min.u64 + %tmp374 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.min.u64 + %tmp375 = tail call i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.min.u64 + %tmp376 = tail call i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.min.u64 + %tmp377 = tail call i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.inc.u32 + %tmp378 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.inc.u32 + %tmp379 = tail call i32 @llvm.nvvm.atomic.inc.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.inc.u32 + %tmp380 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.inc.u32 + %tmp381 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.inc.u32 + %tmp382 = tail call i32 @llvm.nvvm.atomic.inc.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.inc.u32 + %tmp383 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.inc.u32 + %tmp384 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.inc.u32 + %tmp385 = tail call i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.inc.u32 + %tmp386 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.inc.u32 + %tmp387 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.inc.u32 + %tmp388 = tail call i32 @llvm.nvvm.atomic.inc.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.inc.u32 + %tmp389 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.inc.u32 + %tmp390 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.inc.u32 + %tmp391 = tail call i32 @llvm.nvvm.atomic.inc.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.inc.u32 + %tmp392 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.inc.u32 + %tmp393 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.inc.u32 + %tmp394 = tail call i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.inc.u32 + %tmp395 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.inc.u32 + %tmp396 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.inc.u32 + %tmp397 = tail call i32 @llvm.nvvm.atomic.inc.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.inc.u32 + %tmp398 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.inc.u32 + %tmp399 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.inc.u32 + %tmp400 = tail call i32 @llvm.nvvm.atomic.inc.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.inc.u32 + %tmp401 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.inc.u32 + %tmp402 = tail call i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.inc.u32 + %tmp403 = tail call i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.inc.u32 + %tmp404 = tail call i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.inc.u64 + %tmp405 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.inc.u64 + %tmp406 = tail call i64 @llvm.nvvm.atomic.inc.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.inc.u64 + %tmp407 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.inc.u64 + %tmp408 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.inc.u64 + %tmp409 = tail call i64 @llvm.nvvm.atomic.inc.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.inc.u64 + %tmp410 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.inc.u64 + %tmp411 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.inc.u64 + %tmp412 = tail call i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.inc.u64 + %tmp413 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.inc.u64 + %tmp414 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.inc.u64 + %tmp415 = tail call i64 @llvm.nvvm.atomic.inc.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.inc.u64 + %tmp416 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.inc.u64 + %tmp417 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.inc.u64 + %tmp418 = tail call i64 @llvm.nvvm.atomic.inc.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.inc.u64 + %tmp419 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.inc.u64 + %tmp420 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.inc.u64 + %tmp421 = tail call i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.inc.u64 + %tmp422 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.inc.u64 + %tmp423 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.inc.u64 + %tmp424 = tail call i64 @llvm.nvvm.atomic.inc.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.inc.u64 + %tmp425 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.inc.u64 + %tmp426 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.inc.u64 + %tmp427 = tail call i64 @llvm.nvvm.atomic.inc.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.inc.u64 + %tmp428 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.inc.u64 + %tmp429 = tail call i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.inc.u64 + %tmp430 = tail call i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.inc.u64 + %tmp431 = tail call i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.dec.u32 + %tmp432 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.dec.u32 + %tmp433 = tail call i32 @llvm.nvvm.atomic.dec.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.dec.u32 + %tmp434 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.dec.u32 + %tmp435 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.dec.u32 + %tmp436 = tail call i32 @llvm.nvvm.atomic.dec.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.dec.u32 + %tmp437 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.dec.u32 + %tmp438 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.dec.u32 + %tmp439 = tail call i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.dec.u32 + %tmp440 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.dec.u32 + %tmp441 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.dec.u32 + %tmp442 = tail call i32 @llvm.nvvm.atomic.dec.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.dec.u32 + %tmp443 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.dec.u32 + %tmp444 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.dec.u32 + %tmp445 = tail call i32 @llvm.nvvm.atomic.dec.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.dec.u32 + %tmp446 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.dec.u32 + %tmp447 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.dec.u32 + %tmp448 = tail call i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.dec.u32 + %tmp449 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.dec.u32 + %tmp450 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.dec.u32 + %tmp451 = tail call i32 @llvm.nvvm.atomic.dec.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.dec.u32 + %tmp452 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.dec.u32 + %tmp453 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.dec.u32 + %tmp454 = tail call i32 @llvm.nvvm.atomic.dec.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.dec.u32 + %tmp455 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.dec.u32 + %tmp456 = tail call i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.dec.u32 + %tmp457 = tail call i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.dec.u32 + %tmp458 = tail call i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.dec.u64 + %tmp459 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.dec.u64 + %tmp460 = tail call i64 @llvm.nvvm.atomic.dec.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.dec.u64 + %tmp461 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.dec.u64 + %tmp462 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.dec.u64 + %tmp463 = tail call i64 @llvm.nvvm.atomic.dec.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.dec.u64 + %tmp464 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.dec.u64 + %tmp465 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.dec.u64 + %tmp466 = tail call i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.dec.u64 + %tmp467 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.dec.u64 + %tmp468 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.dec.u64 + %tmp469 = tail call i64 @llvm.nvvm.atomic.dec.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.dec.u64 + %tmp470 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.dec.u64 + %tmp471 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.dec.u64 + %tmp472 = tail call i64 @llvm.nvvm.atomic.dec.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.dec.u64 + %tmp473 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.dec.u64 + %tmp474 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.dec.u64 + %tmp475 = tail call i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.dec.u64 + %tmp476 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.dec.u64 + %tmp477 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.dec.u64 + %tmp478 = tail call i64 @llvm.nvvm.atomic.dec.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.dec.u64 + %tmp479 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.dec.u64 + %tmp480 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.dec.u64 + %tmp481 = tail call i64 @llvm.nvvm.atomic.dec.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.dec.u64 + %tmp482 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.dec.u64 + %tmp483 = tail call i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.dec.u64 + %tmp484 = tail call i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.dec.u64 + %tmp485 = tail call i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.and.b32 + %tmp486 = tail call i32 @llvm.nvvm.atomic.and.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.and.b32 + %tmp487 = tail call i32 @llvm.nvvm.atomic.and.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.and.b32 + %tmp488 = tail call i32 @llvm.nvvm.atomic.and.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.and.b32 + %tmp489 = tail call i32 @llvm.nvvm.atomic.and.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.and.b32 + %tmp490 = tail call i32 @llvm.nvvm.atomic.and.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.and.b32 + %tmp491 = tail call i32 @llvm.nvvm.atomic.and.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.and.b32 + %tmp492 = tail call i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.and.b32 + %tmp493 = tail call i32 @llvm.nvvm.atomic.and.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.and.b32 + %tmp494 = tail call i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.and.b32 + %tmp495 = tail call i32 @llvm.nvvm.atomic.and.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.and.b32 + %tmp496 = tail call i32 @llvm.nvvm.atomic.and.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.and.b32 + %tmp497 = tail call i32 @llvm.nvvm.atomic.and.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.and.b32 + %tmp498 = tail call i32 @llvm.nvvm.atomic.and.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.and.b32 + %tmp499 = tail call i32 @llvm.nvvm.atomic.and.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.and.b32 + %tmp500 = tail call i32 @llvm.nvvm.atomic.and.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.and.b32 + %tmp501 = tail call i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.and.b32 + %tmp502 = tail call i32 @llvm.nvvm.atomic.and.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.and.b32 + %tmp503 = tail call i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.and.b32 + %tmp504 = tail call i32 @llvm.nvvm.atomic.and.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.and.b32 + %tmp505 = tail call i32 @llvm.nvvm.atomic.and.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.and.b32 + %tmp506 = tail call i32 @llvm.nvvm.atomic.and.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.and.b32 + %tmp507 = tail call i32 @llvm.nvvm.atomic.and.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.and.b32 + %tmp508 = tail call i32 @llvm.nvvm.atomic.and.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.and.b32 + %tmp509 = tail call i32 @llvm.nvvm.atomic.and.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.and.b32 + %tmp510 = tail call i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.and.b32 + %tmp511 = tail call i32 @llvm.nvvm.atomic.and.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.and.b32 + %tmp512 = tail call i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.and.b64 + %tmp513 = tail call i64 @llvm.nvvm.atomic.and.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.and.b64 + %tmp514 = tail call i64 @llvm.nvvm.atomic.and.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.and.b64 + %tmp515 = tail call i64 @llvm.nvvm.atomic.and.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.and.b64 + %tmp516 = tail call i64 @llvm.nvvm.atomic.and.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.and.b64 + %tmp517 = tail call i64 @llvm.nvvm.atomic.and.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.and.b64 + %tmp518 = tail call i64 @llvm.nvvm.atomic.and.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.and.b64 + %tmp519 = tail call i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.and.b64 + %tmp520 = tail call i64 @llvm.nvvm.atomic.and.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.and.b64 + %tmp521 = tail call i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.and.b64 + %tmp522 = tail call i64 @llvm.nvvm.atomic.and.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.and.b64 + %tmp523 = tail call i64 @llvm.nvvm.atomic.and.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.and.b64 + %tmp524 = tail call i64 @llvm.nvvm.atomic.and.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.and.b64 + %tmp525 = tail call i64 @llvm.nvvm.atomic.and.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.and.b64 + %tmp526 = tail call i64 @llvm.nvvm.atomic.and.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.and.b64 + %tmp527 = tail call i64 @llvm.nvvm.atomic.and.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.and.b64 + %tmp528 = tail call i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.and.b64 + %tmp529 = tail call i64 @llvm.nvvm.atomic.and.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.and.b64 + %tmp530 = tail call i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.and.b64 + %tmp531 = tail call i64 @llvm.nvvm.atomic.and.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.and.b64 + %tmp532 = tail call i64 @llvm.nvvm.atomic.and.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.and.b64 + %tmp533 = tail call i64 @llvm.nvvm.atomic.and.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.and.b64 + %tmp534 = tail call i64 @llvm.nvvm.atomic.and.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.and.b64 + %tmp535 = tail call i64 @llvm.nvvm.atomic.and.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.and.b64 + %tmp536 = tail call i64 @llvm.nvvm.atomic.and.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.and.b64 + %tmp537 = tail call i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.and.b64 + %tmp538 = tail call i64 @llvm.nvvm.atomic.and.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.and.b64 + %tmp539 = tail call i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.or.b32 + %tmp540 = tail call i32 @llvm.nvvm.atomic.or.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.or.b32 + %tmp541 = tail call i32 @llvm.nvvm.atomic.or.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.or.b32 + %tmp542 = tail call i32 @llvm.nvvm.atomic.or.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.or.b32 + %tmp543 = tail call i32 @llvm.nvvm.atomic.or.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.or.b32 + %tmp544 = tail call i32 @llvm.nvvm.atomic.or.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.or.b32 + %tmp545 = tail call i32 @llvm.nvvm.atomic.or.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.or.b32 + %tmp546 = tail call i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.or.b32 + %tmp547 = tail call i32 @llvm.nvvm.atomic.or.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.or.b32 + %tmp548 = tail call i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.or.b32 + %tmp549 = tail call i32 @llvm.nvvm.atomic.or.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.or.b32 + %tmp550 = tail call i32 @llvm.nvvm.atomic.or.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.or.b32 + %tmp551 = tail call i32 @llvm.nvvm.atomic.or.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.or.b32 + %tmp552 = tail call i32 @llvm.nvvm.atomic.or.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.or.b32 + %tmp553 = tail call i32 @llvm.nvvm.atomic.or.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.or.b32 + %tmp554 = tail call i32 @llvm.nvvm.atomic.or.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.or.b32 + %tmp555 = tail call i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.or.b32 + %tmp556 = tail call i32 @llvm.nvvm.atomic.or.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.or.b32 + %tmp557 = tail call i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.or.b32 + %tmp558 = tail call i32 @llvm.nvvm.atomic.or.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.or.b32 + %tmp559 = tail call i32 @llvm.nvvm.atomic.or.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.or.b32 + %tmp560 = tail call i32 @llvm.nvvm.atomic.or.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.or.b32 + %tmp561 = tail call i32 @llvm.nvvm.atomic.or.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.or.b32 + %tmp562 = tail call i32 @llvm.nvvm.atomic.or.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.or.b32 + %tmp563 = tail call i32 @llvm.nvvm.atomic.or.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.or.b32 + %tmp564 = tail call i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.or.b32 + %tmp565 = tail call i32 @llvm.nvvm.atomic.or.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.or.b32 + %tmp566 = tail call i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.or.b64 + %tmp567 = tail call i64 @llvm.nvvm.atomic.or.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.or.b64 + %tmp568 = tail call i64 @llvm.nvvm.atomic.or.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.or.b64 + %tmp569 = tail call i64 @llvm.nvvm.atomic.or.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.or.b64 + %tmp570 = tail call i64 @llvm.nvvm.atomic.or.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.or.b64 + %tmp571 = tail call i64 @llvm.nvvm.atomic.or.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.or.b64 + %tmp572 = tail call i64 @llvm.nvvm.atomic.or.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.or.b64 + %tmp573 = tail call i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.or.b64 + %tmp574 = tail call i64 @llvm.nvvm.atomic.or.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.or.b64 + %tmp575 = tail call i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.or.b64 + %tmp576 = tail call i64 @llvm.nvvm.atomic.or.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.or.b64 + %tmp577 = tail call i64 @llvm.nvvm.atomic.or.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.or.b64 + %tmp578 = tail call i64 @llvm.nvvm.atomic.or.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.or.b64 + %tmp579 = tail call i64 @llvm.nvvm.atomic.or.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.or.b64 + %tmp580 = tail call i64 @llvm.nvvm.atomic.or.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.or.b64 + %tmp581 = tail call i64 @llvm.nvvm.atomic.or.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.or.b64 + %tmp582 = tail call i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.or.b64 + %tmp583 = tail call i64 @llvm.nvvm.atomic.or.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.or.b64 + %tmp584 = tail call i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.or.b64 + %tmp585 = tail call i64 @llvm.nvvm.atomic.or.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.or.b64 + %tmp586 = tail call i64 @llvm.nvvm.atomic.or.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.or.b64 + %tmp587 = tail call i64 @llvm.nvvm.atomic.or.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.or.b64 + %tmp588 = tail call i64 @llvm.nvvm.atomic.or.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.or.b64 + %tmp589 = tail call i64 @llvm.nvvm.atomic.or.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.or.b64 + %tmp590 = tail call i64 @llvm.nvvm.atomic.or.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.or.b64 + %tmp591 = tail call i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.or.b64 + %tmp592 = tail call i64 @llvm.nvvm.atomic.or.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.or.b64 + %tmp593 = tail call i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.xor.b32 + %tmp594 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.global.xor.b32 + %tmp595 = tail call i32 @llvm.nvvm.atomic.xor.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.shared.xor.b32 + %tmp596 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.xor.b32 + %tmp597 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.release.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.global.xor.b32 + %tmp598 = tail call i32 @llvm.nvvm.atomic.xor.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.shared.xor.b32 + %tmp599 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.xor.b32 + %tmp600 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.global.xor.b32 + %tmp601 = tail call i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.shared.xor.b32 + %tmp602 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.sys.xor.b32 + %tmp603 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.sys.global.xor.b32 + %tmp604 = tail call i32 @llvm.nvvm.atomic.xor.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.sys.shared.xor.b32 + %tmp605 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.sys.xor.b32 + %tmp606 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.sys.global.xor.b32 + %tmp607 = tail call i32 @llvm.nvvm.atomic.xor.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.sys.shared.xor.b32 + %tmp608 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.sys.xor.b32 + %tmp609 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.xor.b32 + %tmp610 = tail call i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.xor.b32 + %tmp611 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.cta.xor.b32 + %tmp612 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acquire.cta.global.xor.b32 + %tmp613 = tail call i32 @llvm.nvvm.atomic.xor.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acquire.cta.shared.xor.b32 + %tmp614 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.release.cta.xor.b32 + %tmp615 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.release.cta.global.xor.b32 + %tmp616 = tail call i32 @llvm.nvvm.atomic.xor.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.release.cta.shared.xor.b32 + %tmp617 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acq_rel.cta.xor.b32 + %tmp618 = tail call i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.xor.b32 + %tmp619 = tail call i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.xor.b32 + %tmp620 = tail call i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i); + + ; CHECK: atom.acquire.xor.b64 + %tmp621 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.global.xor.b64 + %tmp622 = tail call i64 @llvm.nvvm.atomic.xor.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.shared.xor.b64 + %tmp623 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.xor.b64 + %tmp624 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.release.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.global.xor.b64 + %tmp625 = tail call i64 @llvm.nvvm.atomic.xor.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.shared.xor.b64 + %tmp626 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.xor.b64 + %tmp627 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.global.xor.b64 + %tmp628 = tail call i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.shared.xor.b64 + %tmp629 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.sys.xor.b64 + %tmp630 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.sys.global.xor.b64 + %tmp631 = tail call i64 @llvm.nvvm.atomic.xor.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.xor.b64 + %tmp632 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.sys.xor.b64 + %tmp633 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.sys.global.xor.b64 + %tmp634 = tail call i64 @llvm.nvvm.atomic.xor.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.sys.shared.xor.b64 + %tmp635 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.sys.xor.b64 + %tmp636 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.xor.b64 + %tmp637 = tail call i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.xor.b64 + %tmp638 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cta.xor.b64 + %tmp639 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acquire.cta.global.xor.b64 + %tmp640 = tail call i64 @llvm.nvvm.atomic.xor.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.xor.b64 + %tmp641 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.release.cta.xor.b64 + %tmp642 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.release.cta.global.xor.b64 + %tmp643 = tail call i64 @llvm.nvvm.atomic.xor.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.release.cta.shared.xor.b64 + %tmp644 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acq_rel.cta.xor.b64 + %tmp645 = tail call i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.xor.b64 + %tmp646 = tail call i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.xor.b64 + %tmp647 = tail call i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll); + + ; CHECK: atom.acquire.cas.b32 + %tmp648 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.acquire.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.acquire.global.cas.b32 + %tmp649 = tail call i32 @llvm.nvvm.atomic.cas.global.i.acquire.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.acquire.shared.cas.b32 + %tmp650 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.acquire.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.release.cas.b32 + %tmp651 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.release.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.release.global.cas.b32 + %tmp652 = tail call i32 @llvm.nvvm.atomic.cas.global.i.release.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.release.shared.cas.b32 + %tmp653 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.release.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.cas.b32 + %tmp654 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.global.cas.b32 + %tmp655 = tail call i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.shared.cas.b32 + %tmp656 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.acquire.sys.cas.b32 + %tmp657 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.acquire.sys.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.acquire.sys.global.cas.b32 + %tmp658 = tail call i32 @llvm.nvvm.atomic.cas.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.acquire.sys.shared.cas.b32 + %tmp659 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.release.sys.cas.b32 + %tmp660 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.release.sys.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.release.sys.global.cas.b32 + %tmp661 = tail call i32 @llvm.nvvm.atomic.cas.global.i.release.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.release.sys.shared.cas.b32 + %tmp662 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.sys.cas.b32 + %tmp663 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.sys.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.sys.global.cas.b32 + %tmp664 = tail call i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.sys.shared.cas.b32 + %tmp665 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.acquire.cta.cas.b32 + %tmp666 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.acquire.cta.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.acquire.cta.global.cas.b32 + %tmp667 = tail call i32 @llvm.nvvm.atomic.cas.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.acquire.cta.shared.cas.b32 + %tmp668 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.release.cta.cas.b32 + %tmp669 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.release.cta.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.release.cta.global.cas.b32 + %tmp670 = tail call i32 @llvm.nvvm.atomic.cas.global.i.release.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.release.cta.shared.cas.b32 + %tmp671 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.cta.cas.b32 + %tmp672 = tail call i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.cta.i32.p0i32(i32* %ip, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.cta.global.cas.b32 + %tmp673 = tail call i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* %ip1, i32 %i, i32 %i); + + ; CHECK: atom.acq_rel.cta.shared.cas.b32 + %tmp674 = tail call i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* %ip3, i32 %i, i32 %i); + + ; CHECK: atom.acquire.cas.b64 + %tmp675 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.acquire.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.global.cas.b64 + %tmp676 = tail call i64 @llvm.nvvm.atomic.cas.global.i.acquire.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.shared.cas.b64 + %tmp677 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.acquire.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.release.cas.b64 + %tmp678 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.release.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.release.global.cas.b64 + %tmp679 = tail call i64 @llvm.nvvm.atomic.cas.global.i.release.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.release.shared.cas.b64 + %tmp680 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.release.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.cas.b64 + %tmp681 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.global.cas.b64 + %tmp682 = tail call i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.shared.cas.b64 + %tmp683 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.sys.cas.b64 + %tmp684 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.acquire.sys.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.sys.global.cas.b64 + %tmp685 = tail call i64 @llvm.nvvm.atomic.cas.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.sys.shared.cas.b64 + %tmp686 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.release.sys.cas.b64 + %tmp687 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.release.sys.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.release.sys.global.cas.b64 + %tmp688 = tail call i64 @llvm.nvvm.atomic.cas.global.i.release.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.release.sys.shared.cas.b64 + %tmp689 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.sys.cas.b64 + %tmp690 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.sys.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.sys.global.cas.b64 + %tmp691 = tail call i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.sys.shared.cas.b64 + %tmp692 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.cta.cas.b64 + %tmp693 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.acquire.cta.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.cta.global.cas.b64 + %tmp694 = tail call i64 @llvm.nvvm.atomic.cas.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.acquire.cta.shared.cas.b64 + %tmp695 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.release.cta.cas.b64 + %tmp696 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.release.cta.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.release.cta.global.cas.b64 + %tmp697 = tail call i64 @llvm.nvvm.atomic.cas.global.i.release.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.release.cta.shared.cas.b64 + %tmp698 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.cta.cas.b64 + %tmp699 = tail call i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.cta.i64.p0i64(i64* %llp, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.cta.global.cas.b64 + %tmp700 = tail call i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* %llp1, i64 %ll, i64 %ll); + + ; CHECK: atom.acq_rel.cta.shared.cas.b64 + %tmp701 = tail call i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* %llp3, i64 %ll, i64 %ll); + + + ; CHECK: ret + ret void +} + +; Make sure we use constants as operands to our scoped atomic calls, where appropriate. +; CHECK-LABEL: .func test_atomics_scope_imm( +define void @test_atomics_scope_imm(float* %fp, float %f, + double* %dfp, double %df, + i32* %ip, i32 %i, + i32* %uip, i32 %ui, + i64* %llp, i64 %ll) #0 { + + + + ; CHECK: ret + ret void +} + + +declare i32 @llvm.nvvm.atomic.add.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.add.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.add.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare float @llvm.nvvm.atomic.add.gen.f.acquire.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.acquire.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.acquire.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.release.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.release.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.release.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.acq.rel.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.acq.rel.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.acq.rel.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.acquire.sys.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.acquire.sys.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.acquire.sys.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.release.sys.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.release.sys.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.release.sys.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.acq.rel.sys.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.acq.rel.sys.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.acq.rel.sys.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.acquire.cta.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.acquire.cta.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.acquire.cta.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.release.cta.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.release.cta.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.release.cta.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.gen.f.acq.rel.cta.f32.p0f32(float* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.global.f.acq.rel.cta.f32.p1f32(float addrspace(1)* nocapture, float) #1 +declare float @llvm.nvvm.atomic.add.shared.f.acq.rel.cta.f32.p3f32(float addrspace(3)* nocapture, float) #1 +declare double @llvm.nvvm.atomic.add.gen.f.acquire.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.acquire.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.acquire.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.release.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.release.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.release.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.acq.rel.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.acq.rel.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.acq.rel.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.acquire.sys.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.acquire.sys.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.acquire.sys.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.release.sys.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.release.sys.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.release.sys.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.acq.rel.sys.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.acq.rel.sys.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.acq.rel.sys.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.acquire.cta.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.acquire.cta.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.acquire.cta.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.release.cta.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.release.cta.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.release.cta.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.gen.f.acq.rel.cta.f64.p0f64(double* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.global.f.acq.rel.cta.f64.p1f64(double addrspace(1)* nocapture, double) #1 +declare double @llvm.nvvm.atomic.add.shared.f.acq.rel.cta.f64.p3f64(double addrspace(3)* nocapture, double) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.exch.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.exch.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.gen.ui.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.global.ui.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.max.shared.ui.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.gen.ui.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.global.ui.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.max.shared.ui.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.gen.ui.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.global.ui.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.min.shared.ui.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.gen.ui.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.global.ui.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.min.shared.ui.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.inc.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.inc.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.dec.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.dec.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.and.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.and.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.or.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.or.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.acquire.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.release.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.release.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.release.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32) #1 +declare i32 @llvm.nvvm.atomic.xor.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.acquire.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.release.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.release.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.release.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64) #1 +declare i64 @llvm.nvvm.atomic.xor.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.acquire.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.acquire.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.acquire.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.release.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.release.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.release.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.acquire.sys.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.acquire.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.acquire.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.release.sys.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.release.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.release.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.sys.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.sys.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.sys.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.acquire.cta.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.acquire.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.acquire.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.release.cta.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.release.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.release.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.gen.i.acq.rel.cta.i32.p0i32(i32* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.global.i.acq.rel.cta.i32.p1i32(i32 addrspace(1)* nocapture, i32, i32) #1 +declare i32 @llvm.nvvm.atomic.cas.shared.i.acq.rel.cta.i32.p3i32(i32 addrspace(3)* nocapture, i32, i32) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.acquire.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.acquire.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.acquire.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.release.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.release.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.release.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.acquire.sys.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.acquire.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.acquire.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.release.sys.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.release.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.release.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.sys.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.sys.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.sys.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.acquire.cta.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.acquire.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.acquire.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.release.cta.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.release.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.release.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.gen.i.acq.rel.cta.i64.p0i64(i64* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.global.i.acq.rel.cta.i64.p1i64(i64 addrspace(1)* nocapture, i64, i64) #1 +declare i64 @llvm.nvvm.atomic.cas.shared.i.acq.rel.cta.i64.p3i64(i64 addrspace(3)* nocapture, i64, i64) #1 + +attributes #1 = { argmemonly nounwind }