[PATCH] D80108: [X86] WIP Codegen support for AVX5124FMAPS/AVX5124VNNI instructions.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon May 18 00:29:40 PDT 2020


craig.topper created this revision.
Herald added subscribers: jdoerfert, hiraditya.
Herald added a project: LLVM.

These instructions have weird register allocation constraints
that requires 4 consecutive registers. LLVM has support for
this using REG_SEQUENCE.

These instructions are also weird in that they do a 128 bit load
conditional on whether any bit of the mask is non-zero. This
differs from normal masked loads. They also have no register form.
We need to use target specific memory ISD opcodes to make sure
memory operands are propagated correctly to the machine instruction.

I've had part of this patch lying around for a couple years. I
tried to clean it up some this weekend. Still need to add tests
and finish the patterns for the scalar instructions. Not completely
sure I'm happy with the intrinsic format for those yet.

Some of the test changes are just from introducing the quad register
classes. This seems to break something in the critical anti dep
breaker if I remember from when I investigated this a year or two
ago.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D80108

Files:
  llvm/include/llvm/IR/Intrinsics.td
  llvm/include/llvm/IR/IntrinsicsX86.td
  llvm/include/llvm/Support/X86DisassemblerDecoderCommon.h
  llvm/lib/Target/X86/AsmParser/X86Operand.h
  llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
  llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
  llvm/lib/Target/X86/MCTargetDesc/X86InstPrinterCommon.cpp
  llvm/lib/Target/X86/MCTargetDesc/X86InstPrinterCommon.h
  llvm/lib/Target/X86/X86.td
  llvm/lib/Target/X86/X86ISelLowering.cpp
  llvm/lib/Target/X86/X86ISelLowering.h
  llvm/lib/Target/X86/X86InstrAVX512.td
  llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
  llvm/lib/Target/X86/X86InstrInfo.td
  llvm/lib/Target/X86/X86RegisterInfo.td
  llvm/lib/Target/X86/X86Subtarget.h
  llvm/test/CodeGen/X86/dynamic-regmask.ll
  llvm/test/CodeGen/X86/fma.ll
  llvm/test/CodeGen/X86/pr44140.ll
  llvm/test/CodeGen/X86/recip-fastmath.ll
  llvm/test/CodeGen/X86/recip-fastmath2.ll
  llvm/utils/TableGen/X86RecognizableInstr.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D80108.264548.patch
Type: text/x-patch
Size: 64173 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200518/c3850807/attachment-0001.bin>


More information about the llvm-commits mailing list