[llvm] r320470 - Revert r320461 - causing ICE in windows buildss

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 12 03:34:25 PST 2017


Author: rksimon
Date: Tue Dec 12 03:34:25 2017
New Revision: 320470

URL: http://llvm.org/viewvc/llvm-project?rev=320470&view=rev
Log:
Revert r320461 - causing ICE in windows buildss

[X86] Use regular expressions more aggressively to reduce the number of scheduler entries needed for FMA3 instructions.

When the scheduler tables are generated by tablegen, the instructions are divided up into groups based on their default scheduling information and how they are referenced by groups for each processor. For any set of instructions that are matched by a specific InstRW line, that group of instructions is guaranteed to not be in a group with any other instructions. So in general, the more InstRW class definitions are created, the more groups we end up with in the generated files. Particularly if a lot of the InstRW lines only match to single instructions, which is true of a large number of the Intel scheduler models.

This change alone reduces the number of instructions groups from ~6000 to ~5500. And there's lots more we could do.

Modified:
    llvm/trunk/lib/Target/X86/X86SchedBroadwell.td
    llvm/trunk/lib/Target/X86/X86SchedHaswell.td
    llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td
    llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td

Modified: llvm/trunk/lib/Target/X86/X86SchedBroadwell.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedBroadwell.td?rev=320470&r1=320469&r2=320470&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedBroadwell.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedBroadwell.td Tue Dec 12 03:34:25 2017
@@ -1732,9 +1732,102 @@ def BWWriteResGroup48 : SchedWriteRes<[B
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup48],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)(Y)?r",
-                       "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)r")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD132PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD132PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD132PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD132PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD132SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD132SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD213PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD213PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD213PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD213PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD213SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD213SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD231PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD231PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD231PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD231PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD231SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADD231SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB132PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB132PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB132PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB132PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB213PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB213PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB213PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB213PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB231PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB231PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB231PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMADDSUB231PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB132PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB132PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB132PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB132PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB132SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB132SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB213PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB213PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB213PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB213PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB213SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB213SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB231PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB231PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB231PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB231PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB231SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUB231SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD132PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD132PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD132PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD132PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD213PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD213PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD213PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD213PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD231PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD231PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD231PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFMSUBADD231PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD132PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD132PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD132PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD132PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD132SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD132SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD213PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD213PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD213PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD213PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD213SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD213SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD231PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD231PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD231PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD231PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD231SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMADD231SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB132PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB132PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB132PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB132PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB132SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB132SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB213PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB213PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB213PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB213PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB213SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB213SSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB231PDYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB231PDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB231PSYr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB231PSr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB231SDr")>;
+def: InstRW<[BWWriteResGroup48], (instregex "VFNMSUB231SSr")>;
 
 def BWWriteResGroup49 : SchedWriteRes<[BWPort23]> {
   let Latency = 5;
@@ -3121,9 +3214,66 @@ def BWWriteResGroup116 : SchedWriteRes<[
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup116],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)m",
-                       "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)m")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD132PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD132PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD132SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD132SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD213PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD213PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD213SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD213SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD231PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD231PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD231SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADD231SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADDSUB132PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADDSUB132PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADDSUB213PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADDSUB213PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADDSUB231PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMADDSUB231PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB132PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB132PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB132SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB132SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB213PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB213PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB213SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB213SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB231PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB231PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB231SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUB231SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUBADD132PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUBADD132PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUBADD213PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUBADD213PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUBADD231PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFMSUBADD231PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD132PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD132PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD132SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD132SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD213PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD213PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD213SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD213SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD231PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD231PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD231SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMADD231SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB132PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB132PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB132SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB132SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB213PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB213PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB213SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB213SSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB231PDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB231PSm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB231SDm")>;
+def: InstRW<[BWWriteResGroup116], (instregex "VFNMSUB231SSm")>;
 
 def BWWriteResGroup117 : SchedWriteRes<[BWPort1,BWPort23]> {
   let Latency = 10;
@@ -3203,8 +3353,42 @@ def BWWriteResGroup124 : SchedWriteRes<[
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
-def: InstRW<[BWWriteResGroup124],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Ym")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADD132PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADD132PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADD213PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADD213PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADD231PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADD231PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADDSUB132PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADDSUB132PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADDSUB213PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADDSUB213PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADDSUB231PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMADDSUB231PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUB132PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUB132PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUB213PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUB213PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUB231PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUB231PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUBADD132PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUBADD132PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUBADD213PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUBADD213PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUBADD231PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFMSUBADD231PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMADD132PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMADD132PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMADD213PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMADD213PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMADD231PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMADD231PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMSUB132PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMSUB132PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMSUB213PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMSUB213PSYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMSUB231PDYm")>;
+def: InstRW<[BWWriteResGroup124], (instregex "VFNMSUB231PSYm")>;
 
 def BWWriteResGroup125 : SchedWriteRes<[BWPort0]> {
   let Latency = 11;

Modified: llvm/trunk/lib/Target/X86/X86SchedHaswell.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedHaswell.td?rev=320470&r1=320469&r2=320470&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedHaswell.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedHaswell.td Tue Dec 12 03:34:25 2017
@@ -3380,15 +3380,108 @@ def: InstRW<[HWWriteResGroup90], (instre
 def: InstRW<[HWWriteResGroup90], (instregex "MULPSrr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "MULSDrr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "MULSSrr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD132PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD132PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD132PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD132PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD132SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD132SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD213PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD213PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD213PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD213PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD213SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD213SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD231PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD231PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD231PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD231PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD231SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADD231SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB132PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB132PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB132PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB132PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB213PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB213PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB213PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB213PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB231PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB231PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB231PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMADDSUB231PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB132PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB132PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB132PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB132PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB132SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB132SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB213PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB213PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB213PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB213PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB213SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB213SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB231PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB231PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB231PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB231PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB231SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUB231SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD132PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD132PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD132PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD132PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD213PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD213PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD213PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD213PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD231PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD231PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD231PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFMSUBADD231PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD132PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD132PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD132PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD132PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD132SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD132SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD213PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD213PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD213PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD213PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD213SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD213SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD231PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD231PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD231PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD231PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD231SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMADD231SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB132PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB132PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB132PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB132PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB132SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB132SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB213PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB213PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB213PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB213PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB213SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB213SSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB231PDYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB231PDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB231PSYr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB231PSr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB231SDr")>;
+def: InstRW<[HWWriteResGroup90], (instregex "VFNMSUB231SSr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "VMULPDYrr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "VMULPDrr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "VMULPSYrr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "VMULPSrr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "VMULSDrr")>;
 def: InstRW<[HWWriteResGroup90], (instregex "VMULSSrr")>;
-def: InstRW<[HWWriteResGroup90],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)(Y)?r",
-                       "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)r")>;
 
 def HWWriteResGroup91 : SchedWriteRes<[HWPort0,HWPort23]> {
   let Latency = 10;
@@ -3473,20 +3566,88 @@ def HWWriteResGroup92 : SchedWriteRes<[H
 }
 def: InstRW<[HWWriteResGroup92], (instregex "MULPDrm")>;
 def: InstRW<[HWWriteResGroup92], (instregex "MULPSrm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADD132PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADD132PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADD213PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADD213PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADD231PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADD231PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADDSUB132PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADDSUB132PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADDSUB213PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADDSUB213PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADDSUB231PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMADDSUB231PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUB132PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUB132PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUB213PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUB213PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUB231PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUB231PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUBADD132PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUBADD132PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUBADD213PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUBADD213PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUBADD231PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFMSUBADD231PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMADD132PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMADD132PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMADD213PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMADD213PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMADD231PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMADD231PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMSUB132PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMSUB132PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMSUB213PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMSUB213PSm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMSUB231PDm")>;
+def: InstRW<[HWWriteResGroup92], (instregex "VFNMSUB231PSm")>;
 def: InstRW<[HWWriteResGroup92], (instregex "VMULPDrm")>;
 def: InstRW<[HWWriteResGroup92], (instregex "VMULPSrm")>;
-def: InstRW<[HWWriteResGroup92],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)m")>;
 
 def HWWriteResGroup92_1 : SchedWriteRes<[HWPort01,HWPort23]> {
   let Latency = 12;
   let NumMicroOps = 2;
   let ResourceCycles = [1,1];
 }
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADD132PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADD132PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADD213PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADD213PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADD231PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADD231PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADDSUB132PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADDSUB132PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADDSUB213PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADDSUB213PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADDSUB231PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMADDSUB231PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUB132PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUB132PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUB213PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUB213PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUB231PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUB231PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUBADD132PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUBADD132PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUBADD213PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUBADD213PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUBADD231PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFMSUBADD231PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMADD132PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMADD132PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMADD213PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMADD213PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMADD231PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMADD231PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMSUB132PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMSUB132PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMSUB213PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMSUB213PSYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMSUB231PDYm")>;
+def: InstRW<[HWWriteResGroup92_1], (instregex "VFNMSUB231PSYm")>;
 def: InstRW<[HWWriteResGroup92_1], (instregex "VMULPDYrm")>;
 def: InstRW<[HWWriteResGroup92_1], (instregex "VMULPSYrm")>;
-def: InstRW<[HWWriteResGroup92_1],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Ym")>;
 
 def HWWriteResGroup92_2 : SchedWriteRes<[HWPort01,HWPort23]> {
   let Latency = 10;
@@ -3495,10 +3656,32 @@ def HWWriteResGroup92_2 : SchedWriteRes<
 }
 def: InstRW<[HWWriteResGroup92_2], (instregex "MULSDrm")>;
 def: InstRW<[HWWriteResGroup92_2], (instregex "MULSSrm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMADD132SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMADD132SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMADD213SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMADD213SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMADD231SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMADD231SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMSUB132SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMSUB132SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMSUB213SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMSUB213SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMSUB231SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFMSUB231SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMADD132SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMADD132SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMADD213SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMADD213SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMADD231SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMADD231SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMSUB132SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMSUB132SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMSUB213SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMSUB213SSm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMSUB231SDm")>;
+def: InstRW<[HWWriteResGroup92_2], (instregex "VFNMSUB231SSm")>;
 def: InstRW<[HWWriteResGroup92_2], (instregex "VMULSDrm")>;
 def: InstRW<[HWWriteResGroup92_2], (instregex "VMULSSrm")>;
-def: InstRW<[HWWriteResGroup92_2],
-            (instregex "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)m")>;
 
 def HWWriteResGroup93 : SchedWriteRes<[HWPort1,HWPort5]> {
   let Latency = 5;

Modified: llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td?rev=320470&r1=320469&r2=320470&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSkylakeClient.td Tue Dec 12 03:34:25 2017
@@ -1606,6 +1606,102 @@ def: InstRW<[SKLWriteResGroup48], (instr
 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPDrr")>;
 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPSYrr")>;
 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPSrr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213SSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PDYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PSYr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PSr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231SDr")>;
+def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231SSr")>;
 def: InstRW<[SKLWriteResGroup48], (instregex "VMULPDYrr")>;
 def: InstRW<[SKLWriteResGroup48], (instregex "VMULPDrr")>;
 def: InstRW<[SKLWriteResGroup48], (instregex "VMULPSYrr")>;
@@ -1618,10 +1714,6 @@ def: InstRW<[SKLWriteResGroup48], (instr
 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBPSrr")>;
 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBSDrr")>;
 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBSSrr")>;
-def: InstRW<[SKLWriteResGroup48],
-            (instregex
-             "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)(Y)?r",
-             "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)r")>;
 
 def SKLWriteResGroup49 : SchedWriteRes<[SKLPort015]> {
   let Latency = 4;
@@ -2994,8 +3086,30 @@ def: InstRW<[SKLWriteResGroup122], (inst
 def: InstRW<[SKLWriteResGroup122], (instregex "SUBSSrm")>;
 def: InstRW<[SKLWriteResGroup122], (instregex "VADDSDrm")>;
 def: InstRW<[SKLWriteResGroup122], (instregex "VADDSSrm")>;
-def: InstRW<[SKLWriteResGroup122],
-            (instregex "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)m")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD132SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD132SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD213SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD213SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD231SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD231SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB132SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB132SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB213SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB213SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB231SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB231SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD132SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD132SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD213SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD213SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD231SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD231SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB132SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB132SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB213SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB213SSm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB231SDm")>;
+def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB231SSm")>;
 def: InstRW<[SKLWriteResGroup122], (instregex "VMULSDrm")>;
 def: InstRW<[SKLWriteResGroup122], (instregex "VMULSSrm")>;
 def: InstRW<[SKLWriteResGroup122], (instregex "VSUBSDrm")>;
@@ -3158,8 +3272,42 @@ def: InstRW<[SKLWriteResGroup134], (inst
 def: InstRW<[SKLWriteResGroup134], (instregex "VADDPSrm")>;
 def: InstRW<[SKLWriteResGroup134], (instregex "VADDSUBPDrm")>;
 def: InstRW<[SKLWriteResGroup134], (instregex "VADDSUBPSrm")>;
-def: InstRW<[SKLWriteResGroup134],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)m")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD132PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD132PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD213PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD213PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD231PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD231PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB132PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB132PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB213PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB213PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB231PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB231PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB132PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB132PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB213PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB213PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB231PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB231PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD132PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD132PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD213PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD213PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD231PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD231PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD132PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD132PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD213PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD213PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD231PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD231PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB132PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB132PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB213PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB213PSm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB231PDm")>;
+def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB231PSm")>;
 def: InstRW<[SKLWriteResGroup134], (instregex "VMULPDrm")>;
 def: InstRW<[SKLWriteResGroup134], (instregex "VMULPSrm")>;
 def: InstRW<[SKLWriteResGroup134], (instregex "VSUBPDrm")>;
@@ -3319,8 +3467,42 @@ def: InstRW<[SKLWriteResGroup147], (inst
 def: InstRW<[SKLWriteResGroup147], (instregex "VADDPSYrm")>;
 def: InstRW<[SKLWriteResGroup147], (instregex "VADDSUBPDYrm")>;
 def: InstRW<[SKLWriteResGroup147], (instregex "VADDSUBPSYrm")>;
-def: InstRW<[SKLWriteResGroup147],
-            (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Ym")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD132PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD132PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD213PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD213PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD231PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD231PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB132PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB132PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB213PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB213PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB231PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB231PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB132PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB132PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB213PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB213PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB231PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB231PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD132PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD132PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD213PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD213PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD231PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD231PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD132PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD132PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD213PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD213PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD231PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD231PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB132PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB132PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB213PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB213PSYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB231PDYm")>;
+def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB231PSYm")>;
 def: InstRW<[SKLWriteResGroup147], (instregex "VMULPDYrm")>;
 def: InstRW<[SKLWriteResGroup147], (instregex "VMULPSYrm")>;
 def: InstRW<[SKLWriteResGroup147], (instregex "VSUBPDYrm")>;

Modified: llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td?rev=320470&r1=320469&r2=320470&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td (original)
+++ llvm/trunk/lib/Target/X86/X86SchedSkylakeServer.td Tue Dec 12 03:34:25 2017
@@ -2512,15 +2512,234 @@ def: InstRW<[SKXWriteResGroup50], (instr
 def: InstRW<[SKXWriteResGroup50], (instregex "VFIXUPIMMPSZrri(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup50], (instregex "VFIXUPIMMSDrri(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup50], (instregex "VFIXUPIMMSSrri(b?)(k?)(z?)")>;
-def: InstRW<[SKXWriteResGroup50],
-          (instregex
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Yr",
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Z128r(b?)(k?)(z?)",
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Z256r(b?)(k?)(z?)",
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Zr(b?)(k?)(z?)",
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)r",
-           "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)Zr(b?)(_Int)?(k?)(z?)",
-           "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)r")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD231SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB132PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB213PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMADDSUB231PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB132SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB213SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUB231SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD132PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD213PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFMSUBADD231PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD132SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD213SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMADD231SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB132SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB213SSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PDYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PDZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PDZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PDZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PSYr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PSZ128r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PSZ256r(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PSZr(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231PSr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231SDZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231SDr")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231SSZr(b?)(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup50], (instregex "VFNMSUB231SSr")>;
 def: InstRW<[SKXWriteResGroup50], (instregex "VGETEXPPDZ128r(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup50], (instregex "VGETEXPPDZ256r(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup50], (instregex "VGETEXPPDr(b?)(k?)(z?)")>;
@@ -4870,8 +5089,30 @@ def: InstRW<[SKXWriteResGroup137], (inst
 def: InstRW<[SKXWriteResGroup137], (instregex "VCMPSSrm")>;
 def: InstRW<[SKXWriteResGroup137], (instregex "VCVTPH2PSrm")>;
 def: InstRW<[SKXWriteResGroup137], (instregex "VCVTPS2PDrm")>;
-def: InstRW<[SKXWriteResGroup137],
-            (instregex "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)m")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMADD132SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMADD132SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMADD213SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMADD213SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMADD231SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMADD231SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMSUB132SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMSUB132SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMSUB213SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMSUB213SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMSUB231SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFMSUB231SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMADD132SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMADD132SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMADD213SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMADD213SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMADD231SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMADD231SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB132SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB132SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB213SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB213SSm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB231SDm")>;
+def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB231SSm")>;
 def: InstRW<[SKXWriteResGroup137], (instregex "VMAX(C?)SDrm")>;
 def: InstRW<[SKXWriteResGroup137], (instregex "VMAX(C?)SSrm")>;
 def: InstRW<[SKXWriteResGroup137], (instregex "VMIN(C?)SDrm")>;
@@ -5218,11 +5459,102 @@ def: InstRW<[SKXWriteResGroup149], (inst
 def: InstRW<[SKXWriteResGroup149], (instregex "VFIXUPIMMPSZ128rm(b?)i(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup149], (instregex "VFIXUPIMMSDrmi(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup149], (instregex "VFIXUPIMMSSrmi(b?)(k?)(z?)")>;
-def: InstRW<[SKXWriteResGroup149],
-          (instregex
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Z128m(b?)(k?)(z?)",
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)m",
-           "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)Zm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD132PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD132PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD132PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD132PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD132SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD132SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD213PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD213PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD213PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD213PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD213SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD213SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD231PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD231PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD231PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD231PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD231SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADD231SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB132PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB132PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB132PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB132PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB213PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB213PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB213PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB213PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB231PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB231PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB231PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMADDSUB231PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB132PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB132PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB132PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB132PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB132SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB132SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB213PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB213PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB213PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB213PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB213SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB213SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB231PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB231PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB231PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB231PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB231SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUB231SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD132PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD132PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD132PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD132PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD213PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD213PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD213PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD213PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD231PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD231PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD231PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFMSUBADD231PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD132PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD132PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD132PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD132PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD132SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD132SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD213PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD213PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD213PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD213PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD213SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD213SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD231PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD231PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD231PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD231PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD231SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMADD231SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB132PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB132PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB132PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB132PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB132SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB132SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB213PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB213PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB213PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB213PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB213SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB213SSZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB231PDZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB231PDm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB231PSZ128m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB231PSm")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB231SDZm(_Int)?(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup149], (instregex "VFNMSUB231SSZm(_Int)?(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup149], (instregex "VGETEXPPDZ128m(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup149], (instregex "VGETEXPPSZ128m(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup149], (instregex "VGETEXPSDm(b?)(k?)(z?)")>;
@@ -5461,11 +5793,114 @@ def: InstRW<[SKXWriteResGroup161], (inst
 def: InstRW<[SKXWriteResGroup161], (instregex "VFIXUPIMMPDZrm(b?)i(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup161], (instregex "VFIXUPIMMPSZ256rm(b?)i(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup161], (instregex "VFIXUPIMMPSZrm(b?)i(k?)(z?)")>;
-def: InstRW<[SKXWriteResGroup161],
-          (instregex
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Ym",
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Z256m(b?)(k?)(z?)",
-           "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Zm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD132PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD132PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD132PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD132PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD132PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD132PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD213PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD213PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD213PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD213PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD213PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD213PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD231PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD231PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD231PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD231PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD231PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADD231PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB132PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB132PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB132PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB132PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB132PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB132PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB213PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB213PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB213PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB213PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB213PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB213PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB231PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB231PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB231PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB231PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB231PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMADDSUB231PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB132PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB132PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB132PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB132PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB132PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB132PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB213PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB213PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB213PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB213PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB213PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB213PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB231PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB231PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB231PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB231PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB231PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUB231PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD132PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD132PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD132PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD132PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD132PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD132PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD213PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD213PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD213PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD213PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD213PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD213PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD231PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD231PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD231PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD231PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD231PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFMSUBADD231PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD132PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD132PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD132PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD132PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD132PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD132PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD213PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD213PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD213PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD213PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD213PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD213PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD231PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD231PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD231PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD231PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD231PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMADD231PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB132PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB132PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB132PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB132PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB132PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB132PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB213PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB213PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB213PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB213PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB213PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB213PSZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB231PDYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB231PDZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB231PDZm(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB231PSYm")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB231PSZ256m(b?)(k?)(z?)")>;
+def: InstRW<[SKXWriteResGroup161], (instregex "VFNMSUB231PSZm(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup161], (instregex "VGETEXPPDZ256m(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup161], (instregex "VGETEXPPDm(b?)(k?)(z?)")>;
 def: InstRW<[SKXWriteResGroup161], (instregex "VGETEXPPSZ256m(b?)(k?)(z?)")>;




More information about the llvm-commits mailing list