summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/builtins-ppc-p9vector.c
diff options
context:
space:
mode:
authorSean Fertile <sfertile@ca.ibm.com>2016-11-14 18:47:15 +0000
committerSean Fertile <sfertile@ca.ibm.com>2016-11-14 18:47:15 +0000
commita9548937d621d992235dc0a103e06746e7feaccd (patch)
tree57bec43fff1813720325e17e44da7fd0c5d239b1 /clang/test/CodeGen/builtins-ppc-p9vector.c
parenta435e07de85dfe6ef675aa584c6b074ea6cd98d7 (diff)
downloadbcm5719-llvm-a9548937d621d992235dc0a103e06746e7feaccd.tar.gz
bcm5719-llvm-a9548937d621d992235dc0a103e06746e7feaccd.zip
[PPC] altivec.h functions for converting half precision to single precision.
Adds 2 vector functions for converting from a vector of unsigned short to a vector of float. One converts the low 4 halfwords and one converts the high 4 halfwords. Differential Revision: https://reviews.llvm.org/D26534 llvm-svn: 286863
Diffstat (limited to 'clang/test/CodeGen/builtins-ppc-p9vector.c')
-rw-r--r--clang/test/CodeGen/builtins-ppc-p9vector.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/CodeGen/builtins-ppc-p9vector.c b/clang/test/CodeGen/builtins-ppc-p9vector.c
index c14ad71ea5e..80c6a43e1f0 100644
--- a/clang/test/CodeGen/builtins-ppc-p9vector.c
+++ b/clang/test/CodeGen/builtins-ppc-p9vector.c
@@ -967,3 +967,21 @@ vector bool long long test87(void) {
// CHECK-NEXT: ret <2 x i64>
return vec_test_data_class(vda, __VEC_CLASS_FP_NOT_NORMAL);
}
+vector float test88(void) {
+// CHECK-BE: shufflevector <8 x i16> {{.+}}, <8 x i16> {{.+}}, <8 x i32> <i32 undef, i32 0, i32 undef, i32 1, i32 undef, i32 2, i32 undef, i32 3>
+// CHECK-BE: @llvm.ppc.vsx.xvcvhpsp(<8 x i16> {{.+}})
+// CHECK-BE-NEXT: ret <4 x float>
+// CHECK-LE: shufflevector <8 x i16> {{.+}}, <8 x i16> {{.+}}, <8 x i32> <i32 0, i32 undef, i32 1, i32 undef, i32 2, i32 undef, i32 3, i32 undef>
+// CHECK-LE: @llvm.ppc.vsx.xvcvhpsp(<8 x i16> {{.+}})
+// CHECK-LE-NEXT: ret <4 x float>
+ return vec_extract_fp32_from_shorth(vusa);
+}
+vector float test89(void) {
+// CHECK-BE: shufflevector <8 x i16> {{.+}}, <8 x i16> {{.+}}, <8 x i32> <i32 undef, i32 4, i32 undef, i32 5, i32 undef, i32 6, i32 undef, i32 7>
+// CHECK-BE: @llvm.ppc.vsx.xvcvhpsp(<8 x i16> {{.+}})
+// CHECK-BE-NEXT: ret <4 x float>
+// CHECK-LE: shufflevector <8 x i16> {{.+}}, <8 x i16> {{.+}}, <8 x i32> <i32 4, i32 undef, i32 5, i32 undef, i32 6, i32 undef, i32 7, i32 undef>
+// CHECK-LE: @llvm.ppc.vsx.xvcvhpsp(<8 x i16> {{.+}})
+// CHECK-LE-NEXT: ret <4 x float>
+ return vec_extract_fp32_from_shortl(vusa);
+}
OpenPOWER on IntegriCloud