X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FAArch64%2FAArch64InstrInfo.td;h=f4a555499d2f0cc830b0fc68e974a58f0dd42bf4;hb=050064d32c0ab7c931094c36baf9705b5847eae1;hp=7f914797e37c2f7a013bb7019855ab84dd44118b;hpb=6abfc44aab521664e8007dd97c135167af7f55c0;p=oota-llvm.git diff --git a/lib/Target/AArch64/AArch64InstrInfo.td b/lib/Target/AArch64/AArch64InstrInfo.td index 7f914797e37..f4a555499d2 100644 --- a/lib/Target/AArch64/AArch64InstrInfo.td +++ b/lib/Target/AArch64/AArch64InstrInfo.td @@ -2760,6 +2760,13 @@ def : Pat<(xor (v4i32 (AArch64vashr (v4i32(sub V128:$Rn, V128:$Rm)), (i32 31))), (AArch64vashr (v4i32(sub V128:$Rn, V128:$Rm)), (i32 31))))), (SABDv4i32 V128:$Rn, V128:$Rm)>; +def : Pat<(v2f32 (fabs (fsub V64:$Rn, V64:$Rm))), + (FABDv2f32 V64:$Rn, V64:$Rm)>; +def : Pat<(v4f32 (fabs (fsub V128:$Rn, V128:$Rm))), + (FABDv4f32 V128:$Rn, V128:$Rm)>; +def : Pat<(v2f64 (fabs (fsub V128:$Rn, V128:$Rm))), + (FABDv2f64 V128:$Rn, V128:$Rm)>; + def : Pat<(AArch64bsl (v8i8 V64:$Rd), V64:$Rn, V64:$Rm), (BSLv8i8 V64:$Rd, V64:$Rn, V64:$Rm)>; def : Pat<(AArch64bsl (v4i16 V64:$Rd), V64:$Rn, V64:$Rm), @@ -3049,6 +3056,11 @@ defm UQXTN : SIMDTwoScalarMixedBHS<1, 0b10100, "uqxtn", int_aarch64_neon_scalar defm USQADD : SIMDTwoScalarBHSDTied< 1, 0b00011, "usqadd", int_aarch64_neon_usqadd>; +def : Pat<(f32 (fabs (fsub FPR32:$Rn, FPR32:$Rm))), + (FABD32 FPR32:$Rn, FPR32:$Rm)>; +def : Pat<(f64 (fabs (fsub FPR64:$Rn, FPR64:$Rm))), + (FABD64 FPR64:$Rn, FPR64:$Rm)>; + def : Pat<(AArch64neg (v1i64 V64:$Rn)), (NEGv1i64 V64:$Rn)>; def : Pat<(v1i64 (int_aarch64_neon_fcvtas (v1f64 FPR64:$Rn))),