Home | History | Annotate | Download | only in X86
      1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
      2 # This test ensures that the MIR parser parses the 'early-clobber' register
      3 # flags correctly.
      4 
      5 --- |
      6 
      7   declare void @foo(i32)
      8 
      9   define void @test(i32 %a, i32 %b) #0 {
     10   entry:
     11     %c = add i32 %a, %b
     12     call void asm sideeffect "nop", "~{ax},~{di}"()
     13     call void @foo(i32 %c)
     14     ret void
     15   }
     16 
     17   attributes #0 = { optsize }
     18 
     19 ...
     20 ---
     21 name:            test
     22 hasInlineAsm:    true
     23 tracksRegLiveness: true
     24 liveins:
     25   - { reg: '%edi' }
     26   - { reg: '%esi' }
     27 frameInfo:
     28   stackSize:     8
     29   adjustsStack:  true
     30   hasCalls:      true
     31 body: |
     32   bb.0.entry:
     33     liveins: %edi, %esi
     34 
     35     frame-setup PUSH64r undef %rax, implicit-def %rsp, implicit %rsp
     36     CFI_INSTRUCTION .cfi_def_cfa_offset 16
     37     %ecx = COPY %edi
     38     %ecx = ADD32rr killed %ecx, killed %esi, implicit-def dead %eflags
     39   ; CHECK: INLINEASM $nop, 1, 12, implicit-def dead early-clobber %ax, 12, implicit-def dead early-clobber %di
     40     INLINEASM $nop, 1, 12, implicit-def dead early-clobber %ax, 12, implicit-def dead early-clobber %di
     41     %edi = COPY killed %ecx
     42     CALL64pcrel32 @foo, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp
     43     %rax = POP64r implicit-def %rsp, implicit %rsp
     44     RETQ
     45 ...
     46