From 94b0f0278e49809e341c9d57b605d54e45b1de9c Mon Sep 17 00:00:00 2001 From: Jiangning Liu Date: Mon, 30 Dec 2013 02:45:09 +0000 Subject: [PATCH] For AArch64 Neon, simplify scalar dup by lane0 for fp. llvm-svn: 198195 --- clang/test/CodeGen/aarch64-neon-copy.c | 48 ++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/clang/test/CodeGen/aarch64-neon-copy.c b/clang/test/CodeGen/aarch64-neon-copy.c index eb91bf9b5a5c..ebdf4ce85fe4 100644 --- a/clang/test/CodeGen/aarch64-neon-copy.c +++ b/clang/test/CodeGen/aarch64-neon-copy.c @@ -1317,3 +1317,51 @@ float16x8_t test_vsetq_lane_f16_4(float16x8_t v1, float b, float c) { // CHECK: ins {{v[0-9]+}}.h[7], {{w[0-9]+}} } +// CHECK-LABEL: test_vdup_laneq_p64: +poly64x1_t test_vdup_laneq_p64(poly64x2_t vec) { + return vdup_laneq_p64(vec, 0); +// CHECK-NEXT: ret +} + +// CHECK-LABEL: test_vdup_laneq_p64_1 +poly64x1_t test_vdup_laneq_p64_1(poly64x2_t vec) { + return vdup_laneq_p64(vec, 1); +// CHECK: dup {{d[0-9]+}}, {{v[0-9]+}}.d[1] +} + +// CHECK-LABEL: test_vget_lane_f32 +float32_t test_vget_lane_f32_1(float32x2_t v) { + return vget_lane_f32(v, 1); +// CHECK: dup {{s[0-9]+}}, {{v[0-9]+}}.s[1] +} + +// CHECK-LABEL: test_vget_lane_f64: +float64_t test_vget_lane_f64(float64x1_t v) { + return vget_lane_f64(v, 0); +// CHECK-NEXT: ret +} + +// CHECK-LABEL: test_vgetq_lane_f64_1 +float64_t test_vgetq_lane_f64_1(float64x2_t v) { + return vgetq_lane_f64(v, 1); +// CHECK: dup {{d[0-9]+}}, {{v[0-9]+}}.d[1] +} + +// CHECK-LABEL: test_vget_lane_f32: +float32_t test_vget_lane_f32(float32x2_t v) { + return vget_lane_f32(v, 0); +// CHECK-NEXT: ret +} + +// CHECK-LABEL: test_vgetq_lane_f32: +float32_t test_vgetq_lane_f32(float32x4_t v) { + return vgetq_lane_f32(v, 0); +// CHECK-NEXT: ret +} + +// CHECK-LABEL: test_vgetq_lane_f64: +float64_t test_vgetq_lane_f64(float64x2_t v) { + return vgetq_lane_f64(v, 0); +// CHECK-NEXT: ret +} +