1; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx < %s | FileCheck %s 2 3define <4 x double> @test1(<4 x double> %A, <4 x double> %B) { 4; CHECK-LABEL: test1: 5; CHECK: # BB#0: 6; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 7; CHECK-NEXT: retq 8entry: 9 %0 = shufflevector <4 x double> %A, <4 x double> %B, <4 x i32> <i32 undef, i32 1, i32 undef, i32 5> 10 ret <4 x double> %0 11} 12 13define <4 x double> @test2(<4 x double> %A, <4 x double> %B) { 14; CHECK-LABEL: test2: 15; CHECK: # BB#0: 16; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 17; CHECK-NEXT: retq 18entry: 19 %0 = shufflevector <4 x double> %A, <4 x double> %B, <4 x i32> <i32 undef, i32 1, i32 undef, i32 1> 20 ret <4 x double> %0 21} 22 23define <4 x double> @test3(<4 x double> %A, <4 x double> %B) { 24; CHECK-LABEL: test3: 25; CHECK: # BB#0: 26; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 27; CHECK-NEXT: retq 28entry: 29 %0 = shufflevector <4 x double> %A, <4 x double> %B, <4 x i32> <i32 0, i32 1, i32 undef, i32 5> 30 ret <4 x double> %0 31} 32 33define <4 x double> @test4(<4 x double> %A, <4 x double> %B) { 34; CHECK-LABEL: test4: 35; CHECK: # BB#0: 36; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 37; CHECK-NEXT: retq 38entry: 39 %0 = shufflevector <4 x double> %A, <4 x double> %B, <4 x i32> <i32 0, i32 1, i32 undef, i32 1> 40 ret <4 x double> %0 41} 42