From 60622b82a7a3517942ecdcd6dd0735abd3f567b1 Mon Sep 17 00:00:00 2001 From: Fraser Cormack Date: Tue, 20 Apr 2021 13:53:10 +0100 Subject: [PATCH] [RISCV][NFC] Add tests for scalable-vector DAGCombiner improvements These will all be improved by future patches. --- llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv32.ll | 11 ++++++++++ llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv64.ll | 12 +++++++++++ llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv32.ll | 27 ++++++++++++++++++++++++- llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv64.ll | 26 ++++++++++++++++++++++++ llvm/test/CodeGen/RISCV/rvv/vselect-int-rv32.ll | 25 +++++++++++++++++++++++ llvm/test/CodeGen/RISCV/rvv/vselect-int-rv64.ll | 25 +++++++++++++++++++++++ 6 files changed, 125 insertions(+), 1 deletion(-) diff --git a/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv32.ll b/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv32.ll index 46d1f3c..e4a7ce1 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv32.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv32.ll @@ -1107,3 +1107,14 @@ define @vor_vx_nxv8i64_2( %va) { ret %vc } +define @vor_vx_nxv8i64_3( %va) { +; CHECK-LABEL: vor_vx_nxv8i64_3: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu +; CHECK-NEXT: vor.vi v8, v8, -1 +; CHECK-NEXT: ret + %head = insertelement undef, i64 -1, i32 0 + %splat = shufflevector %head, undef, zeroinitializer + %vc = or %va, %splat + ret %vc +} diff --git a/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv64.ll b/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv64.ll index 1a4e2bd..d2a78ee 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv64.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vor-sdnode-rv64.ll @@ -1079,3 +1079,15 @@ define @vor_vx_nxv8i64_2( %va) { ret %vc } + +define @vor_vx_nxv8i64_3( %va) { +; CHECK-LABEL: vor_vx_nxv8i64_3: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu +; CHECK-NEXT: vor.vi v8, v8, -1 +; CHECK-NEXT: ret + %head = insertelement undef, i64 -1, i32 0 + %splat = shufflevector %head, undef, zeroinitializer + %vc = or %va, %splat + ret %vc +} diff --git a/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv32.ll b/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv32.ll index 8f5c985..ba93b9b 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv32.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv32.ll @@ -102,6 +102,32 @@ define @vfmerge_zv_nxv8f16( %va, %vc } +define @vmerge_truelhs_nxv8f16_0( %va, %vb) { +; CHECK-LABEL: vmerge_truelhs_nxv8f16_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmset.m v0 +; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0 +; CHECK-NEXT: ret + %mhead = insertelement undef, i1 1, i32 0 + %mtrue = shufflevector %mhead, undef, zeroinitializer + %vc = select %mtrue, %va, %vb + ret %vc +} + +define @vmerge_falselhs_nxv8f16_0( %va, %vb) { +; CHECK-LABEL: vmerge_falselhs_nxv8f16_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmclr.m v0 +; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0 +; CHECK-NEXT: ret + %vc = select zeroinitializer, %va, %vb + ret %vc +} + define @vfmerge_vv_nxv16f16( %va, %vb, %cond) { ; CHECK-LABEL: vfmerge_vv_nxv16f16: ; CHECK: # %bb.0: @@ -367,4 +393,3 @@ define @vfmerge_zv_nxv8f64( %va, %cond, %splat, %va ret %vc } - diff --git a/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv64.ll b/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv64.ll index 845b37e..2808b17 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv64.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vselect-fp-rv64.ll @@ -102,6 +102,32 @@ define @vfmerge_zv_nxv8f16( %va, %vc } +define @vmerge_truelhs_nxv8f16_0( %va, %vb) { +; CHECK-LABEL: vmerge_truelhs_nxv8f16_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmset.m v0 +; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0 +; CHECK-NEXT: ret + %mhead = insertelement undef, i1 1, i32 0 + %mtrue = shufflevector %mhead, undef, zeroinitializer + %vc = select %mtrue, %va, %vb + ret %vc +} + +define @vmerge_falselhs_nxv8f16_0( %va, %vb) { +; CHECK-LABEL: vmerge_falselhs_nxv8f16_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmclr.m v0 +; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0 +; CHECK-NEXT: ret + %vc = select zeroinitializer, %va, %vb + ret %vc +} + define @vfmerge_vv_nxv16f16( %va, %vb, %cond) { ; CHECK-LABEL: vfmerge_vv_nxv16f16: ; CHECK: # %bb.0: diff --git a/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv32.ll b/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv32.ll index 9b846e5..0fbde8d 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv32.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv32.ll @@ -777,3 +777,28 @@ define @vmerge_iv_nxv8i64( %va, %vc } +define @vmerge_truelhs_nxv8i64_0( %va, %vb) { +; CHECK-LABEL: vmerge_truelhs_nxv8i64_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmset.m v0 +; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0 +; CHECK-NEXT: ret + %mhead = insertelement undef, i1 1, i32 0 + %mtrue = shufflevector %mhead, undef, zeroinitializer + %vc = select %mtrue, %va, %vb + ret %vc +} + +define @vmerge_falselhs_nxv8i64_0( %va, %vb) { +; CHECK-LABEL: vmerge_falselhs_nxv8i64_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmclr.m v0 +; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0 +; CHECK-NEXT: ret + %vc = select zeroinitializer, %va, %vb + ret %vc +} diff --git a/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv64.ll b/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv64.ll index 5d6be54..079ae39 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv64.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vselect-int-rv64.ll @@ -749,3 +749,28 @@ define @vmerge_iv_nxv8i64( %va, %vc } +define @vmerge_truelhs_nxv8i64_0( %va, %vb) { +; CHECK-LABEL: vmerge_truelhs_nxv8i64_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmset.m v0 +; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0 +; CHECK-NEXT: ret + %mhead = insertelement undef, i1 1, i32 0 + %mtrue = shufflevector %mhead, undef, zeroinitializer + %vc = select %mtrue, %va, %vb + ret %vc +} + +define @vmerge_falselhs_nxv8i64_0( %va, %vb) { +; CHECK-LABEL: vmerge_falselhs_nxv8i64_0: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vmclr.m v0 +; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu +; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0 +; CHECK-NEXT: ret + %vc = select zeroinitializer, %va, %vb + ret %vc +} -- 2.7.4