|
1 | 1 | // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 2
|
2 | 2 | // REQUIRES: riscv-registered-target
|
3 | 3 | // RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +zfh \
|
4 |
| -// RUN: -target-feature +zvfh -disable-O0-optnone \ |
| 4 | +// RUN: -target-feature +zvfhmin -target-feature +zvfbfmin -disable-O0-optnone \ |
5 | 5 | // RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
|
6 | 6 | // RUN: FileCheck --check-prefix=CHECK-RV64 %s
|
7 | 7 |
|
@@ -597,3 +597,63 @@ vuint64m8_t test_vcompress_vm_u64m8(vuint64m8_t src, vbool8_t mask, size_t vl) {
|
597 | 597 | return __riscv_vcompress_vm_u64m8(src, mask, vl);
|
598 | 598 | }
|
599 | 599 |
|
| 600 | +// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_vcompress_vm_bf16mf4 |
| 601 | +// CHECK-RV64-SAME: (<vscale x 1 x bfloat> [[SRC:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
| 602 | +// CHECK-RV64-NEXT: entry: |
| 603 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.vcompress.nxv1bf16.i64(<vscale x 1 x bfloat> poison, <vscale x 1 x bfloat> [[SRC]], <vscale x 1 x i1> [[MASK]], i64 [[VL]]) |
| 604 | +// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]] |
| 605 | +// |
| 606 | +vbfloat16mf4_t test_vcompress_vm_bf16mf4(vbfloat16mf4_t src, vbool64_t mask, size_t vl) { |
| 607 | + return __riscv_vcompress_vm_bf16mf4(src, mask, vl); |
| 608 | +} |
| 609 | + |
| 610 | +// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_vcompress_vm_bf16mf2 |
| 611 | +// CHECK-RV64-SAME: (<vscale x 2 x bfloat> [[SRC:%.*]], <vscale x 2 x i1> [[MASK:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
| 612 | +// CHECK-RV64-NEXT: entry: |
| 613 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.vcompress.nxv2bf16.i64(<vscale x 2 x bfloat> poison, <vscale x 2 x bfloat> [[SRC]], <vscale x 2 x i1> [[MASK]], i64 [[VL]]) |
| 614 | +// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]] |
| 615 | +// |
| 616 | +vbfloat16mf2_t test_vcompress_vm_bf16mf2(vbfloat16mf2_t src, vbool32_t mask, size_t vl) { |
| 617 | + return __riscv_vcompress_vm_bf16mf2(src, mask, vl); |
| 618 | +} |
| 619 | + |
| 620 | +// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_vcompress_vm_bf16m1 |
| 621 | +// CHECK-RV64-SAME: (<vscale x 4 x bfloat> [[SRC:%.*]], <vscale x 4 x i1> [[MASK:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
| 622 | +// CHECK-RV64-NEXT: entry: |
| 623 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.vcompress.nxv4bf16.i64(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> [[SRC]], <vscale x 4 x i1> [[MASK]], i64 [[VL]]) |
| 624 | +// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]] |
| 625 | +// |
| 626 | +vbfloat16m1_t test_vcompress_vm_bf16m1(vbfloat16m1_t src, vbool16_t mask, size_t vl) { |
| 627 | + return __riscv_vcompress_vm_bf16m1(src, mask, vl); |
| 628 | +} |
| 629 | + |
| 630 | +// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_vcompress_vm_bf16m2 |
| 631 | +// CHECK-RV64-SAME: (<vscale x 8 x bfloat> [[SRC:%.*]], <vscale x 8 x i1> [[MASK:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
| 632 | +// CHECK-RV64-NEXT: entry: |
| 633 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.vcompress.nxv8bf16.i64(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> [[SRC]], <vscale x 8 x i1> [[MASK]], i64 [[VL]]) |
| 634 | +// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]] |
| 635 | +// |
| 636 | +vbfloat16m2_t test_vcompress_vm_bf16m2(vbfloat16m2_t src, vbool8_t mask, size_t vl) { |
| 637 | + return __riscv_vcompress_vm_bf16m2(src, mask, vl); |
| 638 | +} |
| 639 | + |
| 640 | +// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_vcompress_vm_bf16m4 |
| 641 | +// CHECK-RV64-SAME: (<vscale x 16 x bfloat> [[SRC:%.*]], <vscale x 16 x i1> [[MASK:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
| 642 | +// CHECK-RV64-NEXT: entry: |
| 643 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.vcompress.nxv16bf16.i64(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> [[SRC]], <vscale x 16 x i1> [[MASK]], i64 [[VL]]) |
| 644 | +// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]] |
| 645 | +// |
| 646 | +vbfloat16m4_t test_vcompress_vm_bf16m4(vbfloat16m4_t src, vbool4_t mask, size_t vl) { |
| 647 | + return __riscv_vcompress_vm_bf16m4(src, mask, vl); |
| 648 | +} |
| 649 | + |
| 650 | +// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_vcompress_vm_bf16m8 |
| 651 | +// CHECK-RV64-SAME: (<vscale x 32 x bfloat> [[SRC:%.*]], <vscale x 32 x i1> [[MASK:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
| 652 | +// CHECK-RV64-NEXT: entry: |
| 653 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.vcompress.nxv32bf16.i64(<vscale x 32 x bfloat> poison, <vscale x 32 x bfloat> [[SRC]], <vscale x 32 x i1> [[MASK]], i64 [[VL]]) |
| 654 | +// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]] |
| 655 | +// |
| 656 | +vbfloat16m8_t test_vcompress_vm_bf16m8(vbfloat16m8_t src, vbool2_t mask, size_t vl) { |
| 657 | + return __riscv_vcompress_vm_bf16m8(src, mask, vl); |
| 658 | +} |
| 659 | + |
0 commit comments