1204793Srdivacky//===--- BuiltinsARM.def - ARM Builtin function database ----*- C++ -*-===// 2204793Srdivacky// 3204793Srdivacky// The LLVM Compiler Infrastructure 4204793Srdivacky// 5204793Srdivacky// This file is distributed under the University of Illinois Open Source 6204793Srdivacky// License. See LICENSE.TXT for details. 7204793Srdivacky// 8204793Srdivacky//===----------------------------------------------------------------------===// 9204793Srdivacky// 10204793Srdivacky// This file defines the ARM-specific builtin function database. Users of 11204793Srdivacky// this file must define the BUILTIN macro to make use of this information. 12204793Srdivacky// 13204793Srdivacky//===----------------------------------------------------------------------===// 14204793Srdivacky 15204793Srdivacky// The format of this database matches clang/Basic/Builtins.def. 16204793Srdivacky 17210299Sed// In libgcc 18263508SdimBUILTIN(__clear_cache, "vv*v*", "i") 19204793SrdivackyBUILTIN(__builtin_thread_pointer, "v*", "") 20204793Srdivacky 21212904Sdim// Saturating arithmetic 22212904SdimBUILTIN(__builtin_arm_qadd, "iii", "nc") 23212904SdimBUILTIN(__builtin_arm_qsub, "iii", "nc") 24212904SdimBUILTIN(__builtin_arm_ssat, "iiUi", "nc") 25212904SdimBUILTIN(__builtin_arm_usat, "UiUiUi", "nc") 26212904Sdim 27263508Sdim// Store and load exclusive 28223017SdimBUILTIN(__builtin_arm_ldrexd, "LLUiv*", "") 29223017SdimBUILTIN(__builtin_arm_strexd, "iLLUiv*", "") 30223017Sdim 31263508SdimBUILTIN(__builtin_arm_ldrex, "v.", "t") 32263508SdimBUILTIN(__builtin_arm_strex, "i.", "t") 33263508SdimBUILTIN(__builtin_arm_clrex, "v", "") 34263508Sdim 35212904Sdim// VFP 36212904SdimBUILTIN(__builtin_arm_get_fpscr, "Ui", "nc") 37212904SdimBUILTIN(__builtin_arm_set_fpscr, "vUi", "nc") 38212904SdimBUILTIN(__builtin_arm_vcvtr_f, "ffi", "nc") 39212904SdimBUILTIN(__builtin_arm_vcvtr_d, "fdi", "nc") 40212904Sdim 41223017Sdim// Coprocessor 42223017SdimBUILTIN(__builtin_arm_mcr, "vUiUiUiUiUiUi", "") 43223017SdimBUILTIN(__builtin_arm_mcr2, "vUiUiUiUiUiUi", "") 44223017SdimBUILTIN(__builtin_arm_mrc, "UiUiUiUiUiUi", "") 45223017SdimBUILTIN(__builtin_arm_mrc2, "UiUiUiUiUiUi", "") 46223017SdimBUILTIN(__builtin_arm_cdp, "vUiUiUiUiUiUi", "") 47223017SdimBUILTIN(__builtin_arm_cdp2, "vUiUiUiUiUiUi", "") 48223017SdimBUILTIN(__builtin_arm_mcrr, "vUiUiUiUiUi", "") 49223017SdimBUILTIN(__builtin_arm_mcrr2, "vUiUiUiUiUi", "") 50223017Sdim 51263508Sdim// CRC32 52263508SdimBUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc") 53263508SdimBUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc") 54263508SdimBUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc") 55263508SdimBUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc") 56263508SdimBUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc") 57263508SdimBUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc") 58263508SdimBUILTIN(__builtin_arm_crc32d, "UiUiLLUi", "nc") 59263508SdimBUILTIN(__builtin_arm_crc32cd, "UiUiLLUi", "nc") 60263508Sdim 61263508Sdim// HINT 62263508SdimBUILTIN(__builtin_arm_sevl, "v", "") 63263508Sdim 64263508Sdim// Data barrier 65263508SdimBUILTIN(__builtin_arm_dmb, "vUi", "nc") 66263508SdimBUILTIN(__builtin_arm_dsb, "vUi", "nc") 67263508Sdim 68210299Sed// NEON 69210299Sed#define GET_NEON_BUILTINS 70210299Sed#include "clang/Basic/arm_neon.inc" 71210299Sed#undef GET_NEON_BUILTINS 72210299Sed 73204793Srdivacky#undef BUILTIN 74