113 lines
5.0 KiB
C++
113 lines
5.0 KiB
C++
//==- BuiltinsRISCV.def - RISC-V Builtin function database -------*- C++ -*-==//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines the RISC-V-specific builtin function database. Users of
|
|
// this file must define the BUILTIN macro to make use of this information.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#if defined(BUILTIN) && !defined(TARGET_BUILTIN)
|
|
#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
|
|
#endif
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Ventus OpenCL builtins.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Barrier function builtins
|
|
TARGET_BUILTIN(barrier, "vi.", "n", "32bit")
|
|
TARGET_BUILTIN(work_group_barrier, "vi.", "n", "32bit")
|
|
// WORKAROUND: Disabled for now.
|
|
/*
|
|
BUILTIN(__builtin_riscv_workgroup_id_x, "Ui", "nc")
|
|
BUILTIN(__builtin_riscv_workgroup_id_y, "Ui", "nc")
|
|
BUILTIN(__builtin_riscv_workgroup_id_z, "Ui", "nc")
|
|
|
|
BUILTIN(__builtin_riscv_workitem_id_x, "Ui", "nc")
|
|
BUILTIN(__builtin_riscv_workitem_id_y, "Ui", "nc")
|
|
BUILTIN(__builtin_riscv_workitem_id_z, "Ui", "nc")
|
|
|
|
BUILTIN(__builtin_riscv_workgroup_size_x, "Us", "nc")
|
|
BUILTIN(__builtin_riscv_workgroup_size_y, "Us", "nc")
|
|
BUILTIN(__builtin_riscv_workgroup_size_z, "Us", "nc")
|
|
|
|
BUILTIN(__builtin_riscv_grid_size_x, "Ui", "nc")
|
|
BUILTIN(__builtin_riscv_grid_size_y, "Ui", "nc")
|
|
BUILTIN(__builtin_riscv_grid_size_z, "Ui", "nc")
|
|
*/
|
|
//===----------------------------------------------------------------------===//
|
|
// Standard RISCV instruction builtins.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Zbb extension
|
|
TARGET_BUILTIN(__builtin_riscv_orc_b_32, "ZiZi", "nc", "zbb")
|
|
TARGET_BUILTIN(__builtin_riscv_orc_b_64, "WiWi", "nc", "zbb,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_clz_32, "ZiZi", "nc", "zbb")
|
|
TARGET_BUILTIN(__builtin_riscv_clz_64, "WiWi", "nc", "zbb,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_ctz_32, "ZiZi", "nc", "zbb")
|
|
TARGET_BUILTIN(__builtin_riscv_ctz_64, "WiWi", "nc", "zbb,64bit")
|
|
|
|
// Zbc or Zbkc extension
|
|
TARGET_BUILTIN(__builtin_riscv_clmul, "LiLiLi", "nc", "zbc|zbkc")
|
|
TARGET_BUILTIN(__builtin_riscv_clmulh, "LiLiLi", "nc", "zbc|zbkc")
|
|
TARGET_BUILTIN(__builtin_riscv_clmulr, "LiLiLi", "nc", "zbc")
|
|
|
|
// Zbkx
|
|
TARGET_BUILTIN(__builtin_riscv_xperm4, "LiLiLi", "nc", "zbkx")
|
|
TARGET_BUILTIN(__builtin_riscv_xperm8, "LiLiLi", "nc", "zbkx")
|
|
|
|
// Zbkb extension
|
|
TARGET_BUILTIN(__builtin_riscv_brev8, "LiLi", "nc", "zbkb")
|
|
TARGET_BUILTIN(__builtin_riscv_zip_32, "ZiZi", "nc", "zbkb,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_unzip_32, "ZiZi", "nc", "zbkb,32bit")
|
|
|
|
// Zknd extension
|
|
TARGET_BUILTIN(__builtin_riscv_aes32dsi_32, "ZiZiZiIUc", "nc", "zknd,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes32dsmi_32, "ZiZiZiIUc", "nc", "zknd,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes64ds_64, "WiWiWi", "nc", "zknd,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes64dsm_64, "WiWiWi", "nc", "zknd,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes64im_64, "WiWi", "nc", "zknd,64bit")
|
|
|
|
// Zknd & zkne
|
|
TARGET_BUILTIN(__builtin_riscv_aes64ks1i_64, "WiWiIUi", "nc", "zknd|zkne,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes64ks2_64, "WiWiWi", "nc", "zknd|zkne,64bit")
|
|
|
|
// Zkne extension
|
|
TARGET_BUILTIN(__builtin_riscv_aes32esi_32, "ZiZiZiIUc", "nc", "zkne,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes32esmi_32, "ZiZiZiIUc", "nc", "zkne,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes64es_64, "WiWiWi", "nc", "zkne,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_aes64esm_64, "WiWiWi", "nc", "zkne,64bit")
|
|
|
|
// Zknh extension
|
|
TARGET_BUILTIN(__builtin_riscv_sha256sig0, "LiLi", "nc", "zknh")
|
|
TARGET_BUILTIN(__builtin_riscv_sha256sig1, "LiLi", "nc", "zknh")
|
|
TARGET_BUILTIN(__builtin_riscv_sha256sum0, "LiLi", "nc", "zknh")
|
|
TARGET_BUILTIN(__builtin_riscv_sha256sum1, "LiLi", "nc", "zknh")
|
|
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sig0h_32, "ZiZiZi", "nc", "zknh,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sig0l_32, "ZiZiZi", "nc", "zknh,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sig1h_32, "ZiZiZi", "nc", "zknh,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sig1l_32, "ZiZiZi", "nc", "zknh,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sum0r_32, "ZiZiZi", "nc", "zknh,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sum1r_32, "ZiZiZi", "nc", "zknh,32bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sig0_64, "WiWi", "nc", "zknh,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sig1_64, "WiWi", "nc", "zknh,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sum0_64, "WiWi", "nc", "zknh,64bit")
|
|
TARGET_BUILTIN(__builtin_riscv_sha512sum1_64, "WiWi", "nc", "zknh,64bit")
|
|
|
|
// Zksed extension
|
|
TARGET_BUILTIN(__builtin_riscv_sm4ed, "LiLiLiIUc", "nc", "zksed")
|
|
TARGET_BUILTIN(__builtin_riscv_sm4ks, "LiLiLiIUc", "nc", "zksed")
|
|
|
|
// Zksh extension
|
|
TARGET_BUILTIN(__builtin_riscv_sm3p0, "LiLi", "nc", "zksh")
|
|
TARGET_BUILTIN(__builtin_riscv_sm3p1, "LiLi", "nc", "zksh")
|
|
|
|
#undef BUILTIN
|
|
#undef TARGET_BUILTIN
|