]> granicus.if.org Git - clang/commit
[X86] Attempt to make the Intel core CPU inheritance a little more readable and maint...
authorCraig Topper <craig.topper@intel.com>
Mon, 10 Jun 2019 16:59:28 +0000 (16:59 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 10 Jun 2019 16:59:28 +0000 (16:59 +0000)
commit94d43dcd1affd05914a49f78f71c1b5de8fac3c6
tree3767ab318537ef503808c984d2ef4b8d8855a5db
parentd737c8f1a4d0c8910de00ec64355625dc65ae8c1
[X86] Attempt to make the Intel core CPU inheritance a little more readable and maintainable

The recently added cooperlake CPU has made our already ugly switch statement even worse. There's a CPU exclusion list around the bf16 feature in the cooper lake block. I worry that we'll have to keep adding new CPUs to that until bf16 intercepts a client space CPU. We have several other exclusion lists in other parts of the switch due to skylakeserver, cascadelake, and cooperlake not having sgx. Another for cannonlake not having clwb but having all other features from skx.

This removes all these special ifs at the cost of some duplication of features and a goto. I've copied all of the skx features into either cannonlake or icelakeclient(for clwb). And pulled sklyakeserver, cascadelake, and cooperlake out of the main inheritance chain into their own chain. At the end of skylakeserver we merge back into the main chain at skylakeclient but below sgx. I think this is at least easier to follow.

Differential Revision: https://reviews.llvm.org/D63018

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@362965 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Basic/Targets/X86.cpp