diff --git a/basis/compiler/cfg/intrinsics/simd/backend/backend.factor b/basis/compiler/cfg/intrinsics/simd/backend/backend.factor index cb4ff536dc..f84e826f19 100644 --- a/basis/compiler/cfg/intrinsics/simd/backend/backend.factor +++ b/basis/compiler/cfg/intrinsics/simd/backend/backend.factor @@ -21,6 +21,7 @@ M: ##gather-vector-2 insn-available? rep>> %gather-vector-2-reps member? ; M: ##gather-vector-4 insn-available? rep>> %gather-vector-4-reps member? ; M: ##gather-int-vector-2 insn-available? rep>> %gather-int-vector-2-reps member? ; M: ##gather-int-vector-4 insn-available? rep>> %gather-int-vector-4-reps member? ; +M: ##select-vector insn-available? rep>> %select-vector-reps member? ; M: ##store-memory-imm insn-available? rep>> %alien-vector-reps member? ; M: ##shuffle-vector insn-available? rep>> %shuffle-vector-reps member? ; M: ##shuffle-vector-imm insn-available? rep>> %shuffle-vector-imm-reps member? ; diff --git a/basis/compiler/cfg/intrinsics/simd/simd.factor b/basis/compiler/cfg/intrinsics/simd/simd.factor index 0cb7a21940..fc2cede8bc 100644 --- a/basis/compiler/cfg/intrinsics/simd/simd.factor +++ b/basis/compiler/cfg/intrinsics/simd/simd.factor @@ -303,7 +303,10 @@ PREDICATE: fixnum-vector-rep < int-vector-rep [ ^^scalar>vector ] keep [ 0 ] dip ^broadcast-vector ; : ^select-vector ( src n rep -- dst ) - [ ^broadcast-vector ] keep ^^vector>scalar ; + { + [ ^^select-vector ] + [ [ ^broadcast-vector ] keep ^^vector>scalar ] + } vl-vector-op ; ! intrinsic emitters