Mesa (master): radeon/llvm: Fix encoding of FP immediates on SI

Tom Stellard tstellar at kemper.freedesktop.org
Wed Aug 29 20:43:45 UTC 2012


Module: Mesa
Branch: master
Commit: 2809ae3d445bc10a79f119946439431ba73bb069
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2809ae3d445bc10a79f119946439431ba73bb069

Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Wed Aug 29 11:39:38 2012 -0400

radeon/llvm: Fix encoding of FP immediates on SI

---

 .../radeon/MCTargetDesc/SIMCCodeEmitter.cpp        |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/radeon/MCTargetDesc/SIMCCodeEmitter.cpp b/src/gallium/drivers/radeon/MCTargetDesc/SIMCCodeEmitter.cpp
index bc0b968..5569cf6 100644
--- a/src/gallium/drivers/radeon/MCTargetDesc/SIMCCodeEmitter.cpp
+++ b/src/gallium/drivers/radeon/MCTargetDesc/SIMCCodeEmitter.cpp
@@ -239,9 +239,14 @@ uint64_t SIMCCodeEmitter::VOPPostEncode(const MCInst &MI, uint64_t Value) const{
         Value |= (VGPR_BIT(opIdx)) << vgprBitOffset;
       }
     } else if (MO.isFPImm()) {
+      union {
+        float f;
+        uint32_t i;
+      } Imm;
       // XXX: Not all instructions can use inline literals
       // XXX: We should make sure this is a 32-bit constant
-      Value |= ((uint64_t)MO.getFPImm()) << 32;
+      Imm.f = MO.getFPImm();
+      Value |= ((uint64_t)Imm.i) << 32;
     }
   }
   return Value;




More information about the mesa-commit mailing list