diff options
Diffstat (limited to 'clang/lib/CodeGen/TargetBuiltins')
| -rw-r--r-- | clang/lib/CodeGen/TargetBuiltins/AMDGPU.cpp | 81 | ||||
| -rw-r--r-- | clang/lib/CodeGen/TargetBuiltins/ARM.cpp | 249 | 
2 files changed, 119 insertions, 211 deletions
| diff --git a/clang/lib/CodeGen/TargetBuiltins/AMDGPU.cpp b/clang/lib/CodeGen/TargetBuiltins/AMDGPU.cpp index f49a5af..9eab709 100644 --- a/clang/lib/CodeGen/TargetBuiltins/AMDGPU.cpp +++ b/clang/lib/CodeGen/TargetBuiltins/AMDGPU.cpp @@ -647,8 +647,8 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,    case AMDGPU::BI__builtin_amdgcn_ballot_w64: {      llvm::Type *ResultType = ConvertType(E->getType());      llvm::Value *Src = EmitScalarExpr(E->getArg(0)); -    Function *F = CGM.getIntrinsic(Intrinsic::amdgcn_ballot, { ResultType }); -    return Builder.CreateCall(F, { Src }); +    Function *F = CGM.getIntrinsic(Intrinsic::amdgcn_ballot, {ResultType}); +    return Builder.CreateCall(F, {Src});    }    case AMDGPU::BI__builtin_amdgcn_inverse_ballot_w32:    case AMDGPU::BI__builtin_amdgcn_inverse_ballot_w64: { @@ -1139,6 +1139,83 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,    case AMDGPU::BI__builtin_amdgcn_image_sample_cube_v4f16_f32:      return emitAMDGCNImageOverloadedReturnType(          *this, E, Intrinsic::amdgcn_image_sample_cube, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_1d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_1d_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_lz_1d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_1d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_1d_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_l_1d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_1d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_1d_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_d_1d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_2d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_2d_v4f16_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_2d_f32_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_lz_2d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_2d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_2d_v4f16_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_2d_f32_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_l_2d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_2d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_2d_v4f16_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_2d_f32_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_d_2d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_3d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_3d_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_lz_3d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_3d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_3d_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_l_3d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_3d_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_3d_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_d_3d, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_cube_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_cube_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_lz_cube, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_cube_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_cube_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_l_cube, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_1darray_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_1darray_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_lz_1darray, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_1darray_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_1darray_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_l_1darray, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_1darray_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_1darray_v4f16_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_d_1darray, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_2darray_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_2darray_v4f16_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_lz_2darray_f32_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_lz_2darray, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_2darray_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_2darray_v4f16_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_l_2darray_f32_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_l_2darray, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_2darray_v4f32_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_2darray_v4f16_f32: +  case clang::AMDGPU::BI__builtin_amdgcn_image_sample_d_2darray_f32_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_sample_d_2darray, false); +  case clang::AMDGPU::BI__builtin_amdgcn_image_gather4_lz_2d_v4f32_f32: +    return emitAMDGCNImageOverloadedReturnType( +        *this, E, Intrinsic::amdgcn_image_gather4_lz_2d, false);    case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_16x16x128_f8f6f4:    case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_32x32x64_f8f6f4: {      llvm::FixedVectorType *VT = FixedVectorType::get(Builder.getInt32Ty(), 8); diff --git a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp index 60f9b86..15fa78d 100644 --- a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp +++ b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp @@ -1193,14 +1193,22 @@ static const ARMVectorIntrinsicInfo AArch64SISDIntrinsicMap[] = {    NEONMAP1(vaddlvq_s32, aarch64_neon_saddlv, AddRetType | Add1ArgType),    NEONMAP1(vaddlvq_u32, aarch64_neon_uaddlv, AddRetType | Add1ArgType),    NEONMAP1(vaddv_f32, aarch64_neon_faddv, AddRetType | Add1ArgType), -  NEONMAP1(vaddv_s32, aarch64_neon_saddv, AddRetType | Add1ArgType), -  NEONMAP1(vaddv_u32, aarch64_neon_uaddv, AddRetType | Add1ArgType), +  NEONMAP1(vaddv_s16, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddv_s32, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddv_s8, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddv_u16, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddv_u32, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddv_u8, vector_reduce_add, Add1ArgType),    NEONMAP1(vaddvq_f32, aarch64_neon_faddv, AddRetType | Add1ArgType),    NEONMAP1(vaddvq_f64, aarch64_neon_faddv, AddRetType | Add1ArgType), -  NEONMAP1(vaddvq_s32, aarch64_neon_saddv, AddRetType | Add1ArgType), -  NEONMAP1(vaddvq_s64, aarch64_neon_saddv, AddRetType | Add1ArgType), -  NEONMAP1(vaddvq_u32, aarch64_neon_uaddv, AddRetType | Add1ArgType), -  NEONMAP1(vaddvq_u64, aarch64_neon_uaddv, AddRetType | Add1ArgType), +  NEONMAP1(vaddvq_s16, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddvq_s32, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddvq_s64, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddvq_s8, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddvq_u16, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddvq_u32, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddvq_u64, vector_reduce_add, Add1ArgType), +  NEONMAP1(vaddvq_u8, vector_reduce_add, Add1ArgType),    NEONMAP1(vcaged_f64, aarch64_neon_facge, AddRetType | Add1ArgType),    NEONMAP1(vcages_f32, aarch64_neon_facge, AddRetType | Add1ArgType),    NEONMAP1(vcagtd_f64, aarch64_neon_facgt, AddRetType | Add1ArgType), @@ -1243,27 +1251,43 @@ static const ARMVectorIntrinsicInfo AArch64SISDIntrinsicMap[] = {    NEONMAP1(vmaxnmvq_f32, aarch64_neon_fmaxnmv, AddRetType | Add1ArgType),    NEONMAP1(vmaxnmvq_f64, aarch64_neon_fmaxnmv, AddRetType | Add1ArgType),    NEONMAP1(vmaxv_f32, aarch64_neon_fmaxv, AddRetType | Add1ArgType), -  NEONMAP1(vmaxv_s32, aarch64_neon_smaxv, AddRetType | Add1ArgType), -  NEONMAP1(vmaxv_u32, aarch64_neon_umaxv, AddRetType | Add1ArgType), +  NEONMAP1(vmaxv_s16, vector_reduce_smax, Add1ArgType), +  NEONMAP1(vmaxv_s32, vector_reduce_smax, Add1ArgType), +  NEONMAP1(vmaxv_s8, vector_reduce_smax, Add1ArgType), +  NEONMAP1(vmaxv_u16, vector_reduce_umax, Add1ArgType), +  NEONMAP1(vmaxv_u32, vector_reduce_umax, Add1ArgType), +  NEONMAP1(vmaxv_u8, vector_reduce_umax, Add1ArgType),    NEONMAP1(vmaxvq_f32, aarch64_neon_fmaxv, AddRetType | Add1ArgType),    NEONMAP1(vmaxvq_f64, aarch64_neon_fmaxv, AddRetType | Add1ArgType), -  NEONMAP1(vmaxvq_s32, aarch64_neon_smaxv, AddRetType | Add1ArgType), -  NEONMAP1(vmaxvq_u32, aarch64_neon_umaxv, AddRetType | Add1ArgType), +  NEONMAP1(vmaxvq_s16, vector_reduce_smax, Add1ArgType), +  NEONMAP1(vmaxvq_s32, vector_reduce_smax, Add1ArgType), +  NEONMAP1(vmaxvq_s8, vector_reduce_smax, Add1ArgType), +  NEONMAP1(vmaxvq_u16, vector_reduce_umax, Add1ArgType), +  NEONMAP1(vmaxvq_u32, vector_reduce_umax, Add1ArgType), +  NEONMAP1(vmaxvq_u8, vector_reduce_umax, Add1ArgType),    NEONMAP1(vminnmv_f32, aarch64_neon_fminnmv, AddRetType | Add1ArgType),    NEONMAP1(vminnmvq_f32, aarch64_neon_fminnmv, AddRetType | Add1ArgType),    NEONMAP1(vminnmvq_f64, aarch64_neon_fminnmv, AddRetType | Add1ArgType),    NEONMAP1(vminv_f32, aarch64_neon_fminv, AddRetType | Add1ArgType), -  NEONMAP1(vminv_s32, aarch64_neon_sminv, AddRetType | Add1ArgType), -  NEONMAP1(vminv_u32, aarch64_neon_uminv, AddRetType | Add1ArgType), +  NEONMAP1(vminv_s16, vector_reduce_smin, Add1ArgType), +  NEONMAP1(vminv_s32, vector_reduce_smin, Add1ArgType), +  NEONMAP1(vminv_s8, vector_reduce_smin, Add1ArgType), +  NEONMAP1(vminv_u16, vector_reduce_umin, Add1ArgType), +  NEONMAP1(vminv_u32, vector_reduce_umin, Add1ArgType), +  NEONMAP1(vminv_u8, vector_reduce_umin, Add1ArgType),    NEONMAP1(vminvq_f32, aarch64_neon_fminv, AddRetType | Add1ArgType),    NEONMAP1(vminvq_f64, aarch64_neon_fminv, AddRetType | Add1ArgType), -  NEONMAP1(vminvq_s32, aarch64_neon_sminv, AddRetType | Add1ArgType), -  NEONMAP1(vminvq_u32, aarch64_neon_uminv, AddRetType | Add1ArgType), +  NEONMAP1(vminvq_s16, vector_reduce_smin, Add1ArgType), +  NEONMAP1(vminvq_s32, vector_reduce_smin, Add1ArgType), +  NEONMAP1(vminvq_s8, vector_reduce_smin, Add1ArgType), +  NEONMAP1(vminvq_u16, vector_reduce_umin, Add1ArgType), +  NEONMAP1(vminvq_u32, vector_reduce_umin, Add1ArgType), +  NEONMAP1(vminvq_u8, vector_reduce_umin, Add1ArgType),    NEONMAP1(vmull_p64, aarch64_neon_pmull64, 0),    NEONMAP1(vmulxd_f64, aarch64_neon_fmulx, Add1ArgType),    NEONMAP1(vmulxs_f32, aarch64_neon_fmulx, Add1ArgType), -  NEONMAP1(vpaddd_s64, aarch64_neon_uaddv, AddRetType | Add1ArgType), -  NEONMAP1(vpaddd_u64, aarch64_neon_uaddv, AddRetType | Add1ArgType), +  NEONMAP1(vpaddd_s64, vector_reduce_add, Add1ArgType), +  NEONMAP1(vpaddd_u64, vector_reduce_add, Add1ArgType),    NEONMAP1(vpmaxnmqd_f64, aarch64_neon_fmaxnmv, AddRetType | Add1ArgType),    NEONMAP1(vpmaxnms_f32, aarch64_neon_fmaxnmv, AddRetType | Add1ArgType),    NEONMAP1(vpmaxqd_f64, aarch64_neon_fmaxv, AddRetType | Add1ArgType), @@ -7067,127 +7091,6 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,      Int = Intrinsic::bitreverse;      return EmitNeonCall(CGM.getIntrinsic(Int, Ty), Ops, "vrbit");    } -  case NEON::BI__builtin_neon_vaddv_u8: -    // FIXME: These are handled by the AArch64 scalar code. -    usgn = true; -    [[fallthrough]]; -  case NEON::BI__builtin_neon_vaddv_s8: { -    Int = usgn ? Intrinsic::aarch64_neon_uaddv : Intrinsic::aarch64_neon_saddv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vaddv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vaddv_u16: -    usgn = true; -    [[fallthrough]]; -  case NEON::BI__builtin_neon_vaddv_s16: { -    Int = usgn ? Intrinsic::aarch64_neon_uaddv : Intrinsic::aarch64_neon_saddv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 4); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vaddv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vaddvq_u8: -    usgn = true; -    [[fallthrough]]; -  case NEON::BI__builtin_neon_vaddvq_s8: { -    Int = usgn ? Intrinsic::aarch64_neon_uaddv : Intrinsic::aarch64_neon_saddv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 16); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vaddv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vaddvq_u16: -    usgn = true; -    [[fallthrough]]; -  case NEON::BI__builtin_neon_vaddvq_s16: { -    Int = usgn ? Intrinsic::aarch64_neon_uaddv : Intrinsic::aarch64_neon_saddv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vaddv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vmaxv_u8: { -    Int = Intrinsic::aarch64_neon_umaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vmaxv_u16: { -    Int = Intrinsic::aarch64_neon_umaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 4); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vmaxvq_u8: { -    Int = Intrinsic::aarch64_neon_umaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 16); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vmaxvq_u16: { -    Int = Intrinsic::aarch64_neon_umaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vmaxv_s8: { -    Int = Intrinsic::aarch64_neon_smaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vmaxv_s16: { -    Int = Intrinsic::aarch64_neon_smaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 4); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vmaxvq_s8: { -    Int = Intrinsic::aarch64_neon_smaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 16); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vmaxvq_s16: { -    Int = Intrinsic::aarch64_neon_smaxv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  }    case NEON::BI__builtin_neon_vmaxv_f16: {      Int = Intrinsic::aarch64_neon_fmaxv;      Ty = HalfTy; @@ -7206,78 +7109,6 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,      Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vmaxv");      return Builder.CreateTrunc(Ops[0], HalfTy);    } -  case NEON::BI__builtin_neon_vminv_u8: { -    Int = Intrinsic::aarch64_neon_uminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vminv_u16: { -    Int = Intrinsic::aarch64_neon_uminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 4); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vminvq_u8: { -    Int = Intrinsic::aarch64_neon_uminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 16); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vminvq_u16: { -    Int = Intrinsic::aarch64_neon_uminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vminv_s8: { -    Int = Intrinsic::aarch64_neon_sminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vminv_s16: { -    Int = Intrinsic::aarch64_neon_sminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 4); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  } -  case NEON::BI__builtin_neon_vminvq_s8: { -    Int = Intrinsic::aarch64_neon_sminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int8Ty, 16); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int8Ty); -  } -  case NEON::BI__builtin_neon_vminvq_s16: { -    Int = Intrinsic::aarch64_neon_sminv; -    Ty = Int32Ty; -    VTy = llvm::FixedVectorType::get(Int16Ty, 8); -    llvm::Type *Tys[2] = { Ty, VTy }; -    Ops.push_back(EmitScalarExpr(E->getArg(0))); -    Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vminv"); -    return Builder.CreateTrunc(Ops[0], Int16Ty); -  }    case NEON::BI__builtin_neon_vminv_f16: {      Int = Intrinsic::aarch64_neon_fminv;      Ty = HalfTy; | 
