summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr32280-1.c
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2009-12-17 13:33:09 +0100
committerUros Bizjak <uros@gcc.gnu.org>2009-12-17 13:33:09 +0100
commitfe6ae2da798820b1657c5478b34e0c15438a7845 (patch)
treee7adc9173488e492a41747dde3e5056c1d93d20f /gcc/testsuite/gcc.target/i386/pr32280-1.c
parentbcff5c1ed17e1533c60b0916ffa10be2f414febf (diff)
downloadgcc-fe6ae2da798820b1657c5478b34e0c15438a7845.tar.gz
re PR target/32280 (_mm_srli_si128, heinous code for some shifts)
PR target/32280 * config/i386/i386-modes.def (V1TI): New vector mode. * config/i386/i386.h (VALID_SSE_REG_MODE): Add V1TImode. (SSE_REG_MODE_P): Ditto. * config/i386/sse.md (SSEMODE16): New mode iterator. (AVXMODE16): Ditto. (avxvecmode): Handle V1TI mode. (*avx_mov<mode>_internal): Use AVXMODE16 instead of AVXMODE. (mov<mode>): Use SSEMODE16 instead of SSEMODE. (*mov<mode>_internal): Ditto. (push<mode>1): Ditto. (movmisalign<mode>): Ditto. (sse2_ashlv1ti): Rename from sse2_ashlti. (sse2_lshrv1ti): Rename from sse2_lshrti. (*avx_ashlv1ti): Rename from *avx_ashlti and move from i386.md. (*avx_lshrv1ti): Rename from *avx_lshrti and move from i386.md. (vec_shl_<mode>): Convert operands to V1TImode and use V1TI shift. (vec_shr_<mode>): Ditto. (*sse2_mulv4si3): Update for renamed sse2_ashlv1ti3. (udot_prodv4si): Ditto. * config/i386/i386.c (classify_argument): Handle V1TImode. (function_arg_advance_32): Ditto. (function_arg_32): Ditto. (ix86_expand_sse4_unpack): Convert operands to V1TImode and update for renamed gen_sse2_lshrv1ti3. (ix86_expand_args_builtin) <V2DI_FTYPE_V2DI_INT_CONVERT>: Set rmode to V1TImode. (struct builtin_description) <__builtin_ia32_pslldqi128>: Update for renamed sse2_ashlv1ti3. <__builtin_ia32_psrldqi128>: Update for renamed sse2_lshrv1ti3. Revert: 2007-06-11 Uros Bizjak <ubizjak@gmail.com> PR target/32280 * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ... * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here. testsuite/ChangeLog: PR target/32280 * gcc.target/i386/pr32280-1.c: New test. From-SVN: r155312
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/pr32280-1.c')
-rw-r--r--gcc/testsuite/gcc.target/i386/pr32280-1.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr32280-1.c b/gcc/testsuite/gcc.target/i386/pr32280-1.c
new file mode 100644
index 00000000000..1dbe2ccbb4f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr32280-1.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O2" } */
+
+__uint128_t
+t1 (__uint128_t a)
+{
+ return a << 8;
+}
+
+__uint128_t
+t2 (__uint128_t a)
+{
+ return a >> 8;
+}
+
+/* { dg-final { scan-assembler-not "pslldq" } } */
+/* { dg-final { scan-assembler-not "psrldq" } } */