xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/abs-sdnode.ll (revision d89d45ca9a6e51be388a6ff3893d59e54748b928)
172ecf2f4SCraig Topper; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
23cf15af2SeopXD; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
33cf15af2SeopXD; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
472ecf2f4SCraig Topper
572ecf2f4SCraig Topperdeclare <vscale x 1 x i16> @llvm.abs.nxv1i16(<vscale x 1 x i16>, i1)
672ecf2f4SCraig Topper
772ecf2f4SCraig Topperdefine <vscale x 1 x i16> @vabs_nxv1i16(<vscale x 1 x i16> %v) {
872ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv1i16:
972ecf2f4SCraig Topper; CHECK:       # %bb.0:
10*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
11facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v9, v8, 0
12facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v9
1372ecf2f4SCraig Topper; CHECK-NEXT:    ret
1472ecf2f4SCraig Topper  %r = call <vscale x 1 x i16> @llvm.abs.nxv1i16(<vscale x 1 x i16> %v, i1 false)
1572ecf2f4SCraig Topper  ret <vscale x 1 x i16> %r
1672ecf2f4SCraig Topper}
1772ecf2f4SCraig Topper
1872ecf2f4SCraig Topperdeclare <vscale x 2 x i16> @llvm.abs.nxv2i16(<vscale x 2 x i16>, i1)
1972ecf2f4SCraig Topper
2072ecf2f4SCraig Topperdefine <vscale x 2 x i16> @vabs_nxv2i16(<vscale x 2 x i16> %v) {
2172ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv2i16:
2272ecf2f4SCraig Topper; CHECK:       # %bb.0:
23*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
24facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v9, v8, 0
25facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v9
2672ecf2f4SCraig Topper; CHECK-NEXT:    ret
2772ecf2f4SCraig Topper  %r = call <vscale x 2 x i16> @llvm.abs.nxv2i16(<vscale x 2 x i16> %v, i1 false)
2872ecf2f4SCraig Topper  ret <vscale x 2 x i16> %r
2972ecf2f4SCraig Topper}
3072ecf2f4SCraig Topper
3172ecf2f4SCraig Topperdeclare <vscale x 4 x i16> @llvm.abs.nxv4i16(<vscale x 4 x i16>, i1)
3272ecf2f4SCraig Topper
3372ecf2f4SCraig Topperdefine <vscale x 4 x i16> @vabs_nxv4i16(<vscale x 4 x i16> %v) {
3472ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv4i16:
3572ecf2f4SCraig Topper; CHECK:       # %bb.0:
36*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
37facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v9, v8, 0
38facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v9
3972ecf2f4SCraig Topper; CHECK-NEXT:    ret
4072ecf2f4SCraig Topper  %r = call <vscale x 4 x i16> @llvm.abs.nxv4i16(<vscale x 4 x i16> %v, i1 false)
4172ecf2f4SCraig Topper  ret <vscale x 4 x i16> %r
4272ecf2f4SCraig Topper}
4372ecf2f4SCraig Topper
4472ecf2f4SCraig Topperdeclare <vscale x 8 x i16> @llvm.abs.nxv8i16(<vscale x 8 x i16>, i1)
4572ecf2f4SCraig Topper
4672ecf2f4SCraig Topperdefine <vscale x 8 x i16> @vabs_nxv8i16(<vscale x 8 x i16> %v) {
4772ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv8i16:
4872ecf2f4SCraig Topper; CHECK:       # %bb.0:
49*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
50facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v10, v8, 0
51facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v10
5272ecf2f4SCraig Topper; CHECK-NEXT:    ret
5372ecf2f4SCraig Topper  %r = call <vscale x 8 x i16> @llvm.abs.nxv8i16(<vscale x 8 x i16> %v, i1 false)
5472ecf2f4SCraig Topper  ret <vscale x 8 x i16> %r
5572ecf2f4SCraig Topper}
5672ecf2f4SCraig Topper
5772ecf2f4SCraig Topperdeclare <vscale x 16 x i16> @llvm.abs.nxv16i16(<vscale x 16 x i16>, i1)
5872ecf2f4SCraig Topper
5972ecf2f4SCraig Topperdefine <vscale x 16 x i16> @vabs_nxv16i16(<vscale x 16 x i16> %v) {
6072ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv16i16:
6172ecf2f4SCraig Topper; CHECK:       # %bb.0:
62*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
63facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v12, v8, 0
64facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v12
6572ecf2f4SCraig Topper; CHECK-NEXT:    ret
6672ecf2f4SCraig Topper  %r = call <vscale x 16 x i16> @llvm.abs.nxv16i16(<vscale x 16 x i16> %v, i1 false)
6772ecf2f4SCraig Topper  ret <vscale x 16 x i16> %r
6872ecf2f4SCraig Topper}
6972ecf2f4SCraig Topper
7072ecf2f4SCraig Topperdeclare <vscale x 32 x i16> @llvm.abs.nxv32i16(<vscale x 32 x i16>, i1)
7172ecf2f4SCraig Topper
7272ecf2f4SCraig Topperdefine <vscale x 32 x i16> @vabs_nxv32i16(<vscale x 32 x i16> %v) {
7372ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv32i16:
7472ecf2f4SCraig Topper; CHECK:       # %bb.0:
75*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
7672ecf2f4SCraig Topper; CHECK-NEXT:    vrsub.vi v16, v8, 0
7772ecf2f4SCraig Topper; CHECK-NEXT:    vmax.vv v8, v8, v16
7872ecf2f4SCraig Topper; CHECK-NEXT:    ret
7972ecf2f4SCraig Topper  %r = call <vscale x 32 x i16> @llvm.abs.nxv32i16(<vscale x 32 x i16> %v, i1 false)
8072ecf2f4SCraig Topper  ret <vscale x 32 x i16> %r
8172ecf2f4SCraig Topper}
8272ecf2f4SCraig Topper
8372ecf2f4SCraig Topperdeclare <vscale x 1 x i32> @llvm.abs.nxv1i32(<vscale x 1 x i32>, i1)
8472ecf2f4SCraig Topper
8572ecf2f4SCraig Topperdefine <vscale x 1 x i32> @vabs_nxv1i32(<vscale x 1 x i32> %v) {
8672ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv1i32:
8772ecf2f4SCraig Topper; CHECK:       # %bb.0:
88*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
89facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v9, v8, 0
90facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v9
9172ecf2f4SCraig Topper; CHECK-NEXT:    ret
9272ecf2f4SCraig Topper  %r = call <vscale x 1 x i32> @llvm.abs.nxv1i32(<vscale x 1 x i32> %v, i1 false)
9372ecf2f4SCraig Topper  ret <vscale x 1 x i32> %r
9472ecf2f4SCraig Topper}
9572ecf2f4SCraig Topper
9672ecf2f4SCraig Topperdeclare <vscale x 2 x i32> @llvm.abs.nxv2i32(<vscale x 2 x i32>, i1)
9772ecf2f4SCraig Topper
9872ecf2f4SCraig Topperdefine <vscale x 2 x i32> @vabs_nxv2i32(<vscale x 2 x i32> %v) {
9972ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv2i32:
10072ecf2f4SCraig Topper; CHECK:       # %bb.0:
101*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
102facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v9, v8, 0
103facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v9
10472ecf2f4SCraig Topper; CHECK-NEXT:    ret
10572ecf2f4SCraig Topper  %r = call <vscale x 2 x i32> @llvm.abs.nxv2i32(<vscale x 2 x i32> %v, i1 false)
10672ecf2f4SCraig Topper  ret <vscale x 2 x i32> %r
10772ecf2f4SCraig Topper}
10872ecf2f4SCraig Topper
10972ecf2f4SCraig Topperdeclare <vscale x 4 x i32> @llvm.abs.nxv4i32(<vscale x 4 x i32>, i1)
11072ecf2f4SCraig Topper
11172ecf2f4SCraig Topperdefine <vscale x 4 x i32> @vabs_nxv4i32(<vscale x 4 x i32> %v) {
11272ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv4i32:
11372ecf2f4SCraig Topper; CHECK:       # %bb.0:
114*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
115facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v10, v8, 0
116facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v10
11772ecf2f4SCraig Topper; CHECK-NEXT:    ret
11872ecf2f4SCraig Topper  %r = call <vscale x 4 x i32> @llvm.abs.nxv4i32(<vscale x 4 x i32> %v, i1 false)
11972ecf2f4SCraig Topper  ret <vscale x 4 x i32> %r
12072ecf2f4SCraig Topper}
12172ecf2f4SCraig Topper
12272ecf2f4SCraig Topperdeclare <vscale x 8 x i32> @llvm.abs.nxv8i32(<vscale x 8 x i32>, i1)
12372ecf2f4SCraig Topper
12472ecf2f4SCraig Topperdefine <vscale x 8 x i32> @vabs_nxv8i32(<vscale x 8 x i32> %v) {
12572ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv8i32:
12672ecf2f4SCraig Topper; CHECK:       # %bb.0:
127*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
128facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v12, v8, 0
129facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v12
13072ecf2f4SCraig Topper; CHECK-NEXT:    ret
13172ecf2f4SCraig Topper  %r = call <vscale x 8 x i32> @llvm.abs.nxv8i32(<vscale x 8 x i32> %v, i1 false)
13272ecf2f4SCraig Topper  ret <vscale x 8 x i32> %r
13372ecf2f4SCraig Topper}
13472ecf2f4SCraig Topper
13572ecf2f4SCraig Topperdeclare <vscale x 16 x i32> @llvm.abs.nxv16i32(<vscale x 16 x i32>, i1)
13672ecf2f4SCraig Topper
13772ecf2f4SCraig Topperdefine <vscale x 16 x i32> @vabs_nxv16i32(<vscale x 16 x i32> %v) {
13872ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv16i32:
13972ecf2f4SCraig Topper; CHECK:       # %bb.0:
140*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
14172ecf2f4SCraig Topper; CHECK-NEXT:    vrsub.vi v16, v8, 0
14272ecf2f4SCraig Topper; CHECK-NEXT:    vmax.vv v8, v8, v16
14372ecf2f4SCraig Topper; CHECK-NEXT:    ret
14472ecf2f4SCraig Topper  %r = call <vscale x 16 x i32> @llvm.abs.nxv16i32(<vscale x 16 x i32> %v, i1 false)
14572ecf2f4SCraig Topper  ret <vscale x 16 x i32> %r
14672ecf2f4SCraig Topper}
14772ecf2f4SCraig Topper
14872ecf2f4SCraig Topperdeclare <vscale x 1 x i64> @llvm.abs.nxv1i64(<vscale x 1 x i64>, i1)
14972ecf2f4SCraig Topper
15072ecf2f4SCraig Topperdefine <vscale x 1 x i64> @vabs_nxv1i64(<vscale x 1 x i64> %v) {
15172ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv1i64:
15272ecf2f4SCraig Topper; CHECK:       # %bb.0:
153*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
154facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v9, v8, 0
155facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v9
15672ecf2f4SCraig Topper; CHECK-NEXT:    ret
15772ecf2f4SCraig Topper  %r = call <vscale x 1 x i64> @llvm.abs.nxv1i64(<vscale x 1 x i64> %v, i1 false)
15872ecf2f4SCraig Topper  ret <vscale x 1 x i64> %r
15972ecf2f4SCraig Topper}
16072ecf2f4SCraig Topper
16172ecf2f4SCraig Topperdeclare <vscale x 2 x i64> @llvm.abs.nxv2i64(<vscale x 2 x i64>, i1)
16272ecf2f4SCraig Topper
16372ecf2f4SCraig Topperdefine <vscale x 2 x i64> @vabs_nxv2i64(<vscale x 2 x i64> %v) {
16472ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv2i64:
16572ecf2f4SCraig Topper; CHECK:       # %bb.0:
166*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
167facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v10, v8, 0
168facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v10
16972ecf2f4SCraig Topper; CHECK-NEXT:    ret
17072ecf2f4SCraig Topper  %r = call <vscale x 2 x i64> @llvm.abs.nxv2i64(<vscale x 2 x i64> %v, i1 false)
17172ecf2f4SCraig Topper  ret <vscale x 2 x i64> %r
17272ecf2f4SCraig Topper}
17372ecf2f4SCraig Topper
17472ecf2f4SCraig Topperdeclare <vscale x 4 x i64> @llvm.abs.nxv4i64(<vscale x 4 x i64>, i1)
17572ecf2f4SCraig Topper
17672ecf2f4SCraig Topperdefine <vscale x 4 x i64> @vabs_nxv4i64(<vscale x 4 x i64> %v) {
17772ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv4i64:
17872ecf2f4SCraig Topper; CHECK:       # %bb.0:
179*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
180facff468SHsiangkai Wang; CHECK-NEXT:    vrsub.vi v12, v8, 0
181facff468SHsiangkai Wang; CHECK-NEXT:    vmax.vv v8, v8, v12
18272ecf2f4SCraig Topper; CHECK-NEXT:    ret
18372ecf2f4SCraig Topper  %r = call <vscale x 4 x i64> @llvm.abs.nxv4i64(<vscale x 4 x i64> %v, i1 false)
18472ecf2f4SCraig Topper  ret <vscale x 4 x i64> %r
18572ecf2f4SCraig Topper}
18672ecf2f4SCraig Topper
18772ecf2f4SCraig Topperdeclare <vscale x 8 x i64> @llvm.abs.nxv8i64(<vscale x 8 x i64>, i1)
18872ecf2f4SCraig Topper
18972ecf2f4SCraig Topperdefine <vscale x 8 x i64> @vabs_nxv8i64(<vscale x 8 x i64> %v) {
19072ecf2f4SCraig Topper; CHECK-LABEL: vabs_nxv8i64:
19172ecf2f4SCraig Topper; CHECK:       # %bb.0:
192*d89d45caSPhilip Reames; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
19372ecf2f4SCraig Topper; CHECK-NEXT:    vrsub.vi v16, v8, 0
19472ecf2f4SCraig Topper; CHECK-NEXT:    vmax.vv v8, v8, v16
19572ecf2f4SCraig Topper; CHECK-NEXT:    ret
19672ecf2f4SCraig Topper  %r = call <vscale x 8 x i64> @llvm.abs.nxv8i64(<vscale x 8 x i64> %v, i1 false)
19772ecf2f4SCraig Topper  ret <vscale x 8 x i64> %r
19872ecf2f4SCraig Topper}
199