R600/SI: Add definition for S_CBRANCH_G_FORK
authorTom Stellard <thomas.stellard@amd.com>
Wed, 18 Feb 2015 16:08:13 +0000 (16:08 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 18 Feb 2015 16:08:13 +0000 (16:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229686 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/SIInstrInfo.td
lib/Target/R600/SIInstructions.td

index 6e0db3ca5c944df8265b6daee2dca92ea85ff667..17b2141356b4949a40767ad6ab70b2613f4a4714 100644 (file)
@@ -454,6 +454,12 @@ class SOP2_Pseudo<string opName, dag outs, dag ins, list<dag> pattern> :
   SIMCInstr<opName, SISubtarget.NONE> {
   let isPseudo = 1;
   let Size = 4;
   SIMCInstr<opName, SISubtarget.NONE> {
   let isPseudo = 1;
   let Size = 4;
+
+  // Pseudo instructions have no encodings, but adding this field here allows
+  // us to do:
+  // let sdst = xxx in {
+  // for multiclasses that include both real and pseudo instructions.
+  field bits<7> sdst = 0;
 }
 
 class SOP2_Real_si<sop2 op, string opName, dag outs, dag ins, string asm> :
 }
 
 class SOP2_Real_si<sop2 op, string opName, dag outs, dag ins, string asm> :
index 8e1c0e70aff6d9f84c85b7962a15ff6b5e792836..a30da742aea8f28ab22212dd3fef202af0fb12c1 100644 (file)
@@ -319,7 +319,13 @@ defm S_BFE_U64 : SOP2_64 <sop2<0x29, 0x27>, "s_bfe_u64", []>;
 defm S_BFE_I64 : SOP2_64_32 <sop2<0x2a, 0x28>, "s_bfe_i64", []>;
 } // End Defs = [SCC]
 
 defm S_BFE_I64 : SOP2_64_32 <sop2<0x2a, 0x28>, "s_bfe_i64", []>;
 } // End Defs = [SCC]
 
-//defm S_CBRANCH_G_FORK : SOP2_ <sop2<0x2b, 0x29>, "s_cbranch_g_fork", []>;
+let sdst = 0 in {
+defm S_CBRANCH_G_FORK : SOP2_m <
+  sop2<0x2b, 0x29>, "s_cbranch_g_fork", (outs),
+  (ins SReg_64:$src0, SReg_64:$src1), "s_cbranch_g_fork $src0, $src1", []
+>;
+}
+
 let Defs = [SCC] in {
 defm S_ABSDIFF_I32 : SOP2_32 <sop2<0x2c, 0x2a>, "s_absdiff_i32", []>;
 } // End Defs = [SCC]
 let Defs = [SCC] in {
 defm S_ABSDIFF_I32 : SOP2_32 <sop2<0x2c, 0x2a>, "s_absdiff_i32", []>;
 } // End Defs = [SCC]