Displaying 3 results from an estimated 3 matches for "x86unpcklps".
Did you mean:
x86unpckl
2011 Feb 26
0
[LLVMdev] X86 LowerVECTOR_SHUFFLE Question
..."Traditional":
defm VUNPCKLPS: sse12_unpack_interleave<0x14, unpckl, v4f32, memopv4f32,
VR128, f128mem, "unpcklps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
SSEPackedSingle>, VEX_4V;
"New-style":
def : Pat<(v4f32 (X86Unpcklps VR128:$src1, (memopv4f32 addr:$src2))),
(VUNPCKLPSrm VR128:$src1, addr:$src2)>, Requires<[HasAVX]>;
I think these are basically the same pattern.
What's the purpose of these special operators and patterns?
-Dave
2011 Feb 25
2
[LLVMdev] X86 LowerVECTOR_SHUFFLE Question
In ToT, LowerVECTOR_SHUFFLE for x86 has this code:
if (X86::isUNPCKLMask(SVOp))
getTargetShuffleNode(getUNPCKLOpcode(VT) dl, VT, V1, V2, DAG);
why would this not be:
if (X86::isUNPCKLMask(SVOp))
return SVOp;
I'm trying to add support for VUNPCKL and am getting into trouble
because the existing code ends up creating:
VUNPCKLPS
load
load
which is badness come selection
2011 Feb 26
2
[LLVMdev] X86 LowerVECTOR_SHUFFLE Question
...> defm VUNPCKLPS: sse12_unpack_interleave<0x14, unpckl, v4f32, memopv4f32,
> VR128, f128mem, "unpcklps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
> SSEPackedSingle>, VEX_4V;
> "New-style":
>
> def : Pat<(v4f32 (X86Unpcklps VR128:$src1, (memopv4f32 addr:$src2))),
> (VUNPCKLPSrm VR128:$src1, addr:$src2)>, Requires<[HasAVX]>;
>
> I think these are basically the same pattern.
>
> What's the purpose of these special operators and patterns?
>
>...