[PATCH] D25902: [AVX-512] Fix the operand order for all calls to __builtin_ia32_vfmaddss3_mask.
Craig Topper via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 24 12:20:19 PDT 2016
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
More information about the cfe-commits
mailing list