diff --git a/src/mapleall/maple_ir/include/cfg_primitive_types.h b/src/mapleall/maple_ir/include/cfg_primitive_types.h index a6ea88c26ae39801c8a0e75de8c196572b192c9b..9bec531d33dac091a4e69da9b254d4bece17b8b9 100644 --- a/src/mapleall/maple_ir/include/cfg_primitive_types.h +++ b/src/mapleall/maple_ir/include/cfg_primitive_types.h @@ -41,6 +41,7 @@ struct PrimitiveTypeProperty { bool isDynamic; bool isDynamicAny; bool isDynamicNone; + bool isVector; }; const PrimitiveTypeProperty &GetPrimitiveTypeProperty(PrimType pType); diff --git a/src/mapleall/maple_ir/include/lexer.h b/src/mapleall/maple_ir/include/lexer.h index 26812634a563ff82c0c70e654d2b98f0e92f9886..ebf4991f005645d5ff77a10383b56dcee1697643 100644 --- a/src/mapleall/maple_ir/include/lexer.h +++ b/src/mapleall/maple_ir/include/lexer.h @@ -148,7 +148,7 @@ class MIRLexer { }; inline bool IsPrimitiveType(TokenKind tk) { - return (tk >= TK_void) && (tk <= TK_agg); + return (tk >= TK_void) && (tk < TK_unknown); } inline bool IsVarName(TokenKind tk) { diff --git a/src/mapleall/maple_ir/include/mir_type.h b/src/mapleall/maple_ir/include/mir_type.h index 2d82d431e4c902ba9cbaa2d695b60bb130d3901a..3a483326efae2db8b59e792c981591c92d8bfd3b 100644 --- a/src/mapleall/maple_ir/include/mir_type.h +++ b/src/mapleall/maple_ir/include/mir_type.h @@ -113,6 +113,18 @@ inline bool IsPrimitivePoint(PrimitiveType primitiveType) { return primitiveType.IsPointer(); } +inline bool IsPrimitiveVector(PrimitiveType primitiveType) { + return primitiveType.IsVector(); +} + +inline bool IsPrimitiveVectorFloat(PrimitiveType primitiveType) { + return primitiveType.IsVector() && primitiveType.IsFloat(); +} + +inline bool IsPrimitiveVectorInteger(PrimitiveType primitiveType) { + return primitiveType.IsVector() && primitiveType.IsInteger(); +} + bool IsNoCvtNeeded(PrimType toType, PrimType fromType); inline bool IsRefOrPtrAssign(PrimType toType, PrimType fromType) { diff --git a/src/mapleall/maple_ir/include/prim_types.def b/src/mapleall/maple_ir/include/prim_types.def index 5ef8ea3d6509df710f73d4324b743b90b13e81f9..a84105d3e82deea25bea9782ccfcb85d1b427364 100644 --- a/src/mapleall/maple_ir/include/prim_types.def +++ b/src/mapleall/maple_ir/include/prim_types.def @@ -51,13 +51,24 @@ PRIMTYPE(constStr) PRIMTYPE(gen) PRIMTYPE(agg) - PRIMTYPE(unknown) PRIMTYPE(v2i64) PRIMTYPE(v4i32) PRIMTYPE(v8i16) PRIMTYPE(v16i8) + PRIMTYPE(v2u64) + PRIMTYPE(v4u32) + PRIMTYPE(v8u16) + PRIMTYPE(v16u8) PRIMTYPE(v2f64) PRIMTYPE(v4f32) + PRIMTYPE(v2i32) + PRIMTYPE(v4i16) + PRIMTYPE(v8i8) + PRIMTYPE(v2u32) + PRIMTYPE(v4u16) + PRIMTYPE(v8u8) + PRIMTYPE(v2f32) + PRIMTYPE(unknown) #endif // ~LOAD_ALGO_PRIMARY_TYPE @@ -66,219 +77,274 @@ static const PrimitiveTypeProperty PTProperty_begin = { /*type=*/PTY_begin, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_void = { /*type=*/PTY_void, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_i8 = { /*type=*/PTY_i8, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_i16 = { /*type=*/PTY_i16, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_i32 = { /*type=*/PTY_i32, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_i64 = { /*type=*/PTY_i64, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_u8 = { /*type=*/PTY_u8, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_u16 = { /*type=*/PTY_u16, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_u32 = { /*type=*/PTY_u32, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_u64 = { /*type=*/PTY_u64, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/true, /*isFloat=*/false, - /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_u1 = { /*type=*/PTY_u1, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_ptr = { /*type=*/PTY_ptr, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/true, /*isFloat=*/false, - /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_ref = { /*type=*/PTY_ref, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/true, /*isFloat=*/false, - /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_a32 = { /*type=*/PTY_a32, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/true, /*isFloat=*/false, - /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_a64 = { /*type=*/PTY_a64, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/true, /*isFloat=*/false, - /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_f32 = { /*type=*/PTY_f32, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_f64 = { /*type=*/PTY_f64, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_f128 = { /*type=*/PTY_f128, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_c64 = { /*type=*/PTY_c64, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_c128 = { /*type=*/PTY_c128, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; #ifdef DYNAMICLANG static const PrimitiveTypeProperty PTProperty_simplestr = { /*type=*/PTY_simplestr, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/true, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/true, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/true, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_simpleobj = { /*type=*/PTY_simpleobj, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/true, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/true, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/true, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynany = { /*type=*/PTY_dynany, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/true, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/true, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynundef = { /*type=*/PTY_dynundef, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynnull = { /*type=*/PTY_dynnull, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynbool = { /*type=*/PTY_dynbool, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dyni32 = { /*type=*/PTY_dyni32, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynstr = { /*type=*/PTY_dynstr, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynobj = { /*type=*/PTY_dynobj, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynf64 = { /*type=*/PTY_dynf64, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynf32 = { /*type=*/PTY_dynf32, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_dynnone = { /*type=*/PTY_dynnone, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/true + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/true, /*isDynamicAny=*/false, /*isDynamicNone=*/true, /*isVector*/false }; #endif // ~DYNAMICLANG static const PrimitiveTypeProperty PTProperty_constStr = { /*type=*/PTY_constStr, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/true, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_gen = { /*type=*/PTY_gen, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_agg = { /*type=*/PTY_agg, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false -}; - -static const PrimitiveTypeProperty PTProperty_unknown = { - /*type=*/PTY_unknown, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; static const PrimitiveTypeProperty PTProperty_v2i64 = { /*type=*/PTY_v2i64, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true }; static const PrimitiveTypeProperty PTProperty_v4i32 = { /*type=*/PTY_v4i32, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true }; static const PrimitiveTypeProperty PTProperty_v8i16 = { /*type=*/PTY_v8i16, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true }; static const PrimitiveTypeProperty PTProperty_v16i8 = { /*type=*/PTY_v16i8, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v2u64 = { + /*type=*/PTY_v2u64, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v4u32 = { + /*type=*/PTY_v4u32, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v8u16 = { + /*type=*/PTY_v8u16, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v16u8 = { + /*type=*/PTY_v16u8, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true }; static const PrimitiveTypeProperty PTProperty_v2f64 = { /*type=*/PTY_v2f64, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true }; static const PrimitiveTypeProperty PTProperty_v4f32 = { /*type=*/PTY_v4f32, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v2i32 = { + /*type=*/PTY_v2i32, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v4i16 = { + /*type=*/PTY_v4i16, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v8i8 = { + /*type=*/PTY_v8i8, /*isInteger=*/true, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v2u32 = { + /*type=*/PTY_v2u32, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v4u16 = { + /*type=*/PTY_v4u16, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v8u8 = { + /*type=*/PTY_v8u8, /*isInteger=*/true, /*isUnsigned=*/true, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_v2f32 = { + /*type=*/PTY_v2f32, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/true, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true }; static const PrimitiveTypeProperty PTProperty_end = { /*type=*/PTY_end, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, - /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/true +}; + +static const PrimitiveTypeProperty PTProperty_unknown = { + /*type=*/PTY_unknown, /*isInteger=*/false, /*isUnsigned=*/false, /*isAddress=*/false, /*isFloat=*/false, + /*isPointer=*/false, /*isSimple=*/false, /*isDynamic=*/false, /*isDynamicAny=*/false, /*isDynamicNone=*/false, /*isVector*/false }; #endif // ~LOAD_PRIMARY_TYPE_PROPERTY diff --git a/src/mapleall/maple_ir/include/prim_types.h b/src/mapleall/maple_ir/include/prim_types.h index 87a63de7626af91a0c968f7fa0aa0a75b4ed86a7..5ca30fe071db8fbe54015da03e5d06911b2bf6dd 100644 --- a/src/mapleall/maple_ir/include/prim_types.h +++ b/src/mapleall/maple_ir/include/prim_types.h @@ -55,6 +55,9 @@ class PrimitiveType { bool IsDynamicNone() const { return property.isDynamicNone; } + bool IsVector() const { + return property.isVector; + } private: const PrimitiveTypeProperty &property; diff --git a/src/mapleall/maple_ir/src/mir_type.cpp b/src/mapleall/maple_ir/src/mir_type.cpp index fdaab4d43f076c1af09c84514772ac61354658b1..c8aff17d066a027b02ef9eb42be7eccc19feccbe 100644 --- a/src/mapleall/maple_ir/src/mir_type.cpp +++ b/src/mapleall/maple_ir/src/mir_type.cpp @@ -193,9 +193,26 @@ uint32 GetPrimTypeSize(PrimType primType) { case PTY_f64: case PTY_i64: case PTY_u64: + case PTY_v2i32: + case PTY_v4i16: + case PTY_v8i8: + case PTY_v2u32: + case PTY_v4u16: + case PTY_v8u8: + case PTY_v2f32: return 8; case PTY_c128: case PTY_f128: + case PTY_v2i64: + case PTY_v4i32: + case PTY_v8i16: + case PTY_v16i8: + case PTY_v2u64: + case PTY_v4u32: + case PTY_v8u16: + case PTY_v16u8: + case PTY_v2f64: + case PTY_v4f32: return 16; #ifdef DYNAMICLANG case PTY_dynf32: @@ -240,9 +257,26 @@ uint32 GetPrimTypeP2Size(PrimType primType) { case PTY_f64: case PTY_i64: case PTY_u64: + case PTY_v2i32: + case PTY_v4i16: + case PTY_v8i8: + case PTY_v2u32: + case PTY_v4u16: + case PTY_v8u8: + case PTY_v2f32: return 3; case PTY_c128: case PTY_f128: + case PTY_v2i64: + case PTY_v4i32: + case PTY_v8i16: + case PTY_v16i8: + case PTY_v2u64: + case PTY_v4u32: + case PTY_v8u16: + case PTY_v16u8: + case PTY_v2f64: + case PTY_v4f32: return 4; #ifdef DYNAMICLANG case PTY_dynf32: diff --git a/tools/setup_tools.sh b/tools/setup_tools.sh index fd0c5646b96c853bd68ba7fd3704bca3691c7edc..425c96663a26150c0898ef473d07d206e27e9cad 100755 --- a/tools/setup_tools.sh +++ b/tools/setup_tools.sh @@ -143,7 +143,7 @@ if [ ! -f $TOOLS/qemu/package/usr/bin/qemu-aarch64 ]; then echo Installed qemu-aarch64 fi -version=810ab06 +version=c3b1120 if [ ! -f $TOOLS/open64_prebuilt/V_$version ]; then cd $TOOLS rm -rf open64_prebuilt