aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-07-19 17:30:49 +0000
committerTorbjörn Andersson2005-07-19 17:30:49 +0000
commitf7749e4789b957c3feae1f6db1c0836bbe2956a3 (patch)
treea4e60ca55b63bdaaef5501ca387cd2a0310c0001
parent3d4192de8843b2db90258f912e3b31030fa063ef (diff)
downloadscummvm-rg350-f7749e4789b957c3feae1f6db1c0836bbe2956a3.tar.gz
scummvm-rg350-f7749e4789b957c3feae1f6db1c0836bbe2956a3.tar.bz2
scummvm-rg350-f7749e4789b957c3feae1f6db1c0836bbe2956a3.zip
I believe this fixes a GCC 4 compile error, but I can't run the MT-32
emulator (my computer is too slow, and anyway I don't have the necessary data files) so I haven't tested it other than by compiling it. See bug #1224138 for details. svn-id: r18558
-rw-r--r--sound/softsynth/mt32/i386.cpp42
1 files changed, 35 insertions, 7 deletions
diff --git a/sound/softsynth/mt32/i386.cpp b/sound/softsynth/mt32/i386.cpp
index e45e8daab8..a936782ff8 100644
--- a/sound/softsynth/mt32/i386.cpp
+++ b/sound/softsynth/mt32/i386.cpp
@@ -139,7 +139,11 @@ static inline float atti386_iir_filter_sse(float *output, float *hist1_ptr, floa
"popl %2 \n" \
"popl %1 \n" \
: : "r"(output), "r"(coef_ptr), "r"(hist1_ptr)
- : "xmm1", "xmm2", "xmm3", "memory");
+ : "memory"
+#ifdef __SSE__
+ , "xmm1", "xmm2", "xmm3"
+#endif
+ );
return *output;
}
@@ -210,7 +214,11 @@ static inline float atti386_iir_filter_3DNow(float output, float *hist1_ptr, flo
"movd %%mm1, %0 \n" \
"femms \n" \
: "=m"(output) : "g"(coef_ptr), "g"(hist1_ptr), "m"(tmp)
- : "eax", "ebx", "mm1", "mm2", "mm3", "memory");
+ : "eax", "ebx", "memory"
+#ifdef __MMX__
+ , "mm1", "mm2", "mm3"
+#endif
+ );
return output;
}
@@ -242,7 +250,11 @@ static inline void atti386_produceOutput1(int tmplen, Bit16s myvolume, Bit16s *u
"jg 1b \n" \
"emms \n" \
: : "g"(tmplen), "g"(myvolume), "g"(useBuf), "g"(snd)
- : "eax", "ecx", "edi", "esi", "mm1", "mm2", "mm3", "memory");
+ : "eax", "ecx", "edi", "esi", "memory"
+#ifdef __MMX__
+ , "mm1", "mm2", "mm3"
+#endif
+ );
}
static inline void atti386_produceOutput2(Bit32u len, Bit16s *snd, float *sndbufl, float *sndbufr, float *multFactor) {
@@ -302,7 +314,11 @@ static inline void atti386_mixBuffers(Bit16s * buf1, Bit16s *buf2, int len) {
"jg 1b \n" \
"emms \n" \
: : "g"(len), "g"(buf1), "g"(buf2)
- : "ecx", "edi", "esi", "mm1", "mm2", "memory");
+ : "ecx", "edi", "esi", "memory"
+#ifdef __MMX__
+ , "mm1", "mm2"
+#endif
+ );
}
static inline void atti386_mixBuffersRingMix(Bit16s * buf1, Bit16s *buf2, int len) {
@@ -324,7 +340,11 @@ static inline void atti386_mixBuffersRingMix(Bit16s * buf1, Bit16s *buf2, int le
"jg 1b \n" \
"emms \n" \
: : "g"(len), "g"(buf1), "g"(buf2)
- : "ecx", "edi", "esi", "mm1", "mm2", "mm3", "memory");
+ : "ecx", "edi", "esi", "memory"
+#ifdef __MMX__
+ , "mm1", "mm2", "mm3"
+#endif
+ );
}
static inline void atti386_mixBuffersRing(Bit16s * buf1, Bit16s *buf2, int len) {
@@ -344,7 +364,11 @@ static inline void atti386_mixBuffersRing(Bit16s * buf1, Bit16s *buf2, int len)
"jg 1b \n" \
"emms \n" \
: : "g"(len), "g"(buf1), "g"(buf2)
- : "ecx", "edi", "esi", "mm1", "mm2", "memory");
+ : "ecx", "edi", "esi", "memory"
+#ifdef __MMX__
+ , "mm1", "mm2"
+#endif
+ );
}
static inline void atti386_partialProductOutput(int quadlen, Bit16s leftvol, Bit16s rightvol, Bit16s *partialBuf, Bit16s *p1buf) {
@@ -385,7 +409,11 @@ static inline void atti386_partialProductOutput(int quadlen, Bit16s leftvol, Bit
"jg 1b \n" \
"emms \n" \
: : "g"(quadlen), "g"(leftvol), "g"(rightvol), "g"(partialBuf), "g"(p1buf)
- : "eax", "ebx", "ecx", "edx", "edi", "esi", "mm1", "mm2", "mm3", "memory");
+ : "eax", "ebx", "ecx", "edx", "edi", "esi", "memory"
+#ifdef __MMX__
+ , "mm1", "mm2", "mm3"
+#endif
+ );
}
#endif