+2018-08-10 Alexander Monakov <amonakov@ispras.ru>
+
+ PR target/82418
+ * config/i386/i386.md (<s>mul<mode>3_highpart): Use DWIH mode iterator
+ instead of SWI48.
+
2018-08-10 Martin Liska <mliska@suse.cz>
PR target/83610
(set_attr "mode" "QI")])
(define_expand "<s>mul<mode>3_highpart"
- [(parallel [(set (match_operand:SWI48 0 "register_operand")
- (truncate:SWI48
+ [(parallel [(set (match_operand:DWIH 0 "register_operand")
+ (truncate:DWIH
(lshiftrt:<DWI>
(mult:<DWI>
(any_extend:<DWI>
- (match_operand:SWI48 1 "nonimmediate_operand"))
+ (match_operand:DWIH 1 "nonimmediate_operand"))
(any_extend:<DWI>
- (match_operand:SWI48 2 "register_operand")))
+ (match_operand:DWIH 2 "register_operand")))
(match_dup 3))))
- (clobber (match_scratch:SWI48 4))
+ (clobber (match_scratch:DWIH 4))
(clobber (reg:CC FLAGS_REG))])]
""
"operands[3] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));")
--- /dev/null
+/* PR target/82418 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler "imul\[^\n\r]*1374389535" } } */
+
+unsigned
+f1(unsigned x)
+{
+ return x / 100;
+}