(set_attr "mode" "SF")])
(define_insn "*truncdfsf_mixed"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=m,x ,?f,?x,?*r")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=m,v ,?f,?v,?*r")
(float_truncate:SF
- (match_operand:DF 1 "nonimmediate_operand" "f ,xm,f ,f ,f")))
+ (match_operand:DF 1 "nonimmediate_operand" "f ,vm,f ,f ,f")))
(clobber (match_operand:SF 2 "memory_operand" "=X,X ,m ,m ,m"))]
"TARGET_MIX_SSE_I387"
{
(set_attr "mode" "SF")])
(define_insn "*truncdfsf_i387"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?x,?*r")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?v,?*r")
(float_truncate:SF
(match_operand:DF 1 "nonimmediate_operand" "f ,f ,f ,f")))
(clobber (match_operand:SF 2 "memory_operand" "=X,m ,m ,m"))]
})
(define_insn "*truncxfsf2_mixed"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?x,?*r")
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?v,?*r")
(float_truncate:SF
(match_operand:XF 1 "register_operand" "f ,f ,f ,f")))
(clobber (match_operand:SF 2 "memory_operand" "=X,m ,m ,m"))]
(set_attr "mode" "SF")])
(define_insn "*truncxfdf2_mixed"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f,?x,?*r")
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f,?v,?*r")
(float_truncate:DF
(match_operand:XF 1 "register_operand" "f ,f ,f ,f")))
(clobber (match_operand:DF 2 "memory_operand" "=X,m ,m ,m"))]
--- /dev/null
+/* { dg-do assemble { target { avx512f && { ! ia32 } } } } */
+/* { dg-options "-O2 -mavx512f -mfpmath=387,sse" } */
+
+void
+f1 (double *p)
+{
+ register float x __asm ("xmm16");
+ x = *p;
+ __asm volatile ("" : "+v" (x));
+}
+
+void
+f2 (void)
+{
+ double d;
+ register float x __asm ("xmm16");
+ __asm volatile ("" : "=t" (d));
+ x = d;
+ __asm volatile ("" : "+v" (x));
+}
+
+void
+f3 (long double *p)
+{
+ register float x __asm ("xmm16");
+ x = *p;
+ __asm volatile ("" : "+v" (x));
+}
+
+void
+f4 (void)
+{
+ long double d;
+ register float x __asm ("xmm16");
+ __asm volatile ("" : "=t" (d));
+ x = d;
+ __asm volatile ("" : "+v" (x));
+}