[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-06-22 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-06-22 22:59 --- Thanks to Uros and everybody! -- What|Removed |Added Status|RESOLVED

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-06-22 Thread pinskia at gcc dot gnu dot org
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-06-22 22:17 --- Fixed. -- What|Removed |Added Status|WAITING |RESOLVED

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-06-22 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-06-22 21:59 --- Yup, excited, today, I just compiled the mainbranch to check this out (gcc-4.1-20050618) and it seems to be fixed! I don't see any strange movlps in any of the code I tried to compile with it. Can be moved to F

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-06-22 Thread uros at kss-loka dot si
--- Additional Comments From uros at kss-loka dot si 2005-06-22 07:02 --- As this bug is getting a bit confused, I have summarised testcases below: --cut here-- #include __m64 moo_1 (int i) { __m64 tmp = _mm_cvtsi32_si64 (i); return tmp; } __m64 moo_2 (__m64 mmx1) { __m64 mmx2 =

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-06-21 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-06-21 13:26 --- Hum, it will be interesting to test this (it will have to wait a couple of weeks), but the problem with this here is that there is no "mov" instructions that can move stuff between MMX registers and SSE registe

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-06-21 Thread steven at gcc dot gnu dot org
--- Additional Comments From steven at gcc dot gnu dot org 2005-06-21 11:18 --- Is the emms issue mentioned in comment #14 fixed with Uros' patch proposed here: http://gcc.gnu.org/ml/gcc-patches/2005-06/msg01724.html? -- What|Removed |Added

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-29 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-29 19:21 --- Hum, ok we can do a "movd %mm0, %eax", that's why it gets combined... Well, I give up. The V8QI (and whatever) -> V2SI conversion seems to be causing all the trouble here if we look at the RTL of something li

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-28 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-29 04:47 --- Hum, there apparently seems to be a problem with the optimization stages.. I cooked up another snippet : void moo(__m64 i, unsigned int *r) { unsigned int tmp = __builtin_ia32_vec_ext_v2si (i, 0); *r = t

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-27 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-27 22:55 --- I think I'm starting to see the problem here... I tried to understand more of the code, and from this and what you tell me, gcc find registers to use and then finds instructions to that fits the bill. So preven

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-27 06:19 --- Ok, so from what I gather, the backend is being designed for the autovectorizer which will probably only work right with SSE2 (on x86 that is), as mucking with emms will probably bring too much trouble. Second,

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread rth at gcc dot gnu dot org
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-27 03:55 --- PS, your best solution, for now, is simply to use -mno-sse for the files in which you have mmx code. Move the sse code to a separate file. That really is all I can do or suggest. -- http://gcc.gnu.org/bugz

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread rth at gcc dot gnu dot org
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-27 03:52 --- > So, is there some sort of "pragma" that could be used to disable SSE > registers(force -mmmx sort of) for only part of some code? No. > __m64 should always be on mmx registers, and __m128 should always be o

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-27 02:30 --- Ok ok, SSE is not enabled by default on Athlon... So, is there some sort of "pragma" that could be used to disable SSE registers (force -mmmx sort of) for only part of some code? The way I see it, the probl

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread rth at gcc dot gnu dot org
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-27 00:11 --- (In reply to comment #10) > That seems like some weird bug here. There musn't be a THAT big of a > difference > between the code for pentium3 and the one for athlon right? Well, duh, athlon doesn't have sse.

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-27 00:08 --- Oh oh, I think I'm getting somewhere... if I use both -march=athlon and -msse flags I get the "bad" code. Let me summarize this : -march=pentium3 = bad -msse = bad -march=athlon = good (ie.: no weird movss

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-26 23:59 --- Even stranger, it doesn't do it with -march=athlon either... only -march=pentium, pentium2 or pentium3... ? That seems like some weird bug here. There musn't be a THAT big of a difference between the code for

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-26 23:51 --- I'm wondering, would there be a #pragma directive that would we could use to surround the MMX instrinsics function, and that would prevent the compiler from using the XMM registers?? -- http://gcc.gnu.org/b

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread rth at gcc dot gnu dot org
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-26 18:40 --- Sorry, but this appears to be unfixable without a complete rewrite of MMX support. Everything I tried had side effects where MMX instructions were used when we were not using MMX intrinsics. -- Wh

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread rth at gcc dot gnu dot org
-- What|Removed |Added AssignedTo|rth at gcc dot gnu dot org |unassigned at gcc dot gnu ||dot org Status|ASSIGNED

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-26 Thread rth at gcc dot gnu dot org
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-26 15:47 --- Hmm. Seems to only happen with -march=pentium3, and not -march=pentium4... -- What|Removed |Added ---

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-24 Thread guardia at sympatico dot ca
--- Additional Comments From guardia at sympatico dot ca 2005-01-24 18:09 --- MMX intrinsics don't seem to be a standard (?), but I'm under the impression that _mm_cvtsi32_si64 is supposed to generate MMX code. I just tested With (GCC) 4.0.0 20050123, and with -mmmx flag, the result is s

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-20 Thread pinskia at gcc dot gnu dot org
-- What|Removed |Added Target Milestone|--- |4.0.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19530

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-20 Thread rth at gcc dot gnu dot org
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-20 18:44 --- Fixed. -- What|Removed |Added Status|ASSIGNED|RESOLVED

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-20 Thread rth at gcc dot gnu dot org
-- What|Removed |Added AssignedTo|unassigned at gcc dot gnu |rth at gcc dot gnu dot org |dot org | Status|UNCONFIRMED

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-20 Thread cvs-commit at gcc dot gnu dot org
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-01-20 18:34 --- Subject: Bug 19530 CVSROOT:/cvs/gcc Module name:gcc Changes by: [EMAIL PROTECTED] 2005-01-20 18:34:13 Modified files: gcc: ChangeLog gcc/config/i386: i

[Bug target/19530] MMX load intrinsic produces SSE superfluous instructions (movlps)

2005-01-20 Thread bangerth at dealii dot org
-- What|Removed |Added Summary|MMX load intrinsic produces |MMX load intrinsic produces |SSE superflus instructions |SSE superfluous instructions