1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X32 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X64 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Verify that we don't fail when shift by zero is encountered. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine i64 @test1(<2 x i64> %a) { 8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test1: 9*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: # %entry 10*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movdqa %xmm0, %xmm1 11*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psllq $2, %xmm1 12*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1] 13*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %xmm1, %eax 14*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3] 15*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %xmm0, %edx 16*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 17*9880d681SAndroid Build Coastguard Worker; 18*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test1: 19*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: # %entry 20*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movdqa %xmm0, %xmm1 21*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psllq $2, %xmm1 22*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1] 23*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %xmm1, %rax 24*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 25*9880d681SAndroid Build Coastguard Workerentry: 26*9880d681SAndroid Build Coastguard Worker %c = shl <2 x i64> %a, <i64 0, i64 2> 27*9880d681SAndroid Build Coastguard Worker %d = extractelement <2 x i64> %c, i32 0 28*9880d681SAndroid Build Coastguard Worker ret i64 %d 29*9880d681SAndroid Build Coastguard Worker} 30