aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r--gcc/config/i386/i386.md22
1 files changed, 19 insertions, 3 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index f7f790d..d6b2f29 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -18153,8 +18153,15 @@
(match_dup 2)))
(clobber (reg:CC FLAGS_REG))])]
{
- operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
- operands[2] = gen_lowpart (QImode, operands[2]);
+ operands[2] = force_lowpart_subreg (QImode, operands[2],
+ GET_MODE (operands[2]));
+ if (TARGET_APX_NF)
+ {
+ emit_move_insn (operands[0],
+ gen_rtx_<CODE> (<MODE>mode, operands[1],
+ operands[2]));
+ DONE;
+ }
})
(define_split
@@ -18192,7 +18199,16 @@
[(set (match_dup 0)
(any_rotate:SWI (match_dup 1)
(match_dup 2)))
- (clobber (reg:CC FLAGS_REG))])])
+ (clobber (reg:CC FLAGS_REG))])]
+{
+ if (TARGET_APX_NF)
+ {
+ emit_move_insn (operands[0],
+ gen_rtx_<CODE> (<MODE>mode, operands[1],
+ operands[2]));
+ DONE;
+ }
+})
(define_split
[(set (match_operand:SWI 0 "register_operand")