xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/vec_shift7.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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