Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / X86 / statepoint-fastregalloc.mir
blobf683e9ebec81d74065572de582dcce27e7a186e9
1 # RUN: llc -mtriple=x86_64-- -run-pass=regallocfast -o - %s | FileCheck %s
2 # RUN: llc -mtriple=x86_64-- -passes=regallocfast -o - %s | FileCheck %s
4 # Check that fastregalloc does not displace register assigned to tied def when
5 # RegMask operand is present. STATEPOINT is an example of such instruction.
6 # Tied def/use must be assigned to the same register.
7 ---
8 name:            test_relocate
9 tracksRegLiveness: true
10 frameInfo:
11   adjustsStack:    true
12 body:             |
13   bb.0.entry:
14     liveins: $rdi
16     ; CHECK: renamable [[REG:\$[a-z0-9]+]] = STATEPOINT 0, 0, 0, target-flags(x86-plt) 0, 2, 0, 2, 0, 2, 0, 2, 1, renamable [[REG]](tied-def 0)
17   
18     %1:gr64 = COPY $rdi
19     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
20     %1:gr64 = STATEPOINT 0, 0, 0, target-flags(x86-plt) 0, 2, 0, 2, 0, 2, 0, 2, 1, %1(tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
21     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
22     $rax = COPY %1
23     RET 0, killed $rax
24 ...
26 # Same as above but with multiple RegMask operands per instruction.
27 # These regmasks have no real meaning and chosen to allow only single register to be assignable ($rbp)
28 ---
29 name:            test_relocate_multi_regmasks
30 tracksRegLiveness: true
31 frameInfo:
32   adjustsStack:    true
33 body:             |
34   bb.0.entry:
35     liveins: $rdi
37     ; CHECK: renamable $rbp = STATEPOINT 0, 0, 0, target-flags(x86-plt) 0, 2, 0, 2, 0, 2, 0, 2, 1, renamable $rbp(tied-def 0)
39     %1:gr64 = COPY $rdi
40     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
41     %1:gr64 = STATEPOINT 0, 0, 0, target-flags(x86-plt) 0, 2, 0, 2, 0, 2, 0, 2, 1, %1(tied-def 0), 2, 0, 2, 1, 0, 0, csr_64_rt_allregs, csr_64_cxx_tls_darwin_pe, implicit-def $rsp, implicit-def $ssp
42     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
43     $rax = COPY %1
44     RET 0, killed $rax
45 ...