Simplify test for MIPS imm16 operands.
authorMark Mason <mmason@upwardaccess.com>
Wed, 18 Aug 2010 15:39:36 +0000 (23:39 +0800)
committerZoltan Varga <vargaz@gmail.com>
Wed, 18 Aug 2010 23:15:06 +0000 (07:15 +0800)
Code contributed under the MIT/X11 license.

mono/arch/mips/mips-codegen.h

index e05bc38ac596ccc3915dd6a00ef8debb94560c24..20ad36762edefb53c5d349c61a14698af1d21cbb 100644 (file)
@@ -193,7 +193,7 @@ enum {
 #define mips_format_r(code,op,rs,rt,rd,sa,func) mips_emit32 ((code), (((op)<<26)|((rs)<<21)|((rt)<<16)|((rd)<<11)|((sa)<<6)|(func)))
 #define mips_format_divmul(code,op,src1,src2,fun) mips_emit32 ((code), (((op)<<26)|((src1)<<21)|((src2)<<16)|(fun)))
 
-#define mips_is_imm16(val) ((gint)(val) >= (gint)-(1<<15) && (gint)(val) <= (gint)((1<<15)-1))
+#define mips_is_imm16(val) ((gint)(gshort)(gint)(val) == (gint)(val))
 
 /* Load always using lui/addiu pair (for later patching) */
 #define mips_load(c,D,v) do {  \