return val;
}
#endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+ if (stop >= 16)
+ return 0;
+ else
+ {
+ if (start < 16)
+ val &= LSMASK (start, 0);
+ val >>= stop;
+ return val;
+ }
+#endif
}
return val;
}
#endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+ if (stop < 16)
+ return 0;
+ else
+ {
+ if (start >= 16)
+ val &= MSMASK (start, 64 - 1);
+ val >>= (64 - stop - 1);
+ return val;
+ }
+#endif
}
return val;
}
#endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+ /* Bit numbers are 63..0, even for 16 bit targets.
+ On 16 bit targets we ignore 63..16 */
+ if (stop >= 16)
+ return 0;
+ else
+ {
+ val <<= stop;
+ val &= LSMASK (start, stop);
+ return val;
+ }
+#endif
}
INLINE_SIM_BITS\
return val;
}
#endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+ /* Bit numbers are 0..63, even for 16 bit targets.
+ On 16 bit targets we ignore 0..47. */
+ if (stop < 32 + 16)
+ return 0;
+ else
+ {
+ val <<= ((64 - 1) - stop);
+ val &= MSMASK (start, stop);
+ return val;
+ }
+#endif
}
return val;
}
#endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+ if (sign_bit >= 16)
+ return val;
+ else {
+ val = LSSEXT16 (val, sign_bit);
+ return val;
+ }
+#endif
}
INLINE_SIM_BITS\
return val;
}
#endif
+#if (WITH_TARGET_WORD_BITSIZE == 16)
+ if (sign_bit < 32 + 16)
+ return val;
+ else {
+ val = MSSEXT16 (val, sign_bit - 32 - 16);
+ return val;
+ }
+#endif
}