[PATCH] D61935: Fixes PPC64 Tbegin disassembling

Philippe Antoine via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 28 23:30:45 PDT 2019


catenacyber updated this revision to Diff 201831.
catenacyber added a comment.

Fixes more instructions
Adds 2 tests


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61935/new/

https://reviews.llvm.org/D61935

Files:
  lib/Target/PowerPC/PPCInstrHTM.td
  test/MC/Disassembler/PowerPC/ppc64-encoding-p8htm.txt


Index: test/MC/Disassembler/PowerPC/ppc64-encoding-p8htm.txt
===================================================================
--- /dev/null
+++ test/MC/Disassembler/PowerPC/ppc64-encoding-p8htm.txt
@@ -0,0 +1,13 @@
+# RUN: llvm-mc --disassemble %s -triple powerpc64-unknown-unknown -mcpu=pwr8 | FileCheck %s
+
+# CHECK: tbegin. 1
+0x7c 0x20 0x05 0x1d
+
+# CHECK: tabortdc. 9, r0, r0
+0x7d 0x20 0x06 0x5d
+
+# CHECK: tabortdci. 1, r0, 3
+0x7c 0x20 0x1e 0xdd
+
+# CHECK: tsr. 1
+0x7c 0x20 0x05 0xdd
Index: lib/Target/PowerPC/PPCInstrHTM.td
===================================================================
--- lib/Target/PowerPC/PPCInstrHTM.td
+++ lib/Target/PowerPC/PPCInstrHTM.td
@@ -26,57 +26,67 @@
 
 let Predicates = [HasHTM] in {
 
+let Defs = [CR0] in
 def TBEGIN : XForm_htm0 <31, 654,
-                         (outs crrc0:$ret), (ins u1imm:$R), "tbegin. $R", IIC_SprMTSPR, []>;
+                         (outs), (ins u1imm:$R), "tbegin. $R", IIC_SprMTSPR, []>;
 
+let Defs = [CR0] in
 def TEND : XForm_htm1 <31, 686,
-                       (outs crrc0:$ret), (ins u1imm:$A), "tend. $A", IIC_SprMTSPR, []>;
+                       (outs), (ins u1imm:$A), "tend. $A", IIC_SprMTSPR, []>;
 
+let Defs = [CR0] in
 def TABORT : XForm_base_r3xo <31, 910,
-                              (outs crrc0:$ret), (ins gprc:$A), "tabort. $A", IIC_SprMTSPR,
+                              (outs), (ins gprc:$A), "tabort. $A", IIC_SprMTSPR,
                               []>, isDOT {
   let RST = 0;
   let B = 0;
 }
 
+let Defs = [CR0] in
 def TABORTWC : XForm_base_r3xo <31, 782,
-                                (outs crrc0:$ret), (ins u5imm:$RTS, gprc:$A, gprc:$B),
+                                (outs), (ins u5imm:$RTS, gprc:$A, gprc:$B),
                                 "tabortwc. $RTS, $A, $B", IIC_SprMTSPR, []>,
                                 isDOT;
 
+let Defs = [CR0] in
 def TABORTWCI : XForm_base_r3xo <31, 846,
-                                 (outs crrc0:$ret), (ins u5imm:$RTS, gprc:$A, u5imm:$B),
+                                 (outs), (ins u5imm:$RTS, gprc:$A, u5imm:$B),
                                  "tabortwci. $RTS, $A, $B", IIC_SprMTSPR, []>,
                                  isDOT;
 
+let Defs = [CR0] in
 def TABORTDC : XForm_base_r3xo <31, 814,
-                                (outs crrc0:$ret), (ins u5imm:$RTS, gprc:$A, gprc:$B),
+                                (outs), (ins u5imm:$RTS, gprc:$A, gprc:$B),
                                 "tabortdc. $RTS, $A, $B", IIC_SprMTSPR, []>,
                                 isDOT;
 
+let Defs = [CR0] in
 def TABORTDCI : XForm_base_r3xo <31, 878,
-                                 (outs crrc0:$ret), (ins u5imm:$RTS, gprc:$A, u5imm:$B),
+                                 (outs), (ins u5imm:$RTS, gprc:$A, u5imm:$B),
                                  "tabortdci. $RTS, $A, $B", IIC_SprMTSPR, []>,
                                  isDOT;
 
+let Defs = [CR0] in
 def TSR : XForm_htm2 <31, 750,
-                      (outs crrc0:$ret), (ins u1imm:$L), "tsr. $L", IIC_SprMTSPR, []>,
+                      (outs), (ins u1imm:$L), "tsr. $L", IIC_SprMTSPR, []>,
                       isDOT;
 
 def TCHECK : XForm_htm3 <31, 718,
                         (outs), (ins crrc:$BF), "tcheck $BF", IIC_SprMTSPR, []>;
 
 
+let Defs = [CRRC] in
 def TRECLAIM : XForm_base_r3xo <31, 942,
-                                (outs crrc:$ret), (ins gprc:$A), "treclaim. $A",
+                                (outs), (ins gprc:$A), "treclaim. $A",
                                 IIC_SprMTSPR, []>,
                                 isDOT {
   let RST = 0;
   let B = 0;
 }
 
+let Defs = [CRRC] in
 def TRECHKPT : XForm_base_r3xo <31, 1006,
-                                (outs crrc:$ret), (ins), "trechkpt.", IIC_SprMTSPR, []>,
+                                (outs), (ins), "trechkpt.", IIC_SprMTSPR, []>,
                                 isDOT {
   let RST = 0;
   let A = 0;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D61935.201831.patch
Type: text/x-patch
Size: 3947 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190529/c9e33c20/attachment.bin>


More information about the llvm-commits mailing list