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