|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
2 | | -; RUN: llc -mtriple riscv64 -mattr=+f,+d,+v,+zvfh -verify-machineinstrs -riscv-v-vector-bits-min=128 \ |
| 2 | +; RUN: llc -mtriple riscv64 -mattr=+f,+d,+v,+zvfh,+zvfbfmin -verify-machineinstrs -riscv-v-vector-bits-min=128 \ |
| 3 | +; RUN: < %s | FileCheck %s |
| 4 | +; RUN: llc -mtriple riscv64 -mattr=+f,+d,+v,+zvfhmin,+zvfbfmin -verify-machineinstrs -riscv-v-vector-bits-min=128 \ |
3 | 5 | ; RUN: < %s | FileCheck %s |
4 | 6 |
|
5 | 7 | define <2 x i64> @test_vp_splice_v2i64(<2 x i64> %va, <2 x i64> %vb, i32 zeroext %evla, i32 zeroext %evlb) { |
@@ -299,3 +301,44 @@ define <8 x half> @test_vp_splice_v8f16_masked(<8 x half> %va, <8 x half> %vb, < |
299 | 301 | %v = call <8 x half> @llvm.experimental.vp.splice.v8f16(<8 x half> %va, <8 x half> %vb, i32 5, <8 x i1> %mask, i32 %evla, i32 %evlb) |
300 | 302 | ret <8 x half> %v |
301 | 303 | } |
| 304 | + |
| 305 | +define <8 x bfloat> @test_vp_splice_v8bf16(<8 x bfloat> %va, <8 x bfloat> %vb, i32 zeroext %evla, i32 zeroext %evlb) { |
| 306 | +; CHECK-LABEL: test_vp_splice_v8bf16: |
| 307 | +; CHECK: # %bb.0: |
| 308 | +; CHECK-NEXT: addi a0, a0, -5 |
| 309 | +; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma |
| 310 | +; CHECK-NEXT: vslidedown.vi v8, v8, 5 |
| 311 | +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma |
| 312 | +; CHECK-NEXT: vslideup.vx v8, v9, a0 |
| 313 | +; CHECK-NEXT: ret |
| 314 | + |
| 315 | + %v = call <8 x bfloat> @llvm.experimental.vp.splice.v8bf16(<8 x bfloat> %va, <8 x bfloat> %vb, i32 5, <8 x i1> splat (i1 1), i32 %evla, i32 %evlb) |
| 316 | + ret <8 x bfloat> %v |
| 317 | +} |
| 318 | + |
| 319 | +define <8 x bfloat> @test_vp_splice_v8bf16_negative_offset(<8 x bfloat> %va, <8 x bfloat> %vb, i32 zeroext %evla, i32 zeroext %evlb) { |
| 320 | +; CHECK-LABEL: test_vp_splice_v8bf16_negative_offset: |
| 321 | +; CHECK: # %bb.0: |
| 322 | +; CHECK-NEXT: addi a0, a0, -5 |
| 323 | +; CHECK-NEXT: vsetivli zero, 5, e16, m1, ta, ma |
| 324 | +; CHECK-NEXT: vslidedown.vx v8, v8, a0 |
| 325 | +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma |
| 326 | +; CHECK-NEXT: vslideup.vi v8, v9, 5 |
| 327 | +; CHECK-NEXT: ret |
| 328 | + |
| 329 | + %v = call <8 x bfloat> @llvm.experimental.vp.splice.v8bf16(<8 x bfloat> %va, <8 x bfloat> %vb, i32 -5, <8 x i1> splat (i1 1), i32 %evla, i32 %evlb) |
| 330 | + ret <8 x bfloat> %v |
| 331 | +} |
| 332 | + |
| 333 | +define <8 x bfloat> @test_vp_splice_v8bf16_masked(<8 x bfloat> %va, <8 x bfloat> %vb, <8 x i1> %mask, i32 zeroext %evla, i32 zeroext %evlb) { |
| 334 | +; CHECK-LABEL: test_vp_splice_v8bf16_masked: |
| 335 | +; CHECK: # %bb.0: |
| 336 | +; CHECK-NEXT: addi a0, a0, -5 |
| 337 | +; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma |
| 338 | +; CHECK-NEXT: vslidedown.vi v8, v8, 5, v0.t |
| 339 | +; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu |
| 340 | +; CHECK-NEXT: vslideup.vx v8, v9, a0, v0.t |
| 341 | +; CHECK-NEXT: ret |
| 342 | + %v = call <8 x bfloat> @llvm.experimental.vp.splice.v8bf16(<8 x bfloat> %va, <8 x bfloat> %vb, i32 5, <8 x i1> %mask, i32 %evla, i32 %evlb) |
| 343 | + ret <8 x bfloat> %v |
| 344 | +} |
0 commit comments