+2020-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93069
+ * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Use
+ <store_mask_constraint> instead of m in output operand constraint.
+ (vec_extract_hi_<mode><mask_name>): Use <mask_operand2> instead of
+ %{%3%}.
+
2020-03-30 Alan Modra <amodra@gmail.com>
* config/rs6000/rs6000.c (rs6000_call_aix): Emit cookie to pattern.
})
(define_insn "vec_extract_lo_<mode><mask_name>"
- [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=v,v,m")
+ [(set (match_operand:<ssehalfvecmode> 0 "<store_mask_predicate>"
+ "=v,v,<store_mask_constraint>")
(vec_select:<ssehalfvecmode>
(match_operand:V16FI 1 "<store_mask_predicate>"
"v,<store_mask_constraint>,v")
})
(define_insn "vec_extract_lo_<mode><mask_name>"
- [(set (match_operand:<ssehalfvecmode> 0 "<store_mask_predicate>" "=v,v,m")
+ [(set (match_operand:<ssehalfvecmode> 0 "<store_mask_predicate>"
+ "=v,v,<store_mask_constraint>")
(vec_select:<ssehalfvecmode>
(match_operand:VI8F_256 1 "<store_mask_predicate>"
"v,<store_mask_constraint>,v")
&& (<mask_applied> || !(MEM_P (operands[0]) && MEM_P (operands[1])))"
{
if (<mask_applied>)
- return "vextract<shuffletype>64x2\t{$0x0, %1, %0%{%3%}|%0%{%3%}, %1, 0x0}";
+ return "vextract<shuffletype>64x2\t{$0x0, %1, %0<mask_operand2>|%0<mask_operand2>, %1, 0x0}";
else
return "#";
}
+2020-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93069
+ * gcc.target/i386/avx512vl-pr93069.c: New test.
+ * gcc.dg/vect/pr93069.c: New test.
+
2020-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
* lib/gdc-utils.exp: (gdc-convert-args): Handle compilation test
--- /dev/null
+/* PR target/93069 */
+/* { dg-do assemble { target vect_simd_clones } } */
+/* { dg-options "-O2 -fopenmp-simd -mtune=skylake-avx512" } */
+/* { dg-additional-options "-mavx512vl" { target avx512vl } } */
+/* { dg-additional-options "-mavx512dq" { target avx512dq } } */
+
+#pragma omp declare simd
+int
+foo (int x, int y)
+{
+ return x == 0 ? x : y;
+}