Follow Chris' suggestion; change the PseudoSourceValue accessors

to return pointers instead of references, since this is always what
is needed.

llvm-svn: 46857
This commit is contained in:
Dan Gohman
2008-02-07 18:41:25 +00:00
parent 0f166de892
commit 16d4bc3dc0
6 changed files with 44 additions and 44 deletions

View File

@@ -37,21 +37,21 @@ namespace llvm {
/// A pseudo source value referencing to the stack frame of a function, /// A pseudo source value referencing to the stack frame of a function,
/// e.g., a spill slot. /// e.g., a spill slot.
static const PseudoSourceValue &getFixedStack(); static const PseudoSourceValue *getFixedStack();
/// A source value referencing the area below the stack frame of a function, /// A source value referencing the area below the stack frame of a function,
/// e.g., the argument space. /// e.g., the argument space.
static const PseudoSourceValue &getStack(); static const PseudoSourceValue *getStack();
/// A source value referencing the global offset table (or something the /// A source value referencing the global offset table (or something the
/// like). /// like).
static const PseudoSourceValue &getGOT(); static const PseudoSourceValue *getGOT();
/// A SV referencing the constant pool /// A SV referencing the constant pool
static const PseudoSourceValue &getConstantPool(); static const PseudoSourceValue *getConstantPool();
/// A SV referencing the jump table /// A SV referencing the jump table
static const PseudoSourceValue &getJumpTable(); static const PseudoSourceValue *getJumpTable();
}; };
} // End llvm namespace } // End llvm namespace

View File

@@ -18,11 +18,11 @@
namespace llvm { namespace llvm {
static ManagedStatic<PseudoSourceValue[5]> PSVs; static ManagedStatic<PseudoSourceValue[5]> PSVs;
const PseudoSourceValue &PseudoSourceValue::getFixedStack() { return (*PSVs)[0]; } const PseudoSourceValue *PseudoSourceValue::getFixedStack() { return &(*PSVs)[0]; }
const PseudoSourceValue &PseudoSourceValue::getStack() { return (*PSVs)[1]; } const PseudoSourceValue *PseudoSourceValue::getStack() { return &(*PSVs)[1]; }
const PseudoSourceValue &PseudoSourceValue::getGOT() { return (*PSVs)[2]; } const PseudoSourceValue *PseudoSourceValue::getGOT() { return &(*PSVs)[2]; }
const PseudoSourceValue &PseudoSourceValue::getConstantPool() { return (*PSVs)[3]; } const PseudoSourceValue *PseudoSourceValue::getConstantPool() { return &(*PSVs)[3]; }
const PseudoSourceValue &PseudoSourceValue::getJumpTable() { return (*PSVs)[4]; } const PseudoSourceValue *PseudoSourceValue::getJumpTable() { return &(*PSVs)[4]; }
static const char *PSVNames[] = { static const char *PSVNames[] = {
"FixedStack", "FixedStack",

View File

@@ -510,11 +510,11 @@ static SDOperand ExpandConstantFP(ConstantFPSDNode *CFP, bool UseCP,
SDOperand CPIdx = DAG.getConstantPool(LLVMC, TLI.getPointerTy()); SDOperand CPIdx = DAG.getConstantPool(LLVMC, TLI.getPointerTy());
if (Extend) { if (Extend) {
return DAG.getExtLoad(ISD::EXTLOAD, MVT::f64, DAG.getEntryNode(), return DAG.getExtLoad(ISD::EXTLOAD, MVT::f64, DAG.getEntryNode(),
CPIdx, &PseudoSourceValue::getConstantPool(), CPIdx, PseudoSourceValue::getConstantPool(),
0, MVT::f32); 0, MVT::f32);
} else { } else {
return DAG.getLoad(VT, DAG.getEntryNode(), CPIdx, return DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0); PseudoSourceValue::getConstantPool(), 0);
} }
} }
@@ -1327,7 +1327,7 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
// Store the vector. // Store the vector.
SDOperand Ch = DAG.getStore(DAG.getEntryNode(), Tmp1, StackPtr, SDOperand Ch = DAG.getStore(DAG.getEntryNode(), Tmp1, StackPtr,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
SPFI); SPFI);
// Truncate or zero extend offset to target pointer type. // Truncate or zero extend offset to target pointer type.
@@ -1339,10 +1339,10 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
SDOperand StackPtr2 = DAG.getNode(ISD::ADD, IdxVT, Tmp3, StackPtr); SDOperand StackPtr2 = DAG.getNode(ISD::ADD, IdxVT, Tmp3, StackPtr);
// Store the scalar value. // Store the scalar value.
Ch = DAG.getStore(Ch, Tmp2, StackPtr2, Ch = DAG.getStore(Ch, Tmp2, StackPtr2,
&PseudoSourceValue::getFixedStack(), SPFI); PseudoSourceValue::getFixedStack(), SPFI);
// Load the updated vector. // Load the updated vector.
Result = DAG.getLoad(VT, Ch, StackPtr, Result = DAG.getLoad(VT, Ch, StackPtr,
&PseudoSourceValue::getFixedStack(), SPFI); PseudoSourceValue::getFixedStack(), SPFI);
break; break;
} }
} }
@@ -1692,9 +1692,9 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
switch (EntrySize) { switch (EntrySize) {
default: assert(0 && "Size of jump table not supported yet."); break; default: assert(0 && "Size of jump table not supported yet."); break;
case 4: LD = DAG.getLoad(MVT::i32, Chain, Addr, case 4: LD = DAG.getLoad(MVT::i32, Chain, Addr,
&PseudoSourceValue::getJumpTable(), 0); break; PseudoSourceValue::getJumpTable(), 0); break;
case 8: LD = DAG.getLoad(MVT::i64, Chain, Addr, case 8: LD = DAG.getLoad(MVT::i64, Chain, Addr,
&PseudoSourceValue::getJumpTable(), 0); break; PseudoSourceValue::getJumpTable(), 0); break;
} }
Addr = LD; Addr = LD;
@@ -4772,12 +4772,12 @@ SDOperand SelectionDAGLegalize::EmitStackConvert(SDOperand SrcOp,
SDOperand Store; SDOperand Store;
if (SrcSize > SlotSize) if (SrcSize > SlotSize)
Store = DAG.getTruncStore(DAG.getEntryNode(), SrcOp, FIPtr, Store = DAG.getTruncStore(DAG.getEntryNode(), SrcOp, FIPtr,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
SPFI, SlotVT); SPFI, SlotVT);
else { else {
assert(SrcSize == SlotSize && "Invalid store"); assert(SrcSize == SlotSize && "Invalid store");
Store = DAG.getStore(DAG.getEntryNode(), SrcOp, FIPtr, Store = DAG.getStore(DAG.getEntryNode(), SrcOp, FIPtr,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
SPFI, SlotVT); SPFI, SlotVT);
} }
@@ -4799,9 +4799,9 @@ SDOperand SelectionDAGLegalize::ExpandSCALAR_TO_VECTOR(SDNode *Node) {
int SPFI = StackPtrFI->getIndex(); int SPFI = StackPtrFI->getIndex();
SDOperand Ch = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), StackPtr, SDOperand Ch = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), StackPtr,
&PseudoSourceValue::getFixedStack(), SPFI); PseudoSourceValue::getFixedStack(), SPFI);
return DAG.getLoad(Node->getValueType(0), Ch, StackPtr, return DAG.getLoad(Node->getValueType(0), Ch, StackPtr,
&PseudoSourceValue::getFixedStack(), SPFI); PseudoSourceValue::getFixedStack(), SPFI);
} }
@@ -4866,7 +4866,7 @@ SDOperand SelectionDAGLegalize::ExpandBUILD_VECTOR(SDNode *Node) {
Constant *CP = ConstantVector::get(CV); Constant *CP = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(CP, TLI.getPointerTy()); SDOperand CPIdx = DAG.getConstantPool(CP, TLI.getPointerTy());
return DAG.getLoad(VT, DAG.getEntryNode(), CPIdx, return DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0); PseudoSourceValue::getConstantPool(), 0);
} }
if (SplatValue.Val) { // Splat of one value? if (SplatValue.Val) { // Splat of one value?
@@ -5209,12 +5209,12 @@ ExpandIntToFP(bool isSigned, MVT::ValueType DestTy, SDOperand Source) {
SDOperand FudgeInReg; SDOperand FudgeInReg;
if (DestTy == MVT::f32) if (DestTy == MVT::f32)
FudgeInReg = DAG.getLoad(MVT::f32, DAG.getEntryNode(), CPIdx, FudgeInReg = DAG.getLoad(MVT::f32, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0); PseudoSourceValue::getConstantPool(), 0);
else if (MVT::getSizeInBits(DestTy) > MVT::getSizeInBits(MVT::f32)) else if (MVT::getSizeInBits(DestTy) > MVT::getSizeInBits(MVT::f32))
// FIXME: Avoid the extend by construction the right constantpool? // FIXME: Avoid the extend by construction the right constantpool?
FudgeInReg = DAG.getExtLoad(ISD::EXTLOAD, DestTy, DAG.getEntryNode(), FudgeInReg = DAG.getExtLoad(ISD::EXTLOAD, DestTy, DAG.getEntryNode(),
CPIdx, CPIdx,
&PseudoSourceValue::getConstantPool(), 0, PseudoSourceValue::getConstantPool(), 0,
MVT::f32); MVT::f32);
else else
assert(0 && "Unexpected conversion"); assert(0 && "Unexpected conversion");
@@ -5358,12 +5358,12 @@ SDOperand SelectionDAGLegalize::ExpandLegalINT_TO_FP(bool isSigned,
SDOperand FudgeInReg; SDOperand FudgeInReg;
if (DestVT == MVT::f32) if (DestVT == MVT::f32)
FudgeInReg = DAG.getLoad(MVT::f32, DAG.getEntryNode(), CPIdx, FudgeInReg = DAG.getLoad(MVT::f32, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0); PseudoSourceValue::getConstantPool(), 0);
else { else {
FudgeInReg = FudgeInReg =
LegalizeOp(DAG.getExtLoad(ISD::EXTLOAD, DestVT, LegalizeOp(DAG.getExtLoad(ISD::EXTLOAD, DestVT,
DAG.getEntryNode(), CPIdx, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0, PseudoSourceValue::getConstantPool(), 0,
MVT::f32)); MVT::f32));
} }
@@ -6778,10 +6778,10 @@ void SelectionDAGLegalize::SplitVectorOp(SDOperand Op, SDOperand &Lo,
SDOperand St = DAG.getStore(DAG.getEntryNode(), SDOperand St = DAG.getStore(DAG.getEntryNode(),
InOp, Ptr, InOp, Ptr,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
FI->getIndex()); FI->getIndex());
InOp = DAG.getLoad(Op.getValueType(), St, Ptr, InOp = DAG.getLoad(Op.getValueType(), St, Ptr,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
FI->getIndex()); FI->getIndex());
} }
// Split the vector and convert each of the pieces now. // Split the vector and convert each of the pieces now.

View File

@@ -3548,7 +3548,7 @@ MemOperand LSBaseSDNode::getMemOperand() const {
const FrameIndexSDNode *FI = const FrameIndexSDNode *FI =
dyn_cast<const FrameIndexSDNode>(getBasePtr().Val); dyn_cast<const FrameIndexSDNode>(getBasePtr().Val);
if (!getSrcValue() && FI) if (!getSrcValue() && FI)
return MemOperand(&PseudoSourceValue::getFixedStack(), Flags, return MemOperand(PseudoSourceValue::getFixedStack(), Flags,
FI->getIndex(), Size, Alignment); FI->getIndex(), Size, Alignment);
else else
return MemOperand(getSrcValue(), Flags, return MemOperand(getSrcValue(), Flags,

View File

@@ -2203,7 +2203,7 @@ static SDOperand LowerSINT_TO_FP(SDOperand Op, SelectionDAG &DAG) {
Op.getOperand(0)); Op.getOperand(0));
// STD the extended value into the stack slot. // STD the extended value into the stack slot.
MemOperand MO(&PseudoSourceValue::getFixedStack(), MemOperand MO(PseudoSourceValue::getFixedStack(),
MemOperand::MOStore, FrameIdx, 8, 8); MemOperand::MOStore, FrameIdx, 8, 8);
SDOperand Store = DAG.getNode(PPCISD::STD_32, MVT::Other, SDOperand Store = DAG.getNode(PPCISD::STD_32, MVT::Other,
DAG.getEntryNode(), Ext64, FIdx, DAG.getEntryNode(), Ext64, FIdx,

View File

@@ -1091,7 +1091,7 @@ SDOperand X86TargetLowering::LowerMemArgument(SDOperand Op, SelectionDAG &DAG,
if (isByVal) if (isByVal)
return FIN; return FIN;
return DAG.getLoad(VA.getValVT(), Root, FIN, return DAG.getLoad(VA.getValVT(), Root, FIN,
&PseudoSourceValue::getFixedStack(), FI); PseudoSourceValue::getFixedStack(), FI);
} }
SDOperand SDOperand
@@ -1221,7 +1221,7 @@ X86TargetLowering::LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG) {
SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::i64); SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::i64);
SDOperand Store = SDOperand Store =
DAG.getStore(Val.getValue(1), Val, FIN, DAG.getStore(Val.getValue(1), Val, FIN,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
RegSaveFrameIndex); RegSaveFrameIndex);
MemOps.push_back(Store); MemOps.push_back(Store);
FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN,
@@ -1237,7 +1237,7 @@ X86TargetLowering::LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG) {
SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::v4f32); SDOperand Val = DAG.getCopyFromReg(Root, VReg, MVT::v4f32);
SDOperand Store = SDOperand Store =
DAG.getStore(Val.getValue(1), Val, FIN, DAG.getStore(Val.getValue(1), Val, FIN,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
RegSaveFrameIndex); RegSaveFrameIndex);
MemOps.push_back(Store); MemOps.push_back(Store);
FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN,
@@ -1299,7 +1299,7 @@ X86TargetLowering::LowerMemOpCallTo(SDOperand Op, SelectionDAG &DAG,
return CreateCopyOfByValArgument(Arg, PtrOff, Chain, Flags, DAG); return CreateCopyOfByValArgument(Arg, PtrOff, Chain, Flags, DAG);
} }
return DAG.getStore(Chain, Arg, PtrOff, return DAG.getStore(Chain, Arg, PtrOff,
&PseudoSourceValue::getStack(), LocMemOffset); PseudoSourceValue::getStack(), LocMemOffset);
} }
/// ClassifyX86_64SRetCallReturn - Classify how to implement a x86-64 /// ClassifyX86_64SRetCallReturn - Classify how to implement a x86-64
@@ -1571,7 +1571,7 @@ SDOperand X86TargetLowering::LowerCALL(SDOperand Op, SelectionDAG &DAG) {
// Store relative to framepointer. // Store relative to framepointer.
MemOpChains2.push_back( MemOpChains2.push_back(
DAG.getStore(Chain, Source, FIN, DAG.getStore(Chain, Source, FIN,
&PseudoSourceValue::getFixedStack(), FI)); PseudoSourceValue::getFixedStack(), FI));
} }
} }
} }
@@ -3801,7 +3801,7 @@ X86TargetLowering::LowerGlobalAddress(SDOperand Op, SelectionDAG &DAG) {
// The same applies for external symbols during PIC codegen // The same applies for external symbols during PIC codegen
if (Subtarget->GVRequiresExtraLoad(GV, getTargetMachine(), false)) if (Subtarget->GVRequiresExtraLoad(GV, getTargetMachine(), false))
Result = DAG.getLoad(getPointerTy(), DAG.getEntryNode(), Result, Result = DAG.getLoad(getPointerTy(), DAG.getEntryNode(), Result,
&PseudoSourceValue::getGOT(), 0); PseudoSourceValue::getGOT(), 0);
return Result; return Result;
} }
@@ -3860,7 +3860,7 @@ LowerToTLSExecModel(GlobalAddressSDNode *GA, SelectionDAG &DAG,
if (GA->getGlobal()->isDeclaration()) // initial exec TLS model if (GA->getGlobal()->isDeclaration()) // initial exec TLS model
Offset = DAG.getLoad(PtrVT, DAG.getEntryNode(), Offset, Offset = DAG.getLoad(PtrVT, DAG.getEntryNode(), Offset,
&PseudoSourceValue::getGOT(), 0); PseudoSourceValue::getGOT(), 0);
// The address of the thread local variable is the add of the thread // The address of the thread local variable is the add of the thread
// pointer with the offset of the variable. // pointer with the offset of the variable.
@@ -3993,7 +3993,7 @@ SDOperand X86TargetLowering::LowerSINT_TO_FP(SDOperand Op, SelectionDAG &DAG) {
SDOperand StackSlot = DAG.getFrameIndex(SSFI, getPointerTy()); SDOperand StackSlot = DAG.getFrameIndex(SSFI, getPointerTy());
SDOperand Chain = DAG.getStore(DAG.getEntryNode(), Op.getOperand(0), SDOperand Chain = DAG.getStore(DAG.getEntryNode(), Op.getOperand(0),
StackSlot, StackSlot,
&PseudoSourceValue::getFixedStack(), PseudoSourceValue::getFixedStack(),
SSFI); SSFI);
// These are really Legal; caller falls through into that case. // These are really Legal; caller falls through into that case.
@@ -4036,7 +4036,7 @@ SDOperand X86TargetLowering::LowerSINT_TO_FP(SDOperand Op, SelectionDAG &DAG) {
Ops.push_back(InFlag); Ops.push_back(InFlag);
Chain = DAG.getNode(X86ISD::FST, Tys, &Ops[0], Ops.size()); Chain = DAG.getNode(X86ISD::FST, Tys, &Ops[0], Ops.size());
Result = DAG.getLoad(Op.getValueType(), Chain, StackSlot, Result = DAG.getLoad(Op.getValueType(), Chain, StackSlot,
&PseudoSourceValue::getFixedStack(), SSFI); PseudoSourceValue::getFixedStack(), SSFI);
} }
return Result; return Result;
@@ -4075,7 +4075,7 @@ FP_TO_SINTHelper(SDOperand Op, SelectionDAG &DAG) {
if (isScalarFPTypeInSSEReg(Op.getOperand(0).getValueType())) { if (isScalarFPTypeInSSEReg(Op.getOperand(0).getValueType())) {
assert(Op.getValueType() == MVT::i64 && "Invalid FP_TO_SINT to lower!"); assert(Op.getValueType() == MVT::i64 && "Invalid FP_TO_SINT to lower!");
Chain = DAG.getStore(Chain, Value, StackSlot, Chain = DAG.getStore(Chain, Value, StackSlot,
&PseudoSourceValue::getFixedStack(), SSFI); PseudoSourceValue::getFixedStack(), SSFI);
SDVTList Tys = DAG.getVTList(Op.getOperand(0).getValueType(), MVT::Other); SDVTList Tys = DAG.getVTList(Op.getOperand(0).getValueType(), MVT::Other);
SDOperand Ops[] = { SDOperand Ops[] = {
Chain, StackSlot, DAG.getValueType(Op.getOperand(0).getValueType()) Chain, StackSlot, DAG.getValueType(Op.getOperand(0).getValueType())
@@ -4135,7 +4135,7 @@ SDOperand X86TargetLowering::LowerFABS(SDOperand Op, SelectionDAG &DAG) {
Constant *C = ConstantVector::get(CV); Constant *C = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4); SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx, SDOperand Mask = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0, PseudoSourceValue::getConstantPool(), 0,
false, 16); false, 16);
return DAG.getNode(X86ISD::FAND, VT, Op.getOperand(0), Mask); return DAG.getNode(X86ISD::FAND, VT, Op.getOperand(0), Mask);
} }
@@ -4164,7 +4164,7 @@ SDOperand X86TargetLowering::LowerFNEG(SDOperand Op, SelectionDAG &DAG) {
Constant *C = ConstantVector::get(CV); Constant *C = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4); SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx, SDOperand Mask = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0, PseudoSourceValue::getConstantPool(), 0,
false, 16); false, 16);
if (MVT::isVector(VT)) { if (MVT::isVector(VT)) {
return DAG.getNode(ISD::BIT_CONVERT, VT, return DAG.getNode(ISD::BIT_CONVERT, VT,
@@ -4213,7 +4213,7 @@ SDOperand X86TargetLowering::LowerFCOPYSIGN(SDOperand Op, SelectionDAG &DAG) {
Constant *C = ConstantVector::get(CV); Constant *C = ConstantVector::get(CV);
SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4); SDOperand CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask1 = DAG.getLoad(SrcVT, DAG.getEntryNode(), CPIdx, SDOperand Mask1 = DAG.getLoad(SrcVT, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0, PseudoSourceValue::getConstantPool(), 0,
false, 16); false, 16);
SDOperand SignBit = DAG.getNode(X86ISD::FAND, SrcVT, Op1, Mask1); SDOperand SignBit = DAG.getNode(X86ISD::FAND, SrcVT, Op1, Mask1);
@@ -4242,7 +4242,7 @@ SDOperand X86TargetLowering::LowerFCOPYSIGN(SDOperand Op, SelectionDAG &DAG) {
C = ConstantVector::get(CV); C = ConstantVector::get(CV);
CPIdx = DAG.getConstantPool(C, getPointerTy(), 4); CPIdx = DAG.getConstantPool(C, getPointerTy(), 4);
SDOperand Mask2 = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx, SDOperand Mask2 = DAG.getLoad(VT, DAG.getEntryNode(), CPIdx,
&PseudoSourceValue::getConstantPool(), 0, PseudoSourceValue::getConstantPool(), 0,
false, 16); false, 16);
SDOperand Val = DAG.getNode(X86ISD::FAND, VT, Op0, Mask2); SDOperand Val = DAG.getNode(X86ISD::FAND, VT, Op0, Mask2);