summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/builtins-x86.c
diff options
context:
space:
mode:
authorRussell Gallop <russell.gallop@gmail.com>2019-06-07 09:51:44 +0000
committerRussell Gallop <russell.gallop@gmail.com>2019-06-07 09:51:44 +0000
commit4bcba163b1b8dd62ba335bc6e338d98c80a001da (patch)
treeeec3d347f2bbb1ed3d6594834ad68ab50a8bf4a0 /clang/test/CodeGen/builtins-x86.c
parentf1f6e0fc2468e9c120b22b939507c527d08b8ee8 (diff)
downloadbcm5719-llvm-4bcba163b1b8dd62ba335bc6e338d98c80a001da.tar.gz
bcm5719-llvm-4bcba163b1b8dd62ba335bc6e338d98c80a001da.zip
[X86][test] Add test cases using immediates to builtins-x86.c
These builtins should work with immediate or variable shift operand for gcc compatibility. Differential Revision: https://reviews.llvm.org/D62850 llvm-svn: 362786
Diffstat (limited to 'clang/test/CodeGen/builtins-x86.c')
-rw-r--r--clang/test/CodeGen/builtins-x86.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/test/CodeGen/builtins-x86.c b/clang/test/CodeGen/builtins-x86.c
index 8236922e3d3..056563931d6 100644
--- a/clang/test/CodeGen/builtins-x86.c
+++ b/clang/test/CodeGen/builtins-x86.c
@@ -399,6 +399,17 @@ void f0() {
#ifndef OPENCL
(void) _mm_pause();
#endif
+
+ tmp_V4s = __builtin_ia32_psllwi(tmp_V4s, imm_i_0_8);
+ tmp_V2i = __builtin_ia32_pslldi(tmp_V2i, imm_i_0_8);
+ tmp_V1LLi = __builtin_ia32_psllqi(tmp_V1LLi, imm_i_0_8);
+ tmp_V4s = __builtin_ia32_psrawi(tmp_V4s, imm_i_0_8);
+ tmp_V2i = __builtin_ia32_psradi(tmp_V2i, imm_i_0_8);
+ tmp_V4s = __builtin_ia32_psrlwi(tmp_V4s, imm_i_0_8);
+ tmp_V2i = __builtin_ia32_psrldi(tmp_V2i, imm_i_0_8);
+ tmp_V1LLi = __builtin_ia32_psrlqi(tmp_V1LLi, imm_i_0_8);
+
+ // Using non-immediate argument supported for gcc compatibility
tmp_V4s = __builtin_ia32_psllwi(tmp_V4s, tmp_i);
tmp_V2i = __builtin_ia32_pslldi(tmp_V2i, tmp_i);
tmp_V1LLi = __builtin_ia32_psllqi(tmp_V1LLi, tmp_i);
@@ -407,6 +418,7 @@ void f0() {
tmp_V4s = __builtin_ia32_psrlwi(tmp_V4s, tmp_i);
tmp_V2i = __builtin_ia32_psrldi(tmp_V2i, tmp_i);
tmp_V1LLi = __builtin_ia32_psrlqi(tmp_V1LLi, tmp_i);
+
tmp_V1LLi = __builtin_ia32_pmuludq(tmp_V2i, tmp_V2i);
tmp_V2LLi = __builtin_ia32_pmuludq128(tmp_V4i, tmp_V4i);
tmp_V8s = __builtin_ia32_psraw128(tmp_V8s, tmp_V8s);
@@ -417,6 +429,17 @@ void f0() {
tmp_V8s = __builtin_ia32_psllw128(tmp_V8s, tmp_V8s);
tmp_V4i = __builtin_ia32_pslld128(tmp_V4i, tmp_V4i);
tmp_V2LLi = __builtin_ia32_psllq128(tmp_V2LLi, tmp_V2LLi);
+
+ tmp_V8s = __builtin_ia32_psllwi128(tmp_V8s, imm_i_0_8);
+ tmp_V4i = __builtin_ia32_pslldi128(tmp_V4i, imm_i_0_8);
+ tmp_V2LLi = __builtin_ia32_psllqi128(tmp_V2LLi, imm_i_0_8);
+ tmp_V8s = __builtin_ia32_psrlwi128(tmp_V8s, imm_i_0_8);
+ tmp_V4i = __builtin_ia32_psrldi128(tmp_V4i, imm_i_0_8);
+ tmp_V2LLi = __builtin_ia32_psrlqi128(tmp_V2LLi, imm_i_0_8);
+ tmp_V8s = __builtin_ia32_psrawi128(tmp_V8s, imm_i_0_8);
+ tmp_V4i = __builtin_ia32_psradi128(tmp_V4i, imm_i_0_8);
+
+ // Using non-immediate argument supported for gcc compatibility
tmp_V8s = __builtin_ia32_psllwi128(tmp_V8s, tmp_i);
tmp_V4i = __builtin_ia32_pslldi128(tmp_V4i, tmp_i);
tmp_V2LLi = __builtin_ia32_psllqi128(tmp_V2LLi, tmp_i);
@@ -425,6 +448,7 @@ void f0() {
tmp_V2LLi = __builtin_ia32_psrlqi128(tmp_V2LLi, tmp_i);
tmp_V8s = __builtin_ia32_psrawi128(tmp_V8s, tmp_i);
tmp_V4i = __builtin_ia32_psradi128(tmp_V4i, tmp_i);
+
tmp_V4i = __builtin_ia32_pmaddwd128(tmp_V8s, tmp_V8s);
(void) __builtin_ia32_monitor(tmp_vp, tmp_Ui, tmp_Ui);
(void) __builtin_ia32_mwait(tmp_Ui, tmp_Ui);
OpenPOWER on IntegriCloud