compiler.cfg.value-numbering: constant folding for ##shuffle-vector
parent
53a51957df
commit
be733cd797
|
@ -99,6 +99,17 @@ M: ##gather-vector-4 rewrite rewrite-gather-vector-4 ;
|
||||||
|
|
||||||
M: ##gather-int-vector-4 rewrite rewrite-gather-vector-4 ;
|
M: ##gather-int-vector-4 rewrite rewrite-gather-vector-4 ;
|
||||||
|
|
||||||
|
: fold-shuffle-vector ( insn src1 src2 -- insn )
|
||||||
|
[ dst>> ] [ obj>> ] [ obj>> ] tri*
|
||||||
|
swap nths \ ##load-reference new-insn ;
|
||||||
|
|
||||||
|
M: ##shuffle-vector rewrite
|
||||||
|
dup [ src>> vreg>insn ] [ shuffle>> vreg>insn ] bi
|
||||||
|
{
|
||||||
|
{ [ 2dup [ ##load-reference? ] both? ] [ fold-shuffle-vector ] }
|
||||||
|
[ 3drop f ]
|
||||||
|
} cond ;
|
||||||
|
|
||||||
M: ##xor-vector rewrite
|
M: ##xor-vector rewrite
|
||||||
dup diagonal?
|
dup diagonal?
|
||||||
[ [ dst>> ] [ rep>> ] bi \ ##zero-vector new-insn ] [ drop f ] if ;
|
[ [ dst>> ] [ rep>> ] bi \ ##zero-vector new-insn ] [ drop f ] if ;
|
||||||
|
|
|
@ -2348,6 +2348,22 @@ cell 8 = [
|
||||||
} value-numbering-step
|
} value-numbering-step
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
T{ ##load-integer f 0 55 }
|
||||||
|
T{ ##load-reference f 1 B{ 55 0 55 0 55 0 55 0 55 0 55 0 55 0 55 0 } }
|
||||||
|
T{ ##load-reference f 2 B{ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 } }
|
||||||
|
T{ ##load-reference f 3 B{ 0 55 0 55 0 55 0 55 0 55 0 55 0 55 0 55 } }
|
||||||
|
}
|
||||||
|
] [
|
||||||
|
{
|
||||||
|
T{ ##load-integer f 0 55 }
|
||||||
|
T{ ##scalar>vector f 1 0 short-8-rep }
|
||||||
|
T{ ##load-reference f 2 B{ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 } }
|
||||||
|
T{ ##shuffle-vector f 3 1 2 float-4-rep }
|
||||||
|
} value-numbering-step
|
||||||
|
] unit-test
|
||||||
|
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
T{ ##load-reference f 0 1.25 }
|
T{ ##load-reference f 0 1.25 }
|
||||||
|
|
Loading…
Reference in New Issue