Skip to content

Commit 8f04109

Browse files
AmrDeveloperlanza
authored andcommitted
[CIR][CIRGen][Builtin][Neon] Lower vcales_f32 (#1500)
Lower vcales_f32
1 parent 6a3e881 commit 8f04109

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2708,11 +2708,10 @@ static mlir::Value emitCommonNeonSISDBuiltinExpr(
27082708
case NEON::BI__builtin_neon_vcagtd_f64:
27092709
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.facgt", resultTy,
27102710
loc);
2711+
case NEON::BI__builtin_neon_vcales_f32:
27112712
case NEON::BI__builtin_neon_vcaled_f64:
27122713
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.facge", resultTy,
27132714
loc);
2714-
case NEON::BI__builtin_neon_vcales_f32:
2715-
llvm_unreachable(" neon_vcales_f32 NYI ");
27162715
case NEON::BI__builtin_neon_vcaltd_f64:
27172716
llvm_unreachable(" neon_vcaltd_f64 NYI ");
27182717
case NEON::BI__builtin_neon_vcalts_f32:

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15156,12 +15156,16 @@ uint64_t test_vcagtd_f64(float64_t a, float64_t b) {
1515615156
// LLVM: ret i64 [[VCAGED_F64_I]]
1515715157
}
1515815158

15159-
// NYI-LABEL: @test_vcales_f32(
15160-
// NYI: [[VCALES_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facge.i32.f32(float %b, float %a)
15161-
// NYI: ret i32 [[VCALES_F32_I]]
15162-
// uint32_t test_vcales_f32(float32_t a, float32_t b) {
15163-
// return (uint32_t)vcales_f32(a, b);
15164-
// }
15159+
uint32_t test_vcales_f32(float32_t a, float32_t b) {
15160+
return (uint32_t)vcales_f32(a, b);
15161+
15162+
// CIR-LABEL: vcales_f32
15163+
// CIR: [[TMP0:%.*]] = cir.llvm.intrinsic "aarch64.neon.facge" {{.*}}, {{.*}} : (!cir.float, !cir.float) -> !u32i
15164+
15165+
// LLVM-LABEL: @test_vcales_f32(
15166+
// LLVM: [[VCALES_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facge.i32.f32(float %0, float %1)
15167+
// LLVM: ret i32 [[VCALES_F32_I]]
15168+
}
1516515169

1516615170
uint64_t test_vcaled_f64(float64_t a, float64_t b) {
1516715171
return (uint64_t)vcaled_f64(a, b);

0 commit comments

Comments
 (0)