From: Simon Pilgrim Date: Tue, 12 Dec 2017 11:34:25 +0000 (+0000) Subject: Revert r320461 - causing ICE in windows buildss X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=efc3af1a052dac3a08bea7c5288937c5f147606e;p=llvm 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320470 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86SchedBroadwell.td b/lib/Target/X86/X86SchedBroadwell.td index 7c11945160e..6e5f6f39525 100755 --- a/lib/Target/X86/X86SchedBroadwell.td +++ b/lib/Target/X86/X86SchedBroadwell.td @@ -1732,9 +1732,102 @@ def BWWriteResGroup48 : SchedWriteRes<[BWPort01]> { 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<[BWPort01,BWPort23]> { 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<[BWPort01,BWPort23]> { 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; diff --git a/lib/Target/X86/X86SchedHaswell.td b/lib/Target/X86/X86SchedHaswell.td index c1c09cc8826..c8a876a35c8 100644 --- a/lib/Target/X86/X86SchedHaswell.td +++ b/lib/Target/X86/X86SchedHaswell.td @@ -3380,15 +3380,108 @@ def: InstRW<[HWWriteResGroup90], (instregex "MULPDrr")>; 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<[HWPort01,HWPort23]> { } 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<[HWPort01,HWPort23]> { } 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; diff --git a/lib/Target/X86/X86SchedSkylakeClient.td b/lib/Target/X86/X86SchedSkylakeClient.td index bc9ca7edd21..59f535c6857 100644 --- a/lib/Target/X86/X86SchedSkylakeClient.td +++ b/lib/Target/X86/X86SchedSkylakeClient.td @@ -1606,6 +1606,102 @@ def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPDYrr")>; 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], (instregex "VSUBPSYrr")>; 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], (instregex "SUBSDrm")>; 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], (instregex "VADDPDrm")>; 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], (instregex "VADDPDYrm")>; 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")>; diff --git a/lib/Target/X86/X86SchedSkylakeServer.td b/lib/Target/X86/X86SchedSkylakeServer.td index 46ac7e79d1c..10da82796fd 100755 --- a/lib/Target/X86/X86SchedSkylakeServer.td +++ b/lib/Target/X86/X86SchedSkylakeServer.td @@ -2512,15 +2512,234 @@ def: InstRW<[SKXWriteResGroup50], (instregex "VFIXUPIMMPSZ256rri(b?)(k?)(z?)")>; 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], (instregex "VCMPSDrm")>; 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], (instregex "VFIXUPIMMPDZ128rm(b?)i(k?)(z?)")> 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], (instregex "VFIXUPIMMPDZ256rm(b?)i(k?)(z?)")> 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?)")>;