mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-07 12:07:17 +00:00
The target specific node PANDN name is misleading. That happens because
it's later selected to a ANDNPD/ANDNPS instruction instead of the PANDN instruction. Rename it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135087 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e35c5e06fe
commit
c1af4772f1
@ -9470,7 +9470,7 @@ const char *X86TargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
case X86ISD::PINSRB: return "X86ISD::PINSRB";
|
||||
case X86ISD::PINSRW: return "X86ISD::PINSRW";
|
||||
case X86ISD::PSHUFB: return "X86ISD::PSHUFB";
|
||||
case X86ISD::PANDN: return "X86ISD::PANDN";
|
||||
case X86ISD::ANDNP: return "X86ISD::ANDNP";
|
||||
case X86ISD::PSIGNB: return "X86ISD::PSIGNB";
|
||||
case X86ISD::PSIGNW: return "X86ISD::PSIGNW";
|
||||
case X86ISD::PSIGND: return "X86ISD::PSIGND";
|
||||
@ -11821,7 +11821,7 @@ static SDValue PerformAndCombine(SDNode *N, SelectionDAG &DAG,
|
||||
if (R.getNode())
|
||||
return R;
|
||||
|
||||
// Want to form PANDN nodes, in the hopes of then easily combining them with
|
||||
// Want to form ANDNP nodes, in the hopes of then easily combining them with
|
||||
// OR and AND nodes to form PBLEND/PSIGN.
|
||||
EVT VT = N->getValueType(0);
|
||||
if (VT != MVT::v2i64)
|
||||
@ -11834,12 +11834,12 @@ static SDValue PerformAndCombine(SDNode *N, SelectionDAG &DAG,
|
||||
// Check LHS for vnot
|
||||
if (N0.getOpcode() == ISD::XOR &&
|
||||
ISD::isBuildVectorAllOnes(N0.getOperand(1).getNode()))
|
||||
return DAG.getNode(X86ISD::PANDN, DL, VT, N0.getOperand(0), N1);
|
||||
return DAG.getNode(X86ISD::ANDNP, DL, VT, N0.getOperand(0), N1);
|
||||
|
||||
// Check RHS for vnot
|
||||
if (N1.getOpcode() == ISD::XOR &&
|
||||
ISD::isBuildVectorAllOnes(N1.getOperand(1).getNode()))
|
||||
return DAG.getNode(X86ISD::PANDN, DL, VT, N1.getOperand(0), N0);
|
||||
return DAG.getNode(X86ISD::ANDNP, DL, VT, N1.getOperand(0), N0);
|
||||
|
||||
return SDValue();
|
||||
}
|
||||
@ -11865,10 +11865,10 @@ static SDValue PerformOrCombine(SDNode *N, SelectionDAG &DAG,
|
||||
if (Subtarget->hasSSSE3()) {
|
||||
if (VT == MVT::v2i64) {
|
||||
// Canonicalize pandn to RHS
|
||||
if (N0.getOpcode() == X86ISD::PANDN)
|
||||
if (N0.getOpcode() == X86ISD::ANDNP)
|
||||
std::swap(N0, N1);
|
||||
// or (and (m, x), (pandn m, y))
|
||||
if (N0.getOpcode() == ISD::AND && N1.getOpcode() == X86ISD::PANDN) {
|
||||
if (N0.getOpcode() == ISD::AND && N1.getOpcode() == X86ISD::ANDNP) {
|
||||
SDValue Mask = N1.getOperand(0);
|
||||
SDValue X = N1.getOperand(1);
|
||||
SDValue Y;
|
||||
@ -11877,7 +11877,7 @@ static SDValue PerformOrCombine(SDNode *N, SelectionDAG &DAG,
|
||||
if (N0.getOperand(1) == Mask)
|
||||
Y = N0.getOperand(0);
|
||||
|
||||
// Check to see if the mask appeared in both the AND and PANDN and
|
||||
// Check to see if the mask appeared in both the AND and ANDNP and
|
||||
if (!Y.getNode())
|
||||
return SDValue();
|
||||
|
||||
|
@ -169,8 +169,8 @@ namespace llvm {
|
||||
/// PSHUFB - Shuffle 16 8-bit values within a vector.
|
||||
PSHUFB,
|
||||
|
||||
/// PANDN - and with not'd value.
|
||||
PANDN,
|
||||
/// ANDNP - Bitwise Logical AND NOT of Packed FP values.
|
||||
ANDNP,
|
||||
|
||||
/// PSIGNB/W/D - Copy integer sign.
|
||||
PSIGNB, PSIGNW, PSIGND,
|
||||
|
@ -46,7 +46,7 @@ def X86cmpsd : SDNode<"X86ISD::FSETCCsd", SDTX86Cmpsd>;
|
||||
def X86pshufb : SDNode<"X86ISD::PSHUFB",
|
||||
SDTypeProfile<1, 2, [SDTCisVT<0, v16i8>, SDTCisSameAs<0,1>,
|
||||
SDTCisSameAs<0,2>]>>;
|
||||
def X86pandn : SDNode<"X86ISD::PANDN",
|
||||
def X86andnp : SDNode<"X86ISD::ANDNP",
|
||||
SDTypeProfile<1, 2, [SDTCisVT<0, v2i64>, SDTCisSameAs<0,1>,
|
||||
SDTCisSameAs<0,2>]>>;
|
||||
def X86psignb : SDNode<"X86ISD::PSIGNB",
|
||||
|
@ -1558,11 +1558,11 @@ defm XOR : sse12_fp_packed_logical<0x57, "xor", xor>;
|
||||
let isCommutable = 0 in
|
||||
defm ANDN : sse12_fp_packed_logical<0x55, "andn", undef /* dummy */, 1, [
|
||||
// single r+r
|
||||
[(set VR128:$dst, (X86pandn VR128:$src1, VR128:$src2))],
|
||||
[(set VR128:$dst, (X86andnp VR128:$src1, VR128:$src2))],
|
||||
// double r+r
|
||||
[],
|
||||
// single r+m
|
||||
[(set VR128:$dst, (X86pandn VR128:$src1, (memopv2i64 addr:$src2)))],
|
||||
[(set VR128:$dst, (X86andnp VR128:$src1, (memopv2i64 addr:$src2)))],
|
||||
// double r+m
|
||||
[]]>;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user