You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/RISCV/rvv/fshr-fshl-vp.ll
+53Lines changed: 53 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1370,3 +1370,56 @@ define <vscale x 1 x i9> @fshl_v1i9(<vscale x 1 x i9> %a, <vscale x 1 x i9> %b,
1370
1370
%res = call <vscale x 1 x i9> @llvm.vp.fshl.nxv1i9(<vscale x 1 x i9> %a, <vscale x 1 x i9> %b, <vscale x 1 x i9> %c, <vscale x 1 x i1> %m, i32%evl)
1371
1371
ret <vscale x 1 x i9> %res
1372
1372
}
1373
+
1374
+
declare <vscale x 1 x i4> @llvm.vp.trunc.nxv1i4.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i1>, i32)
1375
+
declare <vscale x 1 x i8> @llvm.vp.zext.nxv1i8.nxv1i4(<vscale x 1 x i4>, <vscale x 1 x i1>, i32)
1376
+
declare <vscale x 1 x i4> @llvm.vp.fshr.nxv1i4(<vscale x 1 x i4>, <vscale x 1 x i4>, <vscale x 1 x i4>, <vscale x 1 x i1>, i32)
1377
+
define <vscale x 1 x i8> @fshr_v1i4(<vscale x 1 x i8> %a, <vscale x 1 x i8> %b, <vscale x 1 x i8> %c, <vscale x 1 x i1> %m, i32zeroext%evl) {
1378
+
; CHECK-LABEL: fshr_v1i4:
1379
+
; CHECK: # %bb.0:
1380
+
; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
1381
+
; CHECK-NEXT: vand.vi v10, v10, 15
1382
+
; CHECK-NEXT: li a1, 4
1383
+
; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
1384
+
; CHECK-NEXT: vremu.vx v10, v10, a1, v0.t
1385
+
; CHECK-NEXT: vsll.vi v8, v8, 4, v0.t
1386
+
; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
1387
+
; CHECK-NEXT: vand.vi v9, v9, 15
1388
+
; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
1389
+
; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
1390
+
; CHECK-NEXT: vsrl.vv v8, v8, v10, v0.t
1391
+
; CHECK-NEXT: vand.vi v8, v8, 15, v0.t
1392
+
; CHECK-NEXT: ret
1393
+
%trunca = call <vscale x 1 x i4> @llvm.vp.trunc.nxv1i4.nxv1i8(<vscale x 1 x i8> %a, <vscale x 1 x i1> %m, i32zeroext%evl)
1394
+
%truncb = call <vscale x 1 x i4> @llvm.vp.trunc.nxv1i4.nxv1i8(<vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32zeroext%evl)
1395
+
%truncc = call <vscale x 1 x i4> @llvm.vp.trunc.nxv1i4.nxv1i8(<vscale x 1 x i8> %c, <vscale x 1 x i1> %m, i32zeroext%evl)
1396
+
%fshr = call <vscale x 1 x i4> @llvm.vp.fshr.nxv1i4(<vscale x 1 x i4> %trunca, <vscale x 1 x i4> %truncb, <vscale x 1 x i4> %truncc, <vscale x 1 x i1> %m, i32%evl)
1397
+
%res = call <vscale x 1 x i8> @llvm.vp.zext.nxv1i8.nxv1i4(<vscale x 1 x i4> %fshr, <vscale x 1 x i1> %m, i32zeroext%evl)
1398
+
ret <vscale x 1 x i8> %res
1399
+
}
1400
+
1401
+
declare <vscale x 1 x i4> @llvm.vp.fshl.nxv1i4(<vscale x 1 x i4>, <vscale x 1 x i4>, <vscale x 1 x i4>, <vscale x 1 x i1>, i32)
1402
+
define <vscale x 1 x i8> @fshl_v1i4(<vscale x 1 x i8> %a, <vscale x 1 x i8> %b, <vscale x 1 x i8> %c, <vscale x 1 x i1> %m, i32zeroext%evl) {
1403
+
; CHECK-LABEL: fshl_v1i4:
1404
+
; CHECK: # %bb.0:
1405
+
; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
1406
+
; CHECK-NEXT: vand.vi v10, v10, 15
1407
+
; CHECK-NEXT: li a1, 4
1408
+
; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
1409
+
; CHECK-NEXT: vremu.vx v10, v10, a1, v0.t
1410
+
; CHECK-NEXT: vsll.vi v8, v8, 4, v0.t
1411
+
; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
1412
+
; CHECK-NEXT: vand.vi v9, v9, 15
1413
+
; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
1414
+
; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
1415
+
; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
1416
+
; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1417
+
; CHECK-NEXT: vand.vi v8, v8, 15, v0.t
1418
+
; CHECK-NEXT: ret
1419
+
%trunca = call <vscale x 1 x i4> @llvm.vp.trunc.nxv1i4.nxv1i8(<vscale x 1 x i8> %a, <vscale x 1 x i1> %m, i32zeroext%evl)
1420
+
%truncb = call <vscale x 1 x i4> @llvm.vp.trunc.nxv1i4.nxv1i8(<vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32zeroext%evl)
1421
+
%truncc = call <vscale x 1 x i4> @llvm.vp.trunc.nxv1i4.nxv1i8(<vscale x 1 x i8> %c, <vscale x 1 x i1> %m, i32zeroext%evl)
1422
+
%fshl = call <vscale x 1 x i4> @llvm.vp.fshl.nxv1i4(<vscale x 1 x i4> %trunca, <vscale x 1 x i4> %truncb, <vscale x 1 x i4> %truncc, <vscale x 1 x i1> %m, i32%evl)
1423
+
%res = call <vscale x 1 x i8> @llvm.vp.zext.nxv1i8.nxv1i4(<vscale x 1 x i4> %fshl, <vscale x 1 x i1> %m, i32zeroext%evl)
0 commit comments