Skip to content

Commit 36eb019

Browse files
committed
Precommit tests
1 parent aac000a commit 36eb019

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-shuffles.ll

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,42 @@ define <4 x half> @vrgather_shuffle_vx_v4f16_load(ptr %p) {
395395
%s = shufflevector <4 x half> %v, <4 x half> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
396396
ret <4 x half> %s
397397
}
398+
399+
define <16 x float> @shuffle_disjoint_lanes(<16 x float> %v, <16 x float> %w) {
400+
; CHECK-LABEL: shuffle_disjoint_lanes:
401+
; CHECK: # %bb.0:
402+
; CHECK-NEXT: lui a0, %hi(.LCPI30_0)
403+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI30_0)
404+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
405+
; CHECK-NEXT: vle16.v v20, (a0)
406+
; CHECK-NEXT: lui a0, %hi(.LCPI30_1)
407+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI30_1)
408+
; CHECK-NEXT: vle16.v v22, (a0)
409+
; CHECK-NEXT: lui a0, 15
410+
; CHECK-NEXT: addi a0, a0, 240
411+
; CHECK-NEXT: vmv.s.x v0, a0
412+
; CHECK-NEXT: vrgatherei16.vv v16, v8, v20
413+
; CHECK-NEXT: vrgatherei16.vv v16, v12, v22, v0.t
414+
; CHECK-NEXT: vmv.v.v v8, v16
415+
; CHECK-NEXT: ret
416+
%out = shufflevector <16 x float> %v, <16 x float> %w, <16 x i32> <i32 11, i32 15, i32 7, i32 3, i32 26, i32 30, i32 22, i32 18, i32 9, i32 13, i32 5, i32 1, i32 24, i32 28, i32 20, i32 16>
417+
ret <16 x float> %out
418+
}
419+
420+
define <16 x float> @shuffle_disjoint_lanes_one_splat(<16 x float> %v, <16 x float> %w) {
421+
; CHECK-LABEL: shuffle_disjoint_lanes_one_splat:
422+
; CHECK: # %bb.0:
423+
; CHECK-NEXT: lui a0, %hi(.LCPI31_0)
424+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI31_0)
425+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
426+
; CHECK-NEXT: vle16.v v20, (a0)
427+
; CHECK-NEXT: lui a0, 15
428+
; CHECK-NEXT: addi a0, a0, 240
429+
; CHECK-NEXT: vmv.s.x v0, a0
430+
; CHECK-NEXT: vrgather.vi v16, v8, 7
431+
; CHECK-NEXT: vrgatherei16.vv v16, v12, v20, v0.t
432+
; CHECK-NEXT: vmv.v.v v8, v16
433+
; CHECK-NEXT: ret
434+
%out = shufflevector <16 x float> %v, <16 x float> %w, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 26, i32 30, i32 22, i32 18, i32 7, i32 7, i32 7, i32 7, i32 24, i32 28, i32 20, i32 16>
435+
ret <16 x float> %out
436+
}

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,3 +1021,42 @@ define <8 x i32> @shuffle_repeat4_singlesrc_e32(<8 x i32> %v) {
10211021
%out = shufflevector <8 x i32> %v, <8 x i32> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1>
10221022
ret <8 x i32> %out
10231023
}
1024+
1025+
define <16 x i32> @shuffle_disjoint_lanes(<16 x i32> %v, <16 x i32> %w) {
1026+
; CHECK-LABEL: shuffle_disjoint_lanes:
1027+
; CHECK: # %bb.0:
1028+
; CHECK-NEXT: lui a0, %hi(.LCPI70_0)
1029+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI70_0)
1030+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
1031+
; CHECK-NEXT: vle16.v v20, (a0)
1032+
; CHECK-NEXT: lui a0, %hi(.LCPI70_1)
1033+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI70_1)
1034+
; CHECK-NEXT: vle16.v v22, (a0)
1035+
; CHECK-NEXT: lui a0, 15
1036+
; CHECK-NEXT: addi a0, a0, 240
1037+
; CHECK-NEXT: vmv.s.x v0, a0
1038+
; CHECK-NEXT: vrgatherei16.vv v16, v8, v20
1039+
; CHECK-NEXT: vrgatherei16.vv v16, v12, v22, v0.t
1040+
; CHECK-NEXT: vmv.v.v v8, v16
1041+
; CHECK-NEXT: ret
1042+
%out = shufflevector <16 x i32> %v, <16 x i32> %w, <16 x i32> <i32 11, i32 15, i32 7, i32 3, i32 26, i32 30, i32 22, i32 18, i32 9, i32 13, i32 5, i32 1, i32 24, i32 28, i32 20, i32 16>
1043+
ret <16 x i32> %out
1044+
}
1045+
1046+
define <16 x i32> @shuffle_disjoint_lanes_one_splat(<16 x i32> %v, <16 x i32> %w) {
1047+
; CHECK-LABEL: shuffle_disjoint_lanes_one_splat:
1048+
; CHECK: # %bb.0:
1049+
; CHECK-NEXT: lui a0, %hi(.LCPI71_0)
1050+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI71_0)
1051+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
1052+
; CHECK-NEXT: vle16.v v20, (a0)
1053+
; CHECK-NEXT: lui a0, 15
1054+
; CHECK-NEXT: addi a0, a0, 240
1055+
; CHECK-NEXT: vmv.s.x v0, a0
1056+
; CHECK-NEXT: vrgather.vi v16, v8, 7
1057+
; CHECK-NEXT: vrgatherei16.vv v16, v12, v20, v0.t
1058+
; CHECK-NEXT: vmv.v.v v8, v16
1059+
; CHECK-NEXT: ret
1060+
%out = shufflevector <16 x i32> %v, <16 x i32> %w, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 26, i32 30, i32 22, i32 18, i32 7, i32 7, i32 7, i32 7, i32 24, i32 28, i32 20, i32 16>
1061+
ret <16 x i32> %out
1062+
}

0 commit comments

Comments
 (0)