OSDN Git Service

[X86] Clzero intrinsic and its addition under znver1
authorCraig Topper <craig.topper@gmail.com>
Thu, 9 Feb 2017 04:27:34 +0000 (04:27 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 9 Feb 2017 04:27:34 +0000 (04:27 +0000)
commit4b9bffa31ec59188feefc1a26e0dd8808e008d38
treeb7ccb54dbc1b837788a658247bb0744a58f187bf
parent97b3cf430254d3eb09cfd6f788c3f620dd79318b
[X86] Clzero intrinsic and its addition under znver1

This patch does the following.

1. Adds an Intrinsic int_x86_clzero which works with __builtin_ia32_clzero
2. Identifies clzero feature using cpuid info. (Function:8000_0008, Checks if EBX[0]=1)
3. Adds the clzero feature under znver1 architecture.
4. The custom inserter is added in Lowering.
5. A testcase is added to check the intrinsic.
6. The clzero instruction is added to assembler test.

Patch by Ganesh Gopalasubramanian with a couple formatting tweaks, a disassembler test, and using update_llc_test.py from me.

Differential revision: https://reviews.llvm.org/D29385

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294558 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/llvm/IR/IntrinsicsX86.td
lib/Support/Host.cpp
lib/Target/X86/X86.td
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrInfo.td
lib/Target/X86/X86Schedule.td
lib/Target/X86/X86Subtarget.cpp
lib/Target/X86/X86Subtarget.h
test/CodeGen/X86/clzero.ll [new file with mode: 0644]
test/MC/Disassembler/X86/x86-32.txt
test/MC/X86/x86-32.s
test/MC/X86/x86-64.s