Skip to content

Commit 8812992

Browse files
committed
Precommit tests
1 parent bc7449c commit 8812992

File tree

2 files changed

+148
-0
lines changed

2 files changed

+148
-0
lines changed

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

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,77 @@ 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_identity(<16 x float> %v, <16 x float> %w) {
421+
; CHECK-LABEL: shuffle_disjoint_lanes_one_identity:
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 v16, (a0)
427+
; CHECK-NEXT: li a0, -272
428+
; CHECK-NEXT: vmv.s.x v0, a0
429+
; CHECK-NEXT: vrgatherei16.vv v8, v12, v16, v0.t
430+
; CHECK-NEXT: ret
431+
%out = shufflevector <16 x float> %v, <16 x float> %w, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 26, i32 30, i32 22, i32 20, i32 8, i32 31, i32 29, i32 28, i32 27, i32 23, i32 25, i32 22>
432+
ret <16 x float> %out
433+
}
434+
435+
define <16 x float> @shuffle_disjoint_lanes_one_broadcast(<16 x float> %v, <16 x float> %w) {
436+
; CHECK-LABEL: shuffle_disjoint_lanes_one_broadcast:
437+
; CHECK: # %bb.0:
438+
; CHECK-NEXT: lui a0, %hi(.LCPI32_0)
439+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI32_0)
440+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
441+
; CHECK-NEXT: vle16.v v20, (a0)
442+
; CHECK-NEXT: lui a0, 15
443+
; CHECK-NEXT: addi a0, a0, 240
444+
; CHECK-NEXT: vmv.s.x v0, a0
445+
; CHECK-NEXT: vrgather.vi v16, v8, 7
446+
; CHECK-NEXT: vrgatherei16.vv v16, v12, v20, v0.t
447+
; CHECK-NEXT: vmv.v.v v8, v16
448+
; CHECK-NEXT: ret
449+
%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>
450+
ret <16 x float> %out
451+
}
452+
453+
define <16 x float> @shuffle_disjoint_lanes_one_splat(float %v, <16 x float> %w) {
454+
; CHECK-LABEL: shuffle_disjoint_lanes_one_splat:
455+
; CHECK: # %bb.0:
456+
; CHECK-NEXT: lui a0, %hi(.LCPI33_0)
457+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI33_0)
458+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
459+
; CHECK-NEXT: vle16.v v16, (a0)
460+
; CHECK-NEXT: lui a0, 15
461+
; CHECK-NEXT: addi a0, a0, 240
462+
; CHECK-NEXT: vmv.s.x v0, a0
463+
; CHECK-NEXT: vfmv.v.f v12, fa0
464+
; CHECK-NEXT: vrgatherei16.vv v12, v8, v16, v0.t
465+
; CHECK-NEXT: vmv.v.v v8, v12
466+
; CHECK-NEXT: ret
467+
%head = insertelement <16 x float> poison, float %v, i32 0
468+
%splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
469+
%out = shufflevector <16 x float> %splat, <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>
470+
ret <16 x float> %out
471+
}

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

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,3 +1021,77 @@ 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_identity(<16 x i32> %v, <16 x i32> %w) {
1047+
; CHECK-LABEL: shuffle_disjoint_lanes_one_identity:
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 v16, (a0)
1053+
; CHECK-NEXT: li a0, -272
1054+
; CHECK-NEXT: vmv.s.x v0, a0
1055+
; CHECK-NEXT: vrgatherei16.vv v8, v12, v16, v0.t
1056+
; CHECK-NEXT: ret
1057+
%out = shufflevector <16 x i32> %v, <16 x i32> %w, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 26, i32 30, i32 22, i32 20, i32 8, i32 31, i32 29, i32 28, i32 27, i32 23, i32 25, i32 22>
1058+
ret <16 x i32> %out
1059+
}
1060+
1061+
define <16 x i32> @shuffle_disjoint_lanes_one_broadcast(<16 x i32> %v, <16 x i32> %w) {
1062+
; CHECK-LABEL: shuffle_disjoint_lanes_one_broadcast:
1063+
; CHECK: # %bb.0:
1064+
; CHECK-NEXT: lui a0, %hi(.LCPI72_0)
1065+
; CHECK-NEXT: addi a0, a0, %lo(.LCPI72_0)
1066+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
1067+
; CHECK-NEXT: vle16.v v20, (a0)
1068+
; CHECK-NEXT: lui a0, 15
1069+
; CHECK-NEXT: addi a0, a0, 240
1070+
; CHECK-NEXT: vmv.s.x v0, a0
1071+
; CHECK-NEXT: vrgather.vi v16, v8, 7
1072+
; CHECK-NEXT: vrgatherei16.vv v16, v12, v20, v0.t
1073+
; CHECK-NEXT: vmv.v.v v8, v16
1074+
; CHECK-NEXT: ret
1075+
%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>
1076+
ret <16 x i32> %out
1077+
}
1078+
1079+
define <16 x i32> @shuffle_disjoint_lanes_one_splat(i32 %v, <16 x i32> %w) {
1080+
; CHECK-LABEL: shuffle_disjoint_lanes_one_splat:
1081+
; CHECK: # %bb.0:
1082+
; CHECK-NEXT: lui a1, %hi(.LCPI73_0)
1083+
; CHECK-NEXT: addi a1, a1, %lo(.LCPI73_0)
1084+
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
1085+
; CHECK-NEXT: vle16.v v16, (a1)
1086+
; CHECK-NEXT: lui a1, 15
1087+
; CHECK-NEXT: addi a1, a1, 240
1088+
; CHECK-NEXT: vmv.s.x v0, a1
1089+
; CHECK-NEXT: vmv.v.x v12, a0
1090+
; CHECK-NEXT: vrgatherei16.vv v12, v8, v16, v0.t
1091+
; CHECK-NEXT: vmv.v.v v8, v12
1092+
; CHECK-NEXT: ret
1093+
%head = insertelement <16 x i32> poison, i32 %v, i32 0
1094+
%splat = shufflevector <16 x i32> %head, <16 x i32> poison, <16 x i32> zeroinitializer
1095+
%out = shufflevector <16 x i32> %splat, <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>
1096+
ret <16 x i32> %out
1097+
}

0 commit comments

Comments
 (0)