1 ;RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s
3 ;CHECK-LABEL: shift_16_i32
8 define <16 x i32> @shift_16_i32(<16 x i32> %a) {
9 %b = lshr <16 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
10 %c = shl <16 x i32> %b, <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>
11 %d = ashr <16 x i32> %c, <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>
15 ;CHECK-LABEL: shift_8_i64
20 define <8 x i64> @shift_8_i64(<8 x i64> %a) {
21 %b = lshr <8 x i64> %a, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>
22 %c = shl <8 x i64> %b, <i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12>
23 %d = ashr <8 x i64> %c, <i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12, i64 12>
27 ; CHECK-LABEL: variable_shl4
30 define <8 x i64> @variable_shl4(<8 x i64> %x, <8 x i64> %y) {
31 %k = shl <8 x i64> %x, %y
35 ; CHECK-LABEL: variable_shl5
38 define <16 x i32> @variable_shl5(<16 x i32> %x, <16 x i32> %y) {
39 %k = shl <16 x i32> %x, %y
43 ; CHECK-LABEL: variable_srl0
46 define <16 x i32> @variable_srl0(<16 x i32> %x, <16 x i32> %y) {
47 %k = lshr <16 x i32> %x, %y
51 ; CHECK-LABEL: variable_srl2
54 define <8 x i64> @variable_srl2(<8 x i64> %x, <8 x i64> %y) {
55 %k = lshr <8 x i64> %x, %y
59 ; CHECK-LABEL: variable_sra1
62 define <16 x i32> @variable_sra1(<16 x i32> %x, <16 x i32> %y) {
63 %k = ashr <16 x i32> %x, %y
67 ; CHECK-LABEL: variable_sra2
70 define <8 x i64> @variable_sra2(<8 x i64> %x, <8 x i64> %y) {
71 %k = ashr <8 x i64> %x, %y
75 ; CHECK-LABEL: variable_sra01_load
78 define <16 x i32> @variable_sra01_load(<16 x i32> %x, <16 x i32>* %y) {
79 %y1 = load <16 x i32>* %y
80 %k = ashr <16 x i32> %x, %y1
84 ; CHECK-LABEL: variable_shl1_load
87 define <16 x i32> @variable_shl1_load(<16 x i32> %x, <16 x i32>* %y) {
88 %y1 = load <16 x i32>* %y
89 %k = shl <16 x i32> %x, %y1
92 ; CHECK: variable_srl0_load
95 define <16 x i32> @variable_srl0_load(<16 x i32> %x, <16 x i32>* %y) {
96 %y1 = load <16 x i32>* %y
97 %k = lshr <16 x i32> %x, %y1
101 ; CHECK: variable_srl3_load
104 define <8 x i64> @variable_srl3_load(<8 x i64> %x, <8 x i64>* %y) {
105 %y1 = load <8 x i64>* %y
106 %k = lshr <8 x i64> %x, %y1