1 ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx < %s | FileCheck %s 2 3 define <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 8 entry: 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 13 define <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 18 entry: 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 23 define <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 28 entry: 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 33 define <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 38 entry: 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