[llvm] [RISCV] Enable RVV ABD tests with i64 elements (PR #124246)
Pengcheng Wang via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 24 01:39:35 PST 2025
https://github.com/wangpc-pp created https://github.com/llvm/llvm-project/pull/124246
The comment says it will crash but the crash has been fixed.
>From e07e49f1f1c8737a480cf1e5f102ba87b39b2d36 Mon Sep 17 00:00:00 2001
From: Wang Pengcheng <wangpengcheng.pp at bytedance.com>
Date: Fri, 24 Jan 2025 17:29:55 +0800
Subject: [PATCH] [RISCV] Enable RVV ABD tests with i64 elements
The comment says it will crash but the crash has been fixed.
---
llvm/test/CodeGen/RISCV/rvv/abd.ll | 48 +++++++++++++++++++-----------
1 file changed, 30 insertions(+), 18 deletions(-)
diff --git a/llvm/test/CodeGen/RISCV/rvv/abd.ll b/llvm/test/CodeGen/RISCV/rvv/abd.ll
index 5e610c453e1bac..583d872238df71 100644
--- a/llvm/test/CodeGen/RISCV/rvv/abd.ll
+++ b/llvm/test/CodeGen/RISCV/rvv/abd.ll
@@ -103,15 +103,21 @@ define <vscale x 4 x i32> @sabd_s_promoted_ops(<vscale x 4 x i16> %a, <vscale x
ret <vscale x 4 x i32> %abs
}
-; FIXME: Crashes legalization if enabled
-;; define <vscale x 2 x i64> @sabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
-;; %a.sext = sext <vscale x 2 x i64> %a to <vscale x 2 x i128>
-;; %b.sext = sext <vscale x 2 x i64> %b to <vscale x 2 x i128>
-;; %sub = sub <vscale x 2 x i128> %a.sext, %b.sext
-;; %abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
-;; %trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
-;; ret <vscale x 2 x i64> %trunc
-;; }
+define <vscale x 2 x i64> @sabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
+; CHECK-LABEL: sabd_d:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
+; CHECK-NEXT: vmin.vv v12, v8, v10
+; CHECK-NEXT: vmax.vv v8, v8, v10
+; CHECK-NEXT: vsub.vv v8, v8, v12
+; CHECK-NEXT: ret
+ %a.sext = sext <vscale x 2 x i64> %a to <vscale x 2 x i128>
+ %b.sext = sext <vscale x 2 x i64> %b to <vscale x 2 x i128>
+ %sub = sub <vscale x 2 x i128> %a.sext, %b.sext
+ %abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
+ %trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
+ ret <vscale x 2 x i64> %trunc
+}
define <vscale x 2 x i64> @sabd_d_promoted_ops(<vscale x 2 x i32> %a, <vscale x 2 x i32> %b) {
; CHECK-LABEL: sabd_d_promoted_ops:
@@ -231,15 +237,21 @@ define <vscale x 4 x i32> @uabd_s_promoted_ops(<vscale x 4 x i16> %a, <vscale x
ret <vscale x 4 x i32> %abs
}
-; FIXME: Crashes legalization if enabled
-;; define <vscale x 2 x i64> @uabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
-;; %a.zext = zext <vscale x 2 x i64> %a to <vscale x 2 x i128>
-;; %b.zext = zext <vscale x 2 x i64> %b to <vscale x 2 x i128>
-;; %sub = sub <vscale x 2 x i128> %a.zext, %b.zext
-;; %abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
-;; %trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
-;; ret <vscale x 2 x i64> %trunc
-;; }
+define <vscale x 2 x i64> @uabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
+; CHECK-LABEL: uabd_d:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
+; CHECK-NEXT: vminu.vv v12, v8, v10
+; CHECK-NEXT: vmaxu.vv v8, v8, v10
+; CHECK-NEXT: vsub.vv v8, v8, v12
+; CHECK-NEXT: ret
+ %a.zext = zext <vscale x 2 x i64> %a to <vscale x 2 x i128>
+ %b.zext = zext <vscale x 2 x i64> %b to <vscale x 2 x i128>
+ %sub = sub <vscale x 2 x i128> %a.zext, %b.zext
+ %abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
+ %trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
+ ret <vscale x 2 x i64> %trunc
+}
define <vscale x 2 x i64> @uabd_d_promoted_ops(<vscale x 2 x i32> %a, <vscale x 2 x i32> %b) {
; CHECK-LABEL: uabd_d_promoted_ops:
More information about the llvm-commits
mailing list