Skip to content

Commit 5367267

Browse files
authored
[RISCV] Enable RVV ABD tests with i64 elements (#124246)
The comment says it will crash but the crash has been fixed.
1 parent 5aa4979 commit 5367267

File tree

1 file changed

+30
-18
lines changed
  • llvm/test/CodeGen/RISCV/rvv

1 file changed

+30
-18
lines changed

llvm/test/CodeGen/RISCV/rvv/abd.ll

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,21 @@ define <vscale x 4 x i32> @sabd_s_promoted_ops(<vscale x 4 x i16> %a, <vscale x
103103
ret <vscale x 4 x i32> %abs
104104
}
105105

106-
; FIXME: Crashes legalization if enabled
107-
;; define <vscale x 2 x i64> @sabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
108-
;; %a.sext = sext <vscale x 2 x i64> %a to <vscale x 2 x i128>
109-
;; %b.sext = sext <vscale x 2 x i64> %b to <vscale x 2 x i128>
110-
;; %sub = sub <vscale x 2 x i128> %a.sext, %b.sext
111-
;; %abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
112-
;; %trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
113-
;; ret <vscale x 2 x i64> %trunc
114-
;; }
106+
define <vscale x 2 x i64> @sabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
107+
; CHECK-LABEL: sabd_d:
108+
; CHECK: # %bb.0:
109+
; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
110+
; CHECK-NEXT: vmin.vv v12, v8, v10
111+
; CHECK-NEXT: vmax.vv v8, v8, v10
112+
; CHECK-NEXT: vsub.vv v8, v8, v12
113+
; CHECK-NEXT: ret
114+
%a.sext = sext <vscale x 2 x i64> %a to <vscale x 2 x i128>
115+
%b.sext = sext <vscale x 2 x i64> %b to <vscale x 2 x i128>
116+
%sub = sub <vscale x 2 x i128> %a.sext, %b.sext
117+
%abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
118+
%trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
119+
ret <vscale x 2 x i64> %trunc
120+
}
115121

116122
define <vscale x 2 x i64> @sabd_d_promoted_ops(<vscale x 2 x i32> %a, <vscale x 2 x i32> %b) {
117123
; 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
231237
ret <vscale x 4 x i32> %abs
232238
}
233239

234-
; FIXME: Crashes legalization if enabled
235-
;; define <vscale x 2 x i64> @uabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
236-
;; %a.zext = zext <vscale x 2 x i64> %a to <vscale x 2 x i128>
237-
;; %b.zext = zext <vscale x 2 x i64> %b to <vscale x 2 x i128>
238-
;; %sub = sub <vscale x 2 x i128> %a.zext, %b.zext
239-
;; %abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
240-
;; %trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
241-
;; ret <vscale x 2 x i64> %trunc
242-
;; }
240+
define <vscale x 2 x i64> @uabd_d(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) {
241+
; CHECK-LABEL: uabd_d:
242+
; CHECK: # %bb.0:
243+
; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
244+
; CHECK-NEXT: vminu.vv v12, v8, v10
245+
; CHECK-NEXT: vmaxu.vv v8, v8, v10
246+
; CHECK-NEXT: vsub.vv v8, v8, v12
247+
; CHECK-NEXT: ret
248+
%a.zext = zext <vscale x 2 x i64> %a to <vscale x 2 x i128>
249+
%b.zext = zext <vscale x 2 x i64> %b to <vscale x 2 x i128>
250+
%sub = sub <vscale x 2 x i128> %a.zext, %b.zext
251+
%abs = call <vscale x 2 x i128> @llvm.abs.nxv2i128(<vscale x 2 x i128> %sub, i1 true)
252+
%trunc = trunc <vscale x 2 x i128> %abs to <vscale x 2 x i64>
253+
ret <vscale x 2 x i64> %trunc
254+
}
243255

244256
define <vscale x 2 x i64> @uabd_d_promoted_ops(<vscale x 2 x i32> %a, <vscale x 2 x i32> %b) {
245257
; CHECK-LABEL: uabd_d_promoted_ops:

0 commit comments

Comments
 (0)