craig.topper added inline comments.

================
Comment at: lib/Headers/avx512fintrin.h:8394
           _MM_FROUND_CUR_DIRECTION);
 }
 
----------------
delena wrote:
> Using vfmaddss3_mask is wrong in this case.
> It will propagate -B to lower bits if mask==0.
I dont' understand this. The passthru should be from the first argument. This 
call should do

if (mask)
   result = _W * _A - _B
else
   result = _W;


================
Comment at: lib/Headers/avx512fintrin.h:8453
 {
  return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
           (__v4sf) __B,
----------------
delena wrote:
> This one is, probably, also wrong, because we should copy the upper bits of 
> __A as is.
> 
> IF k[0]
>       dst[31:0] := -(a[31:0] * b[31:0]) + c[31:0]
> ELSE
>       dst[31:0] := c[31:0]
> FI
> dst[127:32] := a[127:32]
> dst[MAX:128] := 0
Agree this is also wrong. I was going to try to fix one intrinsic at a time. We 
have some problems with __builtin_ia32_vfmaddss3_mask3 usages as well.


https://reviews.llvm.org/D25902



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to