Dale Johannesen | f336bea | 2010-05-18 19:03:51 +0000 | [diff] [blame^] | 1 | // RUN: %llvmgcc %s -c -O3 -m64 -emit-llvm -o - | llc -march=x86-64 -mtriple=x86_64-apple-darwin | FileCheck %s |
| 2 | // XFAIL: * |
| 3 | // XTARGET: x86,i386,i686 |
| 4 | // r9 used to be clobbered before its value was moved to r10. 7993104. |
| 5 | |
| 6 | void foo(int x, int y) { |
| 7 | // CHECK: bar |
| 8 | // CHECK: movq %r9, %r10 |
| 9 | // CHECK: movq %rdi, %r9 |
| 10 | // CHECK: bar |
| 11 | register int lr9 asm("r9") = x; |
| 12 | register int lr10 asm("r10") = y; |
| 13 | int foo; |
| 14 | asm volatile("bar" : "=r"(lr9) : "r"(lr9), "r"(lr10)); |
| 15 | foo = lr9; |
| 16 | lr9 = x; |
| 17 | lr10 = foo; |
| 18 | asm volatile("bar" : "=r"(lr9) : "r"(lr9), "r"(lr10)); |
| 19 | } |