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