[PATCH] D54062: [COFF, ARM64] Implement InterlockedCompareExchange*_* builtins

Reid Kleckner via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 5 11:40:11 PST 2018

rnk added inline comments.

Comment at: include/clang/Basic/BuiltinsARM.def:270
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf,  "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "")
Given how much duplication there is, I think we need to have some kind of BuiltinsMSVC.def that contains a list of all the interlocked builitin families, like this:
We'd include this file here, with INTERLOCKED_BUILTIN defined as:
  TARGET_HEADER_BUILTIN(Op##8_acq, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") \
  TARGET_HEADER_BUILTIN(Op##8_nf, "ccD*cc", "nh", "intrin.h", ALL_MS_LANGUAGES, "") \
That'll stamp out the enums that we need, and then we can reuse the .def file to reduce duplication in the switch/case below.

Every op is basically 16 operations: {8, 16, 32, 64} X {seq_cst, rel, acq, nf}

I'm not sure what to do about the ones that overlap with x86.

  rC Clang


More information about the cfe-commits mailing list