summaryrefslogtreecommitdiffstats
path: root/clang/include/clang/Basic/arm_mve_defs.td
diff options
context:
space:
mode:
Diffstat (limited to 'clang/include/clang/Basic/arm_mve_defs.td')
-rw-r--r--clang/include/clang/Basic/arm_mve_defs.td10
1 files changed, 9 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/arm_mve_defs.td b/clang/include/clang/Basic/arm_mve_defs.td
index 9025ca81145..14afc04a825 100644
--- a/clang/include/clang/Basic/arm_mve_defs.td
+++ b/clang/include/clang/Basic/arm_mve_defs.td
@@ -125,7 +125,9 @@ def Void : Type;
class PrimitiveType<string kind_, int size_>: Type {
string kind = kind_;
int size = size_;
+ string nameOverride = "";
}
+
// The type records defined by these foreaches have names like s32, f16, u8.
foreach size = [8, 16, 32, 64] in
foreach kind = ["u", "s"] in
@@ -134,6 +136,12 @@ foreach size = [16, 32] in
foreach kind = ["f"] in
def kind # size: PrimitiveType<kind, size>;
+// Sometimes we need to refer to a type by a different name in C, when
+// ACLE defines a function parameter to be something like 'unsigned'
+// rather than uint32_t.
+def uint: PrimitiveType<"u", 32> { let nameOverride = "unsigned"; }
+def sint: PrimitiveType<"s", 32> { let nameOverride = "int"; }
+
// VecOf<t> expects t to be a scalar, and gives a 128-bit vector of whatever it
// is.
class VecOf<Type t>: ComplexType<(CTO_Vec t)>;
@@ -222,7 +230,7 @@ def imm_1248 : Immediate<u32, IB_ConstRange<1, 8>> {
// memory access size is n bytes (e.g. 1 for vldrb_[whatever], 2 for vldrh,
// ...). The set of valid immediates for these is {0*n, 1*n, ..., 127*n}.
class imm_mem7bit<int membytes>
- : Immediate<u32, IB_ConstRange<0, !mul(membytes, 127)>> {
+ : Immediate<sint, IB_ConstRange<0, !mul(membytes, 127)>> {
let extra = !if(!eq(membytes, 1), ?, "Multiple");
let extraarg = !cast<string>(membytes);
}
OpenPOWER on IntegriCloud