Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
6f7310f2
Commit
6f7310f2
authored
Jan 17, 2011
by
Richard Henderson
Committed by
Richard Henderson
Jan 17, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rx: Split cstoresi4 post-reload.
This will allow elimination of the compare. From-SVN: r168920
parent
e963cb1a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
16 deletions
+34
-16
gcc/ChangeLog
+5
-0
gcc/config/rx/rx.c
+0
-2
gcc/config/rx/rx.h
+0
-2
gcc/config/rx/rx.md
+29
-12
No files found.
gcc/ChangeLog
View file @
6f7310f2
2011-01-17 Richard Henderson <rth@redhat.com>
2011-01-17 Richard Henderson <rth@redhat.com>
* config/rx/rx.c (rx_float_compare_mode): Remove.
* config/rx/rx.h (rx_float_compare_mode): Remove.
* config/rx/rx.md (cstoresi4): Split after reload.
(*sccc): New pattern.
* config/rx/predicates.md (label_ref_operand): New.
* config/rx/predicates.md (label_ref_operand): New.
(rx_z_comparison_operator): New.
(rx_z_comparison_operator): New.
(rx_zs_comparison_operator): New.
(rx_zs_comparison_operator): New.
...
...
gcc/config/rx/rx.c
View file @
6f7310f2
...
@@ -363,8 +363,6 @@ rx_assemble_integer (rtx x, unsigned int size, int is_aligned)
...
@@ -363,8 +363,6 @@ rx_assemble_integer (rtx x, unsigned int size, int is_aligned)
}
}
int
rx_float_compare_mode
;
/* Handles the insertion of a single operand into the assembler output.
/* Handles the insertion of a single operand into the assembler output.
The %<letter> directives supported are:
The %<letter> directives supported are:
...
...
gcc/config/rx/rx.h
View file @
6f7310f2
...
@@ -595,8 +595,6 @@ typedef unsigned int CUMULATIVE_ARGS;
...
@@ -595,8 +595,6 @@ typedef unsigned int CUMULATIVE_ARGS;
they contain are always computed between two same-section symbols. */
they contain are always computed between two same-section symbols. */
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
extern
int
rx_float_compare_mode
;
/* This is a version of REG_P that also returns TRUE for SUBREGs. */
/* This is a version of REG_P that also returns TRUE for SUBREGs. */
#define RX_REG_P(rtl) (REG_P (rtl) || GET_CODE (rtl) == SUBREG)
#define RX_REG_P(rtl) (REG_P (rtl) || GET_CODE (rtl) == SUBREG)
...
...
gcc/config/rx/rx.md
View file @
6f7310f2
...
@@ -706,20 +706,37 @@
...
@@ -706,20 +706,37 @@
(set_attr "timings" "45")] ;; The timing is a guesstimate average timing.
(set_attr "timings" "45")] ;; The timing is a guesstimate average timing.
)
)
;; FIXME: Add memory destination options ?
(define_insn_and_split "cstoresi4"
(define_insn "cstoresi4"
[
(set (match_operand:SI 0 "register_operand" "=r")
[
(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r")
(match_operator:SI 1 "comparison_operator"
(match_operator:SI 1 "comparison_operator"
[
(match_operand:SI 2 "register_operand" "r,r,r,r,r,r,
r")
[
(match_operand:SI 2 "register_operand" "
r")
(match_operand:SI 3 "rx_source_operand" "r,Uint04,Int08,Sint16,Sint24,i,
Q")]))
(match_operand:SI 3 "rx_source_operand" "ri
Q")]))
(clobber (reg:CC CC_REG))]
;; Because the cc flags are set based on comparing ops 2 & 3 not the value in op 0.
(clobber (reg:CC CC_REG))]
""
""
{
"#"
rx_float_compare_mode = false;
"reload_completed"
return "cmp
\t
%Q3, %Q2
\n\t
sc%B1.L
\t
%0";
[
(const_int 0)
]
}
{
[
(set_attr "timings" "22,22,22,22,22,22,44")
rtx flags, x;
(set_attr "length" "5,5,6,7,8,9,8")]
flags = gen_rtx_REG (CCmode, CC_REG);
x = gen_rtx_COMPARE (CCmode, operands
[
2
]
, operands
[
3
]
);
x = gen_rtx_SET (VOIDmode, flags, x);
emit_insn (x);
x = gen_rtx_fmt_ee (GET_CODE (operands
[
1
]
), SImode, flags, const0_rtx);
x = gen_rtx_SET (VOIDmode, operands
[
0
]
, x);
emit_insn (x);
DONE;
})
(define_insn "
*
sccc"
[
(set (match_operand:SI 0 "register_operand" "=r")
(match_operator:SI 1 "comparison_operator"
[
(reg CC_REG) (const_int 0)
]
))]
"reload_completed"
"sc%B1.L
\t
%0"
[
(set_attr "length" "3")
]
)
)
(define_expand "movsicc"
(define_expand "movsicc"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment