[PATCH] [AVX-512] - Add FMA instruction with Rounding mode

Mehdi Amini mehdi.amini at apple.com
Thu Jan 15 02:59:38 PST 2015


> On Jan 15, 2015, at 12:40 AM, Ahmed Bougacha <ahmed.bougacha at gmail.com> wrote:
> 
> On Thu, Jan 15, 2015 at 8:42 AM, Elena Demikhovsky
> <elena.demikhovsky at intel.com> wrote:
>> Hi Adam,
>> 
>> We'd like to submit this code and proceed.
>> The goal is to let setting rounding mode in intrinsics. The operations that we talk about are FP arithmetic - like FADD, FMUL, FSUB, FDIV, FMA - 512 bit vector only.
>> And FP conversions. Nothing more, so there is no correlation with masks.
>> 
>> I see 2 options right now.
>> 
>> 1. define an additional X86 node type for each intrinsic
>> 2. Wrap the existing node with ROUNDMODE
>> 
>> In the patch we are giving solution number 2 and say that it is safe. If ROUNDMODE and FADD will be separated, the compilation will fail with "cannot select".
>> Do you still have any concerns?
> 
> FWIW I totally share Adam's concerns, but I'll admit I don't have a
> better alternative to creating all the specific nodes, and that
> doesn't seem perfect either.
> 
> How about - and this is totally handwavy - adding a single new node,
> having all of the operation, rounding mode, and mask as operands?  I
> don't know if there's precedent, but since you say we're late in the
> SelectionDAG, your only problem would then be to match these,
> correct?  That might involve some tweaks in tablegen to be able to
> specify an FP op as an operand, but that doesn't sound too hard.  In
> the SelectionDAG proper, the operation "operand" would simply be a
> ConstantSDNode, holding the ISD opcode.
> 
> Say something like:
>    (AVX512OpWithRounding fadd, op1, op2, <rounding mode, ...>)
> 
> I'm guessing you won't be able to reuse the existing "fadd"/... in
> tablegen, but adding a few new defs, with a 1-to-1 mapping with the
> ISD opcode, should do the trick.


Naive question: why not directly matching the intrinsics themselves without using an intermediate ISD?

I assumed it was the way to go when there is a 1-1 mapping between an intrinsic and a specific instruction?

Mehdi



> 
> Anyway, just my 2 cents.
> 
> -Ahmed
> 
>> Thank you for reviewing this.
>> 
>> 
>> REPOSITORY
>>  rL LLVM
>> 
>> http://reviews.llvm.org/D6835
>> 
>> EMAIL PREFERENCES
>>  http://reviews.llvm.org/settings/panel/emailpreferences/
>> 
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list