diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2016-12-15 12:06:27 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2016-12-15 12:06:27 +0000 |
commit | 70f090d568bcc124335d7e4f407e3ab464730b00 (patch) | |
tree | b333eb18b3625dc2228e3f06a8eace24b63bda4d | |
parent | 15db81ef7162343a3bfe93676355ada57761db6a (diff) | |
download | bcm5719-llvm-70f090d568bcc124335d7e4f407e3ab464730b00.tar.gz bcm5719-llvm-70f090d568bcc124335d7e4f407e3ab464730b00.zip |
[TESTS] Initial commit of tests, by Andrew Tischenko
llvm-svn: 289809
-rw-r--r-- | clang/test/CodeGen/vector-sqrt.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/CodeGen/vector-sqrt.c b/clang/test/CodeGen/vector-sqrt.c new file mode 100644 index 00000000000..cd395a1881c --- /dev/null +++ b/clang/test/CodeGen/vector-sqrt.c @@ -0,0 +1,27 @@ +// RUN: %clang %s -march=haswell -O3 -S -o - | FileCheck %s + +#include <x86intrin.h> + +// CHECK-LABEL: sqrtd2 +// CHECK: vsqrtsd (%rdi), %xmm0, %xmm0 +// CHECK-NEXT: vsqrtsd 8(%rdi), %xmm1, %xmm1 +// CHECK-NEXT: vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0] +// CHECK-NEXT: retq + +__m128d sqrtd2(double* v) { + return _mm_setr_pd(__builtin_sqrt(v[0]), __builtin_sqrt(v[1])); +} + +// CHECK-LABEL: sqrtf4 +// CHECK: vsqrtss (%rdi), %xmm0, %xmm0 +// CHECK-NEXT: vsqrtss 4(%rdi), %xmm1, %xmm1 +// CHECK-NEXT: vsqrtss 8(%rdi), %xmm2, %xmm2 +// CHECK-NEXT: vsqrtss 12(%rdi), %xmm3, %xmm3 +// CHECK-NEXT: vinsertps $16, %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0],xmm0[2,3] +// CHECK-NEXT: vinsertps $32, %xmm2, %xmm0, %xmm0 # xmm0 = xmm0[0,1],xmm2[0],xmm0[3] +// CHECK-NEXT: vinsertps $48, %xmm3, %xmm0, %xmm0 # xmm0 = xmm0[0,1,2],xmm3[0] +// CHECK-NEXT: retq + +__m128 sqrtf4(float* v) { + return _mm_setr_ps(__builtin_sqrtf(v[0]), __builtin_sqrtf(v[1]), __builtin_sqrtf(v[2]), __builtin_sqrtf(v[3])); +} |