-def v16i8 : ValueType<128, 17>; // 16 x i8 vector value
-def v8i16 : ValueType<128, 18>; // 8 x i16 vector value
-def v4i32 : ValueType<128, 19>; // 4 x i32 vector value
-def v2i64 : ValueType<128, 20>; // 2 x i64 vector value
-def v2f32 : ValueType<64, 21>; // 2 x f32 vector value
-def v4f32 : ValueType<128, 22>; // 4 x f32 vector value
-def v2f64 : ValueType<128, 23>; // 2 x f64 vector value
+def v1i64 : ValueType<64 , 17>; // 1 x i64 vector value
+
+def v16i8 : ValueType<128, 18>; // 16 x i8 vector value
+def v8i16 : ValueType<128, 19>; // 8 x i16 vector value
+def v3i32 : ValueType<96 , 20>; // 3 x i32 vector value
+def v4i32 : ValueType<128, 21>; // 4 x i32 vector value
+def v2i64 : ValueType<128, 22>; // 2 x i64 vector value
+
+def v2f32 : ValueType<64, 23>; // 2 x f32 vector value
+def v3f32 : ValueType<96 , 24>; // 3 x f32 vector value
+def v4f32 : ValueType<128, 25>; // 4 x f32 vector value
+def v2f64 : ValueType<128, 26>; // 2 x f64 vector value
+
+// Pseudo valuetype to represent "float of any format"
+def fAny : ValueType<0 , 253>;
+
+// Pseudo valuetype to represent "integer of any bit width"
+def iAny : ValueType<0 , 254>;
+
+// Pseudo valuetype mapped to the current pointer size.
+def iPTR : ValueType<0 , 255>;