| // RUN: llvm-mc -triple x86_64-linux-gnu %s | FileCheck %s |
| .macro ifcc arg:vararg |
| .if cc |
| \arg |
| .endif |
| .endm |
| |
| .macro ifcc2 arg0 arg1:vararg |
| .if cc |
| movl \arg0, \arg1 |
| .endif |
| .endm |
| |
| .macro ifcc3 arg0, arg1:vararg |
| .if cc |
| movl \arg0, \arg1 |
| .endif |
| .endm |
| |
| .macro ifcc4 arg0, arg1:vararg |
| .if cc |
| movl \arg1, \arg0 |
| .endif |
| .endm |
| |
| .text |
| |
| // CHECK: movl %esp, %ebp |
| // CHECK: subl $0, %esp |
| // CHECK: movl %eax, %ebx |
| // CHECK: movl %ecx, %ebx |
| // CHECK: movl %ecx, %eax |
| // CHECK: movl %eax, %ecx |
| // CHECK: movl %ecx, %eax |
| // CHECK: movl %eax, %ecx |
| .set cc,1 |
| ifcc movl %esp, %ebp |
| subl $0, %esp |
| |
| ifcc2 %eax %ebx |
| ifcc2 %ecx, %ebx |
| ifcc3 %ecx %eax |
| ifcc3 %eax, %ecx |
| ifcc4 %eax %ecx ## test |
| ifcc4 %ecx, %eax ## test |
| |
| // CHECK-NOT: movl |
| // CHECK: subl $1, %esp |
| .set cc,0 |
| ifcc movl %esp, %ebp |
| subl $1, %esp |