| ## Contrived .zero directive example, simplified from the Linux kernel use case, |
| ## which requires multiple iterations to converge. |
| ## https://github.com/llvm/llvm-project/issues/100283 |
| # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t |
| # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s |
| |
| # CHECK: 80: jne 0x0 <.text> |
| # CHECK-EMPTY: |
| |
| .text |
| .Ltmp0: |
| .Ltmp1: |
| cli |
| popq %rdi |
| text1: |
| .zero (.Ltmp2-.Ltmp3) |
| .section "","ax",@progbits |
| .Ltmp3: |
| movq $0, %rax |
| .Ltmp4: |
| .Ltmp5: |
| .section .discard.intra_function_calls,"ax",@progbits |
| .long .Ltmp5 |
| .section "","ax",@progbits |
| callq .Ltmp6 |
| int3 |
| .Ltmp7: |
| .Ltmp8: |
| .section .discard.intra_function_calls,"ax",@progbits |
| .long .Ltmp8 |
| .section "","ax",@progbits |
| callq .Ltmp6 |
| int3 |
| .Ltmp6: |
| addq $0, %rsp |
| decq %rax |
| jne .Ltmp4 |
| lfence |
| movq $-1, %gs:pcpu_hot+6 |
| |
| .Ltmp2: |
| .text |
| text2: |
| |
| .zero (.Ltmp9-.Ltmp10) |
| .section "","ax",@progbits |
| .Ltmp10: |
| jmp .Ltmp11 |
| .Ltmp9: |
| .text |
| text3: |
| |
| .Ltmp12: |
| .zero (.Ltmp13-.Ltmp14) |
| .section "","ax",@progbits |
| .Ltmp14: |
| callq entry_untrain_ret |
| .Ltmp13: |
| .text |
| |
| .zero (.Ltmp15-.Ltmp16) |
| .section "","ax",@progbits |
| .Ltmp16: |
| xorl %eax, %eax |
| btsq $63, %rax |
| movq %rax, %gs:pcpu_hot+6 |
| |
| .Ltmp15: |
| .text |
| |
| popq %r12 |
| popq rbp |
| jmp __x86_return_thunk |
| movl 936(%rdi), %eax |
| cmpl %gs:x86_spec_ctrl_current, %eax |
| je .Ltmp0 |
| movl edx, %edx |
| wrmsr |
| jmp .Ltmp0 |
| .Ltmp11: |
| movl $72, %ecx |
| jmp .Ltmp12 |
| cmpb $0, kvm_rebooting |
| jne .Ltmp1 |