From 1e5bc3b376356dfbb9c212c595ecf62178b902b9 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 8 Sep 2009 13:56:17 -0500 Subject: [PATCH] inline alien-vector and set-alien-vector if SIMD is not available for a small speedup --- basis/compiler/tree/propagation/simd/simd.factor | 12 +++++++++++- basis/cpu/architecture/architecture.factor | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/basis/compiler/tree/propagation/simd/simd.factor b/basis/compiler/tree/propagation/simd/simd.factor index 47cfd74de2..3baa7cdcbf 100644 --- a/basis/compiler/tree/propagation/simd/simd.factor +++ b/basis/compiler/tree/propagation/simd/simd.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors byte-arrays combinators +USING: accessors byte-arrays combinators fry compiler.tree.propagation.info cpu.architecture kernel words math math.intervals math.vectors.simd.intrinsics ; IN: compiler.tree.propagation.simd @@ -40,3 +40,13 @@ IN: compiler.tree.propagation.simd ] "outputs" set-word-prop \ alien-vector { byte-array } "default-output-classes" set-word-prop + +! If SIMD is not available, inline alien-vector and set-alien-vector +! to get a speedup +: inline-unless-intrinsic ( word -- ) + dup '[ drop _ dup "intrinsic" word-prop [ drop f ] [ def>> ] if ] + "custom-inlining" set-word-prop ; + +\ alien-vector inline-unless-intrinsic + +\ set-alien-vector inline-unless-intrinsic diff --git a/basis/cpu/architecture/architecture.factor b/basis/cpu/architecture/architecture.factor index 419627e11d..2aa2b2317c 100644 --- a/basis/cpu/architecture/architecture.factor +++ b/basis/cpu/architecture/architecture.factor @@ -67,7 +67,7 @@ M: double-rep reg-class-of drop float-regs ; M: vector-rep reg-class-of drop float-regs ; M: stack-params reg-class-of drop stack-params ; -GENERIC: rep-size ( rep -- n ) +GENERIC: rep-size ( rep -- n ) foldable M: tagged-rep rep-size drop cell ; M: int-rep rep-size drop cell ;