| // 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 |