summaryrefslogtreecommitdiff
path: root/gcc/config/arm/arm-fixed.md
diff options
context:
space:
mode:
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-02 17:08:55 +0000
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-02 17:08:55 +0000
commitb49e3742cb50238370bdf071d9de7cfe3e448ca7 (patch)
tree54e677187e260d409904d535adb7790396d04961 /gcc/config/arm/arm-fixed.md
parent7103ce448c08b7c4e5fceb825ecd852a42aa246a (diff)
downloadgcc-b49e3742cb50238370bdf071d9de7cfe3e448ca7.tar.gz
gcc/
* config/arm/arm.c (arm_sat_operator_match): New function. * config/arm/arm-protos.h (arm_sat_operator_match): Add prototype. * config/arm/arm.md ("insn" attribute): Add "sat" value. ("SAT", "SATrev"): New code iterators. ("SATlo", "SAThi"): New code iterator attributes. ("*satsi_<SAT:code>"): New pattern. ("*satsi_<SAT:code>_shift"): Likewise. * config/arm/arm-fixed.md ("arm_ssatsihi_shift"): Add "insn" and "shift" attributes. ("arm_usatsihi"): Add "insn" attribute. * config/arm/predicates.md (sat_shift_operator): Allow multiplication by powers of two. Do not allow shift by 32. gcc/testsuite/ * gcc.target/arm/sat-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184803 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/arm-fixed.md')
-rw-r--r--gcc/config/arm/arm-fixed.md5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/config/arm/arm-fixed.md b/gcc/config/arm/arm-fixed.md
index bd33ce28b38..920c262b425 100644
--- a/gcc/config/arm/arm-fixed.md
+++ b/gcc/config/arm/arm-fixed.md
@@ -374,6 +374,8 @@
"TARGET_32BIT && arm_arch6"
"ssat%?\\t%0, #16, %2%S1"
[(set_attr "predicable" "yes")
+ (set_attr "insn" "sat")
+ (set_attr "shift" "1")
(set_attr "type" "alu_shift")])
(define_insn "arm_usatsihi"
@@ -381,4 +383,5 @@
(us_truncate:HI (match_operand:SI 1 "s_register_operand")))]
"TARGET_INT_SIMD"
"usat%?\\t%0, #16, %1"
- [(set_attr "predicable" "yes")])
+ [(set_attr "predicable" "yes")
+ (set_attr "insn" "sat")])