| # RUN: rm -rf %t && split-file %s %t && cd %t |
| # RUN: llvm-mc -triple=x86_64 a.s | FileCheck %s |
| |
| #--- a.s |
| # CHECK: pushq %rax |
| # CHECK-NEXT: pushq %rbx |
| # CHECK-NEXT: pushq %rcx |
| .irp reg,%rax,%rbx |
| pushq \reg |
| .endr |
| pushq %rcx |
| |
| # CHECK: addl %eax, 4 |
| # CHECK-NEXT: addl %eax, 3 |
| # CHECK-NEXT: addl %eax, 5 |
| # CHECK-NEXT: addl %ebx, 4 |
| # CHECK-NEXT: addl %ebx, 3 |
| # CHECK-NEXT: addl %ebx, 5 |
| # CHECK-EMPTY: |
| # CHECK-NEXT: nop |
| .irp reg,%eax,%ebx |
| .irp imm,4,3,5 |
| addl \reg, \imm |
| .endr # comment after .endr |
| .endr ; |
| nop |
| |
| # CHECK: xorl %eax, %eax |
| # CHECK-EMPTY: |
| # CHECK-NEXT: nop |
| .irp reg,%eax |
| xor \reg,\reg |
| .endr |
| # 99 "a.s" |
| nop |
| |
| # RUN: not llvm-mc -triple=x86_64 err1.s 2>&1 | FileCheck %s --check-prefix=ERR1 |
| # ERR1: .s:1:1: error: no matching '.endr' in definition |
| #--- err1.s |
| .irp reg,%eax |