Benjamin Oldenburgarm64-win32 support : testsea823187 months agoHistory
91 lines · 1.6 KB · C
RawDownload
/* ARM64 inline assembly error tests.   Verify that invalid assembly produces proper error messages.   Run with -dt; skipped on non-arm64 architectures. */ #include <stdio.h> #if defined test_unknown_instructionint main(void){    __asm__("fubar x0, x1, x2");    return 0;} #elif defined test_shift_imm_range_32int main(void){    /* LSL by 32 is out of range for 32-bit operand */    __asm__("lsl w0, w1, #32");    return 0;} #elif defined test_shift_imm_range_64int main(void){    /* LSL by 64 is out of range for 64-bit operand */    __asm__("lsl x0, x1, #64");    return 0;} #elif defined test_invalid_sysregint main(void){    /* Bogus system register name */    __asm__("mrs x0, bogusreg");    return 0;} #elif defined test_invalid_barrier_optionint main(void){    /* Invalid barrier scope name */    __asm__("dmb xyz");    return 0;} #elif defined test_missing_third_operandint main(void){    __asm__("add x0, x1");    return 0;} #elif defined test_movz_imm_rangeint main(void){    __asm__("movz x0, #0x10000");    return 0;} #elif defined test_movz_shift_rangeint main(void){    __asm__("movz x0, #1, lsl #8");    return 0;} #elif defined test_invalid_mulsint main(void){    __asm__("muls x0, x1, x2");    return 0;} #elif defined test_extended_inline_asmint main(void){    int x = 1;    /* Invalid operand reference in extended inline asm */    __asm__("add %0, %1, #1" : "=r"(x) : "2"(x));    return 0;} #elif defined test_extended_inline_clobberint main(void){    /* Invalid clobber register name */    __asm__ volatile ("nop" : : : "bogus");    return 0;} #endif