xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/legalize-shl-vec.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <2 x i256> @test_shl(<2 x i256> %In) {
4*9880d681SAndroid Build Coastguard Worker  %Amt = insertelement <2 x i256> undef, i256 -1, i32 0
5*9880d681SAndroid Build Coastguard Worker  %Out = shl <2 x i256> %In, %Amt
6*9880d681SAndroid Build Coastguard Worker  ret <2 x i256> %Out
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: test_shl
9*9880d681SAndroid Build Coastguard Worker  ; CHECK:       movq $0
10*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
11*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
12*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
13*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
14*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
15*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
16*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
17*9880d681SAndroid Build Coastguard Worker  ; CHECK:       retq
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdefine <2 x i256> @test_srl(<2 x i256> %In) {
21*9880d681SAndroid Build Coastguard Worker  %Amt = insertelement <2 x i256> undef, i256 -1, i32 0
22*9880d681SAndroid Build Coastguard Worker  %Out = lshr <2 x i256> %In, %Amt
23*9880d681SAndroid Build Coastguard Worker  ret <2 x i256> %Out
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: test_srl
26*9880d681SAndroid Build Coastguard Worker  ; CHECK:       movq $0
27*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
28*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
29*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
30*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
31*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
32*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
33*9880d681SAndroid Build Coastguard Worker  ; CHECK-NEXT:  movq $0
34*9880d681SAndroid Build Coastguard Worker  ; CHECK:       retq
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine <2 x i256> @test_sra(<2 x i256> %In) {
38*9880d681SAndroid Build Coastguard Worker  %Amt = insertelement <2 x i256> undef, i256 -1, i32 0
39*9880d681SAndroid Build Coastguard Worker  %Out = ashr <2 x i256> %In, %Amt
40*9880d681SAndroid Build Coastguard Worker  ret <2 x i256> %Out
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: test_sra
43*9880d681SAndroid Build Coastguard Worker  ; CHECK:       sarq $63
44*9880d681SAndroid Build Coastguard Worker}
45