Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
96d86115
Commit
96d86115
authored
Oct 07, 2011
by
Richard Henderson
Committed by
Richard Henderson
Oct 07, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
i386: Fix representation of 256-bit vpblendw.
From-SVN: r179697
parent
621babd8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
51 additions
and
6 deletions
+51
-6
gcc/ChangeLog
+6
-0
gcc/config/i386/predicates.md
+9
-0
gcc/config/i386/sse.md
+36
-6
No files found.
gcc/ChangeLog
View file @
96d86115
2011-10-07 Richard Henderson <rth@redhat.com>
* config/i386/predicates.md (avx2_pblendw_operand): New.
* config/i386/sse.md (sse4_1_pblendw): Un-macroize.
(avx2_pblendw, *avx2_pblendw): New expander and insn.
2011-10-07 Richard Henderson <rth@redhat.com>
* config/i386/i386.c (bdesc_args): Update code for
__builtin_ia32_palignr256. Change type of __builtin_ia32_pslldqi256,
and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
gcc/config/i386/predicates.md
View file @
96d86115
...
...
@@ -1210,3 +1210,12 @@
return false;
return true;
})
;; Return true if OP is a proper third operand to vpblendw256.
(define_predicate "avx2_pblendw_operand"
(match_code "const_int")
{
HOST_WIDE_INT val = INTVAL (op);
HOST_WIDE_INT low = val & 0xff;
return val == (low << 8) | low;
})
gcc/config/i386/sse.md
View file @
96d86115
...
...
@@ -9417,11 +9417,11 @@
(set_attr "prefix" "orig,vex")
(set_attr "mode" "
<sseinsnmode>
")])
(define_insn "
<sse4
_1_avx2
>
_pblendw"
[
(set (match_operand:V
I2_AVX2
0 "register_operand" "=x,x")
(vec_merge:V
I2_AVX2
(match_operand:V
I2_AVX2
2 "nonimmediate_operand" "xm,xm")
(match_operand:V
I2_AVX2
1 "register_operand" "0,x")
(define_insn "
sse4_1
_pblendw"
[
(set (match_operand:V
8HI
0 "register_operand" "=x,x")
(vec_merge:V
8HI
(match_operand:V
8HI
2 "nonimmediate_operand" "xm,xm")
(match_operand:V
8HI
1 "register_operand" "0,x")
(match_operand:SI 3 "const_0_to_255_operand" "n,n")))]
"TARGET_SSE4_1"
"@
...
...
@@ -9432,7 +9432,37 @@
(set_attr "prefix_extra" "1")
(set_attr "length_immediate" "1")
(set_attr "prefix" "orig,vex")
(set_attr "mode" "
<sseinsnmode>
")])
(set_attr "mode" "TI")])
;; The builtin uses an 8-bit immediate. Expand that.
(define_expand "avx2_pblendw"
[
(set (match_operand:V16HI 0 "register_operand" "")
(vec_merge:V16HI
(match_operand:V16HI 2 "nonimmediate_operand" "")
(match_operand:V16HI 1 "register_operand" "")
(match_operand:SI 3 "const_0_to_255_operand" "")))]
"TARGET_AVX2"
{
HOST_WIDE_INT val = INTVAL (operands
[
3
]
) & 0xff;
operands
[
3
]
= GEN_INT (val << 8 | val);
})
(define_insn "
*
avx2_pblendw"
[
(set (match_operand:V16HI 0 "register_operand" "=x")
(vec_merge:V16HI
(match_operand:V16HI 2 "nonimmediate_operand" "xm")
(match_operand:V16HI 1 "register_operand" "x")
(match_operand:SI 3 "avx2_pblendw_operand" "n")))]
"TARGET_SSE4_1"
{
operands
[
3
]
= GEN_INT (INTVAL (operands
[
3
]
) & 0xff);
return "vpblendw
\t
{%3, %2, %1, %0|%0, %1, %2, %3}";
}
[
(set_attr "type" "ssemov")
(set_attr "prefix_extra" "1")
(set_attr "length_immediate" "1")
(set_attr "prefix" "vex")
(set_attr "mode" "OI")])
(define_insn "avx2_pblendd
<mode>
"
[
(set (match_operand:VI4_AVX2 0 "register_operand" "=x")
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment