]> granicus.if.org Git - llvm/commitdiff
[AMDGPU] Refactor v_mac_{f16, f32} patterns into a class NFC
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>
Wed, 16 Nov 2016 03:39:12 +0000 (03:39 +0000)
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>
Wed, 16 Nov 2016 03:39:12 +0000 (03:39 +0000)
Differential Revision: https://reviews.llvm.org/D26711

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287077 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AMDGPU/SIInstructions.td

index 14e4b73731583b8a58745e2b8a5bd4bb63788448..a2de66cc17a658c0abe72d2bcdfead1b7ee4f330 100644 (file)
@@ -468,41 +468,36 @@ def : Pat <
 // VOP2 Patterns
 //===----------------------------------------------------------------------===//
 
-multiclass SelectPat<ValueType vt, Instruction inst> {
+multiclass FMADPat <ValueType vt, Instruction inst> {
+  def : Pat <
+    (vt (fmad (VOP3NoMods0 vt:$src0, i32:$src0_modifiers, i1:$clamp, i32:$omod),
+              (VOP3NoMods  vt:$src1, i32:$src1_modifiers),
+              (VOP3NoMods  vt:$src2, i32:$src2_modifiers))),
+    (inst $src0_modifiers, $src0, $src1_modifiers, $src1,
+          $src2_modifiers, $src2, $clamp, $omod)
+  >;
+}
+
+defm : FMADPat <f16, V_MAC_F16_e64>;
+defm : FMADPat <f32, V_MAC_F32_e64>;
+
+multiclass SelectPat <ValueType vt, Instruction inst> {
   def : Pat <
     (vt (select i1:$src0, vt:$src1, vt:$src2)),
     (inst $src2, $src1, $src0)
   >;
 }
 
-defm : SelectPat<i16, V_CNDMASK_B32_e64>;
-defm : SelectPat<i32, V_CNDMASK_B32_e64>;
-defm : SelectPat<f16, V_CNDMASK_B32_e64>;
-defm : SelectPat<f32, V_CNDMASK_B32_e64>;
+defm : SelectPat <i16, V_CNDMASK_B32_e64>;
+defm : SelectPat <i32, V_CNDMASK_B32_e64>;
+defm : SelectPat <f16, V_CNDMASK_B32_e64>;
+defm : SelectPat <f32, V_CNDMASK_B32_e64>;
 
 def : Pat <
   (i32 (add (i32 (ctpop i32:$popcnt)), i32:$val)),
   (V_BCNT_U32_B32_e64 $popcnt, $val)
 >;
 
-// Pattern for V_MAC_F16
-def : Pat <
-  (f16 (fmad (VOP3NoMods0 f16:$src0, i32:$src0_modifiers, i1:$clamp, i32:$omod),
-             (VOP3NoMods  f16:$src1, i32:$src1_modifiers),
-             (VOP3NoMods  f16:$src2, i32:$src2_modifiers))),
-  (V_MAC_F16_e64 $src0_modifiers, $src0, $src1_modifiers, $src1,
-                 $src2_modifiers, $src2, $clamp, $omod)
->;
-
-// Pattern for V_MAC_F32
-def : Pat <
-  (f32 (fmad (VOP3NoMods0 f32:$src0, i32:$src0_modifiers, i1:$clamp, i32:$omod),
-             (VOP3NoMods  f32:$src1, i32:$src1_modifiers),
-             (VOP3NoMods  f32:$src2, i32:$src2_modifiers))),
-  (V_MAC_F32_e64 $src0_modifiers, $src0, $src1_modifiers, $src1,
-                 $src2_modifiers, $src2, $clamp, $omod)
->;
-
 /********** ============================================ **********/
 /********** Extraction, Insertion, Building and Casting  **********/
 /********** ============================================ **********/