Solution: insert .s assembly code between .if TARGET_CPU_ARM64 and #if TARGET_CPU_X86_64
test_cpu.c
#include <stdio.h>
#include "TargetConditionals.h"
#include "test_cpu.h"
extern int64_t add_test_asm(int64_t, int64_t);
char buf[128];
int64_t a, b, sum;
void test()
{
#if TARGET_CPU_ARM64
a = 4; b = 70;
sum = add_test_asm(a, b);
snprintf(buf, 128, "CPU is ARM64, %llu + %llu = %llu", a, b, sum);
#elif TARGET_CPU_X86_64
a = 40; b = 7;
sum = add_test_asm(a, b);
snprintf(buf, 128, "CPU is X86_64, %llu + %llu = %llu", a, b, sum);
#endif
}
test_cpu.h
extern char buf[];
extern void test(void);
add_arm.s file
#include "TargetConditionals.h"
.if TARGET_CPU_ARM64
.globl _add_test_asm
.align 4
_add_test_asm:
add x0,x0,x1
ret
.endif
add_intel.s file
#include "TargetConditionals.h"
#if TARGET_CPU_X86_64
.globl _add_test_asm
.align 4
_add_test_asm:
movq %rdi,%rax
addq %rsi,%rax
retq
#endif