Skip to content

Commit 40cce88

Browse files
AmrDeveloperlanza
authored andcommitted
[CIR][CIRGen][Builtin][Neon] Lower vmaxvq_f64 (#1535)
Lower vmaxvq_f64
1 parent 29fae5c commit 40cce88

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2794,7 +2794,8 @@ static mlir::Value emitCommonNeonSISDBuiltinExpr(
27942794
case NEON::BI__builtin_neon_vmaxvq_f32:
27952795
llvm_unreachable(" neon_vmaxvq_f32 NYI ");
27962796
case NEON::BI__builtin_neon_vmaxvq_f64:
2797-
llvm_unreachable(" neon_vmaxvq_f64 NYI ");
2797+
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.fmaxv", resultTy,
2798+
loc);
27982799
case NEON::BI__builtin_neon_vmaxvq_s32:
27992800
llvm_unreachable(" neon_vmaxvq_s32 NYI ");
28002801
case NEON::BI__builtin_neon_vmaxvq_u32:

clang/test/CIR/CodeGen/AArch64/neon.c

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18769,12 +18769,17 @@ float32_t test_vmaxv_f32(float32x2_t a) {
1876918769
// LLVM: ret float [[VMAXV_F32_I]]
1877018770
}
1877118771

18772-
// NYI-LABEL: @test_vmaxvq_f64(
18773-
// NYI: [[VMAXVQ_F64_I:%.*]] = call double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double> %a)
18774-
// NYI: ret double [[VMAXVQ_F64_I]]
18775-
// float64_t test_vmaxvq_f64(float64x2_t a) {
18776-
// return vmaxvq_f64(a);
18777-
// }
18772+
float64_t test_vmaxvq_f64(float64x2_t a) {
18773+
return vmaxvq_f64(a);
18774+
18775+
// CIR-LABEL: vmaxvq_f64
18776+
// CIR: cir.llvm.intrinsic "aarch64.neon.fmaxv" {{%.*}} : (!cir.vector<!cir.double x 2>) -> !cir.double
18777+
18778+
// LLVM-LABEL: test_vmaxvq_f64
18779+
// LLVM-SAME: (<2 x double> [[a:%.*]])
18780+
// LLVM: [[VMAXVQ_F64_I:%.*]] = call double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double> [[a]])
18781+
// LLVM: ret double [[VMAXVQ_F64_I]]
18782+
}
1877818783

1877918784
// NYI-LABEL: @test_vminv_f32(
1878018785
// NYI: [[VMINV_F32_I:%.*]] = call float @llvm.aarch64.neon.fminv.f32.v2f32(<2 x float> %a)

0 commit comments

Comments
 (0)