From: YunQiang Su Date: Wed, 19 Jun 2024 16:52:25 +0000 (+0800) Subject: MIPS/GAS: Omit LI 0 for condition trap X-Git-Tag: binutils-2_43~145 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bfa257b407270d1c808b31fbd97da779e0fd20d2;p=thirdparty%2Fbinutils-gdb.git MIPS/GAS: Omit LI 0 for condition trap MIPSr6 removes condition trap instructions with imm, so we expand the instruction like "tne $2,IMM" to li $at,IMM tne $2,$at While if IMM is 0, we can use tne $2,$zero only. --- diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 8f54cb8937a..863f56d5f8c 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -13815,9 +13815,14 @@ macro (struct mips_cl_insn *ip, char *str) case M_TNE_I: s = "tne"; trap: - used_at = 1; - load_register (AT, &imm_expr, GPR_SIZE == 64); - macro_build (NULL, s, "s,t", op[0], AT); + if (imm_expr.X_add_number != 0) + { + used_at = 1; + load_register (AT, &imm_expr, GPR_SIZE == 64); + macro_build (NULL, s, "s,t", op[0], AT); + } + else + macro_build (NULL, s, "s,t", op[0], ZERO); break; case M_TRUNCWS: diff --git a/gas/testsuite/gas/mips/cond-trap-imm-zero.d b/gas/testsuite/gas/mips/cond-trap-imm-zero.d new file mode 100644 index 00000000000..39d4c9609b2 --- /dev/null +++ b/gas/testsuite/gas/mips/cond-trap-imm-zero.d @@ -0,0 +1,16 @@ +#objdump: -dr +#name: Condition Trap convert IMM0 to REG0 (MIPSr6) +#as: -32 + +.*: +file format .* + +Disassembly of section \.text: + +00000000 : + 0: 00c00034 teq a2,zero + 4: 00c00030 tge a2,zero + 8: 00c00031 tgeu a2,zero + c: 00c00032 tlt a2,zero + 10: 00c00033 tltu a2,zero + 14: 00c00036 tne a2,zero + \.\.\. diff --git a/gas/testsuite/gas/mips/cond-trap-imm-zero.s b/gas/testsuite/gas/mips/cond-trap-imm-zero.s new file mode 100644 index 00000000000..84cc7f1f842 --- /dev/null +++ b/gas/testsuite/gas/mips/cond-trap-imm-zero.s @@ -0,0 +1,9 @@ + .set noreorder + .set nomacro +f: + teq $6,0 + tge $6,0 + tgeu $6,0 + tlt $6,0 + tltu $6,0 + tne $6,0 diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index acb7fb8c2a6..c5d74538bd6 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -2180,4 +2180,6 @@ if { [istarget mips*-*-vxworks*] } { if [istarget *-*-irix*] { run_dump_test "irix-no-pdr" } + + run_dump_test_arches "cond-trap-imm-zero" [mips_arch_list_matching mips32r6] }