]> granicus.if.org Git - llvm/commit
[X86] Remove CustomInserters for RDPKRU/WRPKRU. Use some custom lowering and new...
authorCraig Topper <craig.topper@intel.com>
Thu, 4 Apr 2019 00:28:49 +0000 (00:28 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 4 Apr 2019 00:28:49 +0000 (00:28 +0000)
commitbd7054fe092b76a1b64b7cb575c87dd4cef35b63
tree887278a7a4789867394a31e03048546b64a35afb
parent27775cd11be1b806dd621834432edc66f6298076
[X86] Remove CustomInserters for RDPKRU/WRPKRU. Use some custom lowering and new ISD opcodes instead.

These inserters inserted some instructions to zero some registers and copied from virtual registers to physical registers.

This change instead inserts the zeros directly into the DAG at lowering time using new ISD opcodes
that take the extra zeroes as inputs. The zeros will then go through isel on their own to select
the MOV32r0 pseudo. Then we just need to mention the physical registers directly
in the isel patterns and the isel table and InstrEmitter will take care of inserting the necessary
copies to/from physical registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357659 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h
lib/Target/X86/X86InstrInfo.td
lib/Target/X86/X86InstrSystem.td
test/CodeGen/X86/pku.ll