1# RUN: llc -march=x86-64 -run-pass none -o - %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 22tracksRegLiveness: true 23liveins: 24 - { reg: '$edi' } 25 - { reg: '$esi' } 26frameInfo: 27 stackSize: 8 28 adjustsStack: true 29 hasCalls: true 30body: | 31 bb.0.entry: 32 liveins: $edi, $esi 33 34 frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp 35 CFI_INSTRUCTION def_cfa_offset 16 36 $ecx = COPY $edi 37 $ecx = ADD32rr killed $ecx, killed $esi, implicit-def dead $eflags 38 ; CHECK: INLINEASM &nop, 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $ax, 12 /* clobber */, implicit-def dead early-clobber $di 39 INLINEASM &nop, 1, 12, implicit-def dead early-clobber $ax, 12, implicit-def dead early-clobber $di 40 $edi = COPY killed $ecx 41 CALL64pcrel32 @foo, csr_64, implicit $rsp, implicit $edi, implicit-def $rsp 42 $rax = POP64r implicit-def $rsp, implicit $rsp 43 RETQ 44... 45