@@ -353,6 +353,49 @@ define <16 x i64> @zipodd_v16i64(<16 x i64> %v1, <16 x i64> %v2) {
353353 %out = shufflevector <16 x i64 > %v1 , <16 x i64 > %v2 , <16 x i32 > <i32 1 , i32 17 , i32 3 , i32 19 , i32 5 , i32 21 , i32 7 , i32 23 , i32 9 , i32 25 , i32 11 , i32 27 , i32 13 , i32 29 , i32 15 , i32 31 >
354354 ret <16 x i64 > %out
355355}
356+
357+ define <8 x i32 > @zipeven_v8i32_as_v4i64 (<8 x i32 > %v1 , <8 x i32 > %v2 ) {
358+ ; CHECK-LABEL: zipeven_v8i32_as_v4i64:
359+ ; CHECK: # %bb.0:
360+ ; CHECK-NEXT: li a0, 204
361+ ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu
362+ ; CHECK-NEXT: vmv.s.x v0, a0
363+ ; CHECK-NEXT: vslideup.vi v8, v10, 2, v0.t
364+ ; CHECK-NEXT: ret
365+ ;
366+ ; ZIP-LABEL: zipeven_v8i32_as_v4i64:
367+ ; ZIP: # %bb.0:
368+ ; ZIP-NEXT: li a0, 204
369+ ; ZIP-NEXT: vsetivli zero, 8, e32, m2, ta, mu
370+ ; ZIP-NEXT: vmv.s.x v0, a0
371+ ; ZIP-NEXT: vslideup.vi v8, v10, 2, v0.t
372+ ; ZIP-NEXT: ret
373+ %out = shufflevector <8 x i32 > %v1 , <8 x i32 > %v2 , <8 x i32 > <i32 0 , i32 1 , i32 8 , i32 9 , i32 4 , i32 5 , i32 12 , i32 13 >
374+ ret <8 x i32 > %out
375+ }
376+
377+ define <8 x i32 > @zipodd_v8i32_as_v4i64 (<8 x i32 > %v1 , <8 x i32 > %v2 ) {
378+ ; CHECK-LABEL: zipodd_v8i32_as_v4i64:
379+ ; CHECK: # %bb.0:
380+ ; CHECK-NEXT: li a0, 51
381+ ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu
382+ ; CHECK-NEXT: vmv.s.x v0, a0
383+ ; CHECK-NEXT: vslidedown.vi v10, v8, 2, v0.t
384+ ; CHECK-NEXT: vmv.v.v v8, v10
385+ ; CHECK-NEXT: ret
386+ ;
387+ ; ZIP-LABEL: zipodd_v8i32_as_v4i64:
388+ ; ZIP: # %bb.0:
389+ ; ZIP-NEXT: li a0, 51
390+ ; ZIP-NEXT: vsetivli zero, 8, e32, m2, ta, mu
391+ ; ZIP-NEXT: vmv.s.x v0, a0
392+ ; ZIP-NEXT: vslidedown.vi v10, v8, 2, v0.t
393+ ; ZIP-NEXT: vmv.v.v v8, v10
394+ ; ZIP-NEXT: ret
395+ %out = shufflevector <8 x i32 > %v1 , <8 x i32 > %v2 , <8 x i32 > <i32 2 , i32 3 , i32 10 , i32 11 , i32 6 , i32 7 , i32 14 , i32 15 >
396+ ret <8 x i32 > %out
397+ }
398+
356399;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
357400; RV32: {{.*}}
358401; RV64: {{.*}}
0 commit comments