Skip to content

Commit

Permalink
Use the right aarch64 builtin function name
Browse files Browse the repository at this point in the history
  • Loading branch information
AmrDeveloper committed Jan 29, 2025
1 parent 08952d6 commit 8b636ca
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
2 changes: 1 addition & 1 deletion clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2124,7 +2124,7 @@ static mlir::Value emitArmLdrexNon128Intrinsic(unsigned int builtinID,
CIRGenFunction &cgf) {
StringRef intrinsicName = builtinID == clang::AArch64::BI__builtin_arm_ldrex
? "aarch64.ldxr"
: "aarch64.ldaex";
: "aarch64.ldaxr";

// Argument
mlir::Value loadAddr = cgf.emitScalarExpr(clangCallExpr->getArg(0));
Expand Down
14 changes: 7 additions & 7 deletions clang/test/CIR/CodeGen/builtin-arm-exclusive.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,31 +52,31 @@ int test_ldaex(char *addr, long long *addr64, float *addrfloat) {
// CIR-LABEL: @test_ldaex
int sum = 0;
sum += __builtin_arm_ldaex(addr);
// CIR: [[INTRES0:%.*]] = cir.llvm.intrinsic "aarch64.ldaex" {{%[0-9]+}} : (!cir.ptr<!s8i>) -> !s64i
// CIR: [[INTRES0:%.*]] = cir.llvm.intrinsic "aarch64.ldaxr" {{%[0-9]+}} : (!cir.ptr<!s8i>) -> !s64i
// CIR: [[CAST0:%.*]] = cir.cast(integral, [[INTRES0]] : !s64i), !s8i
// CIR: [[CAST_I32:%.*]] = cir.cast(integral, [[CAST0]] : !s8i), !s32i

sum += __builtin_arm_ldaex((short *)addr);
// CIR: [[INTRES1:%.*]] = cir.llvm.intrinsic "aarch64.ldaex" {{%[0-9]+}} : (!cir.ptr<!s16i>) -> !s64i
// CIR: [[INTRES1:%.*]] = cir.llvm.intrinsic "aarch64.ldaxr" {{%[0-9]+}} : (!cir.ptr<!s16i>) -> !s64i
// CIR: [[CAST1:%.*]] = cir.cast(integral, [[INTRES1]] : !s64i), !s16i
// CIR: [[CAST_I16:%.*]] = cir.cast(integral, [[CAST1]] : !s16i), !s32i

sum += __builtin_arm_ldaex((int *)addr);
// CIR: [[INTRES2:%.*]] = cir.llvm.intrinsic "aarch64.ldaex" {{%[0-9]+}} : (!cir.ptr<!s32i>) -> !s64i
// CIR: [[INTRES2:%.*]] = cir.llvm.intrinsic "aarch64.ldaxr" {{%[0-9]+}} : (!cir.ptr<!s32i>) -> !s64i
// CIR: [[CAST2:%.*]] = cir.cast(integral, [[INTRES2]] : !s64i), !s32i

sum += __builtin_arm_ldaex((long long *)addr);
// CIR: [[INTRES3:%.*]] = cir.llvm.intrinsic "aarch64.ldaex" {{%[0-9]+}} : (!cir.ptr<!s64i>) -> !s64i
// CIR: [[INTRES3:%.*]] = cir.llvm.intrinsic "aarch64.ldaxr" {{%[0-9]+}} : (!cir.ptr<!s64i>) -> !s64i

sum += __builtin_arm_ldaex(addr64);
// CIR: [[INTRES4:%.*]] = cir.llvm.intrinsic "aarch64.ldaex" {{%[0-9]+}} : (!cir.ptr<!s64i>) -> !s64i
// CIR: [[INTRES4:%.*]] = cir.llvm.intrinsic "aarch64.ldaxr" {{%[0-9]+}} : (!cir.ptr<!s64i>) -> !s64i


sum += *__builtin_arm_ldaex((int **)addr);
// CIR: [[INTRES5:%.*]] = cir.llvm.intrinsic "aarch64.ldaex" {{%[0-9]+}} : (!cir.ptr<!cir.ptr<!s32i>>) -> !s64i
// CIR: [[INTRES5:%.*]] = cir.llvm.intrinsic "aarch64.ldaxr" {{%[0-9]+}} : (!cir.ptr<!cir.ptr<!s32i>>) -> !s64i

sum += __builtin_arm_ldaex((struct twoFldT **)addr)->a;
// CIR: [[INTRES6:%.*]] = cir.llvm.intrinsic "aarch64.ldaex" {{%[0-9]+}} : (!cir.ptr<!cir.ptr<!ty_twoFldT>>) -> !s64i
// CIR: [[INTRES6:%.*]] = cir.llvm.intrinsic "aarch64.ldaxr" {{%[0-9]+}} : (!cir.ptr<!cir.ptr<!ty_twoFldT>>) -> !s64i
// CIR: [[CAST3:%.*]] = cir.cast(int_to_ptr, [[INTRES6]] : !s64i), !cir.ptr<!ty_twoFldT>
// CIR: [[MEMBER_A:%.*]] = cir.get_member [[CAST3]][0] {name = "a"} : !cir.ptr<!ty_twoFldT> -> !cir.ptr<!s8i>

Expand Down

0 comments on commit 8b636ca

Please sign in to comment.