Skip to content

Commit be48ef4

Browse files
AmrDeveloperlanza
authored andcommitted
[CIR][CIRGen][Builtin][Neon] Lower neon vcaled_f64 (llvm#1495)
Lower neon vcaled_f64
1 parent 95d8a44 commit be48ef4

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2709,7 +2709,8 @@ static mlir::Value emitCommonNeonSISDBuiltinExpr(
27092709
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.facgt", resultTy,
27102710
loc);
27112711
case NEON::BI__builtin_neon_vcaled_f64:
2712-
llvm_unreachable(" neon_vcaled_f64 NYI ");
2712+
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.facge", resultTy,
2713+
loc);
27132714
case NEON::BI__builtin_neon_vcales_f32:
27142715
llvm_unreachable(" neon_vcales_f32 NYI ");
27152716
case NEON::BI__builtin_neon_vcaltd_f64:

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15164,12 +15164,16 @@ uint64_t test_vcagtd_f64(float64_t a, float64_t b) {
1516415164
// return (uint32_t)vcales_f32(a, b);
1516515165
// }
1516615166

15167-
// NYI-LABEL: @test_vcaled_f64(
15168-
// NYI: [[VCALED_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facge.i64.f64(double %b, double %a)
15169-
// NYI: ret i64 [[VCALED_F64_I]]
15170-
// uint64_t test_vcaled_f64(float64_t a, float64_t b) {
15171-
// return (uint64_t)vcaled_f64(a, b);
15172-
// }
15167+
uint64_t test_vcaled_f64(float64_t a, float64_t b) {
15168+
return (uint64_t)vcaled_f64(a, b);
15169+
15170+
// CIR-LABEL: vcaled_f64
15171+
// CIR: [[TMP0:%.*]] = cir.llvm.intrinsic "aarch64.neon.facge" {{.*}}, {{.*}} : (!cir.double, !cir.double) -> !u64i
15172+
15173+
// LLVM-LABEL: @test_vcaled_f64(
15174+
// LLVM: [[VCALED_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facge.i64.f64(double %0, double %1)
15175+
// LLVM: ret i64 [[VCALED_F64_I]]
15176+
}
1517315177

1517415178
// NYI-LABEL: @test_vcalts_f32(
1517515179
// NYI: [[VCALTS_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facgt.i32.f32(float %b, float %a)

0 commit comments

Comments
 (0)