Home | History | Annotate | Download | only in Basic
      1 //==- BuiltinsAMDGPU.def - AMDGPU Builtin function database ------*- C++ -*-==//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file defines the AMDGPU-specific builtin function database. Users of
     11 // this file must define the BUILTIN macro to make use of this information.
     12 //
     13 //===----------------------------------------------------------------------===//
     14 
     15 // The format of this database matches clang/Basic/Builtins.def.
     16 
     17 #if defined(BUILTIN) && !defined(TARGET_BUILTIN)
     18 #   define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
     19 #endif
     20 //===----------------------------------------------------------------------===//
     21 // SI+ only builtins.
     22 //===----------------------------------------------------------------------===//
     23 
     24 BUILTIN(__builtin_amdgcn_kernarg_segment_ptr, "Uc*2", "nc")
     25 BUILTIN(__builtin_amdgcn_implicitarg_ptr, "Uc*2", "nc")
     26 
     27 BUILTIN(__builtin_amdgcn_workgroup_id_x, "Ui", "nc")
     28 BUILTIN(__builtin_amdgcn_workgroup_id_y, "Ui", "nc")
     29 BUILTIN(__builtin_amdgcn_workgroup_id_z, "Ui", "nc")
     30 
     31 BUILTIN(__builtin_amdgcn_workitem_id_x, "Ui", "nc")
     32 BUILTIN(__builtin_amdgcn_workitem_id_y, "Ui", "nc")
     33 BUILTIN(__builtin_amdgcn_workitem_id_z, "Ui", "nc")
     34 
     35 //===----------------------------------------------------------------------===//
     36 // Instruction builtins.
     37 //===----------------------------------------------------------------------===//
     38 BUILTIN(__builtin_amdgcn_s_getreg, "UiIi", "n")
     39 BUILTIN(__builtin_amdgcn_s_getpc, "LUi", "n")
     40 BUILTIN(__builtin_amdgcn_s_waitcnt, "vIi", "n")
     41 BUILTIN(__builtin_amdgcn_s_sendmsg, "vIiUi", "n")
     42 BUILTIN(__builtin_amdgcn_s_sendmsghalt, "vIiUi", "n")
     43 BUILTIN(__builtin_amdgcn_s_barrier, "v", "n")
     44 BUILTIN(__builtin_amdgcn_wave_barrier, "v", "n")
     45 BUILTIN(__builtin_amdgcn_s_dcache_inv, "v", "n")
     46 BUILTIN(__builtin_amdgcn_buffer_wbinvl1, "v", "n")
     47 BUILTIN(__builtin_amdgcn_div_scale, "dddbb*", "n")
     48 BUILTIN(__builtin_amdgcn_div_scalef, "fffbb*", "n")
     49 BUILTIN(__builtin_amdgcn_div_fmas, "ddddb", "nc")
     50 BUILTIN(__builtin_amdgcn_div_fmasf, "ffffb", "nc")
     51 BUILTIN(__builtin_amdgcn_div_fixup, "dddd", "nc")
     52 BUILTIN(__builtin_amdgcn_div_fixupf, "ffff", "nc")
     53 BUILTIN(__builtin_amdgcn_trig_preop, "ddi", "nc")
     54 BUILTIN(__builtin_amdgcn_trig_preopf, "ffi", "nc")
     55 BUILTIN(__builtin_amdgcn_rcp, "dd", "nc")
     56 BUILTIN(__builtin_amdgcn_rcpf, "ff", "nc")
     57 BUILTIN(__builtin_amdgcn_rsq, "dd", "nc")
     58 BUILTIN(__builtin_amdgcn_rsqf, "ff", "nc")
     59 BUILTIN(__builtin_amdgcn_rsq_clamp, "dd", "nc")
     60 BUILTIN(__builtin_amdgcn_rsq_clampf, "ff", "nc")
     61 BUILTIN(__builtin_amdgcn_sinf, "ff", "nc")
     62 BUILTIN(__builtin_amdgcn_cosf, "ff", "nc")
     63 BUILTIN(__builtin_amdgcn_log_clampf, "ff", "nc")
     64 BUILTIN(__builtin_amdgcn_ldexp, "ddi", "nc")
     65 BUILTIN(__builtin_amdgcn_ldexpf, "ffi", "nc")
     66 BUILTIN(__builtin_amdgcn_frexp_mant, "dd", "nc")
     67 BUILTIN(__builtin_amdgcn_frexp_mantf, "ff", "nc")
     68 BUILTIN(__builtin_amdgcn_frexp_exp, "id", "nc")
     69 BUILTIN(__builtin_amdgcn_frexp_expf, "if", "nc")
     70 BUILTIN(__builtin_amdgcn_fract, "dd", "nc")
     71 BUILTIN(__builtin_amdgcn_fractf, "ff", "nc")
     72 BUILTIN(__builtin_amdgcn_lerp, "UiUiUiUi", "nc")
     73 BUILTIN(__builtin_amdgcn_class, "bdi", "nc")
     74 BUILTIN(__builtin_amdgcn_classf, "bfi", "nc")
     75 BUILTIN(__builtin_amdgcn_cubeid, "ffff", "nc")
     76 BUILTIN(__builtin_amdgcn_cubesc, "ffff", "nc")
     77 BUILTIN(__builtin_amdgcn_cubetc, "ffff", "nc")
     78 BUILTIN(__builtin_amdgcn_cubema, "ffff", "nc")
     79 BUILTIN(__builtin_amdgcn_s_memtime, "LUi", "n")
     80 BUILTIN(__builtin_amdgcn_s_sleep, "vIi", "n")
     81 BUILTIN(__builtin_amdgcn_s_incperflevel, "vIi", "n")
     82 BUILTIN(__builtin_amdgcn_s_decperflevel, "vIi", "n")
     83 BUILTIN(__builtin_amdgcn_uicmp, "LUiUiUiIi", "nc")
     84 BUILTIN(__builtin_amdgcn_uicmpl, "LUiLUiLUiIi", "nc")
     85 BUILTIN(__builtin_amdgcn_sicmp, "LUiiiIi", "nc")
     86 BUILTIN(__builtin_amdgcn_sicmpl, "LUiLiLiIi", "nc")
     87 BUILTIN(__builtin_amdgcn_fcmp, "LUiddIi", "nc")
     88 BUILTIN(__builtin_amdgcn_fcmpf, "LUiffIi", "nc")
     89 BUILTIN(__builtin_amdgcn_ds_swizzle, "iiIi", "nc")
     90 BUILTIN(__builtin_amdgcn_ds_permute, "iii", "nc")
     91 BUILTIN(__builtin_amdgcn_ds_bpermute, "iii", "nc")
     92 BUILTIN(__builtin_amdgcn_readfirstlane, "ii", "nc")
     93 BUILTIN(__builtin_amdgcn_readlane, "iii", "nc")
     94 BUILTIN(__builtin_amdgcn_fmed3f, "ffff", "nc")
     95 
     96 //===----------------------------------------------------------------------===//
     97 // VI+ only builtins.
     98 //===----------------------------------------------------------------------===//
     99 
    100 TARGET_BUILTIN(__builtin_amdgcn_div_fixuph, "hhhh", "nc", "16-bit-insts")
    101 TARGET_BUILTIN(__builtin_amdgcn_rcph, "hh", "nc", "16-bit-insts")
    102 TARGET_BUILTIN(__builtin_amdgcn_rsqh, "hh", "nc", "16-bit-insts")
    103 TARGET_BUILTIN(__builtin_amdgcn_sinh, "hh", "nc", "16-bit-insts")
    104 TARGET_BUILTIN(__builtin_amdgcn_cosh, "hh", "nc", "16-bit-insts")
    105 TARGET_BUILTIN(__builtin_amdgcn_ldexph, "hhi", "nc", "16-bit-insts")
    106 TARGET_BUILTIN(__builtin_amdgcn_frexp_manth, "hh", "nc", "16-bit-insts")
    107 TARGET_BUILTIN(__builtin_amdgcn_frexp_exph, "sh", "nc", "16-bit-insts")
    108 TARGET_BUILTIN(__builtin_amdgcn_fracth, "hh", "nc", "16-bit-insts")
    109 TARGET_BUILTIN(__builtin_amdgcn_classh, "bhi", "nc", "16-bit-insts")
    110 TARGET_BUILTIN(__builtin_amdgcn_s_memrealtime, "LUi", "n", "s-memrealtime")
    111 TARGET_BUILTIN(__builtin_amdgcn_mov_dpp, "iiIiIiIiIb", "nc", "dpp")
    112 
    113 //===----------------------------------------------------------------------===//
    114 // GFX9+ only builtins.
    115 //===----------------------------------------------------------------------===//
    116 
    117 TARGET_BUILTIN(__builtin_amdgcn_fmed3h, "hhhh", "nc", "gfx9-insts")
    118 
    119 //===----------------------------------------------------------------------===//
    120 // Special builtins.
    121 //===----------------------------------------------------------------------===//
    122 BUILTIN(__builtin_amdgcn_read_exec, "LUi", "nc")
    123 
    124 //===----------------------------------------------------------------------===//
    125 // R600-NI only builtins.
    126 //===----------------------------------------------------------------------===//
    127 
    128 BUILTIN(__builtin_r600_implicitarg_ptr, "Uc*7", "nc")
    129 
    130 BUILTIN(__builtin_r600_read_tgid_x, "Ui", "nc")
    131 BUILTIN(__builtin_r600_read_tgid_y, "Ui", "nc")
    132 BUILTIN(__builtin_r600_read_tgid_z, "Ui", "nc")
    133 
    134 BUILTIN(__builtin_r600_read_tidig_x, "Ui", "nc")
    135 BUILTIN(__builtin_r600_read_tidig_y, "Ui", "nc")
    136 BUILTIN(__builtin_r600_read_tidig_z, "Ui", "nc")
    137 
    138 BUILTIN(__builtin_r600_recipsqrt_ieee, "dd", "nc")
    139 BUILTIN(__builtin_r600_recipsqrt_ieeef, "ff", "nc")
    140 
    141 #undef BUILTIN
    142 #undef TARGET_BUILTIN
    143