X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=opcodes%2For1k-ibld.c;h=6271f5c6d11ddcf00351abf15ccac8f2da4dbabc;hb=99a5596592eda72c5c60b45cdfabb47e426132d5;hp=65dcbbb1ca1b1f1eb22b60ff0a4033a9f50f85f2;hpb=219d1afa89d0d53ca93a684cac341f16470f3ca0;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/or1k-ibld.c b/opcodes/or1k-ibld.c index 65dcbbb1ca..6271f5c6d1 100644 --- a/opcodes/or1k-ibld.c +++ b/opcodes/or1k-ibld.c @@ -4,7 +4,7 @@ THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator. - the resultant file is machine generated, cgen-ibld.in isn't - Copyright (C) 1996-2018 Free Software Foundation, Inc. + Copyright (C) 1996-2019 Free Software Foundation, Inc. This file is part of libopcodes. @@ -573,18 +573,53 @@ or1k_cgen_insert_operand (CGEN_CPU_DESC cd, switch (opindex) { + case OR1K_OPERAND_DISP21 : + { + long value = fields->f_disp21; + value = ((((DI) (value) >> (13))) - (((DI) (pc) >> (13)))); + errmsg = insert_normal (cd, value, 0|(1<f_disp26; - value = ((SI) (((value) - (pc))) >> (2)); + value = ((DI) (((value) - (pc))) >> (2)); errmsg = insert_normal (cd, value, 0|(1<f_r2, 0, 0, 20, 5, 32, total_length, buffer); break; + case OR1K_OPERAND_RAD32F : + { +{ + FLD (f_r2) = ((FLD (f_rad32)) & (31)); + FLD (f_raoff_9_1) = ((((SI) (FLD (f_rad32)) >> (5))) & (1)); +} + errmsg = insert_normal (cd, fields->f_r2, 0, 0, 20, 5, 32, total_length, buffer); + if (errmsg) + break; + errmsg = insert_normal (cd, fields->f_raoff_9_1, 0, 0, 9, 1, 32, total_length, buffer); + if (errmsg) + break; + } + break; case OR1K_OPERAND_RADF : - errmsg = insert_normal (cd, fields->f_r1, 0, 0, 25, 5, 32, total_length, buffer); + errmsg = insert_normal (cd, fields->f_r2, 0, 0, 20, 5, 32, total_length, buffer); + break; + case OR1K_OPERAND_RADI : + { +{ + FLD (f_r2) = ((FLD (f_rad32)) & (31)); + FLD (f_raoff_9_1) = ((((SI) (FLD (f_rad32)) >> (5))) & (1)); +} + errmsg = insert_normal (cd, fields->f_r2, 0, 0, 20, 5, 32, total_length, buffer); + if (errmsg) + break; + errmsg = insert_normal (cd, fields->f_raoff_9_1, 0, 0, 9, 1, 32, total_length, buffer); + if (errmsg) + break; + } break; case OR1K_OPERAND_RASF : errmsg = insert_normal (cd, fields->f_r2, 0, 0, 20, 5, 32, total_length, buffer); @@ -592,8 +627,36 @@ or1k_cgen_insert_operand (CGEN_CPU_DESC cd, case OR1K_OPERAND_RB : errmsg = insert_normal (cd, fields->f_r3, 0, 0, 15, 5, 32, total_length, buffer); break; + case OR1K_OPERAND_RBD32F : + { +{ + FLD (f_r3) = ((FLD (f_rbd32)) & (31)); + FLD (f_rboff_8_1) = ((((SI) (FLD (f_rbd32)) >> (5))) & (1)); +} + errmsg = insert_normal (cd, fields->f_r3, 0, 0, 15, 5, 32, total_length, buffer); + if (errmsg) + break; + errmsg = insert_normal (cd, fields->f_rboff_8_1, 0, 0, 8, 1, 32, total_length, buffer); + if (errmsg) + break; + } + break; case OR1K_OPERAND_RBDF : - errmsg = insert_normal (cd, fields->f_r1, 0, 0, 25, 5, 32, total_length, buffer); + errmsg = insert_normal (cd, fields->f_r3, 0, 0, 15, 5, 32, total_length, buffer); + break; + case OR1K_OPERAND_RBDI : + { +{ + FLD (f_r3) = ((FLD (f_rbd32)) & (31)); + FLD (f_rboff_8_1) = ((((SI) (FLD (f_rbd32)) >> (5))) & (1)); +} + errmsg = insert_normal (cd, fields->f_r3, 0, 0, 15, 5, 32, total_length, buffer); + if (errmsg) + break; + errmsg = insert_normal (cd, fields->f_rboff_8_1, 0, 0, 8, 1, 32, total_length, buffer); + if (errmsg) + break; + } break; case OR1K_OPERAND_RBSF : errmsg = insert_normal (cd, fields->f_r3, 0, 0, 15, 5, 32, total_length, buffer); @@ -601,9 +664,37 @@ or1k_cgen_insert_operand (CGEN_CPU_DESC cd, case OR1K_OPERAND_RD : errmsg = insert_normal (cd, fields->f_r1, 0, 0, 25, 5, 32, total_length, buffer); break; + case OR1K_OPERAND_RDD32F : + { +{ + FLD (f_r1) = ((FLD (f_rdd32)) & (31)); + FLD (f_rdoff_10_1) = ((((SI) (FLD (f_rdd32)) >> (5))) & (1)); +} + errmsg = insert_normal (cd, fields->f_r1, 0, 0, 25, 5, 32, total_length, buffer); + if (errmsg) + break; + errmsg = insert_normal (cd, fields->f_rdoff_10_1, 0, 0, 10, 1, 32, total_length, buffer); + if (errmsg) + break; + } + break; case OR1K_OPERAND_RDDF : errmsg = insert_normal (cd, fields->f_r1, 0, 0, 25, 5, 32, total_length, buffer); break; + case OR1K_OPERAND_RDDI : + { +{ + FLD (f_r1) = ((FLD (f_rdd32)) & (31)); + FLD (f_rdoff_10_1) = ((((SI) (FLD (f_rdd32)) >> (5))) & (1)); +} + errmsg = insert_normal (cd, fields->f_r1, 0, 0, 25, 5, 32, total_length, buffer); + if (errmsg) + break; + errmsg = insert_normal (cd, fields->f_rdoff_10_1, 0, 0, 10, 1, 32, total_length, buffer); + if (errmsg) + break; + } + break; case OR1K_OPERAND_RDSF : errmsg = insert_normal (cd, fields->f_r1, 0, 0, 25, 5, 32, total_length, buffer); break; @@ -647,8 +738,9 @@ or1k_cgen_insert_operand (CGEN_CPU_DESC cd, default : /* xgettext:c-format */ - fprintf (stderr, _("Unrecognized field %d while building insn.\n"), - opindex); + opcodes_error_handler + (_("internal error: unrecognized field %d while building insn"), + opindex); abort (); } @@ -687,6 +779,14 @@ or1k_cgen_extract_operand (CGEN_CPU_DESC cd, switch (opindex) { + case OR1K_OPERAND_DISP21 : + { + long value; + length = extract_normal (cd, ex_info, insn_value, 0|(1<> (13))))) << (13)); + fields->f_disp21 = value; + } + break; case OR1K_OPERAND_DISP26 : { long value; @@ -698,8 +798,26 @@ or1k_cgen_extract_operand (CGEN_CPU_DESC cd, case OR1K_OPERAND_RA : length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_r2); break; + case OR1K_OPERAND_RAD32F : + { + length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_r2); + if (length <= 0) break; + length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_raoff_9_1); + if (length <= 0) break; + FLD (f_rad32) = ((FLD (f_r2)) | (((FLD (f_raoff_9_1)) << (5)))); + } + break; case OR1K_OPERAND_RADF : - length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_r1); + length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_r2); + break; + case OR1K_OPERAND_RADI : + { + length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_r2); + if (length <= 0) break; + length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_raoff_9_1); + if (length <= 0) break; + FLD (f_rad32) = ((FLD (f_r2)) | (((FLD (f_raoff_9_1)) << (5)))); + } break; case OR1K_OPERAND_RASF : length = extract_normal (cd, ex_info, insn_value, 0, 0, 20, 5, 32, total_length, pc, & fields->f_r2); @@ -707,8 +825,26 @@ or1k_cgen_extract_operand (CGEN_CPU_DESC cd, case OR1K_OPERAND_RB : length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_r3); break; + case OR1K_OPERAND_RBD32F : + { + length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_r3); + if (length <= 0) break; + length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 1, 32, total_length, pc, & fields->f_rboff_8_1); + if (length <= 0) break; + FLD (f_rbd32) = ((FLD (f_r3)) | (((FLD (f_rboff_8_1)) << (5)))); + } + break; case OR1K_OPERAND_RBDF : - length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_r1); + length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_r3); + break; + case OR1K_OPERAND_RBDI : + { + length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_r3); + if (length <= 0) break; + length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 1, 32, total_length, pc, & fields->f_rboff_8_1); + if (length <= 0) break; + FLD (f_rbd32) = ((FLD (f_r3)) | (((FLD (f_rboff_8_1)) << (5)))); + } break; case OR1K_OPERAND_RBSF : length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 5, 32, total_length, pc, & fields->f_r3); @@ -716,9 +852,27 @@ or1k_cgen_extract_operand (CGEN_CPU_DESC cd, case OR1K_OPERAND_RD : length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_r1); break; + case OR1K_OPERAND_RDD32F : + { + length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_r1); + if (length <= 0) break; + length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 1, 32, total_length, pc, & fields->f_rdoff_10_1); + if (length <= 0) break; + FLD (f_rdd32) = ((FLD (f_r1)) | (((FLD (f_rdoff_10_1)) << (5)))); + } + break; case OR1K_OPERAND_RDDF : length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_r1); break; + case OR1K_OPERAND_RDDI : + { + length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_r1); + if (length <= 0) break; + length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 1, 32, total_length, pc, & fields->f_rdoff_10_1); + if (length <= 0) break; + FLD (f_rdd32) = ((FLD (f_r1)) | (((FLD (f_rdoff_10_1)) << (5)))); + } + break; case OR1K_OPERAND_RDSF : length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 5, 32, total_length, pc, & fields->f_r1); break; @@ -752,8 +906,9 @@ or1k_cgen_extract_operand (CGEN_CPU_DESC cd, default : /* xgettext:c-format */ - fprintf (stderr, _("Unrecognized field %d while decoding insn.\n"), - opindex); + opcodes_error_handler + (_("internal error: unrecognized field %d while decoding insn"), + opindex); abort (); } @@ -787,14 +942,23 @@ or1k_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, switch (opindex) { + case OR1K_OPERAND_DISP21 : + value = fields->f_disp21; + break; case OR1K_OPERAND_DISP26 : value = fields->f_disp26; break; case OR1K_OPERAND_RA : value = fields->f_r2; break; + case OR1K_OPERAND_RAD32F : + value = fields->f_rad32; + break; case OR1K_OPERAND_RADF : - value = fields->f_r1; + value = fields->f_r2; + break; + case OR1K_OPERAND_RADI : + value = fields->f_rad32; break; case OR1K_OPERAND_RASF : value = fields->f_r2; @@ -802,8 +966,14 @@ or1k_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RB : value = fields->f_r3; break; + case OR1K_OPERAND_RBD32F : + value = fields->f_rbd32; + break; case OR1K_OPERAND_RBDF : - value = fields->f_r1; + value = fields->f_r3; + break; + case OR1K_OPERAND_RBDI : + value = fields->f_rbd32; break; case OR1K_OPERAND_RBSF : value = fields->f_r3; @@ -811,9 +981,15 @@ or1k_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RD : value = fields->f_r1; break; + case OR1K_OPERAND_RDD32F : + value = fields->f_rdd32; + break; case OR1K_OPERAND_RDDF : value = fields->f_r1; break; + case OR1K_OPERAND_RDDI : + value = fields->f_rdd32; + break; case OR1K_OPERAND_RDSF : value = fields->f_r1; break; @@ -835,8 +1011,9 @@ or1k_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, default : /* xgettext:c-format */ - fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"), - opindex); + opcodes_error_handler + (_("internal error: unrecognized field %d while getting int operand"), + opindex); abort (); } @@ -852,14 +1029,23 @@ or1k_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, switch (opindex) { + case OR1K_OPERAND_DISP21 : + value = fields->f_disp21; + break; case OR1K_OPERAND_DISP26 : value = fields->f_disp26; break; case OR1K_OPERAND_RA : value = fields->f_r2; break; + case OR1K_OPERAND_RAD32F : + value = fields->f_rad32; + break; case OR1K_OPERAND_RADF : - value = fields->f_r1; + value = fields->f_r2; + break; + case OR1K_OPERAND_RADI : + value = fields->f_rad32; break; case OR1K_OPERAND_RASF : value = fields->f_r2; @@ -867,8 +1053,14 @@ or1k_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RB : value = fields->f_r3; break; + case OR1K_OPERAND_RBD32F : + value = fields->f_rbd32; + break; case OR1K_OPERAND_RBDF : - value = fields->f_r1; + value = fields->f_r3; + break; + case OR1K_OPERAND_RBDI : + value = fields->f_rbd32; break; case OR1K_OPERAND_RBSF : value = fields->f_r3; @@ -876,9 +1068,15 @@ or1k_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RD : value = fields->f_r1; break; + case OR1K_OPERAND_RDD32F : + value = fields->f_rdd32; + break; case OR1K_OPERAND_RDDF : value = fields->f_r1; break; + case OR1K_OPERAND_RDDI : + value = fields->f_rdd32; + break; case OR1K_OPERAND_RDSF : value = fields->f_r1; break; @@ -900,8 +1098,9 @@ or1k_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, default : /* xgettext:c-format */ - fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"), - opindex); + opcodes_error_handler + (_("internal error: unrecognized field %d while getting vma operand"), + opindex); abort (); } @@ -924,14 +1123,23 @@ or1k_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, { switch (opindex) { + case OR1K_OPERAND_DISP21 : + fields->f_disp21 = value; + break; case OR1K_OPERAND_DISP26 : fields->f_disp26 = value; break; case OR1K_OPERAND_RA : fields->f_r2 = value; break; + case OR1K_OPERAND_RAD32F : + fields->f_rad32 = value; + break; case OR1K_OPERAND_RADF : - fields->f_r1 = value; + fields->f_r2 = value; + break; + case OR1K_OPERAND_RADI : + fields->f_rad32 = value; break; case OR1K_OPERAND_RASF : fields->f_r2 = value; @@ -939,8 +1147,14 @@ or1k_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RB : fields->f_r3 = value; break; + case OR1K_OPERAND_RBD32F : + fields->f_rbd32 = value; + break; case OR1K_OPERAND_RBDF : - fields->f_r1 = value; + fields->f_r3 = value; + break; + case OR1K_OPERAND_RBDI : + fields->f_rbd32 = value; break; case OR1K_OPERAND_RBSF : fields->f_r3 = value; @@ -948,9 +1162,15 @@ or1k_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RD : fields->f_r1 = value; break; + case OR1K_OPERAND_RDD32F : + fields->f_rdd32 = value; + break; case OR1K_OPERAND_RDDF : fields->f_r1 = value; break; + case OR1K_OPERAND_RDDI : + fields->f_rdd32 = value; + break; case OR1K_OPERAND_RDSF : fields->f_r1 = value; break; @@ -972,8 +1192,9 @@ or1k_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, default : /* xgettext:c-format */ - fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"), - opindex); + opcodes_error_handler + (_("internal error: unrecognized field %d while setting int operand"), + opindex); abort (); } } @@ -986,14 +1207,23 @@ or1k_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, { switch (opindex) { + case OR1K_OPERAND_DISP21 : + fields->f_disp21 = value; + break; case OR1K_OPERAND_DISP26 : fields->f_disp26 = value; break; case OR1K_OPERAND_RA : fields->f_r2 = value; break; + case OR1K_OPERAND_RAD32F : + fields->f_rad32 = value; + break; case OR1K_OPERAND_RADF : - fields->f_r1 = value; + fields->f_r2 = value; + break; + case OR1K_OPERAND_RADI : + fields->f_rad32 = value; break; case OR1K_OPERAND_RASF : fields->f_r2 = value; @@ -1001,8 +1231,14 @@ or1k_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RB : fields->f_r3 = value; break; + case OR1K_OPERAND_RBD32F : + fields->f_rbd32 = value; + break; case OR1K_OPERAND_RBDF : - fields->f_r1 = value; + fields->f_r3 = value; + break; + case OR1K_OPERAND_RBDI : + fields->f_rbd32 = value; break; case OR1K_OPERAND_RBSF : fields->f_r3 = value; @@ -1010,9 +1246,15 @@ or1k_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case OR1K_OPERAND_RD : fields->f_r1 = value; break; + case OR1K_OPERAND_RDD32F : + fields->f_rdd32 = value; + break; case OR1K_OPERAND_RDDF : fields->f_r1 = value; break; + case OR1K_OPERAND_RDDI : + fields->f_rdd32 = value; + break; case OR1K_OPERAND_RDSF : fields->f_r1 = value; break; @@ -1034,8 +1276,9 @@ or1k_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, default : /* xgettext:c-format */ - fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"), - opindex); + opcodes_error_handler + (_("internal error: unrecognized field %d while setting vma operand"), + opindex); abort (); } }