[Mesa-dev] [PATCH 2/4] AMDGPU: Print integer and floating point values for literals

Tom Stellard tom at stellard.net
Fri Nov 9 12:47:35 PST 2012


From: Tom Stellard <thomas.stellard at amd.com>

---
 lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp | 11 +++++++++++
 lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h   |  1 +
 lib/Target/AMDGPU/R600Instructions.td               |  2 +-
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp b/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp
index fe2032e..7ed3d2c 100644
--- a/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp
+++ b/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp
@@ -63,6 +63,17 @@ void AMDGPUInstPrinter::printClamp(const MCInst *MI, unsigned OpNo,
   printIfSet(MI, OpNo, O, "_SAT");
 }
 
+void AMDGPUInstPrinter::printLiteral(const MCInst *MI, unsigned OpNo,
+                                     raw_ostream &O) {
+  union Literal {
+    float f;
+    int32_t i;
+  } L;
+
+  L.i = MI->getOperand(OpNo).getImm();
+  O << L.i << "(" << L.f << ")";
+}
+
 void AMDGPUInstPrinter::printLast(const MCInst *MI, unsigned OpNo,
                                   raw_ostream &O) {
   printIfSet(MI, OpNo, O, " *");
diff --git a/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h b/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h
index de94eda..1f70ef5 100644
--- a/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h
+++ b/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h
@@ -36,6 +36,7 @@ private:
   void printIfSet(const MCInst *MI, unsigned OpNo, raw_ostream &O, StringRef Asm);
   void printAbs(const MCInst *MI, unsigned OpNo, raw_ostream &O);
   void printClamp(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printLiteral(const MCInst *MI, unsigned OpNo, raw_ostream &O);
   void printLast(const MCInst *MI, unsigned OpNo, raw_ostream &O);
   void printNeg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
   void printOMOD(const MCInst *MI, unsigned OpNo, raw_ostream &O);
diff --git a/lib/Target/AMDGPU/R600Instructions.td b/lib/Target/AMDGPU/R600Instructions.td
index c8cf012..ccec249 100644
--- a/lib/Target/AMDGPU/R600Instructions.td
+++ b/lib/Target/AMDGPU/R600Instructions.td
@@ -70,7 +70,7 @@ class InstFlag<string PM = "printOperand", int Default = 0>
   let PrintMethod = PM;
 }
 
-def LITERAL : InstFlag;
+def LITERAL : InstFlag<"printLiteral">;
 
 def WRITE : InstFlag <"printWrite", 1>;
 def OMOD : InstFlag <"printOMOD">;
-- 
1.7.11.4



More information about the mesa-dev mailing list