@@ -3843,116 +3843,6 @@ instruct vclearArray_reg_reg(iRegL_R29 cnt, iRegP_R28 base, Universe dummy,
38433843 ins_pipe(pipe_class_memory);
38443844%}
38453845
3846- // CompressBits of Long & Integer
3847-
3848- instruct compressBitsI(iRegINoSp dst, iRegIorL2I src, iRegIorL2I mask, vRegMask_V0 v0,
3849- vReg_V4 v4, vReg_V5 v5, vReg_V8 v8, vReg_V9 v9) %{
3850- match(Set dst (CompressBits src mask));
3851- effect(TEMP v0, TEMP v4, TEMP v5, TEMP v8, TEMP v9);
3852- format %{ "vsetivli x0, 1, e32, m1, tu, mu\t#@compressBitsI\n\t"
3853- "vmv.s.x $v0, $src\n\t"
3854- "mv t0, 32\n\t"
3855- "vsetvli x0, t0, e8, m2, tu, mu\n\t"
3856- "vmv.v.i $v4, 0\n\t"
3857- "vmerge.vim $v4, $v4, 1, $v0\n\t"
3858- "vmv.v.i $v8, 0\n\t"
3859- "vsetivli x0, 1, e32, m1, tu, mu\n\t"
3860- "vmv.s.x $v0, $mask\n\t"
3861- "vsetvli x0, t0, e8, m2, tu, mu\n\t"
3862- "vcompress.vm $v8, $v4, $v0\n\t"
3863- "vmseq.vi $v0, $v8, 1\n\t"
3864- "vsetivli x0, 1, e32, m1, tu, mu\n\t"
3865- "vmv.x.s $dst, $v0\t#@compressBitsI\n\t"
3866- %}
3867- ins_encode %{
3868- __ compress_bits_i_v(as_Register($dst$$reg), as_Register($src$$reg), as_Register($mask$$reg));
3869- %}
3870- ins_pipe(pipe_slow);
3871- %}
3872-
3873- instruct compressBitsL(iRegLNoSp dst, iRegL src, iRegL mask, vRegMask_V0 v0,
3874- vReg_V4 v4, vReg_V5 v5, vReg_V6 v6, vReg_V7 v7,
3875- vReg_V8 v8, vReg_V9 v9, vReg_V10 v10, vReg_V11 v11) %{
3876- match(Set dst (CompressBits src mask));
3877- effect(TEMP v0, TEMP v4, TEMP v5, TEMP v6, TEMP v7, TEMP v8, TEMP v9, TEMP v10, TEMP v11);
3878- format %{ "vsetivli x0, 1, e64, m1, tu, mu\t#@compressBitsL\n\t"
3879- "vmv.s.x $v0, $src\n\t"
3880- "mv t0, 64\n\t"
3881- "vsetvli x0, t0, e8, m4, tu, mu\n\t"
3882- "vmv.v.i $v4, 0\n\t"
3883- "vmerge.vim $v4, $v4, 1, $v0\n\t"
3884- "vmv.v.i $v8, 0\n\t"
3885- "vsetivli x0, 1, e64, m1, tu, mu\n\t"
3886- "vmv.s.x $v0, $mask\n\t"
3887- "vsetvli x0, t0, e8, m4, tu, mu\n\t"
3888- "vcompress.vm $v8, $v4, $v0\n\t"
3889- "vmseq.vi $v0, $v8, 1\n\t"
3890- "vsetivli x0, 1, e64, m1, tu, mu\n\t"
3891- "vmv.x.s $dst, $v0\t#@compressBitsL\n\t"
3892- %}
3893- ins_encode %{
3894- __ compress_bits_l_v(as_Register($dst$$reg), as_Register($src$$reg), as_Register($mask$$reg));
3895- %}
3896- ins_pipe(pipe_slow);
3897- %}
3898-
3899- // ExpandBits of Long & Integer
3900-
3901- instruct expandBitsI(iRegINoSp dst, iRegIorL2I src, iRegIorL2I mask, vRegMask_V0 v0,
3902- vReg_V4 v4, vReg_V5 v5, vReg_V8 v8, vReg_V9 v9, vReg_V12 v12, vReg_V13 v13) %{
3903- match(Set dst (ExpandBits src mask));
3904- effect(TEMP v0, TEMP v4, TEMP v5, TEMP v8, TEMP v9, TEMP v12, TEMP v13);
3905- format %{ "vsetivli x0, 1, e32, m1, tu, mu\t#@expandBitsI\n\t"
3906- "vmv.s.x $v0, $src\n\t"
3907- "mv t0, 32\n\t"
3908- "vsetvli x0, t0, e8, m2, tu, mu\n\t"
3909- "vmv.v.i $v4, 0\n\t"
3910- "vmerge.vim $v4, $v4, 1, $v0\n\t"
3911- "vmv.v.i $v12, 0\n\t"
3912- "vsetivli x0, 1, e32, m1, tu, mu\n\t"
3913- "vmv.s.x $v0, $mask\n\t"
3914- "vsetvli x0, t0, e8, m2, tu, mu\n\t"
3915- "viota.m $v8, $v0\n\t"
3916- "vrgather.vv $v12, $v4, $v8, $v0.t\n\t"
3917- "vmseq.vi $v0, $v12, 1\n\t"
3918- "vsetivli x0, 1, e32, m1, tu, mu\n\t"
3919- "vmv.x.s $dst, $v0\t#@expandBitsI\n\t"
3920- %}
3921- ins_encode %{
3922- __ expand_bits_i_v(as_Register($dst$$reg), as_Register($src$$reg), as_Register($mask$$reg));
3923- %}
3924- ins_pipe(pipe_slow);
3925- %}
3926-
3927- instruct expandBitsL(iRegLNoSp dst, iRegL src, iRegL mask, vRegMask_V0 v0,
3928- vReg_V4 v4, vReg_V5 v5, vReg_V6 v6, vReg_V7 v7,
3929- vReg_V8 v8, vReg_V9 v9, vReg_V10 v10, vReg_V11 v11,
3930- vReg_V12 v12, vReg_V13 v13, vReg_V14 v14, vReg_V15 v15) %{
3931- match(Set dst (ExpandBits src mask));
3932- effect(TEMP v0, TEMP v4, TEMP v5, TEMP v6, TEMP v7, TEMP v8, TEMP v9, TEMP v10, TEMP v11,
3933- TEMP v12, TEMP v13, TEMP v14, TEMP v15);
3934- format %{ "vsetivli x0, 1, e64, m1, tu, mu\t#@expandBitsL\n\t"
3935- "vmv.s.x $v0, $src\n\t"
3936- "mv t0, 64\n\t"
3937- "vsetvli x0, t0, e8, m4, tu, mu\n\t"
3938- "vmv.v.i $v4, 0\n\t"
3939- "vmerge.vim $v4, $v4, 1, $v0\n\t"
3940- "vmv.v.i $v12, 0\n\t"
3941- "vsetivli x0, 1, e64, m1, tu, mu\n\t"
3942- "vmv.s.x $v0, $mask\n\t"
3943- "vsetvli x0, t0, e8, m4, tu, mu\n\t"
3944- "viota.m $v8, $v0\n\t"
3945- "vrgather.vv $v12, $v4, $v8, $v0.t\n\t"
3946- "vmseq.vi $v0, $v12, 1\n\t"
3947- "vsetivli x0, 1, e64, m1, tu, mu\n\t"
3948- "vmv.x.s $dst, $v0\t#@expandBitsL\n\t"
3949- %}
3950- ins_encode %{
3951- __ expand_bits_l_v(as_Register($dst$$reg), as_Register($src$$reg), as_Register($mask$$reg));
3952- %}
3953- ins_pipe(pipe_slow);
3954- %}
3955-
39563846// Vector Load Const
39573847instruct vloadcon(vReg dst, immI0 src) %{
39583848 match(Set dst (VectorLoadConst src));
0 commit comments