1 // RUN: %clang_cc1 -ffreestanding -triple i386-unknown-unknown -fasm-blocks -O0 -emit-llvm -S %s -o - | FileCheck %s 2 // RUN: %clang_cc1 -ffreestanding -triple x86_64-unknown-unknown -fasm-blocks -O0 -emit-llvm -S %s -o - | FileCheck %s 3 // REQUIRES: x86-registered-target 4 5 #include <immintrin.h> 6 7 void f(void) { 8 __asm mov eax, ebx 9 __asm mov ebx, ecx 10 __asm__("movl %ecx, %edx"); 11 // CHECK: movl %ebx, %eax 12 // CHECK: movl %ecx, %ebx 13 // CHECK: movl %ecx, %edx 14 15 __asm mov eax, ebx 16 __asm volatile ("movl %ecx, %edx"); 17 // CHECK: movl %ebx, %eax 18 // CHECK: movl %ecx, %edx 19 20 __asm volatile goto ("movl %ecx, %edx"); 21 // CHECK: movl %ecx, %edx 22 23 __asm mov eax, ebx 24 __asm goto ("movl %ecx, %edx"); 25 // CHECK: movl %ebx, %eax 26 // CHECK: movl %ecx, %edx 27 } 28