diff options
| author | Hao Liu <Hao.Liu@arm.com> | 2013-12-03 05:58:49 +0000 |
|---|---|---|
| committer | Hao Liu <Hao.Liu@arm.com> | 2013-12-03 05:58:49 +0000 |
| commit | 38658a8186b2f06e4c998ce504e2e922b0c0b0d7 (patch) | |
| tree | 6e69be7a93b865ac63816c40d03f12b2acca870f /clang/test | |
| parent | c250cbc0952fa4d01c2a54a956c37570601994d1 (diff) | |
| download | bcm5719-llvm-38658a8186b2f06e4c998ce504e2e922b0c0b0d7.tar.gz bcm5719-llvm-38658a8186b2f06e4c998ce504e2e922b0c0b0d7.zip | |
AArch64: add missing ACLE intrinsics mapping to general arithmetic operation from VFP instructions.
E.g. float64x1_t vadd_f64(float64x1_t a, float64x1_t b) -> FADD Dd, Dn, Dm.
llvm-svn: 196209
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CodeGen/aarch64-neon-intrinsics.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/clang/test/CodeGen/aarch64-neon-intrinsics.c b/clang/test/CodeGen/aarch64-neon-intrinsics.c index 5081e2cb36d..d23800a8f36 100644 --- a/clang/test/CodeGen/aarch64-neon-intrinsics.c +++ b/clang/test/CodeGen/aarch64-neon-intrinsics.c @@ -11351,3 +11351,93 @@ uint64_t test_vaddvq_u64(uint64x2_t a) { return vaddvq_u64(a); // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d } + +float64x1_t test_vadd_f64(float64x1_t a, float64x1_t b) { + // CHECK-LABEL: test_vadd_f64 + return vadd_f64(a, b); + // CHECK: fadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vmul_f64(float64x1_t a, float64x1_t b) { + // CHECK-LABEL: test_vmul_f64 + return vmul_f64(a, b); + // CHECK: fmul d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vdiv_f64(float64x1_t a, float64x1_t b) { + // CHECK-LABEL: test_vdiv_f64 + return vdiv_f64(a, b); + // CHECK: fdiv d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vmla_f64(float64x1_t a, float64x1_t b, float64x1_t c) { + // CHECK-LABEL: test_vmla_f64 + return vmla_f64(a, b, c); + // CHECK: fmadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vmls_f64(float64x1_t a, float64x1_t b, float64x1_t c) { + // CHECK-LABEL: test_vmls_f64 + return vmls_f64(a, b, c); + // CHECK: fmsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vfma_f64(float64x1_t a, float64x1_t b, float64x1_t c) { + // CHECK-LABEL: test_vfma_f64 + return vfma_f64(a, b, c); + // CHECK: fmadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vfms_f64(float64x1_t a, float64x1_t b, float64x1_t c) { + // CHECK-LABEL: test_vfms_f64 + return vfms_f64(a, b, c); + // CHECK: fmsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vsub_f64(float64x1_t a, float64x1_t b) { + // CHECK-LABEL: test_vsub_f64 + return vsub_f64(a, b); + // CHECK: fsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vabd_f64(float64x1_t a, float64x1_t b) { + // CHECK-LABEL: test_vabd_f64 + return vabd_f64(a, b); + // CHECK: fabd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vmax_f64(float64x1_t a, float64x1_t b) { +// CHECK-LABEL: test_vmax_f64 + return vmax_f64(a, b); +// CHECK: fmax d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vmin_f64(float64x1_t a, float64x1_t b) { +// CHECK-LABEL: test_vmin_f64 + return vmin_f64(a, b); +// CHECK: fmin d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vmaxnm_f64(float64x1_t a, float64x1_t b) { +// CHECK-LABEL: test_vmaxnm_f64 + return vmaxnm_f64(a, b); +// CHECK: fmaxnm d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vminnm_f64(float64x1_t a, float64x1_t b) { +// CHECK-LABEL: test_vminnm_f64 + return vminnm_f64(a, b); +// CHECK: fminnm d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vabs_f64(float64x1_t a) { + // CHECK-LABEL: test_vabs_f64 + return vabs_f64(a); + // CHECK: fabs d{{[0-9]+}}, d{{[0-9]+}} +} + +float64x1_t test_vneg_f64(float64x1_t a) { + // CHECK-LABEL: test_vneg_f64 + return vneg_f64(a); + // CHECK: fneg d{{[0-9]+}}, d{{[0-9]+}} +} |

