Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 1 | ; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=-neon < %s |
Tim Northover | 40e9efd | 2013-08-01 09:20:35 +0000 | [diff] [blame] | 2 | |
| 3 | ; The DAG combiner decided to use a vector load/store for this struct copy |
| 4 | ; previously. This probably shouldn't happen without NEON, but the most |
| 5 | ; important thing is that it compiles. |
| 6 | |
| 7 | define void @store_combine() nounwind { |
| 8 | %src = alloca { double, double }, align 8 |
| 9 | %dst = alloca { double, double }, align 8 |
| 10 | |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 11 | %src.realp = getelementptr inbounds { double, double }, { double, double }* %src, i32 0, i32 0 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame^] | 12 | %src.real = load double, double* %src.realp |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 13 | %src.imagp = getelementptr inbounds { double, double }, { double, double }* %src, i32 0, i32 1 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame^] | 14 | %src.imag = load double, double* %src.imagp |
Tim Northover | 40e9efd | 2013-08-01 09:20:35 +0000 | [diff] [blame] | 15 | |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 16 | %dst.realp = getelementptr inbounds { double, double }, { double, double }* %dst, i32 0, i32 0 |
| 17 | %dst.imagp = getelementptr inbounds { double, double }, { double, double }* %dst, i32 0, i32 1 |
Tim Northover | 40e9efd | 2013-08-01 09:20:35 +0000 | [diff] [blame] | 18 | store double %src.real, double* %dst.realp |
| 19 | store double %src.imag, double* %dst.imagp |
| 20 | ret void |
| 21 | } |