typo
[oota-llvm.git] / lib / Target / X86 / X86IntrinsicsInfo.h
index 0a7b59aaf1de234d504b68eeebc748819e10ecc4..5249647fdfabb36c35bedfab701685f8b84a5877 100644 (file)
@@ -17,7 +17,7 @@
 using namespace llvm;
 
 enum IntrinsicType {
-  GATHER, SCATTER, PREFETCH, RDSEED, RDRAND, RDPMC, RDTSC, XTEST,
+  GATHER, SCATTER, PREFETCH, RDSEED, RDRAND, RDPMC, RDTSC, XTEST, ADX,
   INTR_TYPE_1OP, INTR_TYPE_2OP, INTR_TYPE_3OP, VSHIFT,
   COMI
 };
@@ -34,12 +34,8 @@ struct IntrinsicData {
  IntrWithChainMap.insert(std::make_pair(Intrinsic::id, \
    IntrinsicData(type, op0, op1)))
 
-
 std::map < unsigned, IntrinsicData> IntrWithChainMap;
 void InitIntrinsicsWithChain() {
-  static bool Initialized = false;
-  if (Initialized)
-    return;
   INTRINSIC_WITH_CHAIN(x86_avx512_gather_qps_512, GATHER, X86::VGATHERQPSZrm, 0);
   INTRINSIC_WITH_CHAIN(x86_avx512_gather_qpd_512, GATHER, X86::VGATHERQPDZrm, 0);
   INTRINSIC_WITH_CHAIN(x86_avx512_gather_dps_512, GATHER, X86::VGATHERDPSZrm, 0);
@@ -81,7 +77,14 @@ void InitIntrinsicsWithChain() {
   INTRINSIC_WITH_CHAIN(x86_rdtsc,     RDTSC,  X86ISD::RDTSC_DAG, 0);
   INTRINSIC_WITH_CHAIN(x86_rdtscp,    RDTSC,  X86ISD::RDTSCP_DAG, 0);
   INTRINSIC_WITH_CHAIN(x86_rdpmc,     RDPMC,  X86ISD::RDPMC_DAG, 0);
-  Initialized = true;
+
+  INTRINSIC_WITH_CHAIN(x86_addcarryx_u32, ADX, X86ISD::ADC, 0);
+  INTRINSIC_WITH_CHAIN(x86_addcarryx_u64, ADX, X86ISD::ADC, 0);
+  INTRINSIC_WITH_CHAIN(x86_addcarry_u32,  ADX, X86ISD::ADC, 0);
+  INTRINSIC_WITH_CHAIN(x86_addcarry_u64,  ADX, X86ISD::ADC, 0);
+  INTRINSIC_WITH_CHAIN(x86_subborrow_u32, ADX, X86ISD::SBB, 0);
+  INTRINSIC_WITH_CHAIN(x86_subborrow_u64, ADX, X86ISD::SBB, 0);
+
 }
 
 const IntrinsicData* GetIntrinsicWithChain(unsigned IntNo) {
@@ -100,10 +103,6 @@ const IntrinsicData* GetIntrinsicWithChain(unsigned IntNo) {
 std::map < unsigned, IntrinsicData> IntrWithoutChainMap;
 
 void InitIntrinsicsWithoutChain() {
-  static bool Initialized = false;
-  if (Initialized)
-    return;
-  Initialized = true;
   INTRINSIC_WO_CHAIN(x86_sse_sqrt_ps,     INTR_TYPE_1OP, ISD::FSQRT, 0);
   INTRINSIC_WO_CHAIN(x86_sse2_sqrt_pd,    INTR_TYPE_1OP, ISD::FSQRT, 0);
   INTRINSIC_WO_CHAIN(x86_avx_sqrt_ps_256, INTR_TYPE_1OP, ISD::FSQRT, 0);
@@ -232,4 +231,11 @@ const IntrinsicData* GetIntrinsicWithoutChain(unsigned IntNo) {
   return &(itr->second);
 }
 
+// Initialize intrinsics data
+void InitIntrinsicTables() {
+  InitIntrinsicsWithChain();
+  InitIntrinsicsWithoutChain();
+}
+
+
 #endif