diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td index 6e5f6f395258..7c11945160e7 100755 --- a/llvm/lib/Target/X86/X86SchedBroadwell.td +++ b/llvm/lib/Target/X86/X86SchedBroadwell.td @@ -1732,102 +1732,9 @@ def BWWriteResGroup48 : SchedWriteRes<[BWPort01]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -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: 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 BWWriteResGroup49 : SchedWriteRes<[BWPort23]> { let Latency = 5; @@ -3214,66 +3121,9 @@ def BWWriteResGroup116 : SchedWriteRes<[BWPort01,BWPort23]> { let NumMicroOps = 2; let ResourceCycles = [1,1]; } -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: 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 BWWriteResGroup117 : SchedWriteRes<[BWPort1,BWPort23]> { let Latency = 10; @@ -3353,42 +3203,8 @@ def BWWriteResGroup124 : SchedWriteRes<[BWPort01,BWPort23]> { let NumMicroOps = 2; let ResourceCycles = [1,1]; } -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: InstRW<[BWWriteResGroup124], + (instregex "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Ym")>; def BWWriteResGroup125 : SchedWriteRes<[BWPort0]> { let Latency = 11; diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index c8a876a35c8a..c1c09cc88269 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -3380,108 +3380,15 @@ 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; @@ -3566,88 +3473,20 @@ 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; @@ -3656,32 +3495,10 @@ 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/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td index 59f535c68574..bc9ca7edd212 100644 --- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -1606,102 +1606,6 @@ 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")>; @@ -1714,6 +1618,10 @@ 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; @@ -3086,30 +2994,8 @@ def: InstRW<[SKLWriteResGroup122], (instregex "SUBSDrm")>; def: InstRW<[SKLWriteResGroup122], (instregex "SUBSSrm")>; def: InstRW<[SKLWriteResGroup122], (instregex "VADDSDrm")>; def: InstRW<[SKLWriteResGroup122], (instregex "VADDSSrm")>; -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 "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)m")>; def: InstRW<[SKLWriteResGroup122], (instregex "VMULSDrm")>; def: InstRW<[SKLWriteResGroup122], (instregex "VMULSSrm")>; def: InstRW<[SKLWriteResGroup122], (instregex "VSUBSDrm")>; @@ -3272,42 +3158,8 @@ def: InstRW<[SKLWriteResGroup134], (instregex "VADDPDrm")>; def: InstRW<[SKLWriteResGroup134], (instregex "VADDPSrm")>; def: InstRW<[SKLWriteResGroup134], (instregex "VADDSUBPDrm")>; def: InstRW<[SKLWriteResGroup134], (instregex "VADDSUBPSrm")>; -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 "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)m")>; def: InstRW<[SKLWriteResGroup134], (instregex "VMULPDrm")>; def: InstRW<[SKLWriteResGroup134], (instregex "VMULPSrm")>; def: InstRW<[SKLWriteResGroup134], (instregex "VSUBPDrm")>; @@ -3467,42 +3319,8 @@ def: InstRW<[SKLWriteResGroup147], (instregex "VADDPDYrm")>; def: InstRW<[SKLWriteResGroup147], (instregex "VADDPSYrm")>; def: InstRW<[SKLWriteResGroup147], (instregex "VADDSUBPDYrm")>; def: InstRW<[SKLWriteResGroup147], (instregex "VADDSUBPSYrm")>; -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 "VF(N)?M(ADD|SUB|ADDSUB|SUBADD)(132|213|231)P(D|S)Ym")>; def: InstRW<[SKLWriteResGroup147], (instregex "VMULPDYrm")>; def: InstRW<[SKLWriteResGroup147], (instregex "VMULPSYrm")>; def: InstRW<[SKLWriteResGroup147], (instregex "VSUBPDYrm")>; diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td index 10da82796fd3..46ac7e79d1c8 100755 --- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td @@ -2512,234 +2512,15 @@ 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 "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 + "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 "VGETEXPPDZ128r(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VGETEXPPDZ256r(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VGETEXPPDr(b?)(k?)(z?)")>; @@ -5089,30 +4870,8 @@ def: InstRW<[SKXWriteResGroup137], (instregex "VCMPSDrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VCMPSSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VCVTPH2PSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VCVTPS2PDrm")>; -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 "VF(N)?M(ADD|SUB)(132|213|231)S(D|S)m")>; def: InstRW<[SKXWriteResGroup137], (instregex "VMAX(C?)SDrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VMAX(C?)SSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VMIN(C?)SDrm")>; @@ -5459,102 +5218,11 @@ 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 "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 + "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 "VGETEXPPDZ128m(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup149], (instregex "VGETEXPPSZ128m(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup149], (instregex "VGETEXPSDm(b?)(k?)(z?)")>; @@ -5793,114 +5461,11 @@ 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 "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 + "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 "VGETEXPPDZ256m(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup161], (instregex "VGETEXPPDm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup161], (instregex "VGETEXPPSZ256m(b?)(k?)(z?)")>;