fix x86 %unpack-vector insns
parent
a319dde8b5
commit
879fe9a665
|
@ -303,11 +303,13 @@ literal: rep ;
|
||||||
PURE-INSN: ##unpack-vector-head
|
PURE-INSN: ##unpack-vector-head
|
||||||
def: dst
|
def: dst
|
||||||
use: src
|
use: src
|
||||||
|
temp: temp
|
||||||
literal: rep ;
|
literal: rep ;
|
||||||
|
|
||||||
PURE-INSN: ##unpack-vector-tail
|
PURE-INSN: ##unpack-vector-tail
|
||||||
def: dst
|
def: dst
|
||||||
use: src
|
use: src
|
||||||
|
temp: temp
|
||||||
literal: rep ;
|
literal: rep ;
|
||||||
|
|
||||||
PURE-INSN: ##integer>float-vector
|
PURE-INSN: ##integer>float-vector
|
||||||
|
@ -813,8 +815,6 @@ UNION: def-is-use-insn
|
||||||
##box-displaced-alien
|
##box-displaced-alien
|
||||||
##compare-vector
|
##compare-vector
|
||||||
##not-vector
|
##not-vector
|
||||||
##unpack-vector-head
|
|
||||||
##unpack-vector-tail
|
|
||||||
##string-nth
|
##string-nth
|
||||||
##unbox-any-c-ptr ;
|
##unbox-any-c-ptr ;
|
||||||
|
|
||||||
|
|
|
@ -234,8 +234,8 @@ HOOK: %merge-vector-head cpu ( dst src1 src2 rep -- )
|
||||||
HOOK: %merge-vector-tail cpu ( dst src1 src2 rep -- )
|
HOOK: %merge-vector-tail cpu ( dst src1 src2 rep -- )
|
||||||
HOOK: %signed-pack-vector cpu ( dst src1 src2 rep -- )
|
HOOK: %signed-pack-vector cpu ( dst src1 src2 rep -- )
|
||||||
HOOK: %unsigned-pack-vector cpu ( dst src1 src2 rep -- )
|
HOOK: %unsigned-pack-vector cpu ( dst src1 src2 rep -- )
|
||||||
HOOK: %unpack-vector-head cpu ( dst src rep -- )
|
HOOK: %unpack-vector-head cpu ( dst src temp rep -- )
|
||||||
HOOK: %unpack-vector-tail cpu ( dst src rep -- )
|
HOOK: %unpack-vector-tail cpu ( dst src temp rep -- )
|
||||||
HOOK: %integer>float-vector cpu ( dst src rep -- )
|
HOOK: %integer>float-vector cpu ( dst src rep -- )
|
||||||
HOOK: %float>integer-vector cpu ( dst src rep -- )
|
HOOK: %float>integer-vector cpu ( dst src rep -- )
|
||||||
HOOK: %compare-vector cpu ( dst src1 src2 temp rep cc -- )
|
HOOK: %compare-vector cpu ( dst src1 src2 temp rep cc -- )
|
||||||
|
|
|
@ -783,23 +783,25 @@ M: x86 %unsigned-pack-vector-reps
|
||||||
{ longlong-2-rep [ PCMPGTQ ] }
|
{ longlong-2-rep [ PCMPGTQ ] }
|
||||||
} case ;
|
} case ;
|
||||||
|
|
||||||
:: (%unpack-vector-dest) ( dst src rep -- )
|
:: (%unpack-vector-signs) ( dst src rep -- )
|
||||||
dst rep signed-int-vector-rep?
|
dst rep signed-int-vector-rep?
|
||||||
[ src rep %sign-extension-vector ]
|
[ src rep %sign-extension-vector ]
|
||||||
[ rep %zero-vector ] if ;
|
[ rep %zero-vector ] if ;
|
||||||
|
|
||||||
M: x86 %unpack-vector-head ( dst src rep -- )
|
M:: x86 %unpack-vector-head ( dst src temp rep -- )
|
||||||
[ (%unpack-vector-dest) ] 3keep
|
temp src rep (%unpack-vector-signs)
|
||||||
unsign-rep {
|
dst src rep %copy
|
||||||
|
dst temp rep unsign-rep {
|
||||||
{ char-16-rep [ PUNPCKLBW ] }
|
{ char-16-rep [ PUNPCKLBW ] }
|
||||||
{ short-8-rep [ PUNPCKLWD ] }
|
{ short-8-rep [ PUNPCKLWD ] }
|
||||||
{ int-4-rep [ PUNPCKLDQ ] }
|
{ int-4-rep [ PUNPCKLDQ ] }
|
||||||
{ longlong-2-rep [ PUNPCKLQDQ ] }
|
{ longlong-2-rep [ PUNPCKLQDQ ] }
|
||||||
} case ;
|
} case ;
|
||||||
|
|
||||||
M: x86 %unpack-vector-tail ( dst src rep -- )
|
M:: x86 %unpack-vector-tail ( dst src temp rep -- )
|
||||||
[ (%unpack-vector-dest) ] 3keep
|
temp src rep (%unpack-vector-signs)
|
||||||
unsign-rep {
|
dst src rep %copy
|
||||||
|
dst temp rep unsign-rep {
|
||||||
{ char-16-rep [ PUNPCKHBW ] }
|
{ char-16-rep [ PUNPCKHBW ] }
|
||||||
{ short-8-rep [ PUNPCKHWD ] }
|
{ short-8-rep [ PUNPCKHWD ] }
|
||||||
{ int-4-rep [ PUNPCKHDQ ] }
|
{ int-4-rep [ PUNPCKHDQ ] }
|
||||||
|
|
Loading…
Reference in New Issue