PR gas/15082
authorNick Clifton <nickc@redhat.com>
Wed, 20 Mar 2013 16:56:34 +0000 (16:56 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 20 Mar 2013 16:56:34 +0000 (16:56 +0000)
* tic6x-opcode-table.h: Rename mpydp's specific operand type macro
from ORREGD1324 to ORXREGD1324 and make it cross-path-able through
tic6x_operand_xregpair operand coding type.
Make mpydp instruction cross-path-able, ie: remove the FIXed 'x'
opcode field, usu ORXREGD1324 for the src2 operand and remove the
TIC6X_FLAG_NO_CROSS.

* gas/tic6x/insns-bad-1.s: Remove test-case for mpydp with
cross-path.
* gas/tic6x/insns-bad-1.l: Update expected output.
* gas/tic6x/insns-c674x.s: Add a test-case for mpydp with
cross-path.
* gas/tic6x/insns-c674x.d: Update expected output.

gas/testsuite/ChangeLog
gas/testsuite/gas/tic6x/insns-bad-1.l
gas/testsuite/gas/tic6x/insns-bad-1.s
gas/testsuite/gas/tic6x/insns-c674x.d
gas/testsuite/gas/tic6x/insns-c674x.s
include/opcode/ChangeLog
include/opcode/tic6x-opcode-table.h

index e1c04819642a44ed6b8354c683f541e9531de75a..622037e7ab1c50fa69afe82267e4fa76920efa40 100644 (file)
@@ -1,3 +1,13 @@
+2013-03-20  Alexis Deruelle  <alexis.deruelle@gmail.com>
+
+       PR gas/15082
+       * gas/tic6x/insns-bad-1.s: Remove test-case for mpydp with
+       cross-path.
+       * gas/tic6x/insns-bad-1.l: Update expected output.
+       * gas/tic6x/insns-c674x.s: Add a test-case for mpydp with
+       cross-path.
+       * gas/tic6x/insns-c674x.d: Update expected output.
+
 2013-03-20  Alexis Deruelle  <alexis.deruelle@gmail.com>
 
        PR gas/15095
index 95f3f9b07cb7c8869af5d8595c8c73d6c5109096..43d283f5ff8481dbcd303bbda041afc230166310 100644 (file)
 [^:]*:686: Error: 'mpydp' instruction not supported on this functional unit
 [^:]*:687: Error: bad number of operands to 'mpydp'
 [^:]*:688: Error: operand 1 of 'mpydp' on wrong side
-[^:]*:689: Error: 'mpydp' instruction not supported on this functional unit
 [^:]*:690: Error: 'mpyh' instruction not supported on this functional unit
 [^:]*:691: Error: bad number of operands to 'mpyh'
 [^:]*:692: Error: operand 1 of 'mpyh' on wrong side
index e2e79963b9a3c4a23fe28cd88211c1cc9aea77fa..aa3c79cdbb698ac9eca7825da5256d6f6c58826c 100644 (file)
@@ -686,7 +686,7 @@ f:
        mpydp .D1 a1:a0,a1:a0,a1:a0
        mpydp .M1 a1:a0,a1:a0
        mpydp .M1 b1:b0,a1:a0,a3:a2
-       mpydp .M2X b1:b0,a1:a0,b1:b0
+
        mpyh .S1 a1,a2,a3
        mpyh .M1 a1,a2
        mpyh .M1 b1,a2,a3
index 9f8e162ef15f44e6f9f0d65bf403f76704a79531..b347e45b3c12be4f9a186e8e42507aa20761c417 100644 (file)
@@ -685,6 +685,7 @@ Disassembly of section \.text:
 [0-9a-f]+[048c] <[^>]*> 0524ac02[ \t]+mpy \.M2 5,b9,b10
 [0-9a-f]+[048c] <[^>]*> a62f9c02[ \t]+\[a2\] mpy \.M2X -4,a11,b12
 [0-9a-f]+[048c] <[^>]*> 02080700[ \t]+mpydp \.M1 a1:a0,a3:a2,a5:a4
+[0-9a-f]+[048c] <[^>]*> 00001702[ \t]+mpydp \.M2X b1:b0,a1:a0,b1:b0
 [0-9a-f]+[048c] <[^>]*> 6520c702[ \t]+\[b2\] mpydp \.M2 b7:b6,b9:b8,b11:b10
 [0-9a-f]+[048c] <[^>]*> 01040080[ \t]+mpyh \.M1 a0,a1,a2
 [0-9a-f]+[048c] <[^>]*> b2907080[ \t]+\[!a2\] mpyh \.M1X a3,b4,a5
index 33ec5dabfc3270afbc7d92627a0f155413ff7334..f96918862e8258721ef58c86bd739688555e8239 100644 (file)
@@ -682,6 +682,7 @@ f:
        mpy .M2 5,b9,b10
        [a2] mpy .M2X -4,a11,b12
        mpydp .M1 a1:a0,a3:a2,a5:a4
+       mpydp .M2X b1:b0,a1:a0,b1:b0
        [b2] mpydp .M2 b7:b6,b9:b8,b11:b10
        mpyh .M1 a0,a1,a2
        [!a2] mpyh .M1X a3,b4,a5
index 69d0859e12bbca0f50336621f845512081e0090c..cc7ef5fb19e5d294487fd3d9c91b959f86cb980d 100644 (file)
@@ -1,3 +1,13 @@
+2013-03-20  Alexis Deruelle  <alexis.deruelle@gmail.com>
+
+       PR gas/15082
+       * tic6x-opcode-table.h: Rename mpydp's specific operand type macro
+       from ORREGD1324 to ORXREGD1324 and make it cross-path-able through
+       tic6x_operand_xregpair operand coding type.
+       Make mpydp instruction cross-path-able, ie: remove the FIXed 'x'
+       opcode field, usu ORXREGD1324 for the src2 operand and remove the
+       TIC6X_FLAG_NO_CROSS.
+
 2013-03-20  Alexis Deruelle  <alexis.deruelle@gmail.com>
 
        PR gas/15095
index abebd3c1720ce94b3798c8b57c40b94f9ab60d81..e9cfab917c41c56eea20eba7f387e6a15a890451 100644 (file)
@@ -75,7 +75,7 @@
 #define ORREGD12 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
 #define ORXREGD12 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
 #define ORREGD1234 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 2, 3, 4 }
-#define ORREGD1324 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 3, 2, 4 }
+#define ORXREGD1324 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 3, 2, 4 }
 #define OWREGD910 { tic6x_operand_regpair, 8, tic6x_rw_write, 9, 9, 10, 10 }
 #define ORCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_read, 1, 1, 0, 0 }
 #define OWCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_write, 1, 1, 0, 0 }
@@ -1154,11 +1154,11 @@ INSNE(mpy, m_s5_xsl16_si, m, mpy, 1616_m, C62X, 0,
       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
           ENC(src2, reg, 1), ENC(dst, reg, 2)))
 
-INSN(mpydp, m, mpy, mpydp, C67X, TIC6X_FLAG_NO_CROSS,
-     FIX2(FIX(op, 0x0e), FIX(x, 0)),
-     OP3(ORREGD1234, ORREGD1324, OWREGD910),
-     ENC4(ENC(s, fu, 0), ENC(src1, reg, 0), ENC(src2, reg, 1),
-         ENC(dst, reg, 2)))
+INSN(mpydp, m, mpy, mpydp, C67X, 0,
+     FIX1(FIX(op, 0x0e)),
+     OP3(ORREGD1234, ORXREGD1324, OWREGD910),
+     ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
+           ENC(src2, reg, 1), ENC(dst, reg, 2)))
 
 INSN(mpyh, m, mpy, 1616_m, C62X, 0,
      FIX1(FIX(op, 0x01)),
@@ -2520,7 +2520,7 @@ INSNE(zero, d_sub, d, 1_or_2_src, 1cycle, C62X,
 #undef OWDREGD5
 #undef ORREGD12
 #undef ORXREGD12
-#undef ORREGD1234
+#undef ORXREGD1234
 #undef ORREGD1324
 #undef OWREGD910
 #undef ORCREG1