@@ -649,40 +649,38 @@ llvm::Constant *mlir::LLVM::detail::getLLVMConstant(
649649 auto *arrayType = llvm::ArrayType::get (elementType, numElements);
650650 if (child->isZeroValue () && !elementType->isFPOrFPVectorTy ()) {
651651 return llvm::ConstantAggregateZero::get (arrayType);
652- } else {
653- if (llvm::ConstantDataSequential::isElementTypeCompatible (
654- elementType)) {
655- // TODO: Handle all compatible types. This code only handles integer.
656- if (isa<llvm::IntegerType>(elementType)) {
657- if (llvm::ConstantInt *ci = dyn_cast<llvm::ConstantInt>(child)) {
658- if (ci->getBitWidth () == 8 ) {
659- SmallVector<int8_t > constants (numElements, ci->getZExtValue ());
660- return llvm::ConstantDataArray::get (elementType->getContext (),
661- constants);
662- }
663- if (ci->getBitWidth () == 16 ) {
664- SmallVector<int16_t > constants (numElements, ci->getZExtValue ());
665- return llvm::ConstantDataArray::get (elementType->getContext (),
666- constants);
667- }
668- if (ci->getBitWidth () == 32 ) {
669- SmallVector<int32_t > constants (numElements, ci->getZExtValue ());
670- return llvm::ConstantDataArray::get (elementType->getContext (),
671- constants);
672- }
673- if (ci->getBitWidth () == 64 ) {
674- SmallVector<int64_t > constants (numElements, ci->getZExtValue ());
675- return llvm::ConstantDataArray::get (elementType->getContext (),
676- constants);
677- }
652+ }
653+ if (llvm::ConstantDataSequential::isElementTypeCompatible (elementType)) {
654+ // TODO: Handle all compatible types. This code only handles integer.
655+ if (isa<llvm::IntegerType>(elementType)) {
656+ if (llvm::ConstantInt *ci = dyn_cast<llvm::ConstantInt>(child)) {
657+ if (ci->getBitWidth () == 8 ) {
658+ SmallVector<int8_t > constants (numElements, ci->getZExtValue ());
659+ return llvm::ConstantDataArray::get (elementType->getContext (),
660+ constants);
661+ }
662+ if (ci->getBitWidth () == 16 ) {
663+ SmallVector<int16_t > constants (numElements, ci->getZExtValue ());
664+ return llvm::ConstantDataArray::get (elementType->getContext (),
665+ constants);
666+ }
667+ if (ci->getBitWidth () == 32 ) {
668+ SmallVector<int32_t > constants (numElements, ci->getZExtValue ());
669+ return llvm::ConstantDataArray::get (elementType->getContext (),
670+ constants);
671+ }
672+ if (ci->getBitWidth () == 64 ) {
673+ SmallVector<int64_t > constants (numElements, ci->getZExtValue ());
674+ return llvm::ConstantDataArray::get (elementType->getContext (),
675+ constants);
678676 }
679677 }
680678 }
679+ }
681680 // std::vector is used here to accomodate large number of elements that
682681 // exceed SmallVector capacity.
683682 std::vector<llvm::Constant *> constants (numElements, child);
684683 return llvm::ConstantArray::get (arrayType, constants);
685- }
686684 }
687685 }
688686
0 commit comments