xref: /llvm-project/llvm/test/CodeGen/X86/fastregalloc-tied-undef.mir (revision 1bc8b3258e6d42f702fb11eb60d84d0e23935e3e)
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
3
4# If the tied use is undef value, fastregalloc should free the def register.
5# There is no reload needed for the undef value.
6...
7---
8name:            foo
9alignment:       16
10tracksRegLiveness: true
11registers:
12  - { id: 0, class: vr128 }
13frameInfo:
14  maxAlignment:    16
15stack:
16  - { id: 0, size: 64, alignment: 16 }
17  - { id: 1, size: 16, alignment: 16 }
18machineFunctionInfo: {}
19body:             |
20  bb.0.entry:
21    ; CHECK-LABEL: bb.0.entry
22    ; CHECK-NEXT: renamable $xmm0 = PXORrr undef renamable $xmm0, undef renamable $xmm0
23    ; CHECK-NEXT: MOVAPSmr %stack.1, 1, $noreg, 0, $noreg, renamable $xmm0
24    ; CHECK-NEXT: MOVAPSmr %stack.0, 1, $noreg, 0, $noreg, renamable $xmm0
25    ; CHECK-NEXT: MOVAPSmr %stack.0, 1, $noreg, 16, $noreg, renamable $xmm0
26    ; CHECK-NEXT: MOVAPSmr %stack.0, 1, $noreg, 32, $noreg, renamable $xmm0
27    ; CHECK-NEXT: MOVAPSmr %stack.0, 1, $noreg, 48, $noreg, killed renamable $xmm0
28
29    %0:vr128 = PXORrr undef %0, undef %0
30    MOVAPSmr %stack.1, 1, $noreg, 0, $noreg, %0
31    MOVAPSmr %stack.0, 1, $noreg, 0, $noreg, %0
32    MOVAPSmr %stack.0, 1, $noreg, 16, $noreg, %0
33    MOVAPSmr %stack.0, 1, $noreg, 32, $noreg, %0
34    MOVAPSmr %stack.0, 1, $noreg, 48, $noreg, killed %0
35    RET 0
36
37...
38