Fixed jumpi encoding problem
authorBenjamin Segovia <segovia.benjamin@gmail.com>
Thu, 3 May 2012 20:37:09 +0000 (20:37 +0000)
committerKeith Packard <keithp@keithp.com>
Fri, 10 Aug 2012 23:17:05 +0000 (16:17 -0700)
backend/src/backend/gen_eu.cpp
backend/src/backend/gen_eu.hpp

index 7008cd5..d560e34 100644 (file)
@@ -129,7 +129,7 @@ namespace gbe
 
   void GenEmitter::setSrc0(GenInstruction *insn, GenReg reg)
   {
-     if (reg.type != GEN_ARCHITECTURE_REGISTER_FILE)
+     if (reg.file != GEN_ARCHITECTURE_REGISTER_FILE)
         assert(reg.nr < 128);
 
      insn->bits1.da1.src0_reg_file = reg.file;
@@ -612,11 +612,7 @@ namespace gbe
     GenInstruction &insn = this->store[insnID];
     assert(insnID < this->insnNum);
     assert(insn.header.opcode == GEN_OPCODE_JMPI);
-    union { int32_t i32; int16_t i16; } target;
-    target.i32 = 0;
-    target.i16 = int16_t(jumpDistance);
-    //this->setSrc1(&insn, GenReg::retype(GenReg::immw(jumpDistance), GEN_TYPE_D));
-    this->setSrc1(&insn, GenReg::immd(target.i32));
+    this->setSrc1(&insn, GenReg::immd(jumpDistance));
   }
 
   /* To integrate with the above, it makes sense that the comparison
index fe438ef..c81595d 100644 (file)
@@ -402,7 +402,7 @@ namespace gbe
       return GenReg(GEN_ARCHITECTURE_REGISTER_FILE, 
                     GEN_ARF_IP, 
                     0,
-                    GEN_TYPE_UD,
+                    GEN_TYPE_D,
                     GEN_VERTICAL_STRIDE_4,
                     GEN_WIDTH_1,
                     GEN_HORIZONTAL_STRIDE_0,