Home | History | Annotate | Download | only in ARM

Lines Matching refs:ISD

185   int ISD = TLI->InstructionOpcodeToISD(Opcode);
186 assert(ISD && "Invalid opcode");
191 { ISD::FP_ROUND, MVT::v2f64, 2 },
192 { ISD::FP_EXTEND, MVT::v2f32, 2 },
193 { ISD::FP_EXTEND, MVT::v4f32, 4 }
196 if (Src->isVectorTy() && ST->hasNEON() && (ISD == ISD::FP_ROUND ||
197 ISD == ISD::FP_EXTEND)) {
199 int Idx = CostTableLookup(NEONFltDblTbl, ISD, LT.second);
215 { ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i16, 0 },
216 { ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i16, 0 },
217 { ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i32, 1 },
218 { ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i32, 1 },
219 { ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 0 },
220 { ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 1 },
223 { ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 3 },
224 { ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 },
225 { ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 3 },
226 { ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 3 },
227 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, 7 },
228 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, 7 },
229 { ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 6 },
230 { ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 6 },
231 { ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 6 },
232 { ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 6 },
235 { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 6 },
236 { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 3 },
239 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 },
240 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 },
242 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i8, 3 },
243 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i8, 3 },
244 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i16, 2 },
245 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i16, 2 },
246 { ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i32, 1 },
247 { ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i32, 1 },
248 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i1, 3 },
249 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i1, 3 },
250 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i8, 3 },
251 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i8, 3 },
252 { ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i16, 2 },
253 { ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i16, 2 },
254 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 },
255 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 4 },
256 { ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 },
257 { ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i32, 2 },
258 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i16, 8 },
259 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i16, 8 },
260 { ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i32, 4 },
261 { ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i32, 4 },
263 { ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 1 },
264 { ISD::FP_TO_UINT, MVT::v4i32, MVT::v4f32, 1 },
265 { ISD::FP_TO_SINT, MVT::v4i8, MVT::v4f32, 3 },
266 { ISD::FP_TO_UINT, MVT::v4i8, MVT::v4f32, 3 },
267 { ISD::FP_TO_SINT, MVT::v4i16, MVT::v4f32, 2 },
268 { ISD::FP_TO_UINT, MVT::v4i16, MVT::v4f32, 2 },
271 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i32, 2 },
272 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 2 },
274 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i8, 4 },
275 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i8, 4 },
276 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i16, 3 },
277 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i16, 3 },
278 { ISD::SINT_TO_FP, MVT::v2f64, MVT::v2i32, 2 },
279 { ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 2 },
281 { ISD::FP_TO_SINT, MVT::v2i32, MVT::v2f64, 2 },
282 { ISD::FP_TO_UINT, MVT::v2i32, MVT::v2f64, 2 },
283 { ISD::FP_TO_SINT, MVT::v8i16, MVT::v8f32, 4 },
284 { ISD::FP_TO_UINT, MVT::v8i16, MVT::v8f32, 4 },
285 { ISD::FP_TO_SINT, MVT::v16i16, MVT::v16f32, 8 },
286 { ISD::FP_TO_UINT, MVT::v16i16, MVT::v16f32, 8 }
290 int Idx = ConvertCostTableLookup(NEONVectorConversionTbl, ISD,
299 { ISD::FP_TO_SINT, MVT::i1, MVT::f32, 2 },
300 { ISD::FP_TO_UINT, MVT::i1, MVT::f32, 2 },
301 { ISD::FP_TO_SINT, MVT::i1, MVT::f64, 2 },
302 { ISD::FP_TO_UINT, MVT::i1, MVT::f64, 2 },
303 { ISD::FP_TO_SINT, MVT::i8, MVT::f32, 2 },
304 { ISD::FP_TO_UINT, MVT::i8, MVT::f32, 2 },
305 { ISD::FP_TO_SINT, MVT::i8, MVT::f64, 2 },
306 { ISD::FP_TO_UINT, MVT::i8, MVT::f64, 2 },
307 { ISD::FP_TO_SINT, MVT::i16, MVT::f32, 2 },
308 { ISD::FP_TO_UINT, MVT::i16, MVT::f32, 2 },
309 { ISD::FP_TO_SINT, MVT::i16, MVT::f64, 2 },
310 { ISD::FP_TO_UINT, MVT::i16, MVT::f64, 2 },
311 { ISD::FP_TO_SINT, MVT::i32, MVT::f32, 2 },
312 { ISD::FP_TO_UINT, MVT::i32, MVT::f32, 2 },
313 { ISD::FP_TO_SINT, MVT::i32, MVT::f64, 2 },
314 { ISD::FP_TO_UINT, MVT::i32, MVT::f64, 2 },
315 { ISD::FP_TO_SINT, MVT::i64, MVT::f32, 10 },
316 { ISD::FP_TO_UINT, MVT::i64, MVT::f32, 10 },
317 { ISD::FP_TO_SINT, MVT::i64, MVT::f64, 10 },
318 { ISD::FP_TO_UINT, MVT::i64, MVT::f64, 10 }
321 int Idx = ConvertCostTableLookup(NEONFloatConversionTbl, ISD,
330 { ISD::SINT_TO_FP, MVT::f32, MVT::i1, 2 },
331 { ISD::UINT_TO_FP, MVT::f32, MVT::i1, 2 },
332 { ISD::SINT_TO_FP, MVT::f64, MVT::i1, 2 },
333 { ISD::UINT_TO_FP, MVT::f64, MVT::i1, 2 },
334 { ISD::SINT_TO_FP, MVT::f32, MVT::i8, 2 },
335 { ISD::UINT_TO_FP, MVT::f32, MVT::i8, 2 },
336 { ISD::SINT_TO_FP, MVT::f64, MVT::i8, 2 },
337 { ISD::UINT_TO_FP, MVT::f64, MVT::i8, 2 },
338 { ISD::SINT_TO_FP, MVT::f32, MVT::i16, 2 },
339 { ISD::UINT_TO_FP, MVT::f32, MVT::i16, 2 },
340 { ISD::SINT_TO_FP, MVT::f64, MVT::i16, 2 },
341 { ISD::UINT_TO_FP, MVT::f64, MVT::i16, 2 },
342 { ISD::SINT_TO_FP, MVT::f32, MVT::i32, 2 },
343 { ISD::UINT_TO_FP, MVT::f32, MVT::i32, 2 },
344 { ISD::SINT_TO_FP, MVT::f64, MVT::i32, 2 },
345 { ISD::UINT_TO_FP, MVT::f64, MVT::i32, 2 },
346 { ISD::SINT_TO_FP, MVT::f32, MVT::i64, 10 },
347 { ISD::UINT_TO_FP, MVT::f32, MVT::i64, 10 },
348 { ISD::SINT_TO_FP, MVT::f64, MVT::i64, 10 },
349 { ISD::UINT_TO_FP, MVT::f64, MVT::i64, 10 }
353 int Idx = ConvertCostTableLookup(NEONIntegerConversionTbl, ISD,
363 { ISD::SIGN_EXTEND, MVT::i64, MVT::i16, 2 },
366 { ISD::TRUNCATE, MVT::i32, MVT::i64, 0 },
367 { ISD::TRUNCATE, MVT::i16, MVT::i64, 0 },
368 { ISD::TRUNCATE, MVT::i8, MVT::i64, 0 },
369 { ISD::TRUNCATE, MVT::i1, MVT::i64, 0 }
373 int Idx = ConvertCostTableLookup(ARMIntegerConversionTbl, ISD,
398 int ISD = TLI->InstructionOpcodeToISD(Opcode);
400 if (ST->hasNEON() && ValTy->isVectorTy() && ISD == ISD::SELECT) {
404 { ISD::SELECT, MVT::v16i1, MVT::v16i16, 2*16 + 1 + 3*1 + 4*1 },
405 { ISD::SELECT, MVT::v8i1, MVT::v8i32, 4*8 + 1*3 + 1*4 + 1*2 },
406 { ISD::SELECT, MVT::v16i1, MVT::v16i32, 4*16 + 1*6 + 1*8 + 1*4 },
407 { ISD::SELECT, MVT::v4i1, MVT::v4i64, 4*4 + 1*2 + 1 },
408 { ISD::SELECT, MVT::v8i1, MVT::v8i64, 50 },
409 { ISD::SELECT, MVT::v16i1, MVT::v16i64, 100 }
415 int Idx = ConvertCostTableLookup(NEONVectorSelectTbl, ISD,
454 {ISD::VECTOR_SHUFFLE, MVT::v2i32, 1},
455 {ISD::VECTOR_SHUFFLE, MVT::v2f32, 1},
456 {ISD::VECTOR_SHUFFLE, MVT::v2i64, 1},
457 {ISD::VECTOR_SHUFFLE, MVT::v2f64, 1},
459 {ISD::VECTOR_SHUFFLE, MVT::v4i32, 2},
460 {ISD::VECTOR_SHUFFLE, MVT::v4f32, 2},
461 {ISD::VECTOR_SHUFFLE, MVT::v8i16, 2},
462 {ISD::VECTOR_SHUFFLE, MVT::v16i8, 2}};
466 int Idx = CostTableLookup(NEONShuffleTbl, ISD::VECTOR_SHUFFLE, LT.second);
477 {ISD::VECTOR_SHUFFLE, MVT::v2f32, 1},
478 {ISD::VECTOR_SHUFFLE, MVT::v2i64, 1},
479 {ISD::VECTOR_SHUFFLE, MVT::v2f64, 1},
480 {ISD::VECTOR_SHUFFLE, MVT::v2i32, 1},
482 {ISD::VECTOR_SHUFFLE, MVT::v4i32, 2},
483 {ISD::VECTOR_SHUFFLE, MVT::v4f32, 2},
484 {ISD::VECTOR_SHUFFLE, MVT::v4i16, 2},
486 {ISD::VECTOR_SHUFFLE, MVT::v8i16, 16},
488 {ISD::VECTOR_SHUFFLE, MVT::v16i8, 32}};
492 CostTableLookup(NEONAltShuffleTbl, ISD::VECTOR_SHUFFLE, LT.second);
514 { ISD::SDIV, MVT::v1i64, 1 * FunctionCallDivCost},
515 { ISD::UDIV, MVT::v1i64, 1 * FunctionCallDivCost},
516 { ISD::SREM, MVT::v1i64, 1 * FunctionCallDivCost},
517 { ISD::UREM, MVT::v1i64, 1 * FunctionCallDivCost},
518 { ISD::SDIV, MVT::v2i32, 2 * FunctionCallDivCost},
519 { ISD::UDIV, MVT::v2i32, 2 * FunctionCallDivCost},
520 { ISD::SREM, MVT::v2i32, 2 * FunctionCallDivCost},
521 { ISD::UREM, MVT::v2i32, 2 * FunctionCallDivCost},
522 { ISD::SDIV, MVT::v4i16, ReciprocalDivCost},
523 { ISD::UDIV, MVT::v4i16, ReciprocalDivCost},
524 { ISD::SREM, MVT::v4i16, 4 * FunctionCallDivCost},
525 { ISD::UREM, MVT::v4i16, 4 * FunctionCallDivCost},
526 { ISD::SDIV, MVT::v8i8, ReciprocalDivCost},
527 { ISD::UDIV, MVT::v8i8, ReciprocalDivCost},
528 { ISD::SREM, MVT::v8i8, 8 * FunctionCallDivCost},
529 { ISD::UREM, MVT::v8i8, 8 * FunctionCallDivCost},
531 { ISD::SDIV, MVT::v2i64, 2 * FunctionCallDivCost},
532 { ISD::UDIV, MVT::v2i64, 2 * FunctionCallDivCost},
533 { ISD::SREM, MVT::v2i64, 2 * FunctionCallDivCost},
534 { ISD::UREM, MVT::v2i64, 2 * FunctionCallDivCost},
535 { ISD::SDIV, MVT::v4i32, 4 * FunctionCallDivCost},
536 { ISD::UDIV, MVT::v4i32, 4 * FunctionCallDivCost},
537 { ISD::SREM, MVT::v4i32, 4 * FunctionCallDivCost},
538 { ISD::UREM, MVT::v4i32, 4 * FunctionCallDivCost},
539 { ISD::SDIV, MVT::v8i16, 8 * FunctionCallDivCost},
540 { ISD::UDIV, MVT::v8i16, 8 * FunctionCallDivCost},
541 { ISD::SREM, MVT::v8i16, 8 * FunctionCallDivCost},
542 { ISD::UREM, MVT::v8i16, 8 * FunctionCallDivCost},
543 { ISD::SDIV, MVT::v16i8, 16 * FunctionCallDivCost},
544 { ISD::UDIV, MVT::v16i8, 16 * FunctionCallDivCost},
545 { ISD::SREM, MVT::v16i8, 16 * FunctionCallDivCost},
546 { ISD::UREM, MVT::v16i8, 16 * FunctionCallDivCost},