search for: x86instrfragmentssimd

Displaying 13 results from an estimated 13 matches for "x86instrfragmentssimd".

2009 Dec 17
1
[LLVMdev] Merging AVX
...lates. I'd like to get those in first. Then there are a number of foundational templates that shouldn't affect anything else. I'll put those in next. Then the fun begins. The first step is to move some some of the templates from X86InstSSE.td out into a new file (I've called it X86InstrFragmentsSIMD.td in our tree). These are things like memopv4f32, alignedload, etc. These are foundational things we need for both AVX and SSE. The goal is to eventually replace X86InstrSSE.td entirely with a set of patterns that covers all SIMD instructions. But that's going to be gradual so we need to m...
2010 Jul 12
2
[LLVMdev] [PATCH] Start of SIMD Reorg
...d with my patch) are in the FrontendC and FrontendC++ suites. My patch literally does nothing but move some TableGen code from one .td file to another. It does not even change the "relative" order of the TableGen code as the movement is from the beginning of X86InstrSSE.td to the end of X86InstrFragmentsSIMD.td which is included immediately before X86InstrSSE.td. The failing tests aren't even looking for SSE code. I don't see how this patch could cause any failures. Is somethinmg tricky going on with the Frontend* tests at the moment? -Dave
2016 Dec 11
2
TableGen - Help to implement a form of gather/scatter operations for Mips MSA
...: llvm::TreePatternNode* llvm::TreePattern::ParseTreePattern(llvm::Init*, llvm::StringRef): Assertion `New->getNumTypes() == 1 && "FIXME: Unhandled"' failed." Can somebody help me with the code below responsible for this error? // From llvm/lib/Target/X86/X86InstrFragmentsSIMD.td def mgatherv128i16 : PatFrag<(ops node:$src1, node:$src2, node:$src3), (masked_gather node:$src1, node:$src2, node:$src3) , [{ if (MaskedGatherSDNode *mgNode = dyn_cast<MaskedGatherSDNode>(N)) return (mgNode->getIndex().getValueType() == MVT::v128i16 ||...
2010 Jul 10
0
[LLVMdev] [PATCH] Start of SIMD Reorg
Hi David, On Fri, Jul 9, 2010 at 3:25 PM, David Greene <dag at cray.com> wrote: > Now that Bruno is putting in some AVX stuff, it's a good motivator to > move my x86 SIMD reorg work into trunk (and got management to agree to > prioritize it - Thanks Bruno! :) ). > > Attached is the first patch of many to accomplish this.  The overall > goal is to have all x86 SIMD
2010 Jul 09
3
[LLVMdev] [PATCH] Start of SIMD Reorg
Now that Bruno is putting in some AVX stuff, it's a good motivator to move my x86 SIMD reorg work into trunk (and got management to agree to prioritize it - Thanks Bruno! :) ). Attached is the first patch of many to accomplish this. The overall goal is to have all x86 SIMD instructions share a set of common patterns so that we can have a more maintainable machine description (e.g. SS, SD,
2016 Dec 09
0
TableGen - Help to implement a form of gather/scatter operations for Mips MSA
Hi Alex, I don’t know too much about recent MIPS, but have recently been doing something similar for the new ARM SVE architecture, so hopefully this will get you closer to what you need: If you’re looking where I think you are (lib/Target/X86/X86InstrAVX512.td), ‘GatherNode’ is a template argument, not a definition. It allows a PatFrag be passed into the avx512_gather multiclass definition.
2012 Aug 10
1
[LLVMdev] Pseudo instructions expansion
Hi Jim, thank you for the quick response. I have used InstAlias in some cases, but these are really simple pseudo instructions where the pseudo instruction is more like a special case of existing one, like using fixed operand or simply a more human understandable way of presenting an operation. I know that there are predicates available to improve matching, but can InstAlias use conditions to
2016 Dec 12
0
TableGen - Help to implement a form of gather/scatter operations for Mips MSA
...> llvm::TreePattern::ParseTreePattern(llvm::Init*, llvm::StringRef): Assertion > `New->getNumTypes() == 1 && "FIXME: Unhandled"' failed." > > Can somebody help me with the code below responsible for this error? > > // From llvm/lib/Target/X86/X86InstrFragmentsSIMD.td > def mgatherv128i16 : PatFrag<(ops node:$src1, node:$src2, node:$src3), > (masked_gather node:$src1, node:$src2, node:$src3) , [{ > if (MaskedGatherSDNode *mgNode = dyn_cast<MaskedGatherSDNode>(N)) > return (mgNode->getIndex().getValueType() == MV...
2011 Mar 18
0
[LLVMdev] Long-Term ISel Design
On Mar 17, 2011, at 9:32 AM, David A. Greene wrote: > Chris Lattner <clattner at apple.com> writes: >>> 1. We have special target-specific operators for certain shuffles in X86, >>> such as X86unpckl. > >> It also eliminates a lot of fragility. Before doing this, X86 >> legalize would have to be very careful to specifically form shuffles >> that
2016 Dec 09
5
TableGen - Help to implement a form of gather/scatter operations for Mips MSA
Hello. I read on page 4 of http://www.cs.fsu.edu/~whalley/cda5155/chap4.pdf that gather and scatter operations exist for Mips, named LVI and SVI, respectively. Did anyone think of implementing in the LLVM Mips back end (part of the MSA vector instructions) gather and scatter operations? If so, can you share with me the TableGen spec? (I tried to start from LD_DESC_BASE, but it
2011 Mar 27
2
[LLVMdev] Long-Term ISel Design
...> all of the problems we had before by moving to X86ISD nodes. Actually, it would be matching code in X86ISelLowering, in the form of is.*Mask. For example: In X86ISelLowering.cpp: bool X86ISelLowering::isSHUFPMask(...) { ... } unsigned X86::getShuffleSHUFImmediate(SDNode *N) { ... } In X86InstrFragmentsSIMD.td: def SHUFFLE_get_shuf_imm : SDNodeXForm<vector_shuffle, [{ return getI8Imm(X86::getShuffleSHUFImmediate(N)); }]>; def shufp : PatFrag<(ops node:$lhs, node:$rhs), (vector_shuffle node:$lhs, node:$rhs), [{ return X86::isSHUFPMask(cast<ShuffleVectorSDNode>(N)...
2016 Dec 15
2
TableGen - Help to implement a form of gather/scatter operations for Mips MSA
...ern::ParseTreePattern(llvm::Init*, llvm::StringRef): Assertion >> `New->getNumTypes() == 1 && "FIXME: Unhandled"' failed." >> >> Can somebody help me with the code below responsible for this error? >> >> // From llvm/lib/Target/X86/X86InstrFragmentsSIMD.td >> def mgatherv128i16 : PatFrag<(ops node:$src1, node:$src2, node:$src3), >> (masked_gather node:$src1, node:$src2, node:$src3) , [{ >> if (MaskedGatherSDNode *mgNode = dyn_cast<MaskedGatherSDNode>(N)) >> return (mgNode->getIndex().getV...
2011 Mar 17
2
[LLVMdev] Long-Term ISel Design
Chris Lattner <clattner at apple.com> writes: >> 1. We have special target-specific operators for certain shuffles in X86, >> such as X86unpckl. > It also eliminates a lot of fragility. Before doing this, X86 > legalize would have to be very careful to specifically form shuffles > that it knew isel would turn into (e.g.) unpck operations. Now > instead of