This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, i386]: Committed: Macroize DFmode and SFmode SSE patterns
Richard Guenther wrote:
On Wed, Feb 20, 2008 at 2:25 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
Hello!
This patch macroizes DFmode and SFmode SSE patterns from sse.md.
Did this maybe break some fortran tests on x86_64 with
/tmp/ccE0G8CC.s: Assembler messages:^M
/tmp/ccE0G8CC.s:179: Error: invalid character '<' in mnemonic^M
compiler exited with status 1
?
FAIL: gfortran.dg/array_2.f90 -O3 -fomit-frame-pointer (test for excess errors
)
WARNING: gfortran.dg/array_2.f90 -O3 -fomit-frame-pointer compilation failed t
o produce executable
Fixed by attached patch that fixes this and similar typos in asm
patterns through sse.md. These are not all mine. ;)
2008-02-20 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
(<sse>_div<mode>3): Ditto.
(<sse>_vmdiv<mode>3): Ditto.
(<sse>_vmsqrt<mode>2): Ditto.
(*smax<mode>3): Ditto.
(sse5_frcz<mode>2): Ditto.
(sse5_vmfrcz<mode>2): Ditto. Use TARGET_SSE5 instead of
TARGET_ROUND
for insn constraint.
Patch was bootstrapped on x86_64-pc-linux-gnu and is currently in
testing on x86_64-pc-linux-gnu {,-m32}. Will be committed to SVN as soon
as testing finishes (less than one hour from now.)
BTW: This patch removes ~500 lines, but sorry for troubles anyway...
Uros.
Index: sse.md
===================================================================
--- sse.md (revision 132483)
+++ sse.md (working copy)
@@ -455,7 +455,7 @@
(const_int 1)))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)
&& ix86_binary_operator_ok (MULT, <MODE>mode, operands)"
- "muls<ssemodesuffix2c>\t{%2, %0|%0, %2}"
+ "muls<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssemul")
(set_attr "mode" "<ssescalarmode>")])
@@ -490,7 +490,7 @@
(match_operand:SSEMODEF2P 1 "register_operand" "0")
(match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
- "divp<ssemodesuffix2c>\t{%2, %0|%0, %2}"
+ "divp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssediv")
(set_attr "mode" "<MODE>")])
@@ -503,7 +503,7 @@
(match_dup 1)
(const_int 1)))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
- "divs<ssemodesuffix2c>\t{%2, %0|%0, %2}"
+ "divs<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssediv")
(set_attr "mode" "<ssescalarmode>")])
@@ -566,7 +566,7 @@
(match_operand:SSEMODEF2P 2 "register_operand" "0")
(const_int 1)))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
- "sqrts<ssemodesuffix2c>\t{%1, %0|%0, %1}"
+ "sqrts<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
[(set_attr "type" "sse")
(set_attr "mode" "<ssescalarmode>")])
@@ -680,7 +680,7 @@
(match_operand:SSEMODEF2P 1 "register_operand" "0")
(match_operand:SSEMODEF2P 2 "nonimmediate_operand" "xm")))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
- "maxp<ssemodesuffix2c>\t{%2, %0|%0, %2}"
+ "maxp<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "<MODE>")])
@@ -693,7 +693,7 @@
(match_dup 1)
(const_int 1)))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
- "maxs<ssemodesuffix2c>\t{%2, %0|%0, %2}"
+ "maxs<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
[(set_attr "type" "sseadd")
(set_attr "mode" "<ssescalarmode>")])
@@ -8132,7 +8132,7 @@
[(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm")]
UNSPEC_FRCZ))]
"TARGET_SSE5"
- "frcz<ssesuffixf4>\t{%1, %0|%0, %1}"
+ "frcz<ssemodesuffixf4>\t{%1, %0|%0, %1}"
[(set_attr "type" "ssecvt1")
(set_attr "prefix_extra" "1")
(set_attr "mode" "<MODE>")])
@@ -8147,7 +8147,7 @@
(match_operand:SSEMODEF2P 1 "register_operand" "0")
(const_int 1)))]
"TARGET_ROUND"
- "frcz<ssesuffixf2s>\t{%2, %0|%0, %2}"
+ "frcz<ssemodesuffixf2s>\t{%2, %0|%0, %2}"
[(set_attr "type" "ssecvt1")
(set_attr "prefix_extra" "1")
(set_attr "mode" "<MODE>")])