Home | History | Annotate | Download | only in Mips

Lines Matching refs:MVT

99   addRegisterClass(MVT::i32, Mips::CPURegsRegisterClass);
102 addRegisterClass(MVT::i64, Mips::CPU64RegsRegisterClass);
105 addRegisterClass(MVT::f32, Mips::FGR32RegisterClass);
110 addRegisterClass(MVT::f64, Mips::FGR64RegisterClass);
112 addRegisterClass(MVT::f64, Mips::AFGR64RegisterClass);
117 setLoadExtAction(ISD::EXTLOAD, MVT::i1, Promote);
118 setLoadExtAction(ISD::ZEXTLOAD, MVT::i1, Promote);
119 setLoadExtAction(ISD::SEXTLOAD, MVT::i1, Promote);
122 setLoadExtAction(ISD::EXTLOAD, MVT::f32, Expand);
123 setTruncStoreAction(MVT::f64, MVT::f32, Expand);
129 AddPromotedToType(ISD::SETCC, MVT::i1, MVT::i32);
132 setOperationAction(ISD::GlobalAddress, MVT::i32, Custom);
133 setOperationAction(ISD::BlockAddress, MVT::i32, Custom);
134 setOperationAction(ISD::GlobalTLSAddress, MVT::i32, Custom);
135 setOperationAction(ISD::JumpTable, MVT::i32, Custom);
136 setOperationAction(ISD::ConstantPool, MVT::i32, Custom);
137 setOperationAction(ISD::SELECT, MVT::f32, Custom);
138 setOperationAction(ISD::SELECT, MVT::f64, Custom);
139 setOperationAction(ISD::SELECT, MVT::i32, Custom);
140 setOperationAction(ISD::SETCC, MVT::f32, Custom);
141 setOperationAction(ISD::SETCC, MVT::f64, Custom);
142 setOperationAction(ISD::BRCOND, MVT::Other, Custom);
143 setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32, Custom);
144 setOperationAction(ISD::VASTART, MVT::Other, Custom);
145 setOperationAction(ISD::FCOPYSIGN, MVT::f32, Custom);
146 setOperationAction(ISD::FCOPYSIGN, MVT::f64, Custom);
147 setOperationAction(ISD::MEMBARRIER, MVT::Other, Custom);
148 setOperationAction(ISD::ATOMIC_FENCE, MVT::Other, Custom);
151 setOperationAction(ISD::FABS, MVT::f32, Custom);
152 setOperationAction(ISD::FABS, MVT::f64, Custom);
156 setOperationAction(ISD::GlobalAddress, MVT::i64, Custom);
157 setOperationAction(ISD::BlockAddress, MVT::i64, Custom);
158 setOperationAction(ISD::GlobalTLSAddress, MVT::i64, Custom);
159 setOperationAction(ISD::JumpTable, MVT::i64, Custom);
160 setOperationAction(ISD::ConstantPool, MVT::i64, Custom);
161 setOperationAction(ISD::SELECT, MVT::i64, Custom);
162 setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i64, Custom);
165 setOperationAction(ISD::SDIV, MVT::i32, Expand);
166 setOperationAction(ISD::SREM, MVT::i32, Expand);
167 setOperationAction(ISD::UDIV, MVT::i32, Expand);
168 setOperationAction(ISD::UREM, MVT::i32, Expand);
169 setOperationAction(ISD::SDIV, MVT::i64, Expand);
170 setOperationAction(ISD::SREM, MVT::i64, Expand);
171 setOperationAction(ISD::UDIV, MVT::i64, Expand);
172 setOperationAction(ISD::UREM, MVT::i64, Expand);
175 setOperationAction(ISD::BR_JT, MVT::Other, Expand);
176 setOperationAction(ISD::BR_CC, MVT::Other, Expand);
177 setOperationAction(ISD::SELECT_CC, MVT::Other, Expand);
178 setOperationAction(ISD::UINT_TO_FP, MVT::i32, Expand);
179 setOperationAction(ISD::UINT_TO_FP, MVT::i64, Expand);
180 setOperationAction(ISD::FP_TO_UINT, MVT::i32, Expand);
181 setOperationAction(ISD::FP_TO_UINT, MVT::i64, Expand);
182 setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i1, Expand);
183 setOperationAction(ISD::CTPOP, MVT::i32, Expand);
184 setOperationAction(ISD::CTPOP, MVT::i64, Expand);
185 setOperationAction(ISD::CTTZ, MVT::i32, Expand);
186 setOperationAction(ISD::CTTZ, MVT::i64, Expand);
187 setOperationAction(ISD::CTTZ_ZERO_UNDEF, MVT::i32, Expand);
188 setOperationAction(ISD::CTTZ_ZERO_UNDEF, MVT::i64, Expand);
189 setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i32, Expand);
190 setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i64, Expand);
191 setOperationAction(ISD::ROTL, MVT::i32, Expand);
192 setOperationAction(ISD::ROTL, MVT::i64, Expand);
195 setOperationAction(ISD::ROTR, MVT::i32, Expand);
198 setOperationAction(ISD::ROTR, MVT::i64, Expand);
200 setOperationAction(ISD::SHL_PARTS, MVT::i32, Expand);
201 setOperationAction(ISD::SRA_PARTS, MVT::i32, Expand);
202 setOperationAction(ISD::SRL_PARTS, MVT::i32, Expand);
203 setOperationAction(ISD::FSIN, MVT::f32, Expand);
204 setOperationAction(ISD::FSIN, MVT::f64, Expand);
205 setOperationAction(ISD::FCOS, MVT::f32, Expand);
206 setOperationAction(ISD::FCOS, MVT::f64, Expand);
207 setOperationAction(ISD::FPOWI, MVT::f32, Expand);
208 setOperationAction(ISD::FPOW, MVT::f32, Expand);
209 setOperationAction(ISD::FPOW, MVT::f64, Expand);
210 setOperationAction(ISD::FLOG, MVT::f32, Expand);
211 setOperationAction(ISD::FLOG2, MVT::f32, Expand);
212 setOperationAction(ISD::FLOG10, MVT::f32, Expand);
213 setOperationAction(ISD::FEXP, MVT::f32, Expand);
214 setOperationAction(ISD::FMA, MVT::f32, Expand);
215 setOperationAction(ISD::FMA, MVT::f64, Expand);
216 setOperationAction(ISD::FREM, MVT::f32, Expand);
217 setOperationAction(ISD::FREM, MVT::f64, Expand);
220 setOperationAction(ISD::FNEG, MVT::f32, Expand);
221 setOperationAction(ISD::FNEG, MVT::f64, Expand);
224 setOperationAction(ISD::EXCEPTIONADDR, MVT::i32, Expand);
225 setOperationAction(ISD::EXCEPTIONADDR, MVT::i64, Expand);
226 setOperationAction(ISD::EHSELECTION, MVT::i32, Expand);
227 setOperationAction(ISD::EHSELECTION, MVT::i64, Expand);
229 setOperationAction(ISD::VAARG, MVT::Other, Expand);
230 setOperationAction(ISD::VACOPY, MVT::Other, Expand);
231 setOperationAction(ISD::VAEND, MVT::Other, Expand);
234 setOperationAction(ISD::STACKSAVE, MVT::Other, Expand);
235 setOperationAction(ISD::STACKRESTORE, MVT::Other, Expand);
237 setOperationAction(ISD::ATOMIC_LOAD, MVT::i32, Expand);
238 setOperationAction(ISD::ATOMIC_LOAD, MVT::i64, Expand);
239 setOperationAction(ISD::ATOMIC_STORE, MVT::i32, Expand);
240 setOperationAction(ISD::ATOMIC_STORE, MVT::i64, Expand);
245 setOperationAction(ISD::SELECT_CC, MVT::f64, Expand);
248 setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i8, Expand);
249 setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16, Expand);
253 setOperationAction(ISD::CTLZ, MVT::i32, Expand);
254 setOperationAction(ISD::CTLZ, MVT::i64, Expand);
258 setOperationAction(ISD::BSWAP, MVT::i32, Expand);
259 setOperationAction(ISD::BSWAP, MVT::i64, Expand);
280 MVT::SimpleValueType SVT = VT.getSimpleVT().SimpleTy;
283 case MVT::i64:
284 case MVT::i32:
285 case MVT::i16:
287 case MVT::f32:
295 return MVT::i32;
348 SDValue MAdd = CurDAG->getNode(MultOpc, dl, MVT::Glue,
355 SDValue CopyFromLo = CurDAG->getCopyFromReg(Chain, dl, Mips::LO, MVT::i32,
358 Mips::HI, MVT::i32,
421 SDValue MSub = CurDAG->getNode(MultOpc, dl, MVT::Glue,
428 SDValue CopyFromLo = CurDAG->getCopyFromReg(Chain, dl, Mips::LO, MVT::i32,
431 Mips::HI, MVT::i32,
450 if (Subtarget->hasMips32() && N->getValueType(0) == MVT::i32 &&
463 if (Subtarget->hasMips32() && N->getValueType(0) == MVT::i32 &&
477 unsigned LO = (Ty == MVT::i32) ? Mips::LO : Mips::LO64;
478 unsigned HI = (Ty == MVT::i32) ? Mips::HI : Mips::HI64;
483 SDValue DivRem = DAG.getNode(opc, dl, MVT::Glue,
564 return DAG.getNode(MipsISD::FPCmp, dl, MVT::Glue, LHS, RHS,
565 DAG.getConstant(FPCondCCodeToFCC(CC), MVT::i32));
648 ShiftRight.getOperand(0), DAG.getConstant(Pos, MVT::i32),
649 DAG.getConstant(SMSize, MVT::i32));
702 DAG.getConstant(SMPos0, MVT::i32),
703 DAG.getConstant(SMSize0, MVT::i32), And0.getOperand(0));
980 const TargetRegisterClass *RC = getRegClassFor(MVT::getIntegerVT(Size * 8));
1068 const TargetRegisterClass *RC = getRegClassFor(MVT::i32);
1220 const TargetRegisterClass *RC = getRegClassFor(MVT::getIntegerVT(Size * 8));
1303 const TargetRegisterClass *RC = getRegClassFor(MVT::i32);
1469 SDVTList VTLs = DAG.getVTList(getPointerTy(), MVT::Other);
1494 SDValue BrCode = DAG.getConstant(GetFPBranchCodeFromCond(CC), MVT::i32);
1519 SDValue True = DAG.getConstant(1, MVT::i32);
1520 SDValue False = DAG.getConstant(0, MVT::i32);
1532 SDVTList VTs = DAG.getVTList(MVT::i32);
1538 SDValue GA = DAG.getTargetGlobalAddress(GV, dl, MVT::i32, 0,
1541 SDValue GOT = DAG.getGLOBAL_OFFSET_TABLE(MVT::i32);
1542 return DAG.getNode(ISD::ADD, dl, MVT::i32, GOT, GPRelNode);
1545 SDValue GAHi = DAG.getTargetGlobalAddress(GV, dl, MVT::i32, 0,
1547 SDValue GALo = DAG.getTargetGlobalAddress(GV, dl, MVT::i32, 0,
1550 SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, GALo);
1551 return DAG.getNode(ISD::ADD, dl, MVT::i32, HiPart, Lo);
1583 SDValue BAHi = DAG.getBlockAddress(BA, MVT::i32, true, MipsII::MO_ABS_HI);
1584 SDValue BALo = DAG.getBlockAddress(BA, MVT::i32, true, MipsII::MO_ABS_LO);
1585 SDValue Hi = DAG.getNode(MipsISD::Hi, dl, MVT::i32, BAHi);
1586 SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, BALo);
1587 return DAG.getNode(ISD::ADD, dl, MVT::i32, Hi, Lo);
1724 // SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, MVT::i32, CP);
1725 // SDValue GOT = DAG.getGLOBAL_OFFSET_TABLE(MVT::i32);
1726 // ResNode = DAG.getNode(ISD::ADD, MVT::i32, GOT, GPRelNode);
1729 SDValue CPHi = DAG.getTargetConstantPool(C, MVT::i32, N->getAlignment(),
1731 SDValue CPLo = DAG.getTargetConstantPool(C, MVT::i32, N->getAlignment(),
1733 SDValue HiPart = DAG.getNode(MipsISD::Hi, dl, MVT::i32, CPHi);
1734 SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, CPLo);
1735 ResNode = DAG.getNode(ISD::ADD, dl, MVT::i32, HiPart, Lo);
1773 SDValue Const1 = DAG.getConstant(1, MVT::i32);
1774 SDValue Const31 = DAG.getConstant(31, MVT::i32);
1780 SDValue X = (TyX == MVT::f32) ?
1781 DAG.getNode(ISD::BITCAST, DL, MVT::i32, Op.getOperand(0)) :
1782 DAG.getNode(MipsISD::ExtractElementF64, DL, MVT::i32, Op.getOperand(0),
1784 SDValue Y = (TyY == MVT::f32) ?
1785 DAG.getNode(ISD::BITCAST, DL, MVT::i32, Op.getOperand(1)) :
1786 DAG.getNode(MipsISD::ExtractElementF64, DL, MVT::i32, Op.getOperand(1),
1792 SDValue E = DAG.getNode(MipsISD::Ext, DL, MVT::i32, Y, Const31, Const1);
1793 Res = DAG.getNode(MipsISD::Ins, DL, MVT::i32, E, Const31, Const1, X);
1800 SDValue SllX = DAG.getNode(ISD::SHL, DL, MVT::i32, X, Const1);
1801 SDValue SrlX = DAG.getNode(ISD::SRL, DL, MVT::i32, SllX, Const1);
1802 SDValue SrlY = DAG.getNode(ISD::SRL, DL, MVT::i32, Y, Const31);
1803 SDValue SllY = DAG.getNode(ISD::SHL, DL, MVT::i32, SrlY, Const31);
1804 Res = DAG.getNode(ISD::OR, DL, MVT::i32, SrlX, SllY);
1807 if (TyX == MVT::f32)
1810 SDValue LowX = DAG.getNode(MipsISD::ExtractElementF64, DL, MVT::i32,
1811 Op.getOperand(0), DAG.getConstant(0, MVT::i32));
1812 return DAG.getNode(MipsISD::BuildPairF64, DL, MVT::f64, LowX, Res);
1818 EVT TyX = MVT::getIntegerVT(WidthX), TyY = MVT::getIntegerVT(WidthY);
1819 SDValue Const1 = DAG.getConstant(1, MVT::i32);
1830 DAG.getConstant(WidthY - 1, MVT::i32), Const1);
1838 DAG.getConstant(WidthX - 1, MVT::i32), Const1, X);
1850 DAG.getConstant(WidthY - 1, MVT::i32));
1858 DAG.getConstant(WidthX - 1, MVT::i32));
1872 SDValue Res, Const1 = DAG.getConstant(1, MVT::i32);
1877 SDValue X = (Op.getValueType() == MVT::f32) ?
1878 DAG.getNode(ISD::BITCAST, DL, MVT::i32, Op.getOperand(0)) :
1879 DAG.getNode(MipsISD::ExtractElementF64, DL, MVT::i32, Op.getOperand(0),
1884 Res = DAG.getNode(MipsISD::Ins, DL, MVT::i32,
1885 DAG.getRegister(Mips::ZERO, MVT::i32),
1886 DAG.getConstant(31, MVT::i32), Const1, X);
1888 SDValue SllX = DAG.getNode(ISD::SHL, DL, MVT::i32, X, Const1);
1889 Res = DAG.getNode(ISD::SRL, DL, MVT::i32, SllX, Const1);
1892 if (Op.getValueType() == MVT::f32)
1893 return DAG.getNode(ISD::BITCAST, DL, MVT::f32, Res);
1895 SDValue LowX = DAG.getNode(MipsISD::ExtractElementF64, DL, MVT::i32,
1896 Op.getOperand(0), DAG.getConstant(0, MVT::i32));
1897 return DAG.getNode(MipsISD::BuildPairF64, DL, MVT::f64, LowX, Res);
1901 SDValue Res, Const1 = DAG.getConstant(1, MVT::i32);
1905 SDValue X = DAG.getNode(ISD::BITCAST, DL, MVT::i64, Op.getOperand(0));
1909 Res = DAG.getNode(MipsISD::Ins, DL, MVT::i64,
1910 DAG.getRegister(Mips::ZERO_64, MVT::i64),
1911 DAG.getConstant(63, MVT::i32), Const1, X);
1913 SDValue SllX = DAG.getNode(ISD::SHL, DL, MVT::i64, X, Const1);
1914 Res = DAG.getNode(ISD::SRL, DL, MVT::i64, SllX, Const1);
1917 return DAG.getNode(ISD::BITCAST, DL, MVT::f64, Res);
1922 if (Subtarget->hasMips64() && (Op.getValueType() == MVT::f64))
1948 return DAG.getNode(MipsISD::Sync, dl, MVT::Other, Op.getOperand(0),
1949 DAG.getConstant(SType, MVT::i32));
1958 return DAG.getNode(MipsISD::Sync, dl, MVT::Other, Op.getOperand(0),
1959 DAG.getConstant(SType, MVT::i32));
1981 static bool CC_MipsO32(unsigned ValNo, MVT ValVT,
1982 MVT LocVT, CCValAssign::LocInfo LocInfo,
2009 if (LocVT == MVT::i8 || LocVT == MVT::i16) {
2010 LocVT = MVT::i32;
2027 bool isI64 = (ValVT == MVT::i32 && OrigAlign == 8);
2029 if (ValVT == MVT::i32 || (ValVT == MVT::f32 && AllocateFloatsInIntReg)) {
2035 LocVT = MVT::i32;
2036 } else if (ValVT == MVT::f64 && AllocateFloatsInIntReg) {
2043 LocVT = MVT::i32;
2046 if (ValVT == MVT::f32) {
2079 static bool CC_Mips64Byval(unsigned ValNo, MVT ValVT, MVT LocVT,
2117 MVT ArgVT = Outs[i].VT;
2159 MVT PtrType, bool isLittle) {
2170 SDValue LoadPtr = DAG.getNode(ISD::ADD, dl, MVT::i32, Arg,
2171 DAG.getConstant(Offset, MVT::i32));
2172 SDValue LoadVal = DAG.getLoad(MVT::i32, dl, Chain, LoadPtr,
2189 SDValue LoadPtr = DAG.getNode(ISD::ADD, dl, MVT::i32, Arg,
2190 DAG.getConstant(Offset, MVT::i32));
2192 SDValue LoadVal = DAG.getExtLoad(ISD::ZEXTLOAD, dl, MVT::i32, Chain,
2194 MVT::getIntegerVT(LoadSize * 8), false,
2201 LoadVal = DAG.getNode(ISD::SHL, dl, MVT::i32, LoadVal,
2202 DAG.getConstant(32 - LoadSize * 8, MVT::i32));
2210 LoadPtr = DAG.getNode(ISD::ADD, dl, MVT::i32, Arg,
2211 DAG.getConstant(Offset, MVT::i32));
2213 SDValue Subword = DAG.getExtLoad(ISD::ZEXTLOAD, dl, MVT::i32, Chain,
2215 MVT::i8, false, false, Alignment);
2220 SDValue Shift = DAG.getNode(ISD::SHL, dl, MVT::i32, Subword,
2221 DAG.getConstant(ShiftAmt, MVT::i32));
2222 LoadVal = DAG.getNode(ISD::OR, dl, MVT::i32, LoadVal, Shift);
2232 SDValue Src = DAG.getNode(ISD::ADD, dl, MVT::i32, Arg,
2233 DAG.getConstant(Offset, MVT::i32));
2237 DAG.getConstant(RemainingSize, MVT::i32),
2269 SDValue LoadVal = DAG.getLoad(MVT::i64, dl, Chain, LoadPtr,
2295 DAG.getExtLoad(ISD::ZEXTLOAD, dl, MVT::i64, Chain, LoadPtr,
2296 MachinePointerInfo(), MVT::getIntegerVT(LoadSize * 8),
2303 SDValue Shift = DAG.getNode(ISD::SHL, dl, MVT::i64, LoadVal,
2304 DAG.getConstant(Shamt, MVT::i32));
2306 Val = Val.getNode() ? DAG.getNode(ISD::OR, dl, MVT::i64, Val, Shift) :
2418 MVT ValVT = VA.getValVT(), LocVT = VA.getLocVT();
2441 if ((ValVT == MVT::f32 && LocVT == MVT::i32) ||
2442 (ValVT == MVT::f64 && LocVT == MVT::i64))
2444 else if (ValVT == MVT::f64 && LocVT == MVT::i32) {
2445 SDValue Lo = DAG.getNode(MipsISD::ExtractElementF64, dl, MVT::i32,
2446 Arg, DAG.getConstant(0, MVT::i32));
2447 SDValue Hi = DAG.getNode(MipsISD::ExtractElementF64, dl, MVT::i32,
2448 Arg, DAG.getConstant(1, MVT::i32));
2506 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other,
2590 SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Glue);
2670 SDValue StorePtr = DAG.getNode(ISD::ADD, dl, MVT::i32, FIN,
2671 DAG.getConstant(i * 4, MVT::i32));
2672 SDValue Store = DAG.getStore(Chain, dl, DAG.getRegister(Reg, MVT::i32),
2709 SDValue Store = DAG.getStore(Chain, dl, DAG.getRegister(VReg, MVT::i64),
2781 if (RegVT == MVT::i32)
2783 else if (RegVT == MVT::i64)
2785 else if (RegVT == MVT::f32)
2787 else if (RegVT == MVT::f64)
2813 if ((RegVT == MVT::i32 && ValVT == MVT::f32) ||
2814 (RegVT == MVT::i64 && ValVT == MVT::f64))
2816 else if (IsO32 && RegVT == MVT::i32 && ValVT == MVT::f64) {
2822 ArgValue = DAG.getNode(MipsISD::BuildPairF64, dl, MVT::f64,
2850 Reg = MF.getRegInfo().createVirtualRegister(getRegClassFor(MVT::i32));
2854 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Copy, Chain);
2889 MVT::getIntegerVT(RegSize * 8));
2903 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other,
2973 return DAG.getNode(MipsISD::Ret, dl, MVT::Other,
2974 Chain, DAG.getRegister(Mips::RA, MVT::i32), Flag);
2976 return DAG.getNode(MipsISD::Ret, dl, MVT::Other,
2977 Chain, DAG.getRegister(Mips::RA, MVT::i32));
3051 if (VT == MVT::i32)
3053 assert(VT == MVT::i64 && "Unexpected type.");
3056 if (VT == MVT::f32)
3058 if ((VT == MVT::f64) && (!Subtarget->isSingleFloat())) {
3076 if (VT != MVT::f32 && VT != MVT::f64)