; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s declare <8 x i32> @llvm.x86.avx2.permd(<8 x i32>, <8 x i32>) declare <8 x float> @llvm.x86.avx2.permps(<8 x float>, <8 x i32>) define <32 x i8> @combine_pshufb_vpermd(<8 x i32> %a) { ; CHECK-LABEL: combine_pshufb_vpermd: ; CHECK: # BB#0: ; CHECK-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,16,17,18,18] ; CHECK-NEXT: retq %tmp0 = call <8 x i32> @llvm.x86.avx2.permd(<8 x i32> %a, <8 x i32> ) %tmp1 = bitcast <8 x i32> %tmp0 to <32 x i8> %tmp2 = shufflevector <32 x i8> %tmp1, <32 x i8> undef, <32 x i32> ret <32 x i8> %tmp2 } define <32 x i8> @combine_pshufb_vpermps(<8 x float> %a) { ; CHECK-LABEL: combine_pshufb_vpermps: ; CHECK: # BB#0: ; CHECK-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,16,17,18,18] ; CHECK-NEXT: retq %tmp0 = call <8 x float> @llvm.x86.avx2.permps(<8 x float> %a, <8 x i32> ) %tmp1 = bitcast <8 x float> %tmp0 to <32 x i8> %tmp2 = shufflevector <32 x i8> %tmp1, <32 x i8> undef, <32 x i32> ret <32 x i8> %tmp2 }