------- Additional Comments From uros at kss-loka dot si 2005-06-22 10:14 ------- Just for fun, I have compiled the testcase with MMX/x87 mode switching patch included, to check MMX vector extensions. This little patch is needed to enable MMX vector extensions (only MMX vector add expander is shown):
diff -upr /export/home/uros/gcc-back/gcc/config/i386/i386.h i386/i386.h --- /export/home/uros/gcc-back/gcc/config/i386/i386.h 2005-06-08 07:05:22.000000000 +0200 +++ i386/i386.h 2005-06-22 10:41:31.000000000 +0200 @@ -843,7 +845,8 @@ do { \ /* ??? No autovectorization into MMX or 3DNOW until we can reliably place emms and femms instructions. */ -#define UNITS_PER_SIMD_WORD (TARGET_SSE ? 16 : UNITS_PER_WORD) +#define UNITS_PER_SIMD_WORD \ + (TARGET_SSE ? 16 : TARGET_MMX ? 8 : UNITS_PER_WORD) #define VALID_FP_MODE_P(MODE) \ ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode \ diff -upr /export/home/uros/gcc-back/gcc/config/i386/mmx.md i386/mmx.md --- /export/home/uros/gcc-back/gcc/config/i386/mmx.md 2005-04-20 21:56:15.000000000 +0200 +++ i386/mmx.md 2005-06-22 11:00:35.000000000 +0200 @@ -553,6 +553,13 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define_expand "add<mode>3" + [(set (match_operand:MMXMODEI 0 "register_operand" "") + (plus:MMXMODEI (match_operand:MMXMODEI 1 "nonimmediate_operand" "") + (match_operand:MMXMODEI 2 "nonimmediate_operand" "")))] + "TARGET_MMX" + "ix86_fixup_binary_operands_no_copy (PLUS, <MODE>mode, operands);") + (define_insn "mmx_add<mode>3" [(set (match_operand:MMXMODEI 0 "register_operand" "=y") (plus:MMXMODEI After that, the testcase from description is compiled to (with -fomit-frame- pointer): test: movq w, %mm0 paddw %mm0, %mm0 movq %mm0, w movq %mm0, dw emms ret -- What |Removed |Added ---------------------------------------------------------------------------- CC| |uros at kss-loka dot si http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14552