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--- 21name: test 22hasInlineAsm: true 23tracksRegLiveness: true 24liveins: 25 - { reg: '%edi' } 26 - { reg: '%esi' } 27frameInfo: 28 stackSize: 8 29 adjustsStack: true 30 hasCalls: true 31body: | 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