File tree Expand file tree Collapse file tree
cranelift/codegen/src/isa/riscv64 Expand file tree Collapse file tree Original file line number Diff line number Diff line change 12161216;; `vfncvt...` leaves the upper bits of the register undefined so
12171217;; we need to zero them out.
12181218(rule (lower (has_type (ty_vec_fits_in_register ty @ $F32X4) (fvdemote x)))
1219- (if-let (imm5_from_u64 zero) (u64_add 0 0))
1219+ (if-let zero (i8_to_imm5 0))
12201220 (let ((narrow VReg (rv_vfncvt_f_f_w x (unmasked) (vstate_mf2 ty)))
12211221 (mask VReg (gen_vec_mask 0xC)))
12221222 (rv_vmerge_vim narrow zero mask ty)))
16371637 (gen_fcvt_int $true v $true from to))
16381638
16391639(rule 1 (lower (has_type (ty_vec_fits_in_register _) (fcvt_to_sint_sat v @ (value_type from_ty))))
1640- (if-let (imm5_from_u64 zero) (u64_add 0 0))
1640+ (if-let zero (i8_to_imm5 0))
16411641 (let ((is_nan VReg (rv_vmfne_vv v v (unmasked) from_ty))
16421642 (cvt VReg (rv_vfcvt_rtz_x_f_v v (unmasked) from_ty)))
16431643 (rv_vmerge_vim cvt zero is_nan from_ty)))
16471647 (gen_fcvt_int $true v $false from to))
16481648
16491649(rule 1 (lower (has_type (ty_vec_fits_in_register _) (fcvt_to_uint_sat v @ (value_type from_ty))))
1650- (if-let (imm5_from_u64 zero) (u64_add 0 0))
1650+ (if-let zero (i8_to_imm5 0))
16511651 (let ((is_nan VReg (rv_vmfne_vv v v (unmasked) from_ty))
16521652 (cvt VReg (rv_vfcvt_rtz_xu_f_v v (unmasked) from_ty)))
16531653 (rv_vmerge_vim cvt zero is_nan from_ty)))
You can’t perform that action at this time.
0 commit comments