1; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 --vec-extabi < %s | FileCheck --check-prefixes=CHECK,OLD %s
2; RUN: llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 --vec-extabi < %s | FileCheck --check-prefixes=CHECK,OLD %s
3
4; RUN: llc -mtriple powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck --check-prefixes=CHECK,MODERN  %s
5; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 -mattr=+modern-aix-as --vec-extabi < %s | FileCheck --check-prefixes=CHECK,MODERN %s
6; RUN: llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 -mattr=+modern-aix-as --vec-extabi < %s | FileCheck --check-prefixes=CHECK,MODERN %s
7
8define <2 x double> @splat1(<2 x double> %A, <2 x double> %B) {
9entry:
10  %0 = shufflevector <2 x double> %B, <2 x double> undef, <2 x i32> <i32 0, i32 0>
11  ret <2 x double> %0
12}
13
14; CHECK-LABEL: splat1
15; OLD:    xxmrghd 34, 35, 35
16; MODERN: xxspltd 34, 35, 0
17
18define <2 x double> @splat2(<2 x double> %A, <2 x double> %B) {
19entry:
20  %0 = shufflevector <2 x double> %B, <2 x double> undef, <2 x i32> <i32 1, i32 1>
21  ret <2 x double> %0
22}
23
24; CHECK-LABEL: splat2
25; OLD:    xxmrgld 34, 35, 35
26; MODERN: xxspltd 34, 35, 1
27
28define <2 x double> @swap(<2 x double> %A, <2 x double> %B) {
29entry:
30  %0 = shufflevector <2 x double> %B, <2 x double> undef, <2 x i32> <i32 1, i32 0>
31  ret <2 x double> %0
32}
33
34; CHECK-LABEL: swap
35; CHECK: xxswapd 34, 35
36
37define <2 x double> @mergehi(<2 x double> %A, <2 x double> %B) {
38entry:
39  %0 = shufflevector <2 x double> %A, <2 x double> %B, <2 x i32> <i32 0, i32 2>
40  ret <2 x double> %0
41}
42
43; CHECK-LABEL: mergehi
44; CHECK: xxmrghd 34, 34, 35
45
46define <2 x double> @mergelo(<2 x double> %A, <2 x double> %B) {
47entry:
48  %0 = shufflevector <2 x double> %A, <2 x double> %B, <2 x i32> <i32 1, i32 3>
49  ret <2 x double> %0
50}
51
52; CHECK-LABEL: mergelo
53; CHECK: xxmrgld 34, 34, 35
54