Skip to content

Commit 6e914ba

Browse files
authored
[CIR][CIRGen][Builtin][Neon] Lower neon vcages_f32 (#1449)
Lower neon vcages_f32
1 parent f59cdbb commit 6e914ba

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2698,17 +2698,14 @@ static mlir::Value emitCommonNeonSISDBuiltinExpr(
26982698
case NEON::BI__builtin_neon_vaddvq_u64:
26992699
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.uaddv", resultTy,
27002700
loc);
2701-
case NEON::BI__builtin_neon_vcaged_f64: {
2701+
case NEON::BI__builtin_neon_vcages_f32:
2702+
case NEON::BI__builtin_neon_vcaged_f64:
27022703
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.facge", resultTy,
27032704
loc);
2704-
}
2705-
case NEON::BI__builtin_neon_vcages_f32:
2706-
llvm_unreachable(" neon_vcages_f32 NYI ");
27072705
case NEON::BI__builtin_neon_vcagts_f32:
2708-
case NEON::BI__builtin_neon_vcagtd_f64: {
2706+
case NEON::BI__builtin_neon_vcagtd_f64:
27092707
return emitNeonCall(builder, {argTy}, ops, "aarch64.neon.facgt", resultTy,
27102708
loc);
2711-
}
27122709
case NEON::BI__builtin_neon_vcaled_f64:
27132710
llvm_unreachable(" neon_vcaled_f64 NYI ");
27142711
case NEON::BI__builtin_neon_vcales_f32:

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15107,12 +15107,16 @@ int16_t test_vqmovns_s32(int32_t a) {
1510715107
// return (uint64_t)vcltzd_f64(a);
1510815108
// }
1510915109

15110-
// NYI-LABEL: @test_vcages_f32(
15111-
// NYI: [[VCAGES_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facge.i32.f32(float %a, float %b)
15112-
// NYI: ret i32 [[VCAGES_F32_I]]
15113-
// uint32_t test_vcages_f32(float32_t a, float32_t b) {
15114-
// return (uint32_t)vcages_f32(a, b);
15115-
// }
15110+
uint32_t test_vcages_f32(float32_t a, float32_t b) {
15111+
return (uint32_t)vcages_f32(a, b);
15112+
15113+
// CIR-LABEL: vcages_f32
15114+
// CIR: [[TMP0:%.*]] = cir.llvm.intrinsic "aarch64.neon.facge" {{.*}}, {{.*}} : (!cir.float, !cir.float) -> !u32i
15115+
15116+
// LLVM-LABEL: @test_vcages_f32(
15117+
// LLVM: [[VCAGED_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facge.i32.f32(float %0, float %1)
15118+
// LLVM: ret i32 [[VCAGED_F32_I]]
15119+
}
1511615120

1511715121
uint64_t test_vcaged_f64(float64_t a, float64_t b) {
1511815122
return (uint64_t)vcaged_f64(a, b);

0 commit comments

Comments
 (0)