about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2015-01-15 14:43:24 +1100
committerHuon Wilson <dbau.pp+github@gmail.com>2015-01-16 22:49:40 +1100
commit9e83ae931c802608962fb5f9c90220d80d2eaa1c (patch)
tree25716e4e9272f8cfc81434e56cd81193ede1a71c
parent7d4f358de7de97b443a97e1f18a16781d472bbda (diff)
downloadrust-9e83ae931c802608962fb5f9c90220d80d2eaa1c.tar.gz
rust-9e83ae931c802608962fb5f9c90220d80d2eaa1c.zip
Put vector types in regs for arm & mips FFI.
This seems to match what clang does on arm, but I cannot do any
experimentation with mips, but it matches how the LLVM intrinsics are
defined in any case...
-rw-r--r--src/librustc_trans/trans/cabi_aarch64.rs3
-rw-r--r--src/librustc_trans/trans/cabi_arm.rs3
-rw-r--r--src/librustc_trans/trans/cabi_mips.rs3
3 files changed, 6 insertions, 3 deletions
diff --git a/src/librustc_trans/trans/cabi_aarch64.rs b/src/librustc_trans/trans/cabi_aarch64.rs
index 3485e29707a..0d8ef9e2fc9 100644
--- a/src/librustc_trans/trans/cabi_aarch64.rs
+++ b/src/librustc_trans/trans/cabi_aarch64.rs
@@ -139,7 +139,8 @@ fn is_reg_ty(ty: Type) -> bool {
         Integer
         | Pointer
         | Float
-        | Double => true,
+        | Double
+        | Vector => true,
         _ => false
     }
 }
diff --git a/src/librustc_trans/trans/cabi_arm.rs b/src/librustc_trans/trans/cabi_arm.rs
index 13c70875f68..7d1a8ab1452 100644
--- a/src/librustc_trans/trans/cabi_arm.rs
+++ b/src/librustc_trans/trans/cabi_arm.rs
@@ -169,7 +169,8 @@ fn is_reg_ty(ty: Type) -> bool {
         Integer
         | Pointer
         | Float
-        | Double => true,
+        | Double
+        | Vector => true,
         _ => false
     }
 }
diff --git a/src/librustc_trans/trans/cabi_mips.rs b/src/librustc_trans/trans/cabi_mips.rs
index 70b29b5fb75..776be8855cb 100644
--- a/src/librustc_trans/trans/cabi_mips.rs
+++ b/src/librustc_trans/trans/cabi_mips.rs
@@ -123,7 +123,8 @@ fn is_reg_ty(ty: Type) -> bool {
         Integer
         | Pointer
         | Float
-        | Double => true,
+        | Double
+        | Vector => true,
         _ => false
     };
 }