xref: /aosp_15_r20/external/clang/test/CodeGen/inline-asm-mixed-style.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple i386-unknown-unknown -fasm-blocks -fsyntax-only -verify %s -DCHECK_ASM_GOTO
2*67e74705SXin Li // RUN: %clang_cc1 -triple i386-unknown-unknown -fasm-blocks -O0 -emit-llvm -S %s -o - | FileCheck %s
3*67e74705SXin Li // REQUIRES: x86-registered-target
4*67e74705SXin Li 
f()5*67e74705SXin Li void f() {
6*67e74705SXin Li   __asm mov eax, ebx
7*67e74705SXin Li   __asm mov ebx, ecx
8*67e74705SXin Li   __asm__("movl %ecx, %edx");
9*67e74705SXin Li   // CHECK: movl    %ebx, %eax
10*67e74705SXin Li   // CHECK: movl    %ecx, %ebx
11*67e74705SXin Li   // CHECK: movl    %ecx, %edx
12*67e74705SXin Li 
13*67e74705SXin Li   __asm mov eax, ebx
14*67e74705SXin Li   __asm volatile ("movl %ecx, %edx");
15*67e74705SXin Li   // CHECK: movl    %ebx, %eax
16*67e74705SXin Li   // CHECK: movl    %ecx, %edx
17*67e74705SXin Li 
18*67e74705SXin Li   __asm mov eax, ebx
19*67e74705SXin Li   __asm const ("movl %ecx, %edx"); // expected-warning {{ignored const qualifier on asm}}
20*67e74705SXin Li   // CHECK: movl    %ebx, %eax
21*67e74705SXin Li   // CHECK: movl    %ecx, %edx
22*67e74705SXin Li 
23*67e74705SXin Li #ifdef CHECK_ASM_GOTO
24*67e74705SXin Li   __asm volatile goto ("movl %ecx, %edx"); // expected-error {{'asm goto' constructs are not supported yet}}
25*67e74705SXin Li 
26*67e74705SXin Li   __asm mov eax, ebx
27*67e74705SXin Li   __asm goto ("movl %ecx, %edx"); // expected-error {{'asm goto' constructs are not supported yet}}
28*67e74705SXin Li #endif
29*67e74705SXin Li }
30