[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / expand-vr64-gr64-copy.mir
blob59e767d16416fa80b082cbeb638acab258704b33
1 # RUN: llc -run-pass postrapseudos -mtriple=x86_64-unknown-unknown -mattr=+3dnow -o - %s | FileCheck %s
2 # This test verifies that the ExpandPostRA pass expands the GR64 <-> VR64
3 # copies into appropriate MMX_MOV instructions.
5 --- |
7   define <2 x i32> @test_pswapdsi(<2 x i32> %a) nounwind readnone {
8   entry:
9     %0 = bitcast <2 x i32> %a to x86_mmx
10     %1 = tail call x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx %0)
11     %2 = bitcast x86_mmx %1 to <2 x i32>
12     ret <2 x i32> %2
13   }
15   declare x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx) nounwind readnone
17 ...
18 ---
19 name:            test_pswapdsi
20 tracksRegLiveness: true
21 body: |
22   bb.0.entry:
23     liveins: $xmm0
25     $xmm0 = PSHUFDri killed $xmm0, -24
26     MOVPQI2QImr $rsp, 1, $noreg, -8, $noreg, killed $xmm0
27     $mm0 = PSWAPDrm $rsp, 1, $noreg, -8, $noreg
28   ; CHECK:      $rax = MMX_MOVD64from64rr $mm0
29   ; CHECK-NEXT: $mm0 = MMX_MOVD64to64rr $rax
30     $rax = COPY $mm0
31     $mm0 = COPY $rax
32     MMX_MOVQ64mr $rsp, 1, $noreg, -16, $noreg, killed $mm0
33     $xmm0 = MOVQI2PQIrm $rsp, 1, $noreg, -16, $noreg
34     $xmm0 = PSHUFDri killed $xmm0, -44
35     RETQ $xmm0
36 ...