@@ -770,6 +770,30 @@ const void *mlirDenseElementsAttrGetRawData(MlirAttribute attr) {
770
770
// Resource blob attributes.
771
771
// ===----------------------------------------------------------------------===//
772
772
773
+ bool mlirAttributeIsADenseResourceElements (MlirAttribute attr) {
774
+ return llvm::isa<DenseResourceElementsAttr>(unwrap (attr));
775
+ }
776
+
777
+ MlirAttribute mlirUnmanagedDenseResourceElementsAttrGet (
778
+ MlirType shapedType, MlirStringRef name, void *data, size_t dataLength,
779
+ size_t dataAlignment, bool dataIsMutable,
780
+ void (*deleter)(void *userData, const void *data, size_t size,
781
+ size_t align),
782
+ void *userData) {
783
+ AsmResourceBlob::DeleterFn cppDeleter = {};
784
+ if (deleter) {
785
+ cppDeleter = [deleter, userData](void *data, size_t size, size_t align) {
786
+ deleter (userData, data, size, align);
787
+ };
788
+ }
789
+ AsmResourceBlob blob (
790
+ llvm::ArrayRef (static_cast <const char *>(data), dataLength),
791
+ dataAlignment, std::move (cppDeleter), dataIsMutable);
792
+ return wrap (
793
+ DenseResourceElementsAttr::get (llvm::cast<ShapedType>(unwrap (shapedType)),
794
+ unwrap (name), std::move (blob)));
795
+ }
796
+
773
797
template <typename U, typename T>
774
798
static MlirAttribute getDenseResource (MlirType shapedType, MlirStringRef name,
775
799
intptr_t numElements, const T *elements) {
@@ -778,139 +802,122 @@ static MlirAttribute getDenseResource(MlirType shapedType, MlirStringRef name,
778
802
llvm::ArrayRef (elements, numElements))));
779
803
}
780
804
781
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseBoolResourceElementsAttrGet (
805
+ MlirAttribute mlirUnmanagedDenseBoolResourceElementsAttrGet (
782
806
MlirType shapedType, MlirStringRef name, intptr_t numElements,
783
807
const int *elements) {
784
808
return getDenseResource<DenseBoolResourceElementsAttr>(shapedType, name,
785
809
numElements, elements);
786
810
}
787
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseUInt8ResourceElementsAttrGet (
811
+ MlirAttribute mlirUnmanagedDenseUInt8ResourceElementsAttrGet (
788
812
MlirType shapedType, MlirStringRef name, intptr_t numElements,
789
813
const uint8_t *elements) {
790
814
return getDenseResource<DenseUI8ResourceElementsAttr>(shapedType, name,
791
815
numElements, elements);
792
816
}
793
- MLIR_CAPI_EXPORTED MlirAttribute
794
- mlirUnmanagedDenseUInt16ResourceElementsAttrGet (MlirType shapedType,
795
- MlirStringRef name,
796
- intptr_t numElements,
797
- const uint16_t *elements) {
817
+ MlirAttribute mlirUnmanagedDenseUInt16ResourceElementsAttrGet (
818
+ MlirType shapedType, MlirStringRef name, intptr_t numElements,
819
+ const uint16_t *elements) {
798
820
return getDenseResource<DenseUI16ResourceElementsAttr>(shapedType, name,
799
821
numElements, elements);
800
822
}
801
- MLIR_CAPI_EXPORTED MlirAttribute
802
- mlirUnmanagedDenseUInt32ResourceElementsAttrGet (MlirType shapedType,
803
- MlirStringRef name,
804
- intptr_t numElements,
805
- const uint32_t *elements) {
823
+ MlirAttribute mlirUnmanagedDenseUInt32ResourceElementsAttrGet (
824
+ MlirType shapedType, MlirStringRef name, intptr_t numElements,
825
+ const uint32_t *elements) {
806
826
return getDenseResource<DenseUI32ResourceElementsAttr>(shapedType, name,
807
827
numElements, elements);
808
828
}
809
- MLIR_CAPI_EXPORTED MlirAttribute
810
- mlirUnmanagedDenseUInt64ResourceElementsAttrGet (MlirType shapedType,
811
- MlirStringRef name,
812
- intptr_t numElements,
813
- const uint64_t *elements) {
829
+ MlirAttribute mlirUnmanagedDenseUInt64ResourceElementsAttrGet (
830
+ MlirType shapedType, MlirStringRef name, intptr_t numElements,
831
+ const uint64_t *elements) {
814
832
return getDenseResource<DenseUI64ResourceElementsAttr>(shapedType, name,
815
833
numElements, elements);
816
834
}
817
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseInt8ResourceElementsAttrGet (
835
+ MlirAttribute mlirUnmanagedDenseInt8ResourceElementsAttrGet (
818
836
MlirType shapedType, MlirStringRef name, intptr_t numElements,
819
837
const int8_t *elements) {
820
838
return getDenseResource<DenseUI8ResourceElementsAttr>(shapedType, name,
821
839
numElements, elements);
822
840
}
823
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseInt16ResourceElementsAttrGet (
841
+ MlirAttribute mlirUnmanagedDenseInt16ResourceElementsAttrGet (
824
842
MlirType shapedType, MlirStringRef name, intptr_t numElements,
825
843
const int16_t *elements) {
826
844
return getDenseResource<DenseUI16ResourceElementsAttr>(shapedType, name,
827
845
numElements, elements);
828
846
}
829
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseInt32ResourceElementsAttrGet (
847
+ MlirAttribute mlirUnmanagedDenseInt32ResourceElementsAttrGet (
830
848
MlirType shapedType, MlirStringRef name, intptr_t numElements,
831
849
const int32_t *elements) {
832
850
return getDenseResource<DenseUI32ResourceElementsAttr>(shapedType, name,
833
851
numElements, elements);
834
852
}
835
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseInt64ResourceElementsAttrGet (
853
+ MlirAttribute mlirUnmanagedDenseInt64ResourceElementsAttrGet (
836
854
MlirType shapedType, MlirStringRef name, intptr_t numElements,
837
855
const int64_t *elements) {
838
856
return getDenseResource<DenseUI64ResourceElementsAttr>(shapedType, name,
839
857
numElements, elements);
840
858
}
841
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseFloatResourceElementsAttrGet (
859
+ MlirAttribute mlirUnmanagedDenseFloatResourceElementsAttrGet (
842
860
MlirType shapedType, MlirStringRef name, intptr_t numElements,
843
861
const float *elements) {
844
862
return getDenseResource<DenseF32ResourceElementsAttr>(shapedType, name,
845
863
numElements, elements);
846
864
}
847
- MLIR_CAPI_EXPORTED MlirAttribute
848
- mlirUnmanagedDenseDoubleResourceElementsAttrGet (MlirType shapedType,
849
- MlirStringRef name,
850
- intptr_t numElements,
851
- const double *elements) {
865
+ MlirAttribute mlirUnmanagedDenseDoubleResourceElementsAttrGet (
866
+ MlirType shapedType, MlirStringRef name, intptr_t numElements,
867
+ const double *elements) {
852
868
return getDenseResource<DenseF64ResourceElementsAttr>(shapedType, name,
853
869
numElements, elements);
854
870
}
855
- MLIR_CAPI_EXPORTED MlirAttribute mlirUnmanagedDenseBlobResourceElementsAttrGet (
856
- MlirType shapedType, MlirStringRef name, const void *data,
857
- size_t dataLength) {
858
- return wrap (DenseResourceElementsAttr::get (
859
- llvm::cast<ShapedType>(unwrap (shapedType)), unwrap (name),
860
- UnmanagedAsmResourceBlob::allocateInferAlign (
861
- llvm::ArrayRef (static_cast <const char *>(data), dataLength))));
862
- }
863
-
864
871
template <typename U, typename T>
865
872
static T getDenseResourceVal (MlirAttribute attr, intptr_t pos) {
866
873
return (*llvm::cast<U>(unwrap (attr)).tryGetAsArrayRef ())[pos];
867
874
}
868
875
869
- MLIR_CAPI_EXPORTED bool
870
- mlirDenseBoolResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
876
+ bool mlirDenseBoolResourceElementsAttrGetValue (MlirAttribute attr,
877
+ intptr_t pos) {
871
878
return getDenseResourceVal<DenseBoolResourceElementsAttr, uint8_t >(attr, pos);
872
879
}
873
- MLIR_CAPI_EXPORTED uint8_t
874
- mlirDenseUInt8ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
880
+ uint8_t mlirDenseUInt8ResourceElementsAttrGetValue (MlirAttribute attr,
881
+ intptr_t pos) {
875
882
return getDenseResourceVal<DenseUI8ResourceElementsAttr, uint8_t >(attr, pos);
876
883
}
877
- MLIR_CAPI_EXPORTED uint16_t
878
- mlirDenseUInt16ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
884
+ uint16_t mlirDenseUInt16ResourceElementsAttrGetValue (MlirAttribute attr,
885
+ intptr_t pos) {
879
886
return getDenseResourceVal<DenseUI16ResourceElementsAttr, uint16_t >(attr,
880
887
pos);
881
888
}
882
- MLIR_CAPI_EXPORTED uint32_t
883
- mlirDenseUInt32ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
889
+ uint32_t mlirDenseUInt32ResourceElementsAttrGetValue (MlirAttribute attr,
890
+ intptr_t pos) {
884
891
return getDenseResourceVal<DenseUI32ResourceElementsAttr, uint32_t >(attr,
885
892
pos);
886
893
}
887
- MLIR_CAPI_EXPORTED uint64_t
888
- mlirDenseUInt64ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
894
+ uint64_t mlirDenseUInt64ResourceElementsAttrGetValue (MlirAttribute attr,
895
+ intptr_t pos) {
889
896
return getDenseResourceVal<DenseUI64ResourceElementsAttr, uint64_t >(attr,
890
897
pos);
891
898
}
892
- MLIR_CAPI_EXPORTED int8_t
893
- mlirDenseInt8ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
899
+ int8_t mlirDenseInt8ResourceElementsAttrGetValue (MlirAttribute attr,
900
+ intptr_t pos) {
894
901
return getDenseResourceVal<DenseUI8ResourceElementsAttr, int8_t >(attr, pos);
895
902
}
896
- MLIR_CAPI_EXPORTED int16_t
897
- mlirDenseInt16ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
903
+ int16_t mlirDenseInt16ResourceElementsAttrGetValue (MlirAttribute attr,
904
+ intptr_t pos) {
898
905
return getDenseResourceVal<DenseUI16ResourceElementsAttr, int16_t >(attr, pos);
899
906
}
900
- MLIR_CAPI_EXPORTED int32_t
901
- mlirDenseInt32ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
907
+ int32_t mlirDenseInt32ResourceElementsAttrGetValue (MlirAttribute attr,
908
+ intptr_t pos) {
902
909
return getDenseResourceVal<DenseUI32ResourceElementsAttr, int32_t >(attr, pos);
903
910
}
904
- MLIR_CAPI_EXPORTED int64_t
905
- mlirDenseInt64ResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
911
+ int64_t mlirDenseInt64ResourceElementsAttrGetValue (MlirAttribute attr,
912
+ intptr_t pos) {
906
913
return getDenseResourceVal<DenseUI64ResourceElementsAttr, int64_t >(attr, pos);
907
914
}
908
- MLIR_CAPI_EXPORTED float
909
- mlirDenseFloatResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
915
+ float mlirDenseFloatResourceElementsAttrGetValue (MlirAttribute attr,
916
+ intptr_t pos) {
910
917
return getDenseResourceVal<DenseF32ResourceElementsAttr, float >(attr, pos);
911
918
}
912
- MLIR_CAPI_EXPORTED double
913
- mlirDenseDoubleResourceElementsAttrGetValue (MlirAttribute attr, intptr_t pos) {
919
+ double mlirDenseDoubleResourceElementsAttrGetValue (MlirAttribute attr,
920
+ intptr_t pos) {
914
921
return getDenseResourceVal<DenseF64ResourceElementsAttr, double >(attr, pos);
915
922
}
916
923
0 commit comments