+ fputs_filtered (float_comp_names[GET_FIELD (insn, 27, 31)],
+ info);
+ break;
+
+ case 'L': {
+ long temp;
+
+ temp = GET_FIELD (insn, 18, 27) << 1;
+ temp = assemble_16a (GET_FIELD (insn, 16, 17),
+ temp,
+ GET_BIT (insn, 31));
+ fput_hex_const (temp, info);
+ break;
+ }
+
+ case 'l': {
+ long temp;
+
+ temp = assemble_16a (s,
+ GET_FIELD (insn, 18, 28),
+ GET_BIT (insn, 31));
+ fput_hex_const (temp, info);
+ break;
+ }
+
+ case 'q':
+
+/* TEMP HACK - FIXME - edie */
+ fput_hex_const (sign_extend (GET_FIELD (insn, 20, 30), 0), info);
+ break;
+
+ case '#':
+ fput_decimal_const (GET_FIELD (insn, 20, 28), info);
+ break;
+
+ case '$':
+ fputs_filtered (branch_push_pop_names[GET_PUSH_POP(insn)], info);
+ break;
+
+ case '.':
+ fput_creg( 11, info ); /* %cr11, printed by gdb as "sar" */
+ break;
+
+ case '-':
+ /* 22 bit PC-relative branch. */
+ (*info->print_address_func) (memaddr + 8 +
+ (assemble_22 (GET_FIELD (insn, 6, 10),
+ GET_FIELD (insn, 11, 15),
+ GET_FIELD (insn, 19, 29),
+ GET_FIELD (insn, 31, 31)) << 2),
+ info);
+ break;
+
+ case '/':
+ fputs_filtered (deposit_names[GET_BIT(insn,21)], info);
+ break;
+
+ case '*':
+/* TEMP HACK - FIXME - edie */
+ fput_decimal_const (sign_extend (assemble_6 (GET_BIT (insn, 23),
+ GET_FIELD (insn, 27, 31)), 0),
+ info);
+ break;
+
+ case '[':
+/* TEMP HACK - FIXME - edie */
+ fput_decimal_const (sign_extend (CATENATE (GET_BIT (insn, 20), 1,
+ GET_FIELD (insn, 22, 26), 5),
+ 0),
+ info);
+ break;
+
+ case ']':
+/* TEMP HACK - FIXME - edie */
+ fput_decimal_const (sign_extend (assemble_6 (GET_BIT (insn, 19), GET_FIELD (insn, 27, 31)), 0), info);
+ break;
+
+ case '=':
+ fputs_filtered (saturation_names[GET_FIELD(insn,24,25)], info);
+ break;
+
+ case ';':
+ /* Always positive */
+ fput_decimal_const (GET_FIELD (insn, 24, 25), info);
+ break;
+
+ case ':':
+ /* Always positive */
+ fput_decimal_const (GET_FIELD (insn, 22, 25), info);
+ break;
+
+ case '3':
+ fputs_filtered (shift_names[GET_FIELD(insn,20,21)], info);
+ break;
+
+ case '%':
+ fputs_filtered (",", info);
+ fput_decimal_const (GET_FIELD (insn, 17, 18), info );
+ fput_decimal_const (GET_FIELD (insn, 20, 21), info );
+ fput_decimal_const (GET_FIELD (insn, 22, 23), info );
+ fput_decimal_const (GET_FIELD (insn, 24, 25), info );
+ break;
+
+ case 'e':
+ fputs_filtered (mix_names[GET_FIELD(insn,17,18)], info);
+ break;
+
+ case '}':
+ fputs_filtered (conversion_names[GET_FIELD(insn,14,16)], info);
+ break;
+
+ case 'h':
+ fput_hex_const (GET_FIELD (insn, 6, 15), info);
+ break;
+
+ case '_':
+ fput_decimal_const ((GET_FIELD (insn, 16, 18) - 1), info);
+ break;
+
+ case '+': {
+ int temp = GET_FIELD (insn, 16, 18) ^ 1;
+
+ if (temp == 0)
+ /* shouldn't happen, as spec says that if
+ this field is "1", then it's a different
+ format. */
+ fput_decimal_const (7, info);
+ else
+ fput_decimal_const (temp - 1, info);
+ break;
+ }
+
+ case '{':
+ /* Funky two-part six-bit register specifier */
+ if (GET_BIT (insn, 23))
+ fput_fp_reg_r (MERGED_REG (insn), info);
+ else
+ fput_fp_reg (MERGED_REG (insn), info);