53 lines · plain
1# RUN: llc -mtriple=x86_64 -run-pass none -o - %s | FileCheck %s2 3--- |4 define i64 @test(i64 %x, i64 %y) #0 {5 entry:6 %x0 = call { i64, i64 } asm "foo", "=r,=r,1,0,~{dirflag},~{fpsr},~{flags}"(i64 %x, i64 %y) #07 %x1 = extractvalue { i64, i64 } %x0, 08 ret i64 %x19 }10 11 define i64 @test2(i64 %x, i64 %y) #0 {12 entry:13 %x0 = call { i64, i64 } asm "foo", "=r,=r,1,0,~{dirflag},~{fpsr},~{flags}"(i64 %x, i64 %y) #014 %x1 = extractvalue { i64, i64 } %x0, 015 ret i64 %x116 }17 18 attributes #0 = { nounwind }19...20---21name: test22tracksRegLiveness: true23liveins:24 - { reg: '$rdi' }25 - { reg: '$rsi' }26body: |27 bb.0.entry:28 liveins: $rdi, $rsi29 30 ; CHECK-LABEL: name: test31 ; CHECK: INLINEASM &foo, 0 /* attdialect */, 4784138 /* regdef:GR64 */, def $rsi, 4784138 /* regdef:GR64 */, def dead $rdi,32 INLINEASM &foo, 0, 4784138, def $rsi, 4784138, def dead $rdi, 2147549193, killed $rdi, 2147483657, killed $rsi, 12, implicit-def dead early-clobber $eflags33 $rax = MOV64rr killed $rsi34 RET64 killed $rax35...36---37name: test238tracksRegLiveness: true39liveins:40 - { reg: '$rdi' }41 - { reg: '$rsi' }42body: |43 bb.0.entry:44 liveins: $rdi, $rsi45 46 ; Verify that the register ties are preserved.47 ; CHECK-LABEL: name: test248 ; CHECK: INLINEASM &foo, 0 /* attdialect */, 4784138 /* regdef:GR64 */, def $rsi, 4784138 /* regdef:GR64 */, def dead $rdi, 2147549193 /* reguse tiedto:$1 */, killed $rdi(tied-def 5), 2147483657 /* reguse tiedto:$0 */, killed $rsi(tied-def 3), 12 /* clobber */, implicit-def dead early-clobber $eflags49 INLINEASM &foo, 0, 4784138, def $rsi, 4784138, def dead $rdi, 2147549193, killed $rdi(tied-def 5), 2147483657, killed $rsi(tied-def 3), 12, implicit-def dead early-clobber $eflags50 $rax = MOV64rr killed $rsi51 RET64 killed $rax52...53