@@ -352,7 +352,16 @@ class UnknownType extends BuiltInType {
352352private predicate isArithmeticType ( @builtintype type , int kind ) {
353353 builtintypes ( type , _, kind , _, _, _) and
354354 kind >= 4 and
355- kind != 34 // Exclude decltype(nullptr)
355+ kind != [ 34 , 63 ] // Exclude decltype(nullptr)and __SVCount_t
356+ }
357+
358+ /**
359+ * The Arm scalable vector count type `__SVCount_t`.
360+ */
361+ class ScalableVectorCount extends BuiltInType {
362+ ScalableVectorCount ( ) { builtintypes ( underlyingElement ( this ) , _, 63 , _, _, _) }
363+
364+ override string getAPrimaryQlClass ( ) { result = "ScalableVectorCount" }
356365}
357366
358367/**
@@ -1084,7 +1093,7 @@ class NullPointerType extends BuiltInType {
10841093/**
10851094 * A C/C++ derived type.
10861095 *
1087- * These are pointer and reference types, array and GNU vector types, and `const` and `volatile` types.
1096+ * These are pointer and reference types, array and vector types, and `const` and `volatile` types.
10881097 * In all cases, the type is formed from a single base type. For example:
10891098 * ```
10901099 * int *pi;
@@ -1643,6 +1652,26 @@ class GNUVectorType extends DerivedType {
16431652 override predicate isDeeplyConstBelow ( ) { this .getBaseType ( ) .isDeeplyConst ( ) }
16441653}
16451654
1655+ /**
1656+ * An Arm Scalable vector type.
1657+ */
1658+ class ScalableVectorType extends DerivedType {
1659+ ScalableVectorType ( ) { derivedtypes ( underlyingElement ( this ) , _, 11 , _) }
1660+
1661+ /**
1662+ * Get the number of tuple elements of this scalable vector type.
1663+ */
1664+ int getNumTupleElements ( ) { tupleelements ( underlyingElement ( this ) , result ) }
1665+
1666+ override string getAPrimaryQlClass ( ) { result = "ScalableVectorType" }
1667+
1668+ override int getAlignment ( ) { arraysizes ( underlyingElement ( this ) , _, _, result ) }
1669+
1670+ override string explain ( ) { result = "scalable vector of {" + this .getBaseType ( ) .explain ( ) + "}" }
1671+
1672+ override predicate isDeeplyConstBelow ( ) { this .getBaseType ( ) .isDeeplyConst ( ) }
1673+ }
1674+
16461675/**
16471676 * A C/C++ pointer to a function. See 7.7.
16481677 * ```
0 commit comments