[llvm] [LoongArch] Fix fp_to_uint/fp_to_sint conversion errors for lasx (PR #137129)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 24 03:07:32 PDT 2025
================
@@ -31,9 +31,9 @@ define void @fptoui_v4f64_v4i32(ptr %res, ptr %in){
; CHECK-LABEL: fptoui_v4f64_v4i32:
; CHECK: # %bb.0:
; CHECK-NEXT: xvld $xr0, $a1, 0
+; CHECK-NEXT: xvftintrz.lu.d $xr0, $xr0
; CHECK-NEXT: xvpermi.d $xr1, $xr0, 238
-; CHECK-NEXT: xvfcvt.s.d $xr0, $xr1, $xr0
-; CHECK-NEXT: xvftintrz.w.s $xr0, $xr0
+; CHECK-NEXT: xvpickev.w $xr0, $xr1, $xr0
; CHECK-NEXT: vst $vr0, $a0, 0
----------------
heiher wrote:
LGTM.
```
d: float64
l: int64
*a1: d0, d1, d2, d3 // (little-endian)
xr0: d3, d2, d1, d0 // xvld $xr0, $a1, 0
xr0: l3, l2, l1, l0 // xvftintrz.lu.d $xr0, $xr0
xr0: {l3h,l3l}, {l2h,l2l}, {l1h,l1l}, {l0h,l0l}
xr1: l3, l2, l3, l2 // xvpermi.d $xr1, $xr0, 238
xr1: {l3h,l3l}, {l2h,l2l}, {l3h,l3l}, {l2h,l2l}
xr0: l3l, l2l, l3l, l2l, l3l, l2l, l1l, l0l // xvpickev.w $xr0, $xr1, $xr0
vr0: l3l, l2l, l1l, l0l // vst $vr0, $a0, 0
*a0: l0l, l1l, l2l, l3l // (little-endian)
```
https://github.com/llvm/llvm-project/pull/137129
More information about the llvm-commits
mailing list