]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.gvn: merge in applicable changes from compiler.cfg.value-numbering
authorAlex Vondrak <ajvondrak@csupomona.edu>
Thu, 2 Aug 2012 23:41:23 +0000 (16:41 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 12 Sep 2012 22:14:11 +0000 (15:14 -0700)
extra/compiler/cfg/gvn/alien/alien.factor
extra/compiler/cfg/gvn/comparisons/comparisons.factor
extra/compiler/cfg/gvn/expressions/expressions.factor
extra/compiler/cfg/gvn/folding/folding.factor
extra/compiler/cfg/gvn/math/math.factor
extra/compiler/cfg/gvn/misc/misc.factor
extra/compiler/cfg/gvn/simd/simd.factor

index a83fc13000fd638325b99553c33455e3f5be05c3..e8db48158388eb52b1f8cea279ab98598d33b66c 100644 (file)
@@ -34,7 +34,7 @@ M: ##box-displaced-alien rewrite
         [ dst>> ]
         [ [ base>> ] [ base-class>> ] [ displacement>> ] tri ] bi*
         [ ^^unbox-c-ptr ] dip
-        ##add
+        ##add,
     ] { } make ;
 
 : rewrite-unbox-any-c-ptr ( insn -- insn/f )
@@ -99,8 +99,8 @@ M: ##store-memory-imm alien-insn-value src>> ;
 
 GENERIC: new-alien-insn ( value base displacement scale offset rep c-type insn -- insn )
 
-M: ##load-memory-imm new-alien-insn drop ##load-memory new-insn ;
-M: ##store-memory-imm new-alien-insn drop ##store-memory new-insn ;
+M: ##load-memory-imm new-alien-insn drop ##load-memory new-insn ;
+M: ##store-memory-imm new-alien-insn drop ##store-memory new-insn ;
 
 : fuse-displacement ( insn -- insn' )
     {
index 254edb1327c03fe97e2c99af2dda22df5149a271..0730318ec68a347aa4ae3aa0624687bf6708138d 100644 (file)
@@ -87,15 +87,15 @@ UNION: general-compare-insn scalar-compare-insn ##test-vector ;
 
 : rewrite-boolean-comparison ( insn -- insn )
     src1>> vreg>insn {
-        { [ dup ##compare? ] [ >compare< ##compare-branch new-insn ] }
-        { [ dup ##compare-imm? ] [ >compare< ##compare-imm-branch new-insn ] }
-        { [ dup ##compare-integer? ] [ >compare< ##compare-integer-branch new-insn ] }
-        { [ dup ##compare-integer-imm? ] [ >compare< ##compare-integer-imm-branch new-insn ] }
-        { [ dup ##test? ] [ >compare< ##test-branch new-insn ] }
-        { [ dup ##test-imm? ] [ >compare< ##test-imm-branch new-insn ] }
-        { [ dup ##compare-float-unordered? ] [ >compare< ##compare-float-unordered-branch new-insn ] }
-        { [ dup ##compare-float-ordered? ] [ >compare< ##compare-float-ordered-branch new-insn ] }
-        { [ dup ##test-vector? ] [ >test-vector< ##test-vector-branch new-insn ] }
+        { [ dup ##compare? ] [ >compare< ##compare-branch new-insn ] }
+        { [ dup ##compare-imm? ] [ >compare< ##compare-imm-branch new-insn ] }
+        { [ dup ##compare-integer? ] [ >compare< ##compare-integer-branch new-insn ] }
+        { [ dup ##compare-integer-imm? ] [ >compare< ##compare-integer-imm-branch new-insn ] }
+        { [ dup ##test? ] [ >compare< ##test-branch new-insn ] }
+        { [ dup ##test-imm? ] [ >compare< ##test-imm-branch new-insn ] }
+        { [ dup ##compare-float-unordered? ] [ >compare< ##compare-float-unordered-branch new-insn ] }
+        { [ dup ##compare-float-ordered? ] [ >compare< ##compare-float-ordered-branch new-insn ] }
+        { [ dup ##test-vector? ] [ >test-vector< ##test-vector-branch new-insn ] }
     } cond ;
 
 : fold-branch ( ? -- insn )
@@ -103,13 +103,13 @@ UNION: general-compare-insn scalar-compare-insn ##test-vector ;
         0 1 ?
         basic-block get [ nth 1vector ] change-successors drop
     ] [ drop ] if
-    ##branch new-insn ;
+    ##branch new-insn ;
 
 : fold-compare-imm-branch ( insn -- insn/f )
     evaluate-compare-imm fold-branch ;
 
 : >test-branch ( insn -- insn )
-    [ src1>> ] [ src1>> ] [ cc>> ] tri ##test-branch new-insn ;
+    [ src1>> ] [ src1>> ] [ cc>> ] tri ##test-branch new-insn ;
 
 M: ##compare-imm-branch rewrite
     {
@@ -146,12 +146,12 @@ M: ##test-imm-branch rewrite
 : >compare-imm-branch ( insn swap? -- insn' )
     (>compare-imm-branch)
     [ vreg>literal ] dip
-    ##compare-imm-branch new-insn ; inline
+    ##compare-imm-branch new-insn ; inline
 
 : >compare-integer-imm-branch ( insn swap? -- insn' )
     (>compare-imm-branch)
     [ vreg>integer ] dip
-    ##compare-integer-imm-branch new-insn ; inline
+    ##compare-integer-imm-branch new-insn ; inline
 
 : evaluate-self-compare ( insn -- ? )
     cc>> { cc= cc<= cc>= } member-eq? ;
@@ -182,15 +182,15 @@ M: ##compare-integer-branch rewrite
 : >compare-imm ( insn swap? -- insn' )
     (>compare-imm)
     [ vreg>literal ] dip
-    next-vreg ##compare-imm new-insn ; inline
+    next-vreg ##compare-imm new-insn ; inline
 
 : >compare-integer-imm ( insn swap? -- insn' )
     (>compare-imm)
     [ vreg>integer ] dip
-    next-vreg ##compare-integer-imm new-insn ; inline
+    next-vreg ##compare-integer-imm new-insn ; inline
 
 : >boolean-insn ( insn ? -- insn' )
-    [ dst>> ] dip ##load-reference new-insn ;
+    [ dst>> ] dip ##load-reference new-insn ;
 
 : rewrite-self-compare ( insn -- insn' )
     dup evaluate-self-compare >boolean-insn ;
@@ -220,14 +220,14 @@ M: ##compare-integer rewrite
 
 : rewrite-redundant-comparison ( insn -- insn' )
     [ cc>> ] [ dst>> ] [ src1>> vreg>insn ] tri {
-        { [ dup ##compare? ] [ >compare< next-vreg ##compare new-insn ] }
-        { [ dup ##compare-imm? ] [ >compare< next-vreg ##compare-imm new-insn ] }
-        { [ dup ##compare-integer? ] [ >compare< next-vreg ##compare-integer new-insn ] }
-        { [ dup ##compare-integer-imm? ] [ >compare< next-vreg ##compare-integer-imm new-insn ] }
-        { [ dup ##test? ] [ >compare< next-vreg ##test new-insn ] }
-        { [ dup ##test-imm? ] [ >compare< next-vreg ##test-imm new-insn ] }
-        { [ dup ##compare-float-unordered? ] [ >compare< next-vreg ##compare-float-unordered new-insn ] }
-        { [ dup ##compare-float-ordered? ] [ >compare< next-vreg ##compare-float-ordered new-insn ] }
+        { [ dup ##compare? ] [ >compare< next-vreg ##compare new-insn ] }
+        { [ dup ##compare-imm? ] [ >compare< next-vreg ##compare-imm new-insn ] }
+        { [ dup ##compare-integer? ] [ >compare< next-vreg ##compare-integer new-insn ] }
+        { [ dup ##compare-integer-imm? ] [ >compare< next-vreg ##compare-integer-imm new-insn ] }
+        { [ dup ##test? ] [ >compare< next-vreg ##test new-insn ] }
+        { [ dup ##test-imm? ] [ >compare< next-vreg ##test-imm new-insn ] }
+        { [ dup ##compare-float-unordered? ] [ >compare< next-vreg ##compare-float-unordered new-insn ] }
+        { [ dup ##compare-float-ordered? ] [ >compare< next-vreg ##compare-float-ordered new-insn ] }
     } cond
     swap cc= eq? [ [ negate-cc ] change-cc ] when ;
 
@@ -246,7 +246,7 @@ M: ##compare-imm rewrite
 
 : >test ( insn -- insn' )
     { [ dst>> ] [ src1>> ] [ src1>> ] [ cc>> ] [ temp>> ] } cleave
-    ##test new-insn ;
+    ##test new-insn ;
 
 M: ##compare-integer-imm rewrite
     {
@@ -262,10 +262,10 @@ M: ##compare-integer-imm rewrite
     [ src1>> vreg>insn [ src1>> ] [ src2>> ] bi ] [ cc>> ] bi ; inline
 
 : simplify-test ( insn -- insn )
-    [ dst>> ] [ (simplify-test) ] [ temp>> ] tri ##test new-insn ; inline
+    [ dst>> ] [ (simplify-test) ] [ temp>> ] tri ##test new-insn ; inline
 
 : simplify-test-branch ( insn -- insn )
-    (simplify-test) ##test-branch new-insn ; inline
+    (simplify-test) ##test-branch new-insn ; inline
 
 : simplify-test-imm? ( insn -- ? )
     src1>> vreg>insn [ ##and-imm? ] with-available-uses? ;
@@ -274,18 +274,18 @@ M: ##compare-integer-imm rewrite
     [ src1>> vreg>insn [ src1>> ] [ src2>> ] bi ] [ cc>> ] bi ; inline
 
 : simplify-test-imm ( insn -- insn )
-    [ dst>> ] [ (simplify-test-imm) ] [ temp>> ] tri ##test-imm new-insn ; inline
+    [ dst>> ] [ (simplify-test-imm) ] [ temp>> ] tri ##test-imm new-insn ; inline
 
 : simplify-test-imm-branch ( insn -- insn )
-    (simplify-test-imm) ##test-imm-branch new-insn ; inline
+    (simplify-test-imm) ##test-imm-branch new-insn ; inline
 
 : >test-imm ( insn ? -- insn' )
     (>compare-imm) [ vreg>integer ] dip next-vreg
-    ##test-imm new-insn ; inline
+    ##test-imm new-insn ; inline
 
 : >test-imm-branch ( insn ? -- insn' )
     (>compare-imm-branch) [ vreg>integer ] dip
-    ##test-imm-branch new-insn ; inline
+    ##test-imm-branch new-insn ; inline
 
 M: ##test rewrite
     {
index 62a061499e75840d35c427d15bde9de44313c435..a56eb64425238d74e11d0cdc3795c61b3411ecde 100644 (file)
@@ -91,4 +91,4 @@ M: ##load-reference >expr obj>> <reference-expr> ;
 M: ##phi >expr
     inputs>> values [ vreg>vn ] map
     basic-block get number>> prefix
-    ##phi prefix ;
+    ##phi prefix ;
index ca6c2ef321a95e227b2116a13f551dfc89174ce2..206ab3c10e084e4861ac7b14d7893e60a6b87c54 100644 (file)
@@ -24,7 +24,7 @@ M: ##shl-imm binary-constant-fold* drop shift ;
 : binary-constant-fold ( insn -- insn' )
     [ dst>> ]
     [ [ src1>> vreg>integer ] [ src2>> ] [ ] tri binary-constant-fold* ] bi
-    ##load-integer new-insn ; inline
+    ##load-integer new-insn ; inline
 
 : unary-constant-fold? ( insn -- ? )
     src>> vreg>insn ##load-integer? ; inline
@@ -36,4 +36,4 @@ M: ##neg unary-constant-fold* drop neg ;
 
 : unary-constant-fold ( insn -- insn' )
     [ dst>> ] [ [ src>> vreg>integer ] [ ] bi unary-constant-fold* ] bi
-    ##load-integer new-insn ; inline
+    ##load-integer new-insn ; inline
index 0b5804acec9bde7a656f2d95ded29f0871b2428f..5b5fcd0bd55f62d2b437c4246ddf823a2220886c 100644 (file)
@@ -20,8 +20,8 @@ IN: compiler.cfg.gvn.math
 
 M: ##tagged>integer rewrite
     [ dst>> ] [ src>> vreg>insn ] bi {
-        { [ dup ##load-integer? ] [ val>> tag-fixnum ##load-integer new-insn ] }
-        { [ dup f-insn? ] [ drop \ f type-number ##load-integer new-insn ] }
+        { [ dup ##load-integer? ] [ val>> tag-fixnum ##load-integer new-insn ] }
+        { [ dup f-insn? ] [ drop \ f type-number ##load-integer new-insn ] }
         [ 2drop f ]
     } cond ;
 
@@ -81,14 +81,14 @@ M: ##add-imm rewrite
     {
         { [ dup src2>> 0 = ] [ identity ] }
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
-        { [ dup src1>> vreg>insn ##add-imm? ] [ ##add-imm reassociate-arithmetic ] }
+        { [ dup src1>> vreg>insn ##add-imm? ] [ ##add-imm reassociate-arithmetic ] }
         [ drop f ]
     } cond ;
 
 : sub-imm>add-imm ( insn -- insn' )
     [ dst>> ] [ src1>> ] [ src2>> neg ] tri
     dup immediate-arithmetic?
-    ##add-imm ?new-insn ;
+    ##add-imm ?new-insn ;
 
 M: ##sub-imm rewrite sub-imm>add-imm ;
 
@@ -97,14 +97,14 @@ M: ##sub-imm rewrite sub-imm>add-imm ;
     src2>> -1 = ;
 
 : mul-to-neg ( insn -- insn' )
-    [ dst>> ] [ src1>> ] bi ##neg new-insn ;
+    [ dst>> ] [ src1>> ] bi ##neg new-insn ;
 
 ! Convert ##mul-imm 2^X => ##shl-imm X
 : mul-to-shl? ( insn -- ? )
     src2>> power-of-2? ;
 
 : mul-to-shl ( insn -- insn' )
-    [ [ dst>> ] [ src1>> ] bi ] [ src2>> log2 ] bi ##shl-imm new-insn ;
+    [ [ dst>> ] [ src1>> ] bi ] [ src2>> log2 ] bi ##shl-imm new-insn ;
 
 ! Distribution converts
 ! ##+-imm 2 1 X
@@ -145,17 +145,17 @@ M: ##mul-imm rewrite
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
         { [ dup mul-to-neg? ] [ mul-to-neg ] }
         { [ dup mul-to-shl? ] [ mul-to-shl ] }
-        { [ dup src1>> vreg>insn ##mul-imm? ] [ ##mul-imm reassociate-arithmetic ] }
-        { [ dup distribute-over-add? ] [ \ ##add-imm \ ##mul-imm distribute ] }
-        { [ dup distribute-over-sub? ] [ \ ##sub-imm \ ##mul-imm distribute ] }
+        { [ dup src1>> vreg>insn ##mul-imm? ] [ ##mul-imm reassociate-arithmetic ] }
+        { [ dup distribute-over-add? ] [ \ ##add-imm, \ ##mul-imm, distribute ] }
+        { [ dup distribute-over-sub? ] [ \ ##sub-imm, \ ##mul-imm, distribute ] }
         [ drop f ]
     } cond ;
 
 M: ##and-imm rewrite
     {
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
-        { [ dup src1>> vreg>insn ##and-imm? ] [ ##and-imm reassociate-bitwise ] }
-        { [ dup src2>> 0 = ] [ dst>> 0 ##load-integer new-insn ] }
+        { [ dup src1>> vreg>insn ##and-imm? ] [ ##and-imm reassociate-bitwise ] }
+        { [ dup src2>> 0 = ] [ dst>> 0 ##load-integer new-insn ] }
         { [ dup src2>> -1 = ] [ identity ] }
         [ drop f ]
     } cond ;
@@ -163,18 +163,18 @@ M: ##and-imm rewrite
 M: ##or-imm rewrite
     {
         { [ dup src2>> 0 = ] [ identity ] }
-        { [ dup src2>> -1 = ] [ dst>> -1 ##load-integer new-insn ] }
+        { [ dup src2>> -1 = ] [ dst>> -1 ##load-integer new-insn ] }
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
-        { [ dup src1>> vreg>insn ##or-imm? ] [ ##or-imm reassociate-bitwise ] }
+        { [ dup src1>> vreg>insn ##or-imm? ] [ ##or-imm reassociate-bitwise ] }
         [ drop f ]
     } cond ;
 
 M: ##xor-imm rewrite
     {
         { [ dup src2>> 0 = ] [ identity ] }
-        { [ dup src2>> -1 = ] [ [ dst>> ] [ src1>> ] bi ##not new-insn ] }
+        { [ dup src2>> -1 = ] [ [ dst>> ] [ src1>> ] bi ##not new-insn ] }
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
-        { [ dup src1>> vreg>insn ##xor-imm? ] [ ##xor-imm reassociate-bitwise ] }
+        { [ dup src1>> vreg>insn ##xor-imm? ] [ ##xor-imm reassociate-bitwise ] }
         [ drop f ]
     } cond ;
 
@@ -182,9 +182,9 @@ M: ##shl-imm rewrite
     {
         { [ dup src2>> 0 = ] [ identity ] }
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
-        { [ dup src1>> vreg>insn ##shl-imm? ] [ ##shl-imm reassociate-shift ] }
-        { [ dup distribute-over-add? ] [ \ ##add-imm \ ##shl-imm distribute ] }
-        { [ dup distribute-over-sub? ] [ \ ##sub-imm \ ##shl-imm distribute ] }
+        { [ dup src1>> vreg>insn ##shl-imm? ] [ ##shl-imm reassociate-shift ] }
+        { [ dup distribute-over-add? ] [ \ ##add-imm, \ ##shl-imm, distribute ] }
+        { [ dup distribute-over-sub? ] [ \ ##sub-imm, \ ##shl-imm, distribute ] }
         [ drop f ]
     } cond ;
 
@@ -192,7 +192,7 @@ M: ##shr-imm rewrite
     {
         { [ dup src2>> 0 = ] [ identity ] }
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
-        { [ dup src1>> vreg>insn ##shr-imm? ] [ ##shr-imm reassociate-shift ] }
+        { [ dup src1>> vreg>insn ##shr-imm? ] [ ##shr-imm reassociate-shift ] }
         [ drop f ]
     } cond ;
 
@@ -200,7 +200,7 @@ M: ##sar-imm rewrite
     {
         { [ dup src2>> 0 = ] [ identity ] }
         { [ dup binary-constant-fold? ] [ binary-constant-fold ] }
-        { [ dup src1>> vreg>insn ##sar-imm? ] [ ##sar-imm reassociate-shift ] }
+        { [ dup src1>> vreg>insn ##sar-imm? ] [ ##sar-imm reassociate-shift ] }
         [ drop f ]
     } cond ;
 
@@ -217,8 +217,8 @@ M: ##sar-imm rewrite
 
 M: ##add rewrite
     {
-        { [ dup src2>> vreg-immediate-arithmetic? ] [ ##add-imm f insn>imm-insn ] }
-        { [ dup src1>> vreg-immediate-arithmetic? ] [ ##add-imm t insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-arithmetic? ] [ ##add-imm f insn>imm-insn ] }
+        { [ dup src1>> vreg-immediate-arithmetic? ] [ ##add-imm t insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
@@ -227,7 +227,7 @@ M: ##add rewrite
 
 ! ##sub 2 1 1 => ##load-integer 2 0
 : rewrite-subtraction-identity ( insn -- insn' )
-    dst>> 0 ##load-integer new-insn ;
+    dst>> 0 ##load-integer new-insn ;
 
 ! ##load-integer 1 0
 ! ##sub 3 1 2
@@ -237,61 +237,61 @@ M: ##add rewrite
     src1>> vreg>insn zero-insn? ;
 
 : sub-to-neg ( ##sub -- insn )
-    [ dst>> ] [ src2>> ] bi ##neg new-insn ;
+    [ dst>> ] [ src2>> ] bi ##neg new-insn ;
 
 M: ##sub rewrite
     {
         { [ dup sub-to-neg? ] [ sub-to-neg ] }
         { [ dup diagonal? ] [ rewrite-subtraction-identity ] }
-        { [ dup src2>> vreg-immediate-arithmetic? ] [ ##sub-imm f insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-arithmetic? ] [ ##sub-imm f insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
 M: ##mul rewrite
     {
-        { [ dup src2>> vreg-immediate-arithmetic? ] [ ##mul-imm f insn>imm-insn ] }
-        { [ dup src1>> vreg-immediate-arithmetic? ] [ ##mul-imm t insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-arithmetic? ] [ ##mul-imm f insn>imm-insn ] }
+        { [ dup src1>> vreg-immediate-arithmetic? ] [ ##mul-imm t insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
 M: ##and rewrite
     {
         { [ dup diagonal? ] [ identity ] }
-        { [ dup src2>> vreg-immediate-bitwise? ] [ ##and-imm f insn>imm-insn ] }
-        { [ dup src1>> vreg-immediate-bitwise? ] [ ##and-imm t insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-bitwise? ] [ ##and-imm f insn>imm-insn ] }
+        { [ dup src1>> vreg-immediate-bitwise? ] [ ##and-imm t insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
 M: ##or rewrite
     {
         { [ dup diagonal? ] [ identity ] }
-        { [ dup src2>> vreg-immediate-bitwise? ] [ ##or-imm f insn>imm-insn ] }
-        { [ dup src1>> vreg-immediate-bitwise? ] [ ##or-imm t insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-bitwise? ] [ ##or-imm f insn>imm-insn ] }
+        { [ dup src1>> vreg-immediate-bitwise? ] [ ##or-imm t insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
 M: ##xor rewrite
     {
-        { [ dup diagonal? ] [ dst>> 0 ##load-integer new-insn ] }
-        { [ dup src2>> vreg-immediate-bitwise? ] [ ##xor-imm f insn>imm-insn ] }
-        { [ dup src1>> vreg-immediate-bitwise? ] [ ##xor-imm t insn>imm-insn ] }
+        { [ dup diagonal? ] [ dst>> 0 ##load-integer new-insn ] }
+        { [ dup src2>> vreg-immediate-bitwise? ] [ ##xor-imm f insn>imm-insn ] }
+        { [ dup src1>> vreg-immediate-bitwise? ] [ ##xor-imm t insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
 M: ##shl rewrite
     {
-        { [ dup src2>> vreg-immediate-bitwise? ] [ ##shl-imm f insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-bitwise? ] [ ##shl-imm f insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
 M: ##shr rewrite
     {
-        { [ dup src2>> vreg-immediate-bitwise? ] [ ##shr-imm f insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-bitwise? ] [ ##shr-imm f insn>imm-insn ] }
         [ drop f ]
     } cond ;
 
 M: ##sar rewrite
     {
-        { [ dup src2>> vreg-immediate-bitwise? ] [ ##sar-imm f insn>imm-insn ] }
+        { [ dup src2>> vreg-immediate-bitwise? ] [ ##sar-imm f insn>imm-insn ] }
         [ drop f ]
     } cond ;
index c55778799ce2558c166d08877f22a8ffa69ebfcd..66f1dd2d52187dd035ac5c3803ad79cb3c43eaf7 100644 (file)
@@ -11,5 +11,5 @@ M: ##replace rewrite
     [ loc>> ] [ src>> vreg>insn ] bi
     dup literal-insn? [
         insn>literal dup immediate-store?
-        [ swap ##replace-imm new-insn ] [ 2drop f ] if
+        [ swap ##replace-imm new-insn ] [ 2drop f ] if
     ] [ 2drop f ] if ;
index 36c63e65f64758bf50e0e7f3f4d27999c9092b7a..17fa4f355a0b745ffd10e721e90c52b4469436b3 100644 (file)
@@ -3,7 +3,7 @@
 USING: accessors combinators combinators.short-circuit arrays
 fry kernel layouts math namespaces sequences cpu.architecture
 math.bitwise math.order classes generalizations
-combinators.smart locals make alien.c-types io.binary grouping
+locals make alien.c-types io.binary grouping
 math.vectors.simd.intrinsics
 compiler.cfg
 compiler.cfg.registers
@@ -27,7 +27,7 @@ IN: compiler.cfg.gvn.simd
         [ [ dst>> ] [ src>> ] bi* ]
         [ [ shuffle>> ] bi@ nths ]
         [ drop rep>> ]
-        2tri ##shuffle-vector-imm new-insn
+        2tri ##shuffle-vector-imm new-insn
     ] [ 2drop f ] if ;
 
 : (fold-shuffle-vector-imm) ( shuffle bytes -- bytes' )
@@ -35,7 +35,7 @@ IN: compiler.cfg.gvn.simd
 
 : fold-shuffle-vector-imm ( outer inner -- insn' )
     [ [ dst>> ] [ shuffle>> ] bi ] [ obj>> ] bi*
-    (fold-shuffle-vector-imm) ##load-reference new-insn ;
+    (fold-shuffle-vector-imm) ##load-reference new-insn ;
 
 M: ##shuffle-vector-imm rewrite
     dup src>> vreg>insn {
@@ -54,7 +54,7 @@ M: ##shuffle-vector-imm rewrite
 
 : (fold-scalar>vector) ( insn bytes -- insn' )
     [ [ dst>> ] [ rep>> rep-length ] bi ] dip <repetition> concat
-    ##load-reference new-insn ;
+    ##load-reference new-insn ;
 
 : fold-scalar>vector ( outer inner -- insn' )
     over rep>> scalar-value (fold-scalar>vector) ;
@@ -69,7 +69,7 @@ M: ##scalar>vector rewrite
 :: fold-gather-vector-2 ( insn src1 src2 -- insn )
     insn dst>>
     src1 src2 [ insn rep>> scalar-value ] bi@ append
-    ##load-reference new-insn ;
+    ##load-reference new-insn ;
 
 : rewrite-gather-vector-2 ( insn -- insn/f )
     dup [ src1>> vreg>insn ] [ src2>> vreg>insn ] bi {
@@ -85,9 +85,9 @@ M: ##gather-int-vector-2 rewrite rewrite-gather-vector-2 ;
     insn dst>>
     [
         src1 src2 src3 src4
-        [ insn rep>> scalar-value ] 4 napply
-    ] B{ } append-outputs-as
-    ##load-reference new-insn ;
+        [ insn rep>> scalar-value ] 4 napply
+    ] B{ } make
+    ##load-reference new-insn ;
 
 : rewrite-gather-vector-4 ( insn -- insn/f )
     dup { [ src1>> ] [ src2>> ] [ src3>> ] [ src4>> ] } cleave [ vreg>insn ] 4 napply
@@ -102,7 +102,7 @@ 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 ;
+    swap nths ##load-reference new-insn ;
 
 M: ##shuffle-vector rewrite
     dup [ src>> vreg>insn ] [ shuffle>> vreg>insn ] bi
@@ -113,7 +113,7 @@ M: ##shuffle-vector rewrite
 
 M: ##xor-vector rewrite
     dup diagonal?
-    [ [ dst>> ] [ rep>> ] bi ##zero-vector new-insn ] [ drop f ] if ;
+    [ [ dst>> ] [ rep>> ] bi ##zero-vector new-insn ] [ drop f ] if ;
 
 : vector-not? ( insn -- ? )
     {
@@ -140,7 +140,7 @@ M: ##and-vector rewrite
                 [ src1>> vreg>insn vector-not-src ]
                 [ src2>> ]
                 [ rep>> ]
-            } cleave ##andn-vector new-insn
+            } cleave ##andn-vector new-insn
         ] }
         { [ dup src2>> vreg>insn vector-not? ] [
             {
@@ -148,7 +148,7 @@ M: ##and-vector rewrite
                 [ src2>> vreg>insn vector-not-src ]
                 [ src1>> ]
                 [ rep>> ]
-            } cleave ##andn-vector new-insn
+            } cleave ##andn-vector new-insn
         ] }
         [ drop f ]
     } cond ;
@@ -160,5 +160,5 @@ M: ##andn-vector rewrite
             [ src1>> vreg>insn vector-not-src ]
             [ src2>> ]
             [ rep>> ]
-        } cleave ##and-vector new-insn
+        } cleave ##and-vector new-insn
     ] [ drop f ] if ;