From d369f97b246e30a06bddeb34d1bc53ceaa657b3c Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 19 Aug 2013 19:26:10 +0000 Subject: gas/ * config/tc-mips.c (mips_arg_info): Remove soft_match. (match_out_of_range, match_not_constant): New functions. (match_const_int): Remove fallback parameter and check for soft_match. Use match_not_constant. (match_mapped_int_operand, match_addiusp_operand) (match_perf_reg_operand, match_save_restore_list_operand) (match_mdmx_imm_reg_operand): Update accordingly. Use match_out_of_range and set_insn_error* instead of as_bad. (match_int_operand): Likewise. Use match_not_constant in the !allows_nonconst case. (match_float_constant): Report invalid float constants. (match_insn, match_mips16_insn): Remove soft_match code. Rely on match_float_constant to check for invalid constants. Fail the match if match_const_int or match_float_constant return false. (mips_ip): Update accordingly. (mips16_ip): Likewise. Undo null termination of instruction name once lookup is complete. gas/testsuite/ * gas/mips/ext-ill.l, gas/mips/lui-1.l, gas/mips/mips16e-64.l, gas/mips/mips32r2-ill-fp64.l, gas/mips/mips32r2-ill-nofp.l, gas/mips/mips32r2-ill.l, gas/mips/mips64r2-ill.l, gas/mips/octeon-ill.l, gas/mips/r5900-error-vu0.l, gas/mips/vr5400-ill.l: Adjust expected errors. * gas/mips/micromips-size-0.l, gas/mips/micromips-size-0.s: Likewise. Add new tests. * gas/mips/mips16e-save-err.s, gas/mips/mips16e-save-err.l: New test. * gas/mips/mips.exp: Run it. --- gas/testsuite/ChangeLog | 12 +++++ gas/testsuite/gas/mips/ext-ill.l | 8 +-- gas/testsuite/gas/mips/lui-1.l | 4 +- gas/testsuite/gas/mips/micromips-size-0.l | 10 +++- gas/testsuite/gas/mips/micromips-size-0.s | 21 ++++++++ gas/testsuite/gas/mips/mips.exp | 1 + gas/testsuite/gas/mips/mips16e-64.l | 4 +- gas/testsuite/gas/mips/mips16e-save-err.l | 13 +++++ gas/testsuite/gas/mips/mips16e-save-err.s | 18 +++++++ gas/testsuite/gas/mips/mips32r2-ill-fp64.l | 24 ++++----- gas/testsuite/gas/mips/mips32r2-ill-nofp.l | 24 ++++----- gas/testsuite/gas/mips/mips32r2-ill.l | 24 ++++----- gas/testsuite/gas/mips/mips64r2-ill.l | 80 +++++++++++++++--------------- gas/testsuite/gas/mips/octeon-ill.l | 48 +++++++++--------- gas/testsuite/gas/mips/r5900-error-vu0.l | 26 +++++----- gas/testsuite/gas/mips/vr5400-ill.l | 8 +-- 16 files changed, 199 insertions(+), 126 deletions(-) create mode 100644 gas/testsuite/gas/mips/mips16e-save-err.l create mode 100644 gas/testsuite/gas/mips/mips16e-save-err.s (limited to 'gas/testsuite') diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index b8d15d0f70..128facd549 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2013-08-19 Richard Sandiford + + * gas/mips/ext-ill.l, gas/mips/lui-1.l, gas/mips/mips16e-64.l, + gas/mips/mips32r2-ill-fp64.l, gas/mips/mips32r2-ill-nofp.l, + gas/mips/mips32r2-ill.l, gas/mips/mips64r2-ill.l, + gas/mips/octeon-ill.l, gas/mips/r5900-error-vu0.l, + gas/mips/vr5400-ill.l: Adjust expected errors. + * gas/mips/micromips-size-0.l, + gas/mips/micromips-size-0.s: Likewise. Add new tests. + * gas/mips/mips16e-save-err.s, gas/mips/mips16e-save-err.l: New test. + * gas/mips/mips.exp: Run it. + 2013-08-19 Richard Sandiford * gas/mips/micromips-ill.l: Expect "floating-point expression required" diff --git a/gas/testsuite/gas/mips/ext-ill.l b/gas/testsuite/gas/mips/ext-ill.l index b61f03c24b..606c047d9e 100644 --- a/gas/testsuite/gas/mips/ext-ill.l +++ b/gas/testsuite/gas/mips/ext-ill.l @@ -1,6 +1,6 @@ .*: Assembler messages: -.*:5: Error: Invalid field specification \(position 1, size 0\) +.*:5: Error: operand 4 out of range `ext \$2,\$3,1,0' .*:6: Error: Invalid field specification \(position 1, size 0\) -.*:7: Error: Invalid field specification \(position 31, size 2\) -.*:8: Error: Invalid field specification \(position 1, size 32\) -.*:9: Error: Invalid field specification \(position 33, size 0\) +.*:7: Error: operand 4 out of range `dextm \$2,\$3,31,2' +.*:8: Error: operand 4 out of range `dextm \$2,\$3,1,32' +.*:9: Error: operand 4 out of range `dextu \$2,\$3,33,0' diff --git a/gas/testsuite/gas/mips/lui-1.l b/gas/testsuite/gas/mips/lui-1.l index 464bd75ffe..d2f0c2d830 100644 --- a/gas/testsuite/gas/mips/lui-1.l +++ b/gas/testsuite/gas/mips/lui-1.l @@ -1,5 +1,5 @@ .*\.s: Assembler messages: -.*\.s:5: Error: Operand 2 of `lui' must be in the range \[0x0, 0xffff\], was -1. -.*\.s:6: Error: Operand 2 of `lui' must be in the range \[0x0, 0xffff\], was 0x10000. +.*\.s:5: Error: operand 2 out of range `lui \$2,-1' +.*\.s:6: Error: operand 2 out of range `lui \$2,65536' .*\.s:7: Error: bignum invalid .*\.s:8: Error: register value used as expression diff --git a/gas/testsuite/gas/mips/micromips-size-0.l b/gas/testsuite/gas/mips/micromips-size-0.l index e7238b082b..e34d83b42f 100644 --- a/gas/testsuite/gas/mips/micromips-size-0.l +++ b/gas/testsuite/gas/mips/micromips-size-0.l @@ -26,7 +26,7 @@ .*:108: Warning: Wrong size instruction in a 32-bit branch delay slot .*:110: Warning: Wrong size instruction in a 32-bit branch delay slot .*:112: Error: Unrecognized 32-bit version of microMIPS opcode `addiusp32 256' -.*:120: Error: Illegal operands `sll16 \$2,\$3,13' +.*:120: Error: operand 3 out of range `sll16 \$2,\$3,13' .*:123: Error: Illegal operands `sll16 \$10,\$11,5' .*:128: Error: Unrecognized 16-bit version of microMIPS opcode `dsll16 \$2,\$3,5' .*:130: Error: Unrecognized 16-bit version of microMIPS opcode `dsll3216 \$2,\$3,5' @@ -34,3 +34,11 @@ .*:135: Error: Unrecognized 16-bit version of microMIPS opcode `dsll3216 \$2,\$3,13' .*:138: Error: Unrecognized 16-bit version of microMIPS opcode `dsll16 \$10,\$11,5' .*:140: Error: Unrecognized 16-bit version of microMIPS opcode `dsll3216 \$10,\$11,5' +.*:145: Error: operand 3 out of range `addiu16 \$2,\$4,5' +.*:146: Error: operand 3 out of range `addiu16 \$2,\$4,7' +.*:149: Error: operand 3 out of range `andi16 \$2,\$4,5' +.*:154: Error: operand 1 out of range `addiusp16 4' +.*:155: Error: operand 1 out of range `addiusp16 7' +.*:157: Error: operand 1 out of range `addiusp16 10' +.*:160: Error: operand 1 out of range `addiusp16 1032' +.*:162: Error: operand 1 out of range `addiusp16 -1036' diff --git a/gas/testsuite/gas/mips/micromips-size-0.s b/gas/testsuite/gas/mips/micromips-size-0.s index c58e54326e..bc2588d712 100644 --- a/gas/testsuite/gas/mips/micromips-size-0.s +++ b/gas/testsuite/gas/mips/micromips-size-0.s @@ -140,6 +140,27 @@ foo: dsll3216 $10, $11, 5 dsll3232 $10, $11, 5 +# Test out-of-range mapped constants + addiu16 $2, $4, 4 # OK + addiu16 $2, $4, 5 # error + addiu16 $2, $4, 7 # error + addiu16 $2, $4, 8 # OK + andi16 $2, $4, 4 # OK + andi16 $2, $4, 5 # error + andi16 $2, $4, 7 # OK + andi16 $2, $4, 8 # OK + +# Test invalid ADDIUSP + addiusp16 4 # error + addiusp16 7 # error + addiusp16 8 # OK + addiusp16 10 # error + addiusp16 12 # OK + addiusp16 1028 # OK + addiusp16 1032 # error + addiusp16 -1032 # OK + addiusp16 -1036 # error + # Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ... .align 2 .space 8 diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index d4a0410c3d..4538aca94c 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -1039,6 +1039,7 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "mips16e-jrc" run_dump_test "mips16e-save" + run_list_test "mips16e-save-err" "-march=mips32 -32" run_dump_test "mips16e-64" run_list_test "mips16e-64" "-march=mips32 -32" run_dump_test "mips16-intermix" diff --git a/gas/testsuite/gas/mips/mips16e-64.l b/gas/testsuite/gas/mips/mips16e-64.l index 1202212fe9..378959a6f8 100644 --- a/gas/testsuite/gas/mips/mips16e-64.l +++ b/gas/testsuite/gas/mips/mips16e-64.l @@ -1,3 +1,3 @@ .*: Assembler messages: -.*: Error: Opcode not supported on this processor: .* (.*) `sew' -.*: Error: Opcode not supported on this processor: .* (.*) `zew' +.*: Error: Opcode not supported on this processor: .* (.*) `sew \$4' +.*: Error: Opcode not supported on this processor: .* (.*) `zew \$4' diff --git a/gas/testsuite/gas/mips/mips16e-save-err.l b/gas/testsuite/gas/mips/mips16e-save-err.l new file mode 100644 index 0000000000..3403fc7a0d --- /dev/null +++ b/gas/testsuite/gas/mips/mips16e-save-err.l @@ -0,0 +1,13 @@ +.*: Assembler messages: +.*:2: Error: Illegal operands `save \$3,100' +.*:3: Error: missing frame size `save \$4' +.*:4: Error: frame size specified twice `save \$4,100,200' +.*:5: Error: operand 2 must be constant `save \$4,foo' +.*:7: Error: invalid frame size `save \$4,1' +.*:8: Error: invalid frame size `save \$4,7' +.*:10: Error: invalid frame size `save \$4,12' +.*:11: Error: invalid frame size `save \$4,2048' +.*:12: Error: invalid frame size `save \$4,2052' +.*:14: Error: Illegal operands `save \$4,\$6,0' +.*:15: Error: Illegal operands `save 0,\$5,\$7' +.*:18: Error: Illegal operands `save \$16,\$18,\$20,0' diff --git a/gas/testsuite/gas/mips/mips16e-save-err.s b/gas/testsuite/gas/mips/mips16e-save-err.s new file mode 100644 index 0000000000..afed6c6128 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16e-save-err.s @@ -0,0 +1,18 @@ + .set mips16 + save $3,100 # error + save $4 # error + save $4,100,200 # error + save $4,foo # error + save $4,0 # OK + save $4,1 # error + save $4,7 # error + save $4,8 # OK + save $4,12 # error + save $4,2048 # OK + save $4,2052 # error + save $4,0,$7 # error + save $4,$6,0 # error + save 0,$5,$7 # error + save $16,$18,0 # OK + save $16,$18,$19,0 # OK + save $16,$18,$20,0 # error diff --git a/gas/testsuite/gas/mips/mips32r2-ill-fp64.l b/gas/testsuite/gas/mips/mips32r2-ill-fp64.l index 3e0e30ee91..adffffde61 100644 --- a/gas/testsuite/gas/mips/mips32r2-ill-fp64.l +++ b/gas/testsuite/gas/mips/mips32r2-ill-fp64.l @@ -1,13 +1,13 @@ .*: Assembler messages: -.*:12: Error: Operand 3 of `ext' must be in the range \[0, 31\], was -1. -.*:15: Error: Operand 3 of `ext' must be in the range \[0, 31\], was 32. -.*:18: Error: Invalid field specification \(position 0, size 0\) -.*:21: Error: Invalid field specification \(position 0, size 33\) -.*:24: Error: Invalid field specification \(position 0, size 0\) -.*:27: Error: Invalid field specification \(position 31, size 2\) -.*:30: Error: Operand 3 of `ins' must be in the range \[0, 31\], was -1. -.*:33: Error: Operand 3 of `ins' must be in the range \[0, 31\], was 32. -.*:36: Error: Invalid field specification \(position 0, size 0\) -.*:39: Error: Invalid field specification \(position 0, size 33\) -.*:42: Error: Invalid field specification \(position 0, size 0\) -.*:45: Error: Invalid field specification \(position 31, size 2\) +.*:12: Error: operand 3 out of range `ext \$4,\$5,-1,1' +.*:15: Error: operand 3 out of range `ext \$4,\$5,32,1' +.*:18: Error: operand 4 out of range `ext \$4,\$5,0,0' +.*:21: Error: operand 4 out of range `ext \$4,\$5,0,33' +.*:24: Error: operand 4 out of range `ext \$4,\$5,0,0' +.*:27: Error: operand 4 out of range `ext \$4,\$5,31,2' +.*:30: Error: operand 3 out of range `ins \$4,\$5,-1,1' +.*:33: Error: operand 3 out of range `ins \$4,\$5,32,1' +.*:36: Error: operand 4 out of range `ins \$4,\$5,0,0' +.*:39: Error: operand 4 out of range `ins \$4,\$5,0,33' +.*:42: Error: operand 4 out of range `ins \$4,\$5,0,0' +.*:45: Error: operand 4 out of range `ins \$4,\$5,31,2' diff --git a/gas/testsuite/gas/mips/mips32r2-ill-nofp.l b/gas/testsuite/gas/mips/mips32r2-ill-nofp.l index 3e0e30ee91..adffffde61 100644 --- a/gas/testsuite/gas/mips/mips32r2-ill-nofp.l +++ b/gas/testsuite/gas/mips/mips32r2-ill-nofp.l @@ -1,13 +1,13 @@ .*: Assembler messages: -.*:12: Error: Operand 3 of `ext' must be in the range \[0, 31\], was -1. -.*:15: Error: Operand 3 of `ext' must be in the range \[0, 31\], was 32. -.*:18: Error: Invalid field specification \(position 0, size 0\) -.*:21: Error: Invalid field specification \(position 0, size 33\) -.*:24: Error: Invalid field specification \(position 0, size 0\) -.*:27: Error: Invalid field specification \(position 31, size 2\) -.*:30: Error: Operand 3 of `ins' must be in the range \[0, 31\], was -1. -.*:33: Error: Operand 3 of `ins' must be in the range \[0, 31\], was 32. -.*:36: Error: Invalid field specification \(position 0, size 0\) -.*:39: Error: Invalid field specification \(position 0, size 33\) -.*:42: Error: Invalid field specification \(position 0, size 0\) -.*:45: Error: Invalid field specification \(position 31, size 2\) +.*:12: Error: operand 3 out of range `ext \$4,\$5,-1,1' +.*:15: Error: operand 3 out of range `ext \$4,\$5,32,1' +.*:18: Error: operand 4 out of range `ext \$4,\$5,0,0' +.*:21: Error: operand 4 out of range `ext \$4,\$5,0,33' +.*:24: Error: operand 4 out of range `ext \$4,\$5,0,0' +.*:27: Error: operand 4 out of range `ext \$4,\$5,31,2' +.*:30: Error: operand 3 out of range `ins \$4,\$5,-1,1' +.*:33: Error: operand 3 out of range `ins \$4,\$5,32,1' +.*:36: Error: operand 4 out of range `ins \$4,\$5,0,0' +.*:39: Error: operand 4 out of range `ins \$4,\$5,0,33' +.*:42: Error: operand 4 out of range `ins \$4,\$5,0,0' +.*:45: Error: operand 4 out of range `ins \$4,\$5,31,2' diff --git a/gas/testsuite/gas/mips/mips32r2-ill.l b/gas/testsuite/gas/mips/mips32r2-ill.l index 7f9bedc7e7..48cc783c23 100644 --- a/gas/testsuite/gas/mips/mips32r2-ill.l +++ b/gas/testsuite/gas/mips/mips32r2-ill.l @@ -1,15 +1,15 @@ .*: Assembler messages: -.*:12: Error: Operand 3 of `ext' must be in the range \[0, 31\], was -1. -.*:15: Error: Operand 3 of `ext' must be in the range \[0, 31\], was 32. -.*:18: Error: Invalid field specification \(position 0, size 0\) -.*:21: Error: Invalid field specification \(position 0, size 33\) -.*:24: Error: Invalid field specification \(position 0, size 0\) -.*:27: Error: Invalid field specification \(position 31, size 2\) -.*:30: Error: Operand 3 of `ins' must be in the range \[0, 31\], was -1. -.*:33: Error: Operand 3 of `ins' must be in the range \[0, 31\], was 32. -.*:36: Error: Invalid field specification \(position 0, size 0\) -.*:39: Error: Invalid field specification \(position 0, size 33\) -.*:42: Error: Invalid field specification \(position 0, size 0\) -.*:45: Error: Invalid field specification \(position 31, size 2\) +.*:12: Error: operand 3 out of range `ext \$4,\$5,-1,1' +.*:15: Error: operand 3 out of range `ext \$4,\$5,32,1' +.*:18: Error: operand 4 out of range `ext \$4,\$5,0,0' +.*:21: Error: operand 4 out of range `ext \$4,\$5,0,33' +.*:24: Error: operand 4 out of range `ext \$4,\$5,0,0' +.*:27: Error: operand 4 out of range `ext \$4,\$5,31,2' +.*:30: Error: operand 3 out of range `ins \$4,\$5,-1,1' +.*:33: Error: operand 3 out of range `ins \$4,\$5,32,1' +.*:36: Error: operand 4 out of range `ins \$4,\$5,0,0' +.*:39: Error: operand 4 out of range `ins \$4,\$5,0,33' +.*:42: Error: operand 4 out of range `ins \$4,\$5,0,0' +.*:45: Error: operand 4 out of range `ins \$4,\$5,31,2' .*:54: Warning: Float register should be even, was 1 .*:57: Warning: Float register should be even, was 1 diff --git a/gas/testsuite/gas/mips/mips64r2-ill.l b/gas/testsuite/gas/mips/mips64r2-ill.l index 6cc6b35e8f..aa32a44461 100644 --- a/gas/testsuite/gas/mips/mips64r2-ill.l +++ b/gas/testsuite/gas/mips/mips64r2-ill.l @@ -7,22 +7,22 @@ .*:33: Error: Invalid field specification \(position 63, size 2\) .*:34: Error: Invalid field specification \(position 63, size 63\) .*:35: Error: Invalid field specification \(position 63, size 64\) -.*:40: Error: Operand 3 of `dextm' must be in the range \[0, 31\], was -1. -.*:43: Error: Operand 3 of `dextm' must be in the range \[0, 31\], was 32. -.*:46: Error: Invalid field specification \(position 0, size 32\) -.*:49: Error: Invalid field specification \(position 0, size 65\) -.*:59: Error: Invalid field specification \(position 1, size 64\) -.*:61: Error: Invalid field specification \(position 31, size 34\) -.*:62: Error: Invalid field specification \(position 31, size 63\) -.*:63: Error: Invalid field specification \(position 31, size 64\) -.*:68: Error: Operand 3 of `dextu' must be in the range \[32, 63\], was 31. -.*:71: Error: Operand 3 of `dextu' must be in the range \[32, 63\], was 64. -.*:74: Error: Invalid field specification \(position 32, size 0\) -.*:77: Error: Invalid field specification \(position 32, size 33\) -.*:87: Error: Invalid field specification \(position 33, size 32\) -.*:89: Error: Invalid field specification \(position 63, size 2\) -.*:90: Error: Invalid field specification \(position 63, size 31\) -.*:91: Error: Invalid field specification \(position 63, size 32\) +.*:40: Error: operand 3 out of range `dextm \$4,\$5,-1,33' +.*:43: Error: operand 3 out of range `dextm \$4,\$5,32,33' +.*:46: Error: operand 4 out of range `dextm \$4,\$5,0,32' +.*:49: Error: operand 4 out of range `dextm \$4,\$5,0,65' +.*:59: Error: operand 4 out of range `dextm \$4,\$5,1,64' +.*:61: Error: operand 4 out of range `dextm \$4,\$5,31,34' +.*:62: Error: operand 4 out of range `dextm \$4,\$5,31,63' +.*:63: Error: operand 4 out of range `dextm \$4,\$5,31,64' +.*:68: Error: operand 3 out of range `dextu \$4,\$5,31,1' +.*:71: Error: operand 3 out of range `dextu \$4,\$5,64,1' +.*:74: Error: operand 4 out of range `dextu \$4,\$5,32,0' +.*:77: Error: operand 4 out of range `dextu \$4,\$5,32,33' +.*:87: Error: operand 4 out of range `dextu \$4,\$5,33,32' +.*:89: Error: operand 4 out of range `dextu \$4,\$5,63,2' +.*:90: Error: operand 4 out of range `dextu \$4,\$5,63,31' +.*:91: Error: operand 4 out of range `dextu \$4,\$5,63,32' .*:96: Error: Operand 3 of `dins' must be in the range \[0, 63\], was -1. .*:99: Error: Operand 3 of `dins' must be in the range \[0, 63\], was 64. .*:102: Error: Invalid field specification \(position 0, size 0\) @@ -31,27 +31,27 @@ .*:117: Error: Invalid field specification \(position 63, size 2\) .*:118: Error: Invalid field specification \(position 63, size 63\) .*:119: Error: Invalid field specification \(position 63, size 64\) -.*:124: Error: Operand 3 of `dinsm' must be in the range \[0, 31\], was -1. -.*:127: Error: Operand 3 of `dinsm' must be in the range \[0, 31\], was 32. -.*:130: Error: Invalid field specification \(position 31, size 1\) -.*:133: Error: Invalid field specification \(position 0, size 65\) -.*:136: Error: Invalid field specification \(position 0, size 2\) -.*:137: Error: Invalid field specification \(position 0, size 3\) -.*:140: Error: Invalid field specification \(position 1, size 2\) -.*:141: Error: Invalid field specification \(position 1, size 3\) -.*:143: Error: Invalid field specification \(position 1, size 64\) -.*:144: Error: Invalid field specification \(position 30, size 2\) -.*:146: Error: Invalid field specification \(position 30, size 63\) -.*:147: Error: Invalid field specification \(position 30, size 64\) -.*:150: Error: Invalid field specification \(position 31, size 63\) -.*:151: Error: Invalid field specification \(position 31, size 64\) -.*:156: Error: Operand 3 of `dinsu' must be in the range \[32, 63\], was 31. -.*:159: Error: Operand 3 of `dinsu' must be in the range \[32, 63\], was 64. -.*:162: Error: Invalid field specification \(position 32, size 0\) -.*:165: Error: Invalid field specification \(position 32, size 33\) -.*:175: Error: Invalid field specification \(position 33, size 32\) -.*:178: Error: Invalid field specification \(position 62, size 31\) -.*:179: Error: Invalid field specification \(position 62, size 32\) -.*:181: Error: Invalid field specification \(position 63, size 2\) -.*:182: Error: Invalid field specification \(position 63, size 31\) -.*:183: Error: Invalid field specification \(position 63, size 32\) +.*:124: Error: operand 3 out of range `dinsm \$4,\$5,-1,33' +.*:127: Error: operand 3 out of range `dinsm \$4,\$5,32,33' +.*:130: Error: operand 4 out of range `dinsm \$4,\$5,31,1' +.*:133: Error: operand 4 out of range `dinsm \$4,\$5,0,65' +.*:136: Error: operand 4 out of range `dinsm \$4,\$5,0,2' +.*:137: Error: operand 4 out of range `dinsm \$4,\$5,0,3' +.*:140: Error: operand 4 out of range `dinsm \$4,\$5,1,2' +.*:141: Error: operand 4 out of range `dinsm \$4,\$5,1,3' +.*:143: Error: operand 4 out of range `dinsm \$4,\$5,1,64' +.*:144: Error: operand 4 out of range `dinsm \$4,\$5,30,2' +.*:146: Error: operand 4 out of range `dinsm \$4,\$5,30,63' +.*:147: Error: operand 4 out of range `dinsm \$4,\$5,30,64' +.*:150: Error: operand 4 out of range `dinsm \$4,\$5,31,63' +.*:151: Error: operand 4 out of range `dinsm \$4,\$5,31,64' +.*:156: Error: operand 3 out of range `dinsu \$4,\$5,31,1' +.*:159: Error: operand 3 out of range `dinsu \$4,\$5,64,1' +.*:162: Error: operand 4 out of range `dinsu \$4,\$5,32,0' +.*:165: Error: operand 4 out of range `dinsu \$4,\$5,32,33' +.*:175: Error: operand 4 out of range `dinsu \$4,\$5,33,32' +.*:178: Error: operand 4 out of range `dinsu \$4,\$5,62,31' +.*:179: Error: operand 4 out of range `dinsu \$4,\$5,62,32' +.*:181: Error: operand 4 out of range `dinsu \$4,\$5,63,2' +.*:182: Error: operand 4 out of range `dinsu \$4,\$5,63,31' +.*:183: Error: operand 4 out of range `dinsu \$4,\$5,63,32' diff --git a/gas/testsuite/gas/mips/octeon-ill.l b/gas/testsuite/gas/mips/octeon-ill.l index 6ff4fde6d1..1664e31d08 100644 --- a/gas/testsuite/gas/mips/octeon-ill.l +++ b/gas/testsuite/gas/mips/octeon-ill.l @@ -1,13 +1,13 @@ .*: Assembler messages: -.*:5: Error: Operand 2 of `bbit032' must be in the range \[0, 31\], was 51. -.*:7: Error: Operand 2 of `bbit0' must be in the range \[0, 31\], was 71. -.*:10: Error: Operand 2 of `bbit132' must be in the range \[0, 31\], was 49. -.*:12: Error: Operand 2 of `bbit1' must be in the range \[0, 31\], was 74. -.*:15: Error: Invalid field specification \(position 0, size 37\) -.*:17: Error: Operand 3 of `cins32' must be in the range \[0, 31\], was 39. -.*:18: Error: Invalid field specification \(position 7, size 25\) -.*:20: Error: Operand 3 of `cins' must be in the range \[0, 31\], was 64. -.*:21: Error: Invalid field specification \(position 50, size 14\) +.*:5: Error: operand 2 out of range `bbit032 \$23,51,foo' +.*:7: Error: operand 2 out of range `bbit0 \$23,71,foo' +.*:10: Error: operand 2 out of range `bbit132 \$23,49,foo' +.*:12: Error: operand 2 out of range `bbit1 \$23,74,foo' +.*:15: Error: operand 3 out of range `cins \$2,0,37' +.*:17: Error: operand 3 out of range `cins32 \$19,\$31,39,12' +.*:18: Error: operand 4 out of range `cins32 \$17,\$20,7,25' +.*:20: Error: operand 3 out of range `cins \$24,\$10,64,8' +.*:21: Error: operand 4 out of range `cins \$21,\$30,50,14' .*:23: Error: Opcode not supported on this processor.* .*:24: Error: Opcode not supported on this processor.* .*:25: Error: Opcode not supported on this processor.* @@ -28,18 +28,18 @@ .*:41: Error: Opcode not supported on this processor.* .*:42: Error: Opcode not supported on this processor.* .*:43: Error: Opcode not supported on this processor.* -.*:45: Error: Illegal operands `dmfc2 \$2,0x10000' -.*:46: Error: Illegal operands `dmtc2 \$2,0x12345' -.*:47: Error: Illegal operands `dmfc2 \$9,\$12' -.*:48: Error: Illegal operands `dmfc2 \$4,\$15,4' -.*:49: Error: Illegal operands `dmtc2 \$16,\$8' -.*:50: Error: Illegal operands `dmtc2 \$22,\$7,\$4' -.*:52: Error: Invalid field specification \(position 26, size 32\) -.*:54: Error: Operand 3 of `exts32' must be in the range \[0, 31\], was 32. -.*:55: Error: Invalid field specification \(position 3, size 29\) -.*:57: Error: Operand 3 of `exts' must be in the range \[0, 31\], was 70. -.*:58: Error: Invalid field specification \(position 39, size 25\) -.*:60: Error: Operand 3 of `seqi' must be in the range \[-512, 511\], was 512. -.*:61: Error: Operand 2 of `seqi' must be in the range \[-512, 511\], was -771. -.*:62: Error: Operand 3 of `snei' must be in the range \[-512, 511\], was 615. -.*:63: Error: Operand 2 of `snei' must be in the range \[-512, 511\], was -513. +.*:45: Error: operand 2 out of range `dmfc2 \$2,0x10000' +.*:46: Error: operand 2 out of range `dmtc2 \$2,0x12345' +.*:47: Error: operand 2 must be constant `dmfc2 \$9,\$12' +.*:48: Error: operand 2 must be constant `dmfc2 \$4,\$15,4' +.*:49: Error: operand 2 must be constant `dmtc2 \$16,\$8' +.*:50: Error: operand 2 must be constant `dmtc2 \$22,\$7,\$4' +.*:52: Error: operand 3 out of range `exts \$26,26,32' +.*:54: Error: operand 3 out of range `exts32 \$7,\$21,32,10' +.*:55: Error: operand 4 out of range `exts32 \$31,\$13,3,29' +.*:57: Error: operand 3 out of range `exts \$14,\$29,70,14' +.*:58: Error: operand 4 out of range `exts \$20,\$16,39,25' +.*:60: Error: operand 3 out of range `seqi \$14,\$13,512' +.*:61: Error: operand 2 out of range `seqi \$19,-771' +.*:62: Error: operand 3 out of range `snei \$18,\$30,615' +.*:63: Error: operand 2 out of range `snei \$17,-513' diff --git a/gas/testsuite/gas/mips/r5900-error-vu0.l b/gas/testsuite/gas/mips/r5900-error-vu0.l index d012caa009..b462d95ecc 100644 --- a/gas/testsuite/gas/mips/r5900-error-vu0.l +++ b/gas/testsuite/gas/mips/r5900-error-vu0.l @@ -94,14 +94,14 @@ .*: Error: Illegal operands `vaddz\.xyzw \$vf31xyzw,\$vf0xyzw,\$vf0x' .*: Error: Illegal operands `vaddz\.xyzw \$vf31xyzw,\$vf15xyzw,\$vf7y' .*: Error: Illegal operands `vaddz\.xyzw \$vf31xyzw,\$vf31xyzw,\$vf31w' -.*: Error: Operand 1 of `vcallms' must be in the range \[0x0, 0x3fff8\], was \-1\. -.*: Error: Operand 1 of `vcallms' must be in the range \[0x0, 0x3fff8\], was \-128\. -.*: Error: Operand 1 of `vcallms' must be a factor of 8, was 0x1\. -.*: Error: Operand 1 of `vcallms' must be a factor of 8, was 0x7\. -.*: Error: Operand 1 of `vcallms' must be a factor of 8, was 0x4\. -.*: Error: Operand 1 of `vcallms' must be a factor of 8, was 0x2\. -.*: Error: Operand 1 of `vcallms' must be in the range \[0x0, 0x3fff8\], was 0x40000\. -.*: Error: Operand 1 of `vcallms' must be in the range \[0x0, 0x3fff8\], was 0x40008\. +.*: Error: operand 1 out of range `vcallms -1' +.*: Error: operand 1 out of range `vcallms -0x0080' +.*: Error: operand 1 out of range `vcallms 0x1' +.*: Error: operand 1 out of range `vcallms 0x7' +.*: Error: operand 1 out of range `vcallms 0x4' +.*: Error: operand 1 out of range `vcallms 0x2' +.*: Error: operand 1 out of range `vcallms 0x40000' +.*: Error: operand 1 out of range `vcallms 0x40008' .*: Error: Illegal operands `vclipw\.xyz \$vf0xyz,\$vf0x' .*: Error: Illegal operands `vclipw\.xyz \$vf0xyz,\$vf31y' .*: Error: Illegal operands `vclipw\.xyz \$vf1xyz,\$vf2z' @@ -123,11 +123,11 @@ .*: Error: Illegal operands `vftoi15\.xyzw \$vf0xyzw,\$vf0xyz' .*: Error: Illegal operands `vftoi15\.y \$vf1y,\$vf2x' .*: Error: Illegal operands `vftoi15\.y \$vf31y,\$vf0w' -.*: Error: Operand 3 of `viaddi' must be in the range \[\-16, 15\], was \-17\. -.*: Error: Operand 3 of `viaddi' must be in the range \[\-16, 15\], was 16\. -.*: Error: Operand 3 of `viaddi' must be in the range \[\-16, 15\], was 17\. -.*: Error: Operand 3 of `viaddi' must be in the range \[\-16, 15\], was 32\. -.*: Error: Operand 3 of `viaddi' must be in the range \[\-16, 15\], was 31\. +.*: Error: operand 3 out of range `viaddi \$vi0,\$vi0,-17' +.*: Error: operand 3 out of range `viaddi \$vi1,\$vi2,16' +.*: Error: operand 3 out of range `viaddi \$vi31,\$vi0,17' +.*: Error: operand 3 out of range `viaddi \$vi31,\$vi15,32' +.*: Error: operand 3 out of range `viaddi \$vi31,\$vi31,31' .*: Error: Illegal operands `viand \$vi0xyzw,\$vi0,\$vi0' .*: Error: Illegal operands `viand \$vi0,\$vi0xyzw,\$vi31' .*: Error: Illegal operands `viand \$vi0,\$vi31,\$vi0xyzw' diff --git a/gas/testsuite/gas/mips/vr5400-ill.l b/gas/testsuite/gas/mips/vr5400-ill.l index 0554c8aa52..065e5c1776 100644 --- a/gas/testsuite/gas/mips/vr5400-ill.l +++ b/gas/testsuite/gas/mips/vr5400-ill.l @@ -1,8 +1,8 @@ .*: Assembler messages: -.*:3: Error: Operand 3 of `sll.ob' must be scalar -.*:7: Error: Operand 3 of `srl.ob' must be scalar -.*:10: Error: Operand 2 of `rzu.ob' must be an immediate -.*:11: Error: Operand 2 of `rzu.ob' must be an immediate +.*:3: Error: operand 3 must be scalar `sll.ob \$f2,\$f4,\$f6' +.*:7: Error: operand 3 must be scalar `srl.ob \$f2,\$f4,\$f6' +.*:10: Error: operand 2 must be an immediate `rzu.ob \$f2,\$f6\[1\]' +.*:11: Error: operand 2 must be an immediate `rzu.ob \$f2,\$f6' .*:14: Error: Illegal operands `add.ob \$v2,\$f4,\$f6' .*:15: Error: Illegal operands `add.ob \$f2,\$v4,\$f6' .*:16: Error: Illegal operands `add.ob \$f2,\$f4,\$v6' -- cgit v1.2.1