summaryrefslogtreecommitdiff
path: root/lib/Target/AArch64
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2013-12-10 21:33:59 +0000
committerChad Rosier <mcrosier@codeaurora.org>2013-12-10 21:33:59 +0000
commitb2282508d347bdb7bb5cd21c482de13c4cf90f0f (patch)
tree6143bee921b6a89c011ba673d223453a4eedd714 /lib/Target/AArch64
parent2456ea5c926fca546a9e825526194516749b735c (diff)
downloadllvm-b2282508d347bdb7bb5cd21c482de13c4cf90f0f.tar.gz
llvm-b2282508d347bdb7bb5cd21c482de13c4cf90f0f.tar.bz2
llvm-b2282508d347bdb7bb5cd21c482de13c4cf90f0f.tar.xz
[AArch64] Refactor the NEON floating-point absolute difference LLVM AArch64
intrinsic to use f32/f64 types, rather than their vector equivalents. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196965 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/AArch64')
-rw-r--r--lib/Target/AArch64/AArch64InstrNEON.td13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/Target/AArch64/AArch64InstrNEON.td b/lib/Target/AArch64/AArch64InstrNEON.td
index a07bec015d..1f862d4cff 100644
--- a/lib/Target/AArch64/AArch64InstrNEON.td
+++ b/lib/Target/AArch64/AArch64InstrNEON.td
@@ -4176,6 +4176,15 @@ multiclass Neon_Scalar3Same_HS_size_patterns<SDPatternOperator opnode,
(INSTS FPR32:$Rn, FPR32:$Rm)>;
}
+multiclass Neon_Scalar3Same_fabd_SD_size_patterns<SDPatternOperator opnode,
+ Instruction INSTS,
+ Instruction INSTD> {
+ def : Pat<(f32 (opnode (f32 FPR32:$Rn), (f32 FPR32:$Rm))),
+ (INSTS FPR32:$Rn, FPR32:$Rm)>;
+ def : Pat<(f64 (opnode (f64 FPR64:$Rn), (f64 FPR64:$Rm))),
+ (INSTD FPR64:$Rn, FPR64:$Rm)>;
+}
+
multiclass Neon_Scalar3Same_SD_size_patterns<SDPatternOperator opnode,
Instruction INSTS,
Instruction INSTD> {
@@ -5199,8 +5208,8 @@ defm : Neon_Scalar3Same_cmp_SD_size_patterns<int_aarch64_neon_vcagt,
// Scakar Floating-point Absolute Difference
defm FABD: NeonI_Scalar3Same_SD_sizes<0b1, 0b1, 0b11010, "fabd">;
-defm : Neon_Scalar3Same_SD_size_patterns<int_aarch64_neon_vabd,
- FABDsss, FABDddd>;
+defm : Neon_Scalar3Same_fabd_SD_size_patterns<int_aarch64_neon_vabd,
+ FABDsss, FABDddd>;
// Scalar Absolute Value
defm ABS : NeonI_Scalar2SameMisc_D_size<0b0, 0b01011, "abs">;