OSDN Git Service

radeon/llvm: Fix encoding of FP immediates on SI
authorTom Stellard <thomas.stellard@amd.com>
Wed, 29 Aug 2012 15:39:38 +0000 (11:39 -0400)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 29 Aug 2012 19:52:10 +0000 (15:52 -0400)
src/gallium/drivers/radeon/MCTargetDesc/SIMCCodeEmitter.cpp

index bc0b968..5569cf6 100644 (file)
@@ -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;