xref: /aosp_15_r20/external/llvm/test/CodeGen/MIR/X86/inline-asm-registers.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llc -march=x86-64 -start-after block-placement -stop-after block-placement -o - %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker--- |
4*9880d681SAndroid Build Coastguard Worker  define i64 @test(i64 %x, i64 %y) #0 {
5*9880d681SAndroid Build Coastguard Worker  entry:
6*9880d681SAndroid Build Coastguard Worker    %x0 = call { i64, i64 } asm "foo", "=r,=r,1,0,~{dirflag},~{fpsr},~{flags}"(i64 %x, i64 %y) #0
7*9880d681SAndroid Build Coastguard Worker    %x1 = extractvalue { i64, i64 } %x0, 0
8*9880d681SAndroid Build Coastguard Worker    ret i64 %x1
9*9880d681SAndroid Build Coastguard Worker  }
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker  define i64 @test2(i64 %x, i64 %y) #0 {
12*9880d681SAndroid Build Coastguard Worker  entry:
13*9880d681SAndroid Build Coastguard Worker    %x0 = call { i64, i64 } asm "foo", "=r,=r,1,0,~{dirflag},~{fpsr},~{flags}"(i64 %x, i64 %y) #0
14*9880d681SAndroid Build Coastguard Worker    %x1 = extractvalue { i64, i64 } %x0, 0
15*9880d681SAndroid Build Coastguard Worker    ret i64 %x1
16*9880d681SAndroid Build Coastguard Worker  }
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker  attributes #0 = { nounwind }
19*9880d681SAndroid Build Coastguard Worker...
20*9880d681SAndroid Build Coastguard Worker---
21*9880d681SAndroid Build Coastguard Workername:            test
22*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    true
23*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
24*9880d681SAndroid Build Coastguard Workerliveins:
25*9880d681SAndroid Build Coastguard Worker  - { reg: '%rdi' }
26*9880d681SAndroid Build Coastguard Worker  - { reg: '%rsi' }
27*9880d681SAndroid Build Coastguard Workerbody: |
28*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
29*9880d681SAndroid Build Coastguard Worker    liveins: %rdi, %rsi
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: name: test
32*9880d681SAndroid Build Coastguard Worker  ; CHECK: INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi,
33*9880d681SAndroid Build Coastguard Worker    INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi, 2147483657, killed %rsi, 12, implicit-def dead early-clobber %eflags
34*9880d681SAndroid Build Coastguard Worker    %rax = MOV64rr killed %rsi
35*9880d681SAndroid Build Coastguard Worker    RETQ killed %rax
36*9880d681SAndroid Build Coastguard Worker...
37*9880d681SAndroid Build Coastguard Worker---
38*9880d681SAndroid Build Coastguard Workername:            test2
39*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    true
40*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
41*9880d681SAndroid Build Coastguard Workerliveins:
42*9880d681SAndroid Build Coastguard Worker  - { reg: '%rdi' }
43*9880d681SAndroid Build Coastguard Worker  - { reg: '%rsi' }
44*9880d681SAndroid Build Coastguard Workerbody: |
45*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
46*9880d681SAndroid Build Coastguard Worker    liveins: %rdi, %rsi
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker  ; Verify that the register ties are preserved.
49*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: name: test2
50*9880d681SAndroid Build Coastguard Worker  ; CHECK: INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi(tied-def 5), 2147483657, killed %rsi(tied-def 3), 12, implicit-def dead early-clobber %eflags
51*9880d681SAndroid Build Coastguard Worker    INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi(tied-def 5), 2147483657, killed %rsi(tied-def 3), 12, implicit-def dead early-clobber %eflags
52*9880d681SAndroid Build Coastguard Worker    %rax = MOV64rr killed %rsi
53*9880d681SAndroid Build Coastguard Worker    RETQ killed %rax
54*9880d681SAndroid Build Coastguard Worker...
55