Skip to content

Commit a1a2f76

Browse files
committed
[CIR][CIRGen][Builtin][Neon] Lower vcaged_f64
1 parent 2ab0704 commit a1a2f76

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -2680,8 +2680,10 @@ static mlir::Value emitCommonNeonSISDBuiltinExpr(
26802680
case NEON::BI__builtin_neon_vaddvq_u64:
26812681
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.uaddv", resultTy,
26822682
loc);
2683-
case NEON::BI__builtin_neon_vcaged_f64:
2684-
llvm_unreachable(" neon_vcaged_f64 NYI ");
2683+
case NEON::BI__builtin_neon_vcaged_f64: {
2684+
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.facge", resultTy,
2685+
loc);
2686+
}
26852687
case NEON::BI__builtin_neon_vcages_f32:
26862688
llvm_unreachable(" neon_vcages_f32 NYI ");
26872689
case NEON::BI__builtin_neon_vcagtd_f64:

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

+10-6
Original file line numberDiff line numberDiff line change
@@ -15114,12 +15114,16 @@ int16_t test_vqmovns_s32(int32_t a) {
1511415114
// return (uint32_t)vcages_f32(a, b);
1511515115
// }
1511615116

15117-
// NYI-LABEL: @test_vcaged_f64(
15118-
// NYI: [[VCAGED_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facge.i64.f64(double %a, double %b)
15119-
// NYI: ret i64 [[VCAGED_F64_I]]
15120-
// uint64_t test_vcaged_f64(float64_t a, float64_t b) {
15121-
// return (uint64_t)vcaged_f64(a, b);
15122-
// }
15117+
uint64_t test_vcaged_f64(float64_t a, float64_t b) {
15118+
return (uint64_t)vcaged_f64(a, b);
15119+
15120+
// CIR-LABEL: vcaged_f64
15121+
// CIR: [[TMP0:%.*]] = cir.llvm.intrinsic "aarch64.neon.facge" {{.*}}, {{.*}} : (!cir.double, !cir.double) -> !u64i
15122+
15123+
// LLVM-LABEL: @test_vcaged_f64(
15124+
// LLVM: [[VCAGED_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facge.i64.f64(double %0, double %1)
15125+
// LLVM: ret i64 [[VCAGED_F64_I]]
15126+
}
1512315127

1512415128
// NYI-LABEL: @test_vcagts_f32(
1512515129
// NYI: [[VCAGTS_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facgt.i32.f32(float %a, float %b)

0 commit comments

Comments
 (0)