aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/h8300/extensions.md18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/config/h8300/extensions.md b/gcc/config/h8300/extensions.md
index 74647c7..7149dc0 100644
--- a/gcc/config/h8300/extensions.md
+++ b/gcc/config/h8300/extensions.md
@@ -47,6 +47,24 @@
operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
})
+;; Similarly, but setting cczn.
+(define_split
+ [(set (reg:CCZN CC_REG)
+ (compare:CCZN
+ (zero_extend:HI (match_operand:QI 1 "general_operand_src" ""))
+ (const_int 0)))
+ (set (match_operand:HI 0 "register_operand" "")
+ (zero_extend:HI (match_dup 1)))]
+ "!REG_P (operands[1]) && reload_completed"
+ [(parallel [(set (match_dup 2) (match_dup 1))
+ (clobber (reg:CC CC_REG))])
+ (parallel [(set (reg:CCZN CC_REG)
+ (compare:CCZN (zero_extend:HI (match_dup 2)) (const_int 0)))
+ (set (match_dup 0) (zero_extend:HI (match_dup 2)))])]
+ {
+ operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
+ })
+
(define_insn "*zero_extendqisi2"
[(set (match_operand:SI 0 "register_operand" "=r,r")
(zero_extend:SI (match_operand:QI 1 "general_operand_src" "0,g>")))]