     rep-component-type dup c:c-type-getter-boxer c:array-accessor ;
 
 MACRO: simd-nth ( rep -- x )
-    dup simd-nth-fast? [ simd-nth-fast ] [ simd-nth-slow ] if ;
+    dup simd-with/nth-fast? [ simd-nth-fast ] [ simd-nth-slow ] if ;
 
 : boa-effect ( rep n -- effect )
     [ rep-components ] dip *


: can-be-unboxed? ( type -- ? )
    {
        { c:float [ t ] }
        { c:double [ t ] }
        [ c:heap-size cell < ]
    } case ;


: simd-with ( rep class x -- simd-array )
    [ rep-components ] [ new ] [ '[ _ ] ] tri* swap replicate-as ; inline

: simd-with/nth-fast? ( rep -- ? )
    [ \ (simd-vshuffle) supported-simd-op? ]
    [ rep-component-type can-be-unboxed? ]
    bi and ;
