Commit ec4c68c8 by Uros Bizjak Committed by Uros Bizjak

re PR target/65871 (bzhi builtin/intrinsic wrongly assumes bzhi instruction…

re PR target/65871 (bzhi builtin/intrinsic wrongly assumes bzhi instruction doesn't set the ZF flag)

	PR target/65871
        * config/i386/i386.md (*bmi_bextr_<mode>_cczonly): New pattern.
        (*bmi2_bzhi_<mode>3_1_cczonly): Ditto.
        (setcc+movzbl peephole2): Check also clobbered reg.
        (setcc+andl peephole2): Ditto.

From-SVN: r222592
parent 9f7fb685
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
PR target/65871 PR target/65871
* config/i386/i386.md (*bmi_bextr_<mode>_cczonly): New pattern. * config/i386/i386.md (*bmi_bextr_<mode>_cczonly): New pattern.
(*bmi2_bzhi_<mode>3_1_cczonly): Ditto. (*bmi2_bzhi_<mode>3_1_cczonly): Ditto.
(setcc+movzbl peephole2): Check also clobbered reg.
(setcc+andl peephole2): Ditto.
2015-04-29 Thomas Schwinge <thomas@codesourcery.com> 2015-04-29 Thomas Schwinge <thomas@codesourcery.com>
......
...@@ -11567,7 +11567,9 @@ ...@@ -11567,7 +11567,9 @@
(zero_extend (match_dup 1)))] (zero_extend (match_dup 1)))]
"(peep2_reg_dead_p (3, operands[1]) "(peep2_reg_dead_p (3, operands[1])
|| operands_match_p (operands[1], operands[3])) || operands_match_p (operands[1], operands[3]))
&& ! reg_overlap_mentioned_p (operands[3], operands[0])" && ! reg_overlap_mentioned_p (operands[3], operands[0])
&& ! (GET_CODE (operands[4]) == CLOBBER
&& reg_mentioned_p (operands[3], operands[4]))"
[(parallel [(set (match_dup 5) (match_dup 0)) [(parallel [(set (match_dup 5) (match_dup 0))
(match_dup 4)]) (match_dup 4)])
(set (strict_low_part (match_dup 6)) (set (strict_low_part (match_dup 6))
...@@ -11610,7 +11612,9 @@ ...@@ -11610,7 +11612,9 @@
(clobber (reg:CC FLAGS_REG))])] (clobber (reg:CC FLAGS_REG))])]
"(peep2_reg_dead_p (3, operands[1]) "(peep2_reg_dead_p (3, operands[1])
|| operands_match_p (operands[1], operands[3])) || operands_match_p (operands[1], operands[3]))
&& ! reg_overlap_mentioned_p (operands[3], operands[0])" && ! reg_overlap_mentioned_p (operands[3], operands[0])
&& ! (GET_CODE (operands[4]) == CLOBBER
&& reg_mentioned_p (operands[3], operands[4]))"
[(parallel [(set (match_dup 5) (match_dup 0)) [(parallel [(set (match_dup 5) (match_dup 0))
(match_dup 4)]) (match_dup 4)])
(set (strict_low_part (match_dup 6)) (set (strict_low_part (match_dup 6))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment