xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/expand-vr64-gr64-copy.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llc -run-pass postrapseudos -mtriple=x86_64-unknown-unknown -mattr=+3dnow -o - %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker# This test verifies that the ExpandPostRA pass expands the GR64 <-> VR64
3*9880d681SAndroid Build Coastguard Worker# copies into appropriate MMX_MOV instructions.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker--- |
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker  define <2 x i32> @test_pswapdsi(<2 x i32> %a) nounwind readnone {
8*9880d681SAndroid Build Coastguard Worker  entry:
9*9880d681SAndroid Build Coastguard Worker    %0 = bitcast <2 x i32> %a to x86_mmx
10*9880d681SAndroid Build Coastguard Worker    %1 = tail call x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx %0)
11*9880d681SAndroid Build Coastguard Worker    %2 = bitcast x86_mmx %1 to <2 x i32>
12*9880d681SAndroid Build Coastguard Worker    ret <2 x i32> %2
13*9880d681SAndroid Build Coastguard Worker  }
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker  declare x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx) nounwind readnone
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker...
18*9880d681SAndroid Build Coastguard Worker---
19*9880d681SAndroid Build Coastguard Workername:            test_pswapdsi
20*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
21*9880d681SAndroid Build Coastguard Workerbody: |
22*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
23*9880d681SAndroid Build Coastguard Worker    liveins: %xmm0
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker    %xmm0 = PSHUFDri killed %xmm0, -24
26*9880d681SAndroid Build Coastguard Worker    MOVPQI2QImr %rsp, 1, _, -8, _, killed %xmm0
27*9880d681SAndroid Build Coastguard Worker    %mm0 = PSWAPDrm %rsp, 1, _, -8, _
28*9880d681SAndroid Build Coastguard Worker  ; CHECK:      %rax = MMX_MOVD64from64rr %mm0
29*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT: %mm0 = MMX_MOVD64to64rr %rax
30*9880d681SAndroid Build Coastguard Worker    %rax = COPY %mm0
31*9880d681SAndroid Build Coastguard Worker    %mm0 = COPY %rax
32*9880d681SAndroid Build Coastguard Worker    MMX_MOVQ64mr %rsp, 1, _, -16, _, killed %mm0
33*9880d681SAndroid Build Coastguard Worker    %xmm0 = MOVQI2PQIrm %rsp, 1, _, -16, _
34*9880d681SAndroid Build Coastguard Worker    %xmm0 = PSHUFDri killed %xmm0, -44
35*9880d681SAndroid Build Coastguard Worker    RETQ %xmm0
36*9880d681SAndroid Build Coastguard Worker...
37