public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
@ 2021-09-14 15:00 dcb314 at hotmail dot com
  2021-09-14 15:01 ` [Bug target/102327] " dcb314 at hotmail dot com
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: dcb314 at hotmail dot com @ 2021-09-14 15:00 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

            Bug ID: 102327
           Summary: gcc/config/i386/i386-expand.c:14678: Suspicious coding
                    ?
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

Static analyser cppcheck says:

gcc/config/i386/i386-expand.c:14678:8: style: Variable 'op1' is reassigned a
value before the old one has been used. [redundantAssignment]

Source code is

          /* Convert HFmode to HImode.  */
          op1 = gen_reg_rtx (HImode);
          op1 = gen_rtx_SUBREG (HImode, force_reg (HFmode, op), 0);

I don't know the code, but if the return value from gen_reg_rtx isn't
needed, then suggest don't assign it into op1.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102327] gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
  2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
@ 2021-09-14 15:01 ` dcb314 at hotmail dot com
  2021-09-14 16:05 ` hjl.tools at gmail dot com
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: dcb314 at hotmail dot com @ 2021-09-14 15:01 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

David Binderman <dcb314 at hotmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |liuhongt at gcc dot gnu.org

--- Comment #1 from David Binderman <dcb314 at hotmail dot com> ---
Adding author for clarification.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102327] gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
  2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
  2021-09-14 15:01 ` [Bug target/102327] " dcb314 at hotmail dot com
@ 2021-09-14 16:05 ` hjl.tools at gmail dot com
  2021-09-15  1:10 ` crazylht at gmail dot com
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: hjl.tools at gmail dot com @ 2021-09-14 16:05 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hjl.tools at gmail dot com
   Target Milestone|---                         |12.0
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2021-09-14

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102327] gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
  2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
  2021-09-14 15:01 ` [Bug target/102327] " dcb314 at hotmail dot com
  2021-09-14 16:05 ` hjl.tools at gmail dot com
@ 2021-09-15  1:10 ` crazylht at gmail dot com
  2021-09-15  9:26 ` crazylht at gmail dot com
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: crazylht at gmail dot com @ 2021-09-15  1:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

--- Comment #2 from Hongtao.liu <crazylht at gmail dot com> ---
Yes, it's redundant, Also vector init for v8hf is not optimal
, refer to https://godbolt.org/z/M6a4aav48.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102327] gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
  2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
                   ` (2 preceding siblings ...)
  2021-09-15  1:10 ` crazylht at gmail dot com
@ 2021-09-15  9:26 ` crazylht at gmail dot com
  2021-09-15 10:49 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: crazylht at gmail dot com @ 2021-09-15  9:26 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

--- Comment #3 from Hongtao.liu <crazylht at gmail dot com> ---
Here's optimization i did for v8hf/v16hf/v32hf vec_set/init/extract.

diff --git a/origin.s b/after.s
index e43e09c..5ea1fb6 100644
--- a/origin.s
+++ b/after.s
@@ -6,25 +6,13 @@
 vec_init_v8hf:
 .LFB0:
        .cfi_startproc
-       vmovw   %xmm0, %eax
-       vmovw   %xmm2, %esi
-       vmovw   %xmm4, %edx
-       vmovw   %xmm6, %ecx
-       vmovd   %eax, %xmm0
-       vmovw   %xmm1, %eax
-       vmovd   %esi, %xmm1
-       vmovd   %ecx, %xmm2
-       vpinsrw $1, %eax, %xmm0, %xmm0
-       vmovw   %xmm3, %eax
-       vpinsrw $1, %eax, %xmm1, %xmm3
-       vmovw   %xmm5, %eax
-       vmovd   %edx, %xmm1
-       vpinsrw $1, %eax, %xmm1, %xmm1
-       vmovw   %xmm7, %eax
-       vpunpckldq      %xmm3, %xmm0, %xmm0
-       vpinsrw $1, %eax, %xmm2, %xmm2
-       vpunpckldq      %xmm2, %xmm1, %xmm1
-       vpunpcklqdq     %xmm1, %xmm0, %xmm0
+       vpunpcklwd      %xmm1, %xmm0, %xmm0
+       vpunpcklwd      %xmm3, %xmm2, %xmm2
+       vpunpcklwd      %xmm5, %xmm4, %xmm4
+       vpunpcklwd      %xmm7, %xmm6, %xmm6
+       vpunpckldq      %xmm2, %xmm0, %xmm0
+       vpunpckldq      %xmm6, %xmm4, %xmm4
+       vpunpcklqdq     %xmm4, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE0:
@@ -35,8 +23,7 @@ vec_init_v8hf:
 vec_extract_v8hf_4:
 .LFB1:
        .cfi_startproc
-       vpextrw $4, %xmm0, %eax
-       vmovw   %eax, %xmm0
+       vpsrldq $8, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE1:
@@ -47,8 +34,7 @@ vec_extract_v8hf_4:
 vec_extract_v16hf_3:
 .LFB2:
        .cfi_startproc
-       vpextrw $3, %xmm0, %eax
-       vmovw   %eax, %xmm0
+       vpsrldq $6, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE2:
@@ -71,8 +57,7 @@ vec_extract_v16hf_15:
 .LFB4:
        .cfi_startproc
        vextracti128    $0x1, %ymm0, %xmm0
-       vpextrw $7, %xmm0, %eax
-       vmovw   %eax, %xmm0
+       vpsrldq $14, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE4:
@@ -83,8 +68,7 @@ vec_extract_v16hf_15:
 vec_extract_v32hf_5:
 .LFB5:
        .cfi_startproc
-       vpextrw $5, %xmm0, %eax
-       vmovw   %eax, %xmm0
+       vpsrldq $10, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE5:
@@ -107,8 +91,7 @@ vec_extract_v32hf_14:
 .LFB7:
        .cfi_startproc
        vextracti128    $0x1, %ymm0, %xmm0
-       vpextrw $6, %xmm0, %eax
-       vmovw   %eax, %xmm0
+       vpsrldq $12, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE7:
@@ -144,8 +127,7 @@ vec_extract_v32hf_28:
        .cfi_startproc
        vextracti64x4   $0x1, %zmm0, %ymm0
        vextracti128    $0x1, %ymm0, %xmm0
-       vpextrw $4, %xmm0, %eax
-       vmovw   %eax, %xmm0
+       vpsrldq $8, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE10:
@@ -156,8 +138,8 @@ vec_extract_v32hf_28:
 vec_set_v8hf_4:
 .LFB11:
        .cfi_startproc
-       vmovw   %xmm1, %eax
-       vpinsrw $4, %eax, %xmm0, %xmm0
+       vpbroadcastw    %xmm1, %xmm1
+       vpblendw        $16, %xmm1, %xmm0, %xmm0
        ret
        .cfi_endproc
 .LFE11:
@@ -168,9 +150,9 @@ vec_set_v8hf_4:
 vec_set_v16hf_3:
 .LFB12:
        .cfi_startproc
-       vmovw   %xmm1, %eax
-       vpinsrw $3, %eax, %xmm0, %xmm2
-       vinserti128     $0x0, %xmm2, %ymm0, %ymm0
+       vpbroadcastw    %xmm1, %ymm1
+       vpblendw        $8, %ymm1, %ymm0, %ymm1
+       vpblendd        $15, %ymm1, %ymm0, %ymm0
        ret
        .cfi_endproc
 .LFE12:
@@ -181,9 +163,9 @@ vec_set_v16hf_3:
 vec_set_v16hf_8:
 .LFB13:
        .cfi_startproc
-       vextracti128    $0x1, %ymm0, %xmm2
-       vmovsh  %xmm1, %xmm2, %xmm2
-       vinserti128     $0x1, %xmm2, %ymm0, %ymm0
+       vpbroadcastw    %xmm1, %ymm1
+       vpblendw        $1, %ymm1, %ymm0, %ymm1
+       vpblendd        $240, %ymm1, %ymm0, %ymm0
        ret
        .cfi_endproc
 .LFE13:
@@ -194,10 +176,9 @@ vec_set_v16hf_8:
 vec_set_v16hf_15:
 .LFB14:
        .cfi_startproc
-       vextracti128    $0x1, %ymm0, %xmm2
-       vmovw   %xmm1, %eax
-       vpinsrw $7, %eax, %xmm2, %xmm2
-       vinserti128     $0x1, %xmm2, %ymm0, %ymm0
+       vpbroadcastw    %xmm1, %ymm1
+       vpblendw        $128, %ymm1, %ymm0, %ymm1
+       vpblendd        $240, %ymm1, %ymm0, %ymm0
        ret
        .cfi_endproc
 .LFE14:
@@ -208,7 +189,8 @@ vec_set_v16hf_15:
 vec_set_v32hf_5:
 .LFB15:
        .cfi_startproc
-       kmovd   .LC0(%rip), %k1
+       movl    $32, %eax
+       kmovd   %eax, %k1
        vpbroadcastw    %xmm1, %zmm0{%k1}
        ret
        .cfi_endproc
@@ -220,7 +202,8 @@ vec_set_v32hf_5:
 vec_set_v32hf_8:
 .LFB16:
        .cfi_startproc
-       kmovd   .LC1(%rip), %k1
+       movl    $256, %eax
+       kmovd   %eax, %k1
        vpbroadcastw    %xmm1, %zmm0{%k1}
        ret
        .cfi_endproc
@@ -232,7 +215,8 @@ vec_set_v32hf_8:
 vec_set_v32hf_14:
 .LFB17:
        .cfi_startproc
-       kmovd   .LC2(%rip), %k1
+       movl    $16384, %eax
+       kmovd   %eax, %k1
        vpbroadcastw    %xmm1, %zmm0{%k1}
        ret
        .cfi_endproc
@@ -244,7 +228,8 @@ vec_set_v32hf_14:
 vec_set_v32hf_16:
 .LFB18:
        .cfi_startproc
-       kmovd   .LC3(%rip), %k1
+       movl    $65536, %eax
+       kmovd   %eax, %k1
        vpbroadcastw    %xmm1, %zmm0{%k1}
        ret
        .cfi_endproc
@@ -256,7 +241,8 @@ vec_set_v32hf_16:
 vec_set_v32hf_24:
 .LFB19:
        .cfi_startproc
-       kmovd   .LC4(%rip), %k1
+       movl    $16777216, %eax
+       kmovd   %eax, %k1
        vpbroadcastw    %xmm1, %zmm0{%k1}
        ret
        .cfi_endproc
@@ -268,30 +254,12 @@ vec_set_v32hf_24:
 vec_set_v32hf_28:
 .LFB20:
        .cfi_startproc
-       kmovd   .LC5(%rip), %k1
+       movl    $268435456, %eax
+       kmovd   %eax, %k1
        vpbroadcastw    %xmm1, %zmm0{%k1}
        ret
        .cfi_endproc
 .LFE20:
        .size   vec_set_v32hf_28, .-vec_set_v32hf_28
-       .section        .rodata.cst4,"aM",@progbits,4
-       .align 4
-.LC0:
-       .long   32
-       .align 4
-.LC1:
-       .long   256
-       .align 4
-.LC2:
-       .long   16384
-       .align 4
-.LC3:
-       .long   65536
-       .align 4
-.LC4:
-       .long   16777216
-       .align 4
-.LC5:
-       .long   268435456
        .ident  "GCC: (GNU) 12.0.0 20210913 (experimental)"
        .section        .note.GNU-stack,"",@progbits

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102327] gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
  2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
                   ` (3 preceding siblings ...)
  2021-09-15  9:26 ` crazylht at gmail dot com
@ 2021-09-15 10:49 ` cvs-commit at gcc dot gnu.org
  2021-09-15 10:49 ` crazylht at gmail dot com
  2021-09-15 20:39 ` pinskia at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-09-15 10:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by hongtao Liu <liuhongt@gcc.gnu.org>:

https://gcc.gnu.org/g:7fc4d6000a0d6c847c4c07373fbd4a17e54c678f

commit r12-3547-g7fc4d6000a0d6c847c4c07373fbd4a17e54c678f
Author: liuhongt <hongtao.liu@intel.com>
Date:   Wed Sep 15 15:19:28 2021 +0800

    Optimize for V{8,16,32}HFmode vec_set/extract/init.

    gcc/ChangeLog:

            PR target/102327
            * config/i386/i386-expand.c
            (ix86_expand_vector_init_interleave): Use puncklwd to pack 2
            HFmodes.
            (ix86_expand_vector_set): Use blendw instead of pinsrw.
            * config/i386/i386.c (ix86_can_change_mode_class): Adjust for
            AVX512FP16 which supports 16bit vector load.
            * config/i386/sse.md (avx512bw_interleave_highv32hi<mask_name>):
            Rename to ..
            (avx512bw_interleave_high<mode><mask_name>): .. this, and
            extend to V32HFmode.
            (avx2_interleave_highv16hi<mask_name>): Rename to ..
            (avx2_interleave_high<mode><mask_name>): .. this, and extend
            to V16HFmode.
            (vec_interleave_highv8hi<mask_name>): Rename to ..
            (vec_interleave_high<mode><mask_name>): .. this, and extend to
V8HFmode.
            (<mask_codefor>avx512bw_interleave_lowv32hi<mask_name>):
            Rename to ..
            (<mask_codefor>avx512bw_interleave_low<mode><mask_name>):
            this, and extend to V32HFmode.
            (avx2_interleave_lowv16hi<mask_name>): Rename to ..
            (avx2_interleave_low<mode><mask_name>): .. this, and extend to
V16HFmode.
            (vec_interleave_lowv8hi<mask_name>): Rename to ..
            (vec_interleave_low<mode><mask_name>): .. this, and extend to
V8HFmode.
            (sse4_1_pblendw): Rename to ..
            (sse4_1_pblend<blendsuf>): .. this, and extend to V8HFmode.
            (avx2_pblendph): New define_expand.
            (<sse2p4_1>_pinsr<ssemodesuffix>): Refactor, use
            sseintmodesuffix instead of ssemodesuffix.
            (blendsuf): New mode attr.

    gcc/testsuite/ChangeLog:

            * gcc.target/i386/pr102327-1.c: New test.
            * gcc.target/i386/pr102327-2.c: New test.
            * gcc.target/i386/avx512fp16-1c.c: Adjust testcase.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102327] gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
  2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
                   ` (4 preceding siblings ...)
  2021-09-15 10:49 ` cvs-commit at gcc dot gnu.org
@ 2021-09-15 10:49 ` crazylht at gmail dot com
  2021-09-15 20:39 ` pinskia at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: crazylht at gmail dot com @ 2021-09-15 10:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

--- Comment #5 from Hongtao.liu <crazylht at gmail dot com> ---
Fixed in GCC12.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/102327] gcc/config/i386/i386-expand.c:14678: Suspicious coding ?
  2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
                   ` (5 preceding siblings ...)
  2021-09-15 10:49 ` crazylht at gmail dot com
@ 2021-09-15 20:39 ` pinskia at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-09-15 20:39 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102327

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-09-15 20:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-14 15:00 [Bug target/102327] New: gcc/config/i386/i386-expand.c:14678: Suspicious coding ? dcb314 at hotmail dot com
2021-09-14 15:01 ` [Bug target/102327] " dcb314 at hotmail dot com
2021-09-14 16:05 ` hjl.tools at gmail dot com
2021-09-15  1:10 ` crazylht at gmail dot com
2021-09-15  9:26 ` crazylht at gmail dot com
2021-09-15 10:49 ` cvs-commit at gcc dot gnu.org
2021-09-15 10:49 ` crazylht at gmail dot com
2021-09-15 20:39 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).