blob: fdee919fdfc3208770895cc49cf15ccdeb6c4a28 [file] [log] [blame]
Ehsan Amiria538b0f2016-08-03 18:17:35 +00001; RUN: llc -verify-machineinstrs < %s -mcpu=a2q | FileCheck %s
Hal Finkelc93a9a22015-02-25 01:06:45 +00002target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
3target triple = "powerpc64-bgq-linux"
4
5define <4 x double> @foo(<4 x double>* %a) {
6entry:
David Blaikiea79ac142015-02-27 21:17:42 +00007 %r = load <4 x double>, <4 x double>* %a, align 32
Hal Finkelc93a9a22015-02-25 01:06:45 +00008 ret <4 x double> %r
9; CHECK: qvlfdx
10; CHECK: blr
11}
12
13define <4 x double> @bar(<4 x double>* %a) {
14entry:
David Blaikiea79ac142015-02-27 21:17:42 +000015 %r = load <4 x double>, <4 x double>* %a, align 8
David Blaikie79e6c742015-02-27 19:29:02 +000016 %b = getelementptr <4 x double>, <4 x double>* %a, i32 16
David Blaikiea79ac142015-02-27 21:17:42 +000017 %s = load <4 x double>, <4 x double>* %b, align 32
Hal Finkelc93a9a22015-02-25 01:06:45 +000018 %t = fadd <4 x double> %r, %s
19 ret <4 x double> %t
20; CHECK: qvlpcldx
21; CHECK: qvlfdx
22; CHECK: qvfperm
23; CHECK: blr
24}
25
26define <4 x double> @bar1(<4 x double>* %a) {
27entry:
David Blaikiea79ac142015-02-27 21:17:42 +000028 %r = load <4 x double>, <4 x double>* %a, align 8
David Blaikie79e6c742015-02-27 19:29:02 +000029 %b = getelementptr <4 x double>, <4 x double>* %a, i32 16
David Blaikiea79ac142015-02-27 21:17:42 +000030 %s = load <4 x double>, <4 x double>* %b, align 8
Hal Finkelc93a9a22015-02-25 01:06:45 +000031 %t = fadd <4 x double> %r, %s
32 ret <4 x double> %t
33}
34
35define <4 x double> @bar2(<4 x double>* %a) {
36entry:
David Blaikiea79ac142015-02-27 21:17:42 +000037 %r = load <4 x double>, <4 x double>* %a, align 8
David Blaikie79e6c742015-02-27 19:29:02 +000038 %b = getelementptr <4 x double>, <4 x double>* %a, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000039 %s = load <4 x double>, <4 x double>* %b, align 32
Hal Finkelc93a9a22015-02-25 01:06:45 +000040 %t = fadd <4 x double> %r, %s
41 ret <4 x double> %t
42}
43
44define <4 x double> @bar3(<4 x double>* %a) {
45entry:
David Blaikiea79ac142015-02-27 21:17:42 +000046 %r = load <4 x double>, <4 x double>* %a, align 8
David Blaikie79e6c742015-02-27 19:29:02 +000047 %b = getelementptr <4 x double>, <4 x double>* %a, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000048 %s = load <4 x double>, <4 x double>* %b, align 8
Hal Finkelc93a9a22015-02-25 01:06:45 +000049 %t = fadd <4 x double> %r, %s
50 ret <4 x double> %t
51}
52
53define <4 x double> @bar4(<4 x double>* %a) {
54entry:
David Blaikiea79ac142015-02-27 21:17:42 +000055 %r = load <4 x double>, <4 x double>* %a, align 8
David Blaikie79e6c742015-02-27 19:29:02 +000056 %b = getelementptr <4 x double>, <4 x double>* %a, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000057 %s = load <4 x double>, <4 x double>* %b, align 8
David Blaikie79e6c742015-02-27 19:29:02 +000058 %c = getelementptr <4 x double>, <4 x double>* %b, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000059 %t = load <4 x double>, <4 x double>* %c, align 8
Hal Finkelc93a9a22015-02-25 01:06:45 +000060 %u = fadd <4 x double> %r, %s
61 %v = fadd <4 x double> %u, %t
62 ret <4 x double> %v
63}
64