[llvm-commits] Initial patch for FMA4 support

Jan Sjodin jan_sjodin at yahoo.com
Wed Nov 23 13:24:46 PST 2011

Thanks Bruno for the quick review.

>There's no specific reason in this case to have the "Int" forms:

>+multiclass fma4s_Int<bits<8> opc, string OpcodeStr, Intrinsic Int,
>+        PatFrag ld_frag> {
>+defm Int_VFMADDSD4  : fma4s_Int<0x6B, "vfmaddsd",
>int_x86_fma4_vfmadd_sd, alignedloadv2f64>;
>Instead, just write patterns to match the intrinsics with the
>previously defined FMA4 instructions.

Okay, will do.

>       if (HasVEX_4V)
>         ++FirstMemOp;// Skip the register source (which is encoded in
>+      if (HasXOP_W)
>+        ++FirstMemOp;// Skip the register source (which is encoded in I8IMM).
>Use " if (HasVEX_4V || HasXOP_W)" and update the comment properly.

It actually increments twice if both VEX_4V and HasXOP_W are true, not by one.

I could update the comment to make it more clear e.g.: 

// Skip second register source (which is encoded in I8IMM)

If you want it written a different way let me know.

>+#include "llvm/Support/Debug.h"
>Are you sure you need this?

No, forgot to remove, will fix.

>+    } else {
>+      CurOp += AddrOperands + 1;
>+      if (HasVEX_4VOp3)
>+    ++CurOp;
>+    }
>"++CurOp" lacks proper indentation!

Will fix. 

- Jan

More information about the llvm-commits mailing list