* aarch64-tbl.h (aarch64_opcode_table): Replace IMM0 with
	FPIMM0 for fcmeq, fcmgt, fcmge, fcmlt and fcmle.

gas/testsuite/

	* gas/aarch64/fp-const0-parsing.s: New test.
	* gas/aarch64/fp-const0-parsing.d: Likewise.
This commit is contained in:
Yufeng Zhang 2014-02-27 15:06:56 +00:00
parent a58549dda5
commit f17c8bfcc8
5 changed files with 117 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2014-02-27 Jiong Wang <jiong.wang@arm.com>
* gas/aarch64/fp-const0-parsing.s: New test.
* gas/aarch64/fp-const0-parsing.d: Likewise.
2014-02-27 Yufeng Zhang <yufeng.zhang@arm.com>
* gas/aarch64/ldst-reg-reg-offset.s: Add tests.

View File

@ -0,0 +1,37 @@
#objdump: -dr
.*: file format .*
Disassembly of section \.text:
0000000000000000 <.*>:
0: 5ea0dbc0 fcmeq s0, s30, #0.0
4: 7ea0cba1 fcmge s1, s29, #0.0
8: 5ea0cb82 fcmgt s2, s28, #0.0
c: 7ea0db63 fcmle s3, s27, #0.0
10: 5ea0eb44 fcmlt s4, s26, #0.0
14: 5ee0dbc0 fcmeq d0, d30, #0.0
18: 7ee0cba1 fcmge d1, d29, #0.0
1c: 5ee0cb82 fcmgt d2, d28, #0.0
20: 7ee0db63 fcmle d3, d27, #0.0
24: 5ee0eb44 fcmlt d4, d26, #0.0
28: 0ea0dbc0 fcmeq v0.2s, v30.2s, #0.0
2c: 6ea0cba1 fcmge v1.4s, v29.4s, #0.0
30: 4ee0cb82 fcmgt v2.2d, v28.2d, #0.0
34: 2ea0db63 fcmle v3.2s, v27.2s, #0.0
38: 4ea0eb44 fcmlt v4.4s, v26.4s, #0.0
3c: 5ea0dbc0 fcmeq s0, s30, #0.0
40: 7ea0cba1 fcmge s1, s29, #0.0
44: 5ea0cb82 fcmgt s2, s28, #0.0
48: 7ea0db63 fcmle s3, s27, #0.0
4c: 5ea0eb44 fcmlt s4, s26, #0.0
50: 5ee0dbc0 fcmeq d0, d30, #0.0
54: 7ee0cba1 fcmge d1, d29, #0.0
58: 5ee0cb82 fcmgt d2, d28, #0.0
5c: 7ee0db63 fcmle d3, d27, #0.0
60: 5ee0eb44 fcmlt d4, d26, #0.0
64: 0ea0dbc0 fcmeq v0.2s, v30.2s, #0.0
68: 6ea0cba1 fcmge v1.4s, v29.4s, #0.0
6c: 4ee0cb82 fcmgt v2.2d, v28.2d, #0.0
70: 2ea0db63 fcmle v3.2s, v27.2s, #0.0
74: 4ea0eb44 fcmlt v4.4s, v26.4s, #0.0

View File

@ -0,0 +1,60 @@
/* fp-const0-parse.s Test file For AArch64 float constant 0 parse.
Copyright 2014 Free Software Foundation, Inc.
Contributed by ARM Ltd.
This file is part of GAS.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the license, or
(at your option) any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
.text
// Check #0 with scalar register.
fcmeq s0, s30, #0
fcmge s1, s29, #0
fcmgt s2, s28, #0
fcmle s3, s27, #0
fcmlt s4, s26, #0
fcmeq d0, d30, #0
fcmge d1, d29, #0
fcmgt d2, d28, #0
fcmle d3, d27, #0
fcmlt d4, d26, #0
// Check #0 with vector register.
fcmeq v0.2s, v30.2s, #0
fcmge v1.4s, v29.4s, #0
fcmgt v2.2d, v28.2d, #0
fcmle v3.2s, v27.2s, #0
fcmlt v4.4s, v26.4s, #0
// Check #0.0 with scalar register.
fcmeq s0, s30, #0.0
fcmge s1, s29, #0.0
fcmgt s2, s28, #0.0
fcmle s3, s27, #0.0
fcmlt s4, s26, #0.0
fcmeq d0, d30, #0.0
fcmge d1, d29, #0.0
fcmgt d2, d28, #0.0
fcmle d3, d27, #0.0
fcmlt d4, d26, #0.0
// Check #0.0 with vector register.
fcmeq v0.2s, v30.2s, #0.0
fcmge v1.4s, v29.4s, #0.0
fcmgt v2.2d, v28.2d, #0.0
fcmle v3.2s, v27.2s, #0.0
fcmlt v4.4s, v26.4s, #0.0

View File

@ -1,3 +1,8 @@
2014-02-27 Jiong Wang <jiong.wang@arm.com>
* aarch64-tbl.h (aarch64_opcode_table): Replace IMM0 with
FPIMM0 for fcmeq, fcmgt, fcmge, fcmlt and fcmle.
2014-02-27 Yufeng Zhang <yufeng.zhang@arm.com>
* aarch64-opc.c (print_register_offset_address): Call

View File

@ -1403,9 +1403,9 @@ struct aarch64_opcode aarch64_opcode_table[] =
{"fcvtms", 0xe21b800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
{"fcvtas", 0xe21c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
{"scvtf", 0xe21d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
{"fcmgt", 0xea0c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmeq", 0xea0d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmlt", 0xea0e800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmgt", 0xea0c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmeq", 0xea0d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmlt", 0xea0e800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ},
{"fabs", 0xea0f800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
{"frintp", 0xea18800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
{"frintz", 0xea19800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
@ -1439,8 +1439,8 @@ struct aarch64_opcode aarch64_opcode_table[] =
{"not", 0x2e205800, 0xbffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ | F_HAS_ALIAS},
{"mvn", 0x2e205800, 0xbffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ | F_ALIAS},
{"rbit", 0x2e605800, 0xbffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ},
{"fcmge", 0x2ea0c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmle", 0x2ea0d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmge", 0x2ea0c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ},
{"fcmle", 0x2ea0d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ},
{"fneg", 0x2ea0f800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
{"frinti", 0x2ea19800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
{"fcvtpu", 0x2ea1a800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
@ -1650,9 +1650,9 @@ struct aarch64_opcode aarch64_opcode_table[] =
{"fcvtms", 0x5e21b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"fcvtas", 0x5e21c800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"scvtf", 0x5e21d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"fcmgt", 0x5ea0c800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmeq", 0x5ea0d800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmlt", 0x5ea0e800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmgt", 0x5ea0c800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmeq", 0x5ea0d800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmlt", 0x5ea0e800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcvtps", 0x5ea1a800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"fcvtzs", 0x5ea1b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"frecpe", 0x5ea1d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
@ -1669,8 +1669,8 @@ struct aarch64_opcode aarch64_opcode_table[] =
{"fcvtmu", 0x7e21b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"fcvtau", 0x7e21c800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"ucvtf", 0x7e21d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"fcmge", 0x7ea0c800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmle", 0x7ea0d800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmge", 0x7ea0c800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcmle", 0x7ea0d800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE},
{"fcvtpu", 0x7ea1a800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"fcvtzu", 0x7ea1b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
{"frsqrte", 0x7ea1d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},