From 01703584eb66e2605efdf821dfac9d61ba638136 Mon Sep 17 00:00:00 2001 From: Chad Rosier Date: Mon, 9 Dec 2013 22:47:57 +0000 Subject: [AArch64] Refactor the NEON scalar reduce pairwise front-end codegen to remove unnecessary patterns in tablegen. llvm-svn: 196835 --- clang/lib/CodeGen/CGBuiltin.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 4a7e490fcea..ea6176dd9fa 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -1989,27 +1989,38 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF, case AArch64::BI__builtin_neon_vpaddd_u64: Int = Intrinsic::aarch64_neon_vpadd; s = "vpadd"; break; + case AArch64::BI__builtin_neon_vaddv_f32: + case AArch64::BI__builtin_neon_vaddvq_f32: + case AArch64::BI__builtin_neon_vaddvq_f64: case AArch64::BI__builtin_neon_vpadds_f32: case AArch64::BI__builtin_neon_vpaddd_f64: Int = Intrinsic::aarch64_neon_vpfadd; s = "vpfadd"; AcrossVec = true; break; // Scalar Reduce Pairwise Floating Point Max + case AArch64::BI__builtin_neon_vmaxv_f32: case AArch64::BI__builtin_neon_vpmaxs_f32: + case AArch64::BI__builtin_neon_vmaxvq_f64: case AArch64::BI__builtin_neon_vpmaxqd_f64: Int = Intrinsic::aarch64_neon_vpmax; s = "vpmax"; AcrossVec = true; break; // Scalar Reduce Pairwise Floating Point Min + case AArch64::BI__builtin_neon_vminv_f32: case AArch64::BI__builtin_neon_vpmins_f32: + case AArch64::BI__builtin_neon_vminvq_f64: case AArch64::BI__builtin_neon_vpminqd_f64: Int = Intrinsic::aarch64_neon_vpmin; s = "vpmin"; AcrossVec = true; break; // Scalar Reduce Pairwise Floating Point Maxnm + case AArch64::BI__builtin_neon_vmaxnmv_f32: case AArch64::BI__builtin_neon_vpmaxnms_f32: + case AArch64::BI__builtin_neon_vmaxnmvq_f64: case AArch64::BI__builtin_neon_vpmaxnmqd_f64: Int = Intrinsic::aarch64_neon_vpfmaxnm; s = "vpfmaxnm"; AcrossVec = true; break; // Scalar Reduce Pairwise Floating Point Minnm + case AArch64::BI__builtin_neon_vminnmv_f32: case AArch64::BI__builtin_neon_vpminnms_f32: + case AArch64::BI__builtin_neon_vminnmvq_f64: case AArch64::BI__builtin_neon_vpminnmqd_f64: Int = Intrinsic::aarch64_neon_vpfminnm; s = "vpfminnm"; AcrossVec = true; break; @@ -2076,29 +2087,18 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF, case AArch64::BI__builtin_neon_vaddvq_u16: case AArch64::BI__builtin_neon_vaddvq_u32: case AArch64::BI__builtin_neon_vaddvq_u64: - case AArch64::BI__builtin_neon_vaddv_f32: - case AArch64::BI__builtin_neon_vaddvq_f32: - case AArch64::BI__builtin_neon_vaddvq_f64: Int = Intrinsic::aarch64_neon_vaddv; AcrossVec = true; ExtendEle = false; s = "vaddv"; break; - case AArch64::BI__builtin_neon_vmaxv_f32: case AArch64::BI__builtin_neon_vmaxvq_f32: - case AArch64::BI__builtin_neon_vmaxvq_f64: Int = Intrinsic::aarch64_neon_vmaxv; AcrossVec = true; ExtendEle = false; s = "vmaxv"; break; - case AArch64::BI__builtin_neon_vminv_f32: case AArch64::BI__builtin_neon_vminvq_f32: - case AArch64::BI__builtin_neon_vminvq_f64: Int = Intrinsic::aarch64_neon_vminv; AcrossVec = true; ExtendEle = false; s = "vminv"; break; - case AArch64::BI__builtin_neon_vmaxnmv_f32: case AArch64::BI__builtin_neon_vmaxnmvq_f32: - case AArch64::BI__builtin_neon_vmaxnmvq_f64: Int = Intrinsic::aarch64_neon_vmaxnmv; AcrossVec = true; ExtendEle = false; s = "vmaxnmv"; break; - case AArch64::BI__builtin_neon_vminnmv_f32: case AArch64::BI__builtin_neon_vminnmvq_f32: - case AArch64::BI__builtin_neon_vminnmvq_f64: Int = Intrinsic::aarch64_neon_vminnmv; AcrossVec = true; ExtendEle = false; s = "vminnmv"; break; // Scalar Integer Saturating Doubling Multiply Half High -- cgit v1.2.3