+/* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */
/* Instruction building/extraction support for fr30. -*- C -*-
THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator.
- the resultant file is machine generated, cgen-ibld.in isn't
- Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ Copyright (C) 1996-2017 Free Software Foundation, Inc.
This file is part of libopcodes.
{
long minval = - (1L << (length - 1));
unsigned long maxval = mask;
-
+
if ((value > 0 && (unsigned long) value > maxval)
|| value < minval)
{
{
long minval = - (1L << (length - 1));
long maxval = (1L << (length - 1)) - 1;
-
+
if (value < minval || value > maxval)
{
sprintf
#if CGEN_INT_INSN_P
{
- int shift;
+ int shift_within_word, shift_to_word, shift;
+ /* How to shift the value to BIT0 of the word. */
+ shift_to_word = total_length - (word_offset + word_length);
+
+ /* How to shift the value to the field within the word. */
if (CGEN_INSN_LSB0_P)
- shift = (word_offset + start + 1) - length;
+ shift_within_word = start + 1 - length;
else
- shift = total_length - (word_offset + start + length);
+ shift_within_word = word_length - start - length;
+
+ /* The total SHIFT, then mask in the value. */
+ shift = shift_to_word + shift_within_word;
*buffer = (*buffer & ~(mask << shift)) | ((value & mask) << shift);
}
{
long value;
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 4, 16, total_length, pc, & value);
- value = ((value) | (((-1) << (4))));
+ value = ((value) | (-16));
fields->f_m4 = value;
}
break;
return length;
}
-cgen_insert_fn * const fr30_cgen_insert_handlers[] =
+cgen_insert_fn * const fr30_cgen_insert_handlers[] =
{
insert_insn_normal,
};
-cgen_extract_fn * const fr30_cgen_extract_handlers[] =
+cgen_extract_fn * const fr30_cgen_extract_handlers[] =
{
extract_insn_normal,
};