diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2013-12-10 21:33:59 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2013-12-10 21:33:59 +0000 |
commit | b2282508d347bdb7bb5cd21c482de13c4cf90f0f (patch) | |
tree | 6143bee921b6a89c011ba673d223453a4eedd714 /lib/Target/AArch64 | |
parent | 2456ea5c926fca546a9e825526194516749b735c (diff) | |
download | llvm-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.td | 13 |
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">; |