[llvm] [WIP][RISCV] Support for zvzip fasttrack proposal (PR #124140)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 23 11:54:41 PST 2025
================
@@ -0,0 +1,893 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,NOZIP
+; RUN: llc -mtriple=riscv64 -mattr=+v,+experimental-zvzip -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZIP
+
+define <4 x i32> @zipeven(<4 x i32> %a, <4 x i32> %b) {
+; NOZIP-LABEL: zipeven:
+; NOZIP: # %bb.0: # %entry
+; NOZIP-NEXT: vsetivli zero, 4, e32, m1, ta, mu
+; NOZIP-NEXT: vmv.v.i v0, 10
+; NOZIP-NEXT: vslideup.vi v8, v9, 1, v0.t
+; NOZIP-NEXT: ret
+;
+; ZIP-LABEL: zipeven:
+; ZIP: # %bb.0: # %entry
+; ZIP-NEXT: vsetivli zero, 4, e32, m1, ta, ma
+; ZIP-NEXT: vzipeven.vv v8, v8, v9
+; ZIP-NEXT: ret
+entry:
+ %c = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
+ ret <4 x i32> %c
+}
+
+define <4 x i32> @zipeven_swapped(<4 x i32> %a, <4 x i32> %b) {
+; NOZIP-LABEL: zipeven_swapped:
+; NOZIP: # %bb.0: # %entry
+; NOZIP-NEXT: vsetivli zero, 4, e32, m1, ta, mu
+; NOZIP-NEXT: vmv.v.i v0, 10
+; NOZIP-NEXT: vslideup.vi v9, v8, 1, v0.t
+; NOZIP-NEXT: vmv.v.v v8, v9
+; NOZIP-NEXT: ret
+;
+; ZIP-LABEL: zipeven_swapped:
+; ZIP: # %bb.0: # %entry
+; ZIP-NEXT: vsetivli zero, 4, e32, m1, ta, ma
+; ZIP-NEXT: vzipeven.vv v8, v9, v8
+; ZIP-NEXT: ret
+entry:
+ %c = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 4, i32 0, i32 6, i32 2>
+ ret <4 x i32> %c
+}
+
+define <4 x i64> @zipeven_i64(<4 x i64> %a, <4 x i64> %b) {
+; NOZIP-LABEL: zipeven_i64:
+; NOZIP: # %bb.0: # %entry
+; NOZIP-NEXT: vsetivli zero, 1, e8, mf8, ta, ma
+; NOZIP-NEXT: vmv.v.i v0, 10
+; NOZIP-NEXT: vsetivli zero, 4, e64, m2, ta, mu
+; NOZIP-NEXT: vslideup.vi v8, v10, 1, v0.t
+; NOZIP-NEXT: ret
+;
+; ZIP-LABEL: zipeven_i64:
+; ZIP: # %bb.0: # %entry
+; ZIP-NEXT: vsetivli zero, 4, e64, m2, ta, ma
+; ZIP-NEXT: vzipeven.vv v8, v8, v10
+; ZIP-NEXT: ret
+entry:
+ %c = shufflevector <4 x i64> %a, <4 x i64> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
+ ret <4 x i64> %c
+}
+
+define <4 x half> @zipeven_half(<4 x half> %a, <4 x half> %b) {
----------------
topperc wrote:
Missing +Zvfh?
https://github.com/llvm/llvm-project/pull/124140
More information about the llvm-commits
mailing list