diff options
| author | Chad Rosier <mcrosier@codeaurora.org> | 2013-12-02 21:07:24 +0000 |
|---|---|---|
| committer | Chad Rosier <mcrosier@codeaurora.org> | 2013-12-02 21:07:24 +0000 |
| commit | b0574f3bf74891e26b8a6feffddf12522cfe2714 (patch) | |
| tree | cf76efedd937819ce566a3744a9eddc3c161408c /clang/lib/CodeGen | |
| parent | 3106de3f9d5c798058a6b2074be1f67f298350a2 (diff) | |
| download | bcm5719-llvm-b0574f3bf74891e26b8a6feffddf12522cfe2714.tar.gz bcm5719-llvm-b0574f3bf74891e26b8a6feffddf12522cfe2714.zip | |
[AArch64] Add missing NEON scalar floating-point to integer convert ACLEs.
llvm-svn: 196152
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 00e6bd14de6..3031dcb3958 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -2112,6 +2112,7 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF, case AArch64::BI__builtin_neon_vcvts_f32_s32: Int = Intrinsic::aarch64_neon_vcvtf32_s32, s = "vcvtf"; OverloadInt = false; break; + case AArch64::BI__builtin_neon_vcvt_f64_s64: case AArch64::BI__builtin_neon_vcvtd_f64_s64: Int = Intrinsic::aarch64_neon_vcvtf64_s64, s = "vcvtf"; OverloadInt = false; break; @@ -2119,6 +2120,7 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF, case AArch64::BI__builtin_neon_vcvts_f32_u32: Int = Intrinsic::aarch64_neon_vcvtf32_u32, s = "vcvtf"; OverloadInt = false; break; + case AArch64::BI__builtin_neon_vcvt_f64_u64: case AArch64::BI__builtin_neon_vcvtd_f64_u64: Int = Intrinsic::aarch64_neon_vcvtf64_u64, s = "vcvtf"; OverloadInt = false; break; @@ -2128,42 +2130,52 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF, s = "vcvtxn"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtas_s32_f32: case AArch64::BI__builtin_neon_vcvtad_s64_f64: + case AArch64::BI__builtin_neon_vcvta_s64_f64: Int = Intrinsic::aarch64_neon_fcvtas; s = "vcvtas"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtas_u32_f32: case AArch64::BI__builtin_neon_vcvtad_u64_f64: + case AArch64::BI__builtin_neon_vcvta_u64_f64: Int = Intrinsic::aarch64_neon_fcvtau; s = "vcvtau"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtms_s32_f32: case AArch64::BI__builtin_neon_vcvtmd_s64_f64: + case AArch64::BI__builtin_neon_vcvtm_s64_f64: Int = Intrinsic::aarch64_neon_fcvtms; s = "vcvtms"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtms_u32_f32: case AArch64::BI__builtin_neon_vcvtmd_u64_f64: + case AArch64::BI__builtin_neon_vcvtm_u64_f64: Int = Intrinsic::aarch64_neon_fcvtmu; s = "vcvtmu"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtns_s32_f32: case AArch64::BI__builtin_neon_vcvtnd_s64_f64: + case AArch64::BI__builtin_neon_vcvtn_s64_f64: Int = Intrinsic::aarch64_neon_fcvtns; s = "vcvtns"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtns_u32_f32: case AArch64::BI__builtin_neon_vcvtnd_u64_f64: + case AArch64::BI__builtin_neon_vcvtn_u64_f64: Int = Intrinsic::aarch64_neon_fcvtnu; s = "vcvtnu"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtps_s32_f32: case AArch64::BI__builtin_neon_vcvtpd_s64_f64: + case AArch64::BI__builtin_neon_vcvtp_s64_f64: Int = Intrinsic::aarch64_neon_fcvtps; s = "vcvtps"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvtps_u32_f32: case AArch64::BI__builtin_neon_vcvtpd_u64_f64: + case AArch64::BI__builtin_neon_vcvtp_u64_f64: Int = Intrinsic::aarch64_neon_fcvtpu; s = "vcvtpu"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvts_s32_f32: case AArch64::BI__builtin_neon_vcvtd_s64_f64: + case AArch64::BI__builtin_neon_vcvt_s64_f64: Int = Intrinsic::aarch64_neon_fcvtzs; s = "vcvtzs"; OverloadCvtInt = true; break; case AArch64::BI__builtin_neon_vcvts_u32_f32: case AArch64::BI__builtin_neon_vcvtd_u64_f64: + case AArch64::BI__builtin_neon_vcvt_u64_f64: Int = Intrinsic::aarch64_neon_fcvtzu; s = "vcvtzu"; OverloadCvtInt = true; break; // Scalar Floating-point Reciprocal Estimate @@ -2336,6 +2348,7 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF, s = "vabs"; OverloadInt = false; break; // Scalar Absolute Difference case AArch64::BI__builtin_neon_vabds_f32: + case AArch64::BI__builtin_neon_vabd_f64: case AArch64::BI__builtin_neon_vabdd_f64: Int = Intrinsic::aarch64_neon_vabd; s = "vabd"; OverloadInt = true; break; |

