From: Lian Wang Date: Wed, 29 Jun 2022 02:44:02 +0000 (+0000) Subject: [RISCV] Precommit test for D128717 X-Git-Tag: upstream/15.0.7~2342 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3b37f3ecfd6be665c385455561603bdfc7d6c76;p=platform%2Fupstream%2Fllvm.git [RISCV] Precommit test for D128717 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D128778 --- diff --git a/llvm/test/CodeGen/RISCV/rvv/vector-splice.ll b/llvm/test/CodeGen/RISCV/rvv/vector-splice.ll index 9e3a3c9cd834..5b95ee1417a7 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vector-splice.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vector-splice.ll @@ -1,8 +1,211 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -mtriple riscv32 -mattr=+m,+f,+d,+v,+zfh,+experimental-zvfh < %s | FileCheck %s ; RUN: llc -mtriple riscv64 -mattr=+m,+f,+d,+v,+zfh,+experimental-zvfh < %s | FileCheck %s ; Tests assume VLEN=128 or vscale_range_min=2. +declare @llvm.experimental.vector.splice.nxv1i1(, , i32) + +define @splice_nxv1i1_offset_negone( %a, %b) #0 { +; CHECK-LABEL: splice_nxv1i1_offset_negone: +; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: sub sp, sp, a0 +; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, mu +; CHECK-NEXT: addi a0, sp, 16 +; CHECK-NEXT: vsm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: srli a0, a0, 3 +; CHECK-NEXT: addi a1, sp, 16 +; CHECK-NEXT: add a0, a1, a0 +; CHECK-NEXT: vsm.v v8, (a0) +; CHECK-NEXT: addi a0, a0, -1 +; CHECK-NEXT: vlm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: add sp, sp, a0 +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret + %res = call @llvm.experimental.vector.splice.nxv1i1( %a, %b, i32 -1) + ret %res +} + +declare @llvm.experimental.vector.splice.nxv2i1(, , i32) + +define @splice_nxv2i1_offset_negone( %a, %b) #0 { +; CHECK-LABEL: splice_nxv2i1_offset_negone: +; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: sub sp, sp, a0 +; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, mu +; CHECK-NEXT: addi a0, sp, 16 +; CHECK-NEXT: vsm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: srli a0, a0, 3 +; CHECK-NEXT: addi a1, sp, 16 +; CHECK-NEXT: add a0, a1, a0 +; CHECK-NEXT: vsm.v v8, (a0) +; CHECK-NEXT: addi a0, a0, -1 +; CHECK-NEXT: vlm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: add sp, sp, a0 +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret + %res = call @llvm.experimental.vector.splice.nxv2i1( %a, %b, i32 -1) + ret %res +} + +declare @llvm.experimental.vector.splice.nxv4i1(, , i32) + +define @splice_nxv4i1_offset_negone( %a, %b) #0 { +; CHECK-LABEL: splice_nxv4i1_offset_negone: +; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: sub sp, sp, a0 +; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, mu +; CHECK-NEXT: addi a0, sp, 16 +; CHECK-NEXT: vsm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: srli a0, a0, 3 +; CHECK-NEXT: addi a1, sp, 16 +; CHECK-NEXT: add a0, a1, a0 +; CHECK-NEXT: vsm.v v8, (a0) +; CHECK-NEXT: addi a0, a0, -1 +; CHECK-NEXT: vlm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: add sp, sp, a0 +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret + %res = call @llvm.experimental.vector.splice.nxv4i1( %a, %b, i32 -1) + ret %res +} + +declare @llvm.experimental.vector.splice.nxv8i1(, , i32) + +define @splice_nxv8i1_offset_negone( %a, %b) #0 { +; CHECK-LABEL: splice_nxv8i1_offset_negone: +; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: sub sp, sp, a0 +; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, mu +; CHECK-NEXT: addi a0, sp, 16 +; CHECK-NEXT: vsm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: srli a0, a0, 3 +; CHECK-NEXT: addi a1, sp, 16 +; CHECK-NEXT: add a0, a1, a0 +; CHECK-NEXT: vsm.v v8, (a0) +; CHECK-NEXT: addi a0, a0, -1 +; CHECK-NEXT: vlm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: add sp, sp, a0 +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret + %res = call @llvm.experimental.vector.splice.nxv8i1( %a, %b, i32 -1) + ret %res +} + +declare @llvm.experimental.vector.splice.nxv16i1(, , i32) + +define @splice_nxv16i1_offset_negone( %a, %b) #0 { +; CHECK-LABEL: splice_nxv16i1_offset_negone: +; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: sub sp, sp, a0 +; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, mu +; CHECK-NEXT: addi a0, sp, 16 +; CHECK-NEXT: vsm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: srli a0, a0, 2 +; CHECK-NEXT: addi a1, sp, 16 +; CHECK-NEXT: add a0, a1, a0 +; CHECK-NEXT: vsm.v v8, (a0) +; CHECK-NEXT: addi a0, a0, -1 +; CHECK-NEXT: vlm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: add sp, sp, a0 +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret + %res = call @llvm.experimental.vector.splice.nxv16i1( %a, %b, i32 -1) + ret %res +} + +declare @llvm.experimental.vector.splice.nxv32i1(, , i32) + +define @splice_nxv32i1_offset_negone( %a, %b) #0 { +; CHECK-LABEL: splice_nxv32i1_offset_negone: +; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: sub sp, sp, a0 +; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, mu +; CHECK-NEXT: addi a0, sp, 16 +; CHECK-NEXT: vsm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: srli a0, a0, 1 +; CHECK-NEXT: addi a1, sp, 16 +; CHECK-NEXT: add a0, a1, a0 +; CHECK-NEXT: vsm.v v8, (a0) +; CHECK-NEXT: addi a0, a0, -1 +; CHECK-NEXT: vlm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: add sp, sp, a0 +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret + %res = call @llvm.experimental.vector.splice.nxv32i1( %a, %b, i32 -1) + ret %res +} + +declare @llvm.experimental.vector.splice.nxv64i1(, , i32) + +define @splice_nxv64i1_offset_negone( %a, %b) #0 { +; CHECK-LABEL: splice_nxv64i1_offset_negone: +; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: sub sp, sp, a0 +; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, mu +; CHECK-NEXT: addi a0, sp, 16 +; CHECK-NEXT: vsm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: addi a1, sp, 16 +; CHECK-NEXT: add a0, a1, a0 +; CHECK-NEXT: vsm.v v8, (a0) +; CHECK-NEXT: addi a0, a0, -1 +; CHECK-NEXT: vlm.v v0, (a0) +; CHECK-NEXT: csrr a0, vlenb +; CHECK-NEXT: slli a0, a0, 1 +; CHECK-NEXT: add sp, sp, a0 +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret + %res = call @llvm.experimental.vector.splice.nxv64i1( %a, %b, i32 -1) + ret %res +} + declare @llvm.experimental.vector.splice.nxv1i8(, , i32) define @splice_nxv1i8_offset_zero( %a, %b) #0 {