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
bdfb351b
Commit
bdfb351b
authored
Mar 24, 2011
by
Richard Henderson
Committed by
Richard Henderson
Mar 24, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
alpha: Unify zero_extend patterns with attribute enabled.
From-SVN: r171429
parent
6abe71eb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
57 additions
and
100 deletions
+57
-100
gcc/ChangeLog
+9
-0
gcc/config/alpha/alpha.md
+42
-100
gcc/config/alpha/predicates.md
+6
-0
No files found.
gcc/ChangeLog
View file @
bdfb351b
2011-02-24 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.md (attribute isa): New.
(attribute enabled): New.
(zero_extendqihi2): Merge from *zero_extendqihi2_{bwx,nobwx}.
(zero_extendqisi2, zero_extendqidi2): Similarly.
(zero_extendhisi2, zero_extendhidi2): Similarly.
* config/alpha/predicates.md (reg_or_bwx_memory_operand): New.
2011-02-24 Richard Henderson <rth@redhat.com>
* config/alpha/predicates.md (input_operand): Revert last change;
update comment to mention 32-bit VMS rather than Windows.
...
...
gcc/config/alpha/alpha.md
View file @
bdfb351b
...
...
@@ -177,6 +177,18 @@
(define_attr "cannot_copy" "false,true"
(const_string "false"))
;; Used to control the "enabled" attribute on a per-instruction basis.
(define_attr "isa" "base,bwx,max,fix,cix"
(const_string "base"))
(define_attr "enabled" ""
(cond
[
(eq_attr "isa" "bwx") (symbol_ref "TARGET_BWX")
(eq_attr "isa" "max") (symbol_ref "TARGET_MAX")
(eq_attr "isa" "fix") (symbol_ref "TARGET_FIX")
(eq_attr "isa" "cix") (symbol_ref "TARGET_CIX")
]
(const_int 1)))
;; Include scheduling descriptions.
...
...
@@ -1092,130 +1104,60 @@
operands
[
4
]
= GEN_INT (mask2);
})
(define_expand "zero_extendqihi2"
[
(set (match_operand:HI 0 "register_operand" "")
(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")))]
""
{
if (! TARGET_BWX)
operands
[
1
]
= force_reg (QImode, operands
[
1
]
);
})
(define_insn "
*
zero_extendqihi2_bwx"
(define_insn "zero_extendqihi2"
[
(set (match_operand:HI 0 "register_operand" "=r,r")
(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
"TARGET_BWX"
(zero_extend:HI
(match_operand:QI 1 "reg_or_bwx_memory_operand" "r,m")))]
""
"@
and %1,0xff,%0
ldbu %0,%1"
[
(set_attr "type" "ilog,ild")
]
)
[
(set_attr "type" "ilog,ild")
(set_attr "isa" "
*
,bwx")])
(define_insn "
*
zero_extendqihi2_nobwx"
[
(set (match_operand:HI 0 "register_operand" "=r")
(zero_extend:HI (match_operand:QI 1 "register_operand" "r")))]
"! TARGET_BWX"
"and %1,0xff,%0"
[
(set_attr "type" "ilog")
]
)
(define_expand "zero_extendqisi2"
[
(set (match_operand:SI 0 "register_operand" "")
(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
""
{
if (! TARGET_BWX)
operands
[
1
]
= force_reg (QImode, operands
[
1
]
);
})
(define_insn "
*
zero_extendqisi2_bwx"
(define_insn "zero_extendqisi2"
[
(set (match_operand:SI 0 "register_operand" "=r,r")
(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
"TARGET_BWX"
(zero_extend:SI
(match_operand:QI 1 "reg_or_bwx_memory_operand" "r,m")))]
""
"@
and %1,0xff,%0
ldbu %0,%1"
[
(set_attr "type" "ilog,ild")
]
)
(define_insn "
*
zero_extendqisi2_nobwx"
[
(set (match_operand:SI 0 "register_operand" "=r")
(zero_extend:SI (match_operand:QI 1 "register_operand" "r")))]
"! TARGET_BWX"
"and %1,0xff,%0"
[
(set_attr "type" "ilog")
]
)
(define_expand "zero_extendqidi2"
[
(set (match_operand:DI 0 "register_operand" "")
(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "")))]
""
{
if (! TARGET_BWX)
operands
[
1
]
= force_reg (QImode, operands
[
1
]
);
})
[
(set_attr "type" "ilog,ild")
(set_attr "isa" "
*
,bwx")])
(define_insn "
*
zero_extendqidi2_bwx
"
(define_insn "
zero_extendqidi2
"
[
(set (match_operand:DI 0 "register_operand" "=r,r")
(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
"TARGET_BWX"
(zero_extend:DI
(match_operand:QI 1 "reg_or_bwx_memory_operand" "r,m")))]
""
"@
and %1,0xff,%0
ldbu %0,%1"
[
(set_attr "type" "ilog,ild")
]
)
(define_insn "
*
zero_extendqidi2_nobwx"
[
(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (match_operand:QI 1 "register_operand" "r")))]
"! TARGET_BWX"
"and %1,0xff,%0"
[
(set_attr "type" "ilog")
]
)
(define_expand "zero_extendhisi2"
[
(set (match_operand:SI 0 "register_operand" "")
(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
""
{
if (! TARGET_BWX)
operands
[
1
]
= force_reg (HImode, operands
[
1
]
);
})
[
(set_attr "type" "ilog,ild")
(set_attr "isa" "
*
,bwx")])
(define_insn "
*
zero_extendhisi2_bwx
"
(define_insn "
zero_extendhisi2
"
[
(set (match_operand:SI 0 "register_operand" "=r,r")
(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
"TARGET_BWX"
(zero_extend:SI
(match_operand:HI 1 "reg_or_bwx_memory_operand" "r,m")))]
""
"@
zapnot %1,3,%0
ldwu %0,%1"
[
(set_attr "type" "shift,ild")
]
)
(define_insn "
*
zero_extendhisi2_nobwx"
[
(set (match_operand:SI 0 "register_operand" "=r")
(zero_extend:SI (match_operand:HI 1 "register_operand" "r")))]
"! TARGET_BWX"
"zapnot %1,3,%0"
[
(set_attr "type" "shift")
]
)
(define_expand "zero_extendhidi2"
[
(set (match_operand:DI 0 "register_operand" "")
(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "")))]
""
{
if (! TARGET_BWX)
operands
[
1
]
= force_reg (HImode, operands
[
1
]
);
})
[
(set_attr "type" "shift,ild")
(set_attr "isa" "
*
,bwx")])
(define_insn "
*
zero_extendhidi2_bwx
"
(define_insn "
zero_extendhidi2
"
[
(set (match_operand:DI 0 "register_operand" "=r,r")
(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
"TARGET_BWX"
(zero_extend:DI
(match_operand:HI 1 "reg_or_bwx_memory_operand" "r,m")))]
""
"@
zapnot %1,3,%0
ldwu %0,%1"
[
(set_attr "type" "shift,ild")
]
)
(define_insn "
*
zero_extendhidi2_nobwx"
[
(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (match_operand:HI 1 "register_operand" "r")))]
""
"zapnot %1,3,%0"
[
(set_attr "type" "shift")
]
)
[
(set_attr "type" "shift,ild")
(set_attr "isa" "
*
,bwx")])
(define_insn "zero_extendsidi2"
[
(set (match_operand:DI 0 "register_operand" "=r")
...
...
gcc/config/alpha/predicates.md
View file @
bdfb351b
...
...
@@ -617,3 +617,9 @@
return false;
return for_each_rtx (&op, some_small_symbolic_operand_int, NULL);
})
;; Accept a register, or a memory if BWX is enabled.
(define_predicate "reg_or_bwx_memory_operand"
(ior (match_operand 0 "register_operand")
(and (match_test "TARGET_BWX")
(match_operand 0 "memory_operand"))))
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