@@ -472,15 +472,63 @@ decodeFixedType(ArrayRef<llvm::Intrinsic::IITDescriptor> &infos,
472
472
switch (descriptor.Kind ) {
473
473
case IITDescriptor::Void:
474
474
return VoidType::get (context);
475
- case IITDescriptor::Integer:
476
- return IntType::get (context, descriptor.Integer_Width , /* signed=*/ true );
475
+ case IITDescriptor::VarArg:
476
+ llvm_unreachable (" NYI: IITDescriptor::VarArg" );
477
+ case IITDescriptor::MMX:
478
+ llvm_unreachable (" NYI: IITDescriptor::MMX" );
479
+ case IITDescriptor::Token:
480
+ llvm_unreachable (" NYI: IITDescriptor::Token" );
481
+ case IITDescriptor::Metadata:
482
+ llvm_unreachable (" NYI: IITDescriptor::Metadata" );
483
+ case IITDescriptor::Half:
484
+ llvm_unreachable (" NYI: IITDescriptor::Half" );
485
+ case IITDescriptor::BFloat:
486
+ llvm_unreachable (" NYI: IITDescriptor::BFloat" );
477
487
case IITDescriptor::Float:
478
488
return SingleType::get (context);
479
489
case IITDescriptor::Double:
480
490
return DoubleType::get (context);
481
- default :
482
- llvm_unreachable (" NYI" );
483
- }
491
+ case IITDescriptor::Quad:
492
+ llvm_unreachable (" NYI: IITDescriptor::Quad" );
493
+ case IITDescriptor::Integer:
494
+ return IntType::get (context, descriptor.Integer_Width , /* isSigned=*/ true );
495
+ case IITDescriptor::Vector: {
496
+ mlir::Type elementType = decodeFixedType (infos, context);
497
+ unsigned numElements = descriptor.Vector_Width .getFixedValue ();
498
+ return cir::VectorType::get (context, elementType, numElements);
499
+ }
500
+ case IITDescriptor::Pointer:
501
+ llvm_unreachable (" NYI: IITDescriptor::Pointer" );
502
+ case IITDescriptor::Struct:
503
+ llvm_unreachable (" NYI: IITDescriptor::Struct" );
504
+ case IITDescriptor::Argument:
505
+ llvm_unreachable (" NYI: IITDescriptor::Argument" );
506
+ case IITDescriptor::ExtendArgument:
507
+ llvm_unreachable (" NYI: IITDescriptor::ExtendArgument" );
508
+ case IITDescriptor::TruncArgument:
509
+ llvm_unreachable (" NYI: IITDescriptor::TruncArgument" );
510
+ case IITDescriptor::OneNthEltsVecArgument:
511
+ llvm_unreachable (" NYI: IITDescriptor::OneNthEltsVecArgument" );
512
+ case IITDescriptor::SameVecWidthArgument:
513
+ llvm_unreachable (" NYI: IITDescriptor::SameVecWidthArgument" );
514
+ case IITDescriptor::VecOfAnyPtrsToElt:
515
+ llvm_unreachable (" NYI: IITDescriptor::VecOfAnyPtrsToElt" );
516
+ case IITDescriptor::VecElementArgument:
517
+ llvm_unreachable (" NYI: IITDescriptor::VecElementArgument" );
518
+ case IITDescriptor::Subdivide2Argument:
519
+ llvm_unreachable (" NYI: IITDescriptor::Subdivide2Argument" );
520
+ case IITDescriptor::Subdivide4Argument:
521
+ llvm_unreachable (" NYI: IITDescriptor::Subdivide4Argument" );
522
+ case IITDescriptor::VecOfBitcastsToInt:
523
+ llvm_unreachable (" NYI: IITDescriptor::VecOfBitcastsToInt" );
524
+ case IITDescriptor::AMX:
525
+ llvm_unreachable (" NYI: IITDescriptor::AMX" );
526
+ case IITDescriptor::PPCQuad:
527
+ llvm_unreachable (" NYI: IITDescriptor::PPCQuad" );
528
+ case IITDescriptor::AArch64Svcount:
529
+ llvm_unreachable (" NYI: IITDescriptor::AArch64Svcount" );
530
+ }
531
+ llvm_unreachable (" Unhandled IITDescriptor, must return from switch" );
484
532
}
485
533
486
534
// llvm::Intrinsics accepts only LLVMContext. We need to reimplement it here.
0 commit comments