mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-29 06:30:39 +00:00
fix up vnot matching, eliminating a dead pattern, correcting a couple of
patterns that would never match because of bitcast, and eliminating use of vnot_conv. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99753 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ba47ce1244
commit
e4c868ff6a
@ -15,6 +15,10 @@
|
||||
// Altivec transformation functions and pattern fragments.
|
||||
//
|
||||
|
||||
// Since we canonicalize buildvectors to v16i8, all vnots "-1" operands will be
|
||||
// of that type.
|
||||
def vnot_ppc : PatFrag<(ops node:$in),
|
||||
(xor node:$in, (bitconvert (v16i8 immAllOnesV)))>;
|
||||
|
||||
def vpkuhum_shuffle : PatFrag<(ops node:$lhs, node:$rhs),
|
||||
(vector_shuffle node:$lhs, node:$rhs), [{
|
||||
@ -321,7 +325,8 @@ def VAND : VXForm_1<1028, (outs VRRC:$vD), (ins VRRC:$vA, VRRC:$vB),
|
||||
[(set VRRC:$vD, (and (v4i32 VRRC:$vA), VRRC:$vB))]>;
|
||||
def VANDC : VXForm_1<1092, (outs VRRC:$vD), (ins VRRC:$vA, VRRC:$vB),
|
||||
"vandc $vD, $vA, $vB", VecFP,
|
||||
[(set VRRC:$vD, (and (v4i32 VRRC:$vA), (vnot VRRC:$vB)))]>;
|
||||
[(set VRRC:$vD, (and (v4i32 VRRC:$vA),
|
||||
(vnot_ppc VRRC:$vB)))]>;
|
||||
|
||||
def VCFSX : VXForm_1<842, (outs VRRC:$vD), (ins u5imm:$UIMM, VRRC:$vB),
|
||||
"vcfsx $vD, $vB, $UIMM", VecFP,
|
||||
@ -435,7 +440,8 @@ def VSUM4UBS: VX1_Int<1544, "vsum4ubs", int_ppc_altivec_vsum4ubs>;
|
||||
|
||||
def VNOR : VXForm_1<1284, (outs VRRC:$vD), (ins VRRC:$vA, VRRC:$vB),
|
||||
"vnor $vD, $vA, $vB", VecFP,
|
||||
[(set VRRC:$vD, (vnot (or (v4i32 VRRC:$vA), VRRC:$vB)))]>;
|
||||
[(set VRRC:$vD, (vnot_ppc (or (v4i32 VRRC:$vA),
|
||||
VRRC:$vB)))]>;
|
||||
def VOR : VXForm_1<1156, (outs VRRC:$vD), (ins VRRC:$vA, VRRC:$vB),
|
||||
"vor $vD, $vA, $vB", VecFP,
|
||||
[(set VRRC:$vD, (or (v4i32 VRRC:$vA), VRRC:$vB))]>;
|
||||
@ -640,12 +646,11 @@ def:Pat<(vmrghw_unary_shuffle (v16i8 VRRC:$vA), undef),
|
||||
(VMRGHW VRRC:$vA, VRRC:$vA)>;
|
||||
|
||||
// Logical Operations
|
||||
def : Pat<(v4i32 (vnot VRRC:$vA)), (VNOR VRRC:$vA, VRRC:$vA)>;
|
||||
def : Pat<(v4i32 (vnot_conv VRRC:$vA)), (VNOR VRRC:$vA, VRRC:$vA)>;
|
||||
def : Pat<(v4i32 (vnot_ppc VRRC:$vA)), (VNOR VRRC:$vA, VRRC:$vA)>;
|
||||
|
||||
def : Pat<(v4i32 (vnot_conv (or VRRC:$A, VRRC:$B))),
|
||||
def : Pat<(v4i32 (vnot_ppc (or VRRC:$A, VRRC:$B))),
|
||||
(VNOR VRRC:$A, VRRC:$B)>;
|
||||
def : Pat<(v4i32 (and VRRC:$A, (vnot_conv VRRC:$B))),
|
||||
def : Pat<(v4i32 (and VRRC:$A, (vnot_ppc VRRC:$B))),
|
||||
(VANDC VRRC:$A, VRRC:$B)>;
|
||||
|
||||
def : Pat<(fmul VRRC:$vA, VRRC:$vB),
|
||||
|
Loading…
Reference in New Issue
Block a user