Ehsan Amiri | a538b0f | 2016-08-03 18:17:35 +0000 | [diff] [blame] | 1 | ; RUN: llc -verify-machineinstrs < %s -mcpu=a2q | FileCheck %s |
Hal Finkel | c93a9a2 | 2015-02-25 01:06:45 +0000 | [diff] [blame] | 2 | target 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" |
| 3 | target triple = "powerpc64-bgq-linux" |
| 4 | |
| 5 | define <4 x double> @foo(<4 x double>* %a) { |
| 6 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 7 | %r = load <4 x double>, <4 x double>* %a, align 32 |
Hal Finkel | c93a9a2 | 2015-02-25 01:06:45 +0000 | [diff] [blame] | 8 | ret <4 x double> %r |
| 9 | ; CHECK: qvlfdx |
| 10 | ; CHECK: blr |
| 11 | } |
| 12 | |
| 13 | define <4 x double> @bar(<4 x double>* %a) { |
| 14 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 15 | %r = load <4 x double>, <4 x double>* %a, align 8 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 16 | %b = getelementptr <4 x double>, <4 x double>* %a, i32 16 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 17 | %s = load <4 x double>, <4 x double>* %b, align 32 |
Hal Finkel | c93a9a2 | 2015-02-25 01:06:45 +0000 | [diff] [blame] | 18 | %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 | |
| 26 | define <4 x double> @bar1(<4 x double>* %a) { |
| 27 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 28 | %r = load <4 x double>, <4 x double>* %a, align 8 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 29 | %b = getelementptr <4 x double>, <4 x double>* %a, i32 16 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 30 | %s = load <4 x double>, <4 x double>* %b, align 8 |
Hal Finkel | c93a9a2 | 2015-02-25 01:06:45 +0000 | [diff] [blame] | 31 | %t = fadd <4 x double> %r, %s |
| 32 | ret <4 x double> %t |
| 33 | } |
| 34 | |
| 35 | define <4 x double> @bar2(<4 x double>* %a) { |
| 36 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 37 | %r = load <4 x double>, <4 x double>* %a, align 8 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 38 | %b = getelementptr <4 x double>, <4 x double>* %a, i32 1 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 39 | %s = load <4 x double>, <4 x double>* %b, align 32 |
Hal Finkel | c93a9a2 | 2015-02-25 01:06:45 +0000 | [diff] [blame] | 40 | %t = fadd <4 x double> %r, %s |
| 41 | ret <4 x double> %t |
| 42 | } |
| 43 | |
| 44 | define <4 x double> @bar3(<4 x double>* %a) { |
| 45 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 46 | %r = load <4 x double>, <4 x double>* %a, align 8 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 47 | %b = getelementptr <4 x double>, <4 x double>* %a, i32 1 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 48 | %s = load <4 x double>, <4 x double>* %b, align 8 |
Hal Finkel | c93a9a2 | 2015-02-25 01:06:45 +0000 | [diff] [blame] | 49 | %t = fadd <4 x double> %r, %s |
| 50 | ret <4 x double> %t |
| 51 | } |
| 52 | |
| 53 | define <4 x double> @bar4(<4 x double>* %a) { |
| 54 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 55 | %r = load <4 x double>, <4 x double>* %a, align 8 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 56 | %b = getelementptr <4 x double>, <4 x double>* %a, i32 1 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 57 | %s = load <4 x double>, <4 x double>* %b, align 8 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 58 | %c = getelementptr <4 x double>, <4 x double>* %b, i32 1 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 59 | %t = load <4 x double>, <4 x double>* %c, align 8 |
Hal Finkel | c93a9a2 | 2015-02-25 01:06:45 +0000 | [diff] [blame] | 60 | %u = fadd <4 x double> %r, %s |
| 61 | %v = fadd <4 x double> %u, %t |
| 62 | ret <4 x double> %v |
| 63 | } |
| 64 | |