Skip to content

Commit 99ce8e8

Browse files
authored
[Clang][XTHeadVector] Support vbool16/32/64_t for vector mask operations (llvm#122)
* [Clang][XTHeadVector] Support `vbool16/32/64_t` for vector mask operations * [Clang][XTHeadVector] Support `vbool16/32/64_t` for vcpop/vfirst * [Clang][XTHeadVector] support wrappers * [Clang][XTHeadVector] fix `vpopc` * [Clang][XTHeadVector] fix `vmsbf`, `vmsif`, `vmsof` * [Clang][XTHeadVector] update tests
1 parent ce6e5b0 commit 99ce8e8

36 files changed

+1580
-9
lines changed

clang/include/clang/Basic/riscv_vector_xtheadv_wrappers.td

Lines changed: 82 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5477,105 +5477,178 @@ let HeaderCode =
54775477
#define __riscv_vmand_mm_b2(op1, op2, vl) __riscv_th_vmand_mm_b2(op1, op2, vl)
54785478
#define __riscv_vmand_mm_b4(op1, op2, vl) __riscv_th_vmand_mm_b4(op1, op2, vl)
54795479
#define __riscv_vmand_mm_b8(op1, op2, vl) __riscv_th_vmand_mm_b8(op1, op2, vl)
5480+
#define __riscv_vmand_mm_b16(op1, op2, vl) __riscv_th_vmand_mm_b16(op1, op2, vl)
5481+
#define __riscv_vmand_mm_b32(op1, op2, vl) __riscv_th_vmand_mm_b32(op1, op2, vl)
5482+
#define __riscv_vmand_mm_b64(op1, op2, vl) __riscv_th_vmand_mm_b64(op1, op2, vl)
54805483
#define __riscv_vmandnot_mm_b1(op1, op2, vl) __riscv_th_vmandnot_mm_b1(op1, op2, vl)
54815484
#define __riscv_vmandnot_mm_b2(op1, op2, vl) __riscv_th_vmandnot_mm_b2(op1, op2, vl)
54825485
#define __riscv_vmandnot_mm_b4(op1, op2, vl) __riscv_th_vmandnot_mm_b4(op1, op2, vl)
54835486
#define __riscv_vmandnot_mm_b8(op1, op2, vl) __riscv_th_vmandnot_mm_b8(op1, op2, vl)
5487+
#define __riscv_vmandnot_mm_b16(op1, op2, vl) __riscv_th_vmandnot_mm_b16(op1, op2, vl)
5488+
#define __riscv_vmandnot_mm_b32(op1, op2, vl) __riscv_th_vmandnot_mm_b32(op1, op2, vl)
5489+
#define __riscv_vmandnot_mm_b64(op1, op2, vl) __riscv_th_vmandnot_mm_b64(op1, op2, vl)
54845490
#define __riscv_vmnand_mm_b1(op1, op2, vl) __riscv_th_vmnand_mm_b1(op1, op2, vl)
54855491
#define __riscv_vmnand_mm_b2(op1, op2, vl) __riscv_th_vmnand_mm_b2(op1, op2, vl)
54865492
#define __riscv_vmnand_mm_b4(op1, op2, vl) __riscv_th_vmnand_mm_b4(op1, op2, vl)
54875493
#define __riscv_vmnand_mm_b8(op1, op2, vl) __riscv_th_vmnand_mm_b8(op1, op2, vl)
5494+
#define __riscv_vmnand_mm_b16(op1, op2, vl) __riscv_th_vmnand_mm_b16(op1, op2, vl)
5495+
#define __riscv_vmnand_mm_b32(op1, op2, vl) __riscv_th_vmnand_mm_b32(op1, op2, vl)
5496+
#define __riscv_vmnand_mm_b64(op1, op2, vl) __riscv_th_vmnand_mm_b64(op1, op2, vl)
54885497
#define __riscv_vmnor_mm_b1(op1, op2, vl) __riscv_th_vmnor_mm_b1(op1, op2, vl)
54895498
#define __riscv_vmnor_mm_b2(op1, op2, vl) __riscv_th_vmnor_mm_b2(op1, op2, vl)
54905499
#define __riscv_vmnor_mm_b4(op1, op2, vl) __riscv_th_vmnor_mm_b4(op1, op2, vl)
54915500
#define __riscv_vmnor_mm_b8(op1, op2, vl) __riscv_th_vmnor_mm_b8(op1, op2, vl)
5501+
#define __riscv_vmnor_mm_b16(op1, op2, vl) __riscv_th_vmnor_mm_b16(op1, op2, vl)
5502+
#define __riscv_vmnor_mm_b32(op1, op2, vl) __riscv_th_vmnor_mm_b32(op1, op2, vl)
5503+
#define __riscv_vmnor_mm_b64(op1, op2, vl) __riscv_th_vmnor_mm_b64(op1, op2, vl)
54925504
#define __riscv_vmor_mm_b1(op1, op2, vl) __riscv_th_vmor_mm_b1(op1, op2, vl)
54935505
#define __riscv_vmor_mm_b2(op1, op2, vl) __riscv_th_vmor_mm_b2(op1, op2, vl)
54945506
#define __riscv_vmor_mm_b4(op1, op2, vl) __riscv_th_vmor_mm_b4(op1, op2, vl)
54955507
#define __riscv_vmor_mm_b8(op1, op2, vl) __riscv_th_vmor_mm_b8(op1, op2, vl)
5508+
#define __riscv_vmor_mm_b16(op1, op2, vl) __riscv_th_vmor_mm_b16(op1, op2, vl)
5509+
#define __riscv_vmor_mm_b32(op1, op2, vl) __riscv_th_vmor_mm_b32(op1, op2, vl)
5510+
#define __riscv_vmor_mm_b64(op1, op2, vl) __riscv_th_vmor_mm_b64(op1, op2, vl)
54965511
#define __riscv_vmornot_mm_b1(op1, op2, vl) __riscv_th_vmornot_mm_b1(op1, op2, vl)
54975512
#define __riscv_vmornot_mm_b2(op1, op2, vl) __riscv_th_vmornot_mm_b2(op1, op2, vl)
54985513
#define __riscv_vmornot_mm_b4(op1, op2, vl) __riscv_th_vmornot_mm_b4(op1, op2, vl)
54995514
#define __riscv_vmornot_mm_b8(op1, op2, vl) __riscv_th_vmornot_mm_b8(op1, op2, vl)
5515+
#define __riscv_vmornot_mm_b16(op1, op2, vl) __riscv_th_vmornot_mm_b16(op1, op2, vl)
5516+
#define __riscv_vmornot_mm_b32(op1, op2, vl) __riscv_th_vmornot_mm_b32(op1, op2, vl)
5517+
#define __riscv_vmornot_mm_b64(op1, op2, vl) __riscv_th_vmornot_mm_b64(op1, op2, vl)
55005518
#define __riscv_vmxnor_mm_b1(op1, op2, vl) __riscv_th_vmxnor_mm_b1(op1, op2, vl)
55015519
#define __riscv_vmxnor_mm_b2(op1, op2, vl) __riscv_th_vmxnor_mm_b2(op1, op2, vl)
55025520
#define __riscv_vmxnor_mm_b4(op1, op2, vl) __riscv_th_vmxnor_mm_b4(op1, op2, vl)
55035521
#define __riscv_vmxnor_mm_b8(op1, op2, vl) __riscv_th_vmxnor_mm_b8(op1, op2, vl)
5522+
#define __riscv_vmxnor_mm_b16(op1, op2, vl) __riscv_th_vmxnor_mm_b16(op1, op2, vl)
5523+
#define __riscv_vmxnor_mm_b32(op1, op2, vl) __riscv_th_vmxnor_mm_b32(op1, op2, vl)
5524+
#define __riscv_vmxnor_mm_b64(op1, op2, vl) __riscv_th_vmxnor_mm_b64(op1, op2, vl)
55045525
#define __riscv_vmxor_mm_b1(op1, op2, vl) __riscv_th_vmxor_mm_b1(op1, op2, vl)
55055526
#define __riscv_vmxor_mm_b2(op1, op2, vl) __riscv_th_vmxor_mm_b2(op1, op2, vl)
55065527
#define __riscv_vmxor_mm_b4(op1, op2, vl) __riscv_th_vmxor_mm_b4(op1, op2, vl)
55075528
#define __riscv_vmxor_mm_b8(op1, op2, vl) __riscv_th_vmxor_mm_b8(op1, op2, vl)
5529+
#define __riscv_vmxor_mm_b16(op1, op2, vl) __riscv_th_vmxor_mm_b16(op1, op2, vl)
5530+
#define __riscv_vmxor_mm_b32(op1, op2, vl) __riscv_th_vmxor_mm_b32(op1, op2, vl)
5531+
#define __riscv_vmxor_mm_b64(op1, op2, vl) __riscv_th_vmxor_mm_b64(op1, op2, vl)
55085532

55095533
#define __riscv_vmclr_m_b1(vl) __riscv_th_vmclr_m_b1(vl)
55105534
#define __riscv_vmclr_m_b2(vl) __riscv_th_vmclr_m_b2(vl)
55115535
#define __riscv_vmclr_m_b4(vl) __riscv_th_vmclr_m_b4(vl)
55125536
#define __riscv_vmclr_m_b8(vl) __riscv_th_vmclr_m_b8(vl)
5537+
#define __riscv_vmclr_m_b16(vl) __riscv_th_vmclr_m_b16(vl)
5538+
#define __riscv_vmclr_m_b32(vl) __riscv_th_vmclr_m_b32(vl)
5539+
#define __riscv_vmclr_m_b64(vl) __riscv_th_vmclr_m_b64(vl)
55135540
#define __riscv_vmset_m_b1(vl) __riscv_th_vmset_m_b1(vl)
55145541
#define __riscv_vmset_m_b2(vl) __riscv_th_vmset_m_b2(vl)
55155542
#define __riscv_vmset_m_b4(vl) __riscv_th_vmset_m_b4(vl)
55165543
#define __riscv_vmset_m_b8(vl) __riscv_th_vmset_m_b8(vl)
5544+
#define __riscv_vmset_m_b16(vl) __riscv_th_vmset_m_b16(vl)
5545+
#define __riscv_vmset_m_b32(vl) __riscv_th_vmset_m_b32(vl)
5546+
#define __riscv_vmset_m_b64(vl) __riscv_th_vmset_m_b64(vl)
55175547
#define __riscv_vmmv_m_b1(op1, vl) __riscv_th_vmmv_m_b1(op1, vl)
55185548
#define __riscv_vmmv_m_b2(op1, vl) __riscv_th_vmmv_m_b2(op1, vl)
55195549
#define __riscv_vmmv_m_b4(op1, vl) __riscv_th_vmmv_m_b4(op1, vl)
55205550
#define __riscv_vmmv_m_b8(op1, vl) __riscv_th_vmmv_m_b8(op1, vl)
5551+
#define __riscv_vmmv_m_b16(op1, vl) __riscv_th_vmmv_m_b16(op1, vl)
5552+
#define __riscv_vmmv_m_b32(op1, vl) __riscv_th_vmmv_m_b32(op1, vl)
5553+
#define __riscv_vmmv_m_b64(op1, vl) __riscv_th_vmmv_m_b64(op1, vl)
55215554
#define __riscv_vmnot_m_b1(op1, vl) __riscv_th_vmnot_m_b1(op1, vl)
55225555
#define __riscv_vmnot_m_b2(op1, vl) __riscv_th_vmnot_m_b2(op1, vl)
55235556
#define __riscv_vmnot_m_b4(op1, vl) __riscv_th_vmnot_m_b4(op1, vl)
55245557
#define __riscv_vmnot_m_b8(op1, vl) __riscv_th_vmnot_m_b8(op1, vl)
5525-
5526-
#define __riscv_vpopc_m_b1(op1, vl) __riscv_th_vpopc_m_b1(op1, vl)
5527-
#define __riscv_vpopc_m_b2(op1, vl) __riscv_th_vpopc_m_b2(op1, vl)
5528-
#define __riscv_vpopc_m_b4(op1, vl) __riscv_th_vpopc_m_b4(op1, vl)
5529-
#define __riscv_vpopc_m_b8(op1, vl) __riscv_th_vpopc_m_b8(op1, vl)
5530-
#define __riscv_vpopc_m_b1_m(mask, op1, vl) __riscv_th_vpopc_m_b1_m(mask, op1, vl)
5531-
#define __riscv_vpopc_m_b2_m(mask, op1, vl) __riscv_th_vpopc_m_b2_m(mask, op1, vl)
5532-
#define __riscv_vpopc_m_b4_m(mask, op1, vl) __riscv_th_vpopc_m_b4_m(mask, op1, vl)
5533-
#define __riscv_vpopc_m_b8_m(mask, op1, vl) __riscv_th_vpopc_m_b8_m(mask, op1, vl)
5558+
#define __riscv_vmnot_m_b16(op1, vl) __riscv_th_vmnot_m_b16(op1, vl)
5559+
#define __riscv_vmnot_m_b32(op1, vl) __riscv_th_vmnot_m_b32(op1, vl)
5560+
#define __riscv_vmnot_m_b64(op1, vl) __riscv_th_vmnot_m_b64(op1, vl)
5561+
5562+
// XTHeadVector uses `vpopc`
5563+
#define __riscv_vpopc_m_b1(op1, vl) __riscv_th_vcpop_m_b1(op1, vl)
5564+
#define __riscv_vpopc_m_b2(op1, vl) __riscv_th_vcpop_m_b2(op1, vl)
5565+
#define __riscv_vpopc_m_b4(op1, vl) __riscv_th_vcpop_m_b4(op1, vl)
5566+
#define __riscv_vpopc_m_b8(op1, vl) __riscv_th_vcpop_m_b8(op1, vl)
5567+
#define __riscv_vpopc_m_b16(op1, vl) __riscv_th_vcpop_m_b16(op1, vl)
5568+
#define __riscv_vpopc_m_b32(op1, vl) __riscv_th_vcpop_m_b32(op1, vl)
5569+
#define __riscv_vpopc_m_b64(op1, vl) __riscv_th_vcpop_m_b64(op1, vl)
5570+
#define __riscv_vpopc_m_b1_m(mask, op1, vl) __riscv_th_vcpop_m_b1_m(mask, op1, vl)
5571+
#define __riscv_vpopc_m_b2_m(mask, op1, vl) __riscv_th_vcpop_m_b2_m(mask, op1, vl)
5572+
#define __riscv_vpopc_m_b4_m(mask, op1, vl) __riscv_th_vcpop_m_b4_m(mask, op1, vl)
5573+
#define __riscv_vpopc_m_b8_m(mask, op1, vl) __riscv_th_vcpop_m_b8_m(mask, op1, vl)
5574+
#define __riscv_vpopc_m_b16_m(mask, op1, vl) __riscv_th_vcpop_m_b16_m(mask, op1, vl)
5575+
#define __riscv_vpopc_m_b32_m(mask, op1, vl) __riscv_th_vcpop_m_b32_m(mask, op1, vl)
5576+
#define __riscv_vpopc_m_b64_m(mask, op1, vl) __riscv_th_vcpop_m_b64_m(mask, op1, vl)
55345577
// RVV 1.0 uses `vcpop` instead of `vpopc`
55355578
#define __riscv_vcpop_m_b1(op1, vl) __riscv_th_vcpop_m_b1(op1, vl)
55365579
#define __riscv_vcpop_m_b2(op1, vl) __riscv_th_vcpop_m_b2(op1, vl)
55375580
#define __riscv_vcpop_m_b4(op1, vl) __riscv_th_vcpop_m_b4(op1, vl)
55385581
#define __riscv_vcpop_m_b8(op1, vl) __riscv_th_vcpop_m_b8(op1, vl)
5582+
#define __riscv_vcpop_m_b16(op1, vl) __riscv_th_vcpop_m_b16(op1, vl)
5583+
#define __riscv_vcpop_m_b32(op1, vl) __riscv_th_vcpop_m_b32(op1, vl)
5584+
#define __riscv_vcpop_m_b64(op1, vl) __riscv_th_vcpop_m_b64(op1, vl)
55395585
#define __riscv_vcpop_m_b1_m(mask, op1, vl) __riscv_th_vcpop_m_b1_m(mask, op1, vl)
55405586
#define __riscv_vcpop_m_b2_m(mask, op1, vl) __riscv_th_vcpop_m_b2_m(mask, op1, vl)
55415587
#define __riscv_vcpop_m_b4_m(mask, op1, vl) __riscv_th_vcpop_m_b4_m(mask, op1, vl)
55425588
#define __riscv_vcpop_m_b8_m(mask, op1, vl) __riscv_th_vcpop_m_b8_m(mask, op1, vl)
5589+
#define __riscv_vcpop_m_b16_m(mask, op1, vl) __riscv_th_vcpop_m_b16_m(mask, op1, vl)
5590+
#define __riscv_vcpop_m_b32_m(mask, op1, vl) __riscv_th_vcpop_m_b32_m(mask, op1, vl)
5591+
#define __riscv_vcpop_m_b64_m(mask, op1, vl) __riscv_th_vcpop_m_b64_m(mask, op1, vl)
55435592

55445593
#define __riscv_vfirst_m_b1(op1, vl) __riscv_th_vfirst_m_b1(op1, vl)
55455594
#define __riscv_vfirst_m_b2(op1, vl) __riscv_th_vfirst_m_b2(op1, vl)
55465595
#define __riscv_vfirst_m_b4(op1, vl) __riscv_th_vfirst_m_b4(op1, vl)
55475596
#define __riscv_vfirst_m_b8(op1, vl) __riscv_th_vfirst_m_b8(op1, vl)
5597+
#define __riscv_vfirst_m_b16(op1, vl) __riscv_th_vfirst_m_b16(op1, vl)
5598+
#define __riscv_vfirst_m_b32(op1, vl) __riscv_th_vfirst_m_b32(op1, vl)
5599+
#define __riscv_vfirst_m_b64(op1, vl) __riscv_th_vfirst_m_b64(op1, vl)
55485600
#define __riscv_vfirst_m_b1_m(mask, op1, vl) __riscv_th_vfirst_m_b1_m(mask, op1, vl)
55495601
#define __riscv_vfirst_m_b2_m(mask, op1, vl) __riscv_th_vfirst_m_b2_m(mask, op1, vl)
55505602
#define __riscv_vfirst_m_b4_m(mask, op1, vl) __riscv_th_vfirst_m_b4_m(mask, op1, vl)
55515603
#define __riscv_vfirst_m_b8_m(mask, op1, vl) __riscv_th_vfirst_m_b8_m(mask, op1, vl)
5604+
#define __riscv_vfirst_m_b16_m(mask, op1, vl) __riscv_th_vfirst_m_b16_m(mask, op1, vl)
5605+
#define __riscv_vfirst_m_b32_m(mask, op1, vl) __riscv_th_vfirst_m_b32_m(mask, op1, vl)
5606+
#define __riscv_vfirst_m_b64_m(mask, op1, vl) __riscv_th_vfirst_m_b64_m(mask, op1, vl)
55525607

55535608
#define __riscv_vmsbf_m_b1(op1, vl) __riscv_th_vmsbf_m_b1(op1, vl)
55545609
#define __riscv_vmsbf_m_b2(op1, vl) __riscv_th_vmsbf_m_b2(op1, vl)
55555610
#define __riscv_vmsbf_m_b4(op1, vl) __riscv_th_vmsbf_m_b4(op1, vl)
55565611
#define __riscv_vmsbf_m_b8(op1, vl) __riscv_th_vmsbf_m_b8(op1, vl)
5612+
#define __riscv_vmsbf_m_b16(op1, vl) __riscv_th_vmsbf_m_b16(op1, vl)
5613+
#define __riscv_vmsbf_m_b32(op1, vl) __riscv_th_vmsbf_m_b32(op1, vl)
5614+
#define __riscv_vmsbf_m_b64(op1, vl) __riscv_th_vmsbf_m_b64(op1, vl)
55575615
#define __riscv_vmsbf_m_b1_m(mask, maskedoff, op1, vl) __riscv_th_vmsbf_m_b1_mu(mask, maskedoff, op1, vl)
55585616
#define __riscv_vmsbf_m_b2_m(mask, maskedoff, op1, vl) __riscv_th_vmsbf_m_b2_mu(mask, maskedoff, op1, vl)
55595617
#define __riscv_vmsbf_m_b4_m(mask, maskedoff, op1, vl) __riscv_th_vmsbf_m_b4_mu(mask, maskedoff, op1, vl)
55605618
#define __riscv_vmsbf_m_b8_m(mask, maskedoff, op1, vl) __riscv_th_vmsbf_m_b8_mu(mask, maskedoff, op1, vl)
5619+
#define __riscv_vmsbf_m_b16_m(mask, maskedoff, op1, vl) __riscv_th_vmsbf_m_b16_mu(mask, maskedoff, op1, vl)
5620+
#define __riscv_vmsbf_m_b32_m(mask, maskedoff, op1, vl) __riscv_th_vmsbf_m_b32_mu(mask, maskedoff, op1, vl)
5621+
#define __riscv_vmsbf_m_b64_m(mask, maskedoff, op1, vl) __riscv_th_vmsbf_m_b64_mu(mask, maskedoff, op1, vl)
55615622

55625623
#define __riscv_vmsof_m_b1(op1, vl) __riscv_th_vmsof_m_b1(op1, vl)
55635624
#define __riscv_vmsof_m_b2(op1, vl) __riscv_th_vmsof_m_b2(op1, vl)
55645625
#define __riscv_vmsof_m_b4(op1, vl) __riscv_th_vmsof_m_b4(op1, vl)
55655626
#define __riscv_vmsof_m_b8(op1, vl) __riscv_th_vmsof_m_b8(op1, vl)
5627+
#define __riscv_vmsof_m_b16(op1, vl) __riscv_th_vmsof_m_b16(op1, vl)
5628+
#define __riscv_vmsof_m_b32(op1, vl) __riscv_th_vmsof_m_b32(op1, vl)
5629+
#define __riscv_vmsof_m_b64(op1, vl) __riscv_th_vmsof_m_b64(op1, vl)
55665630
#define __riscv_vmsof_m_b1_m(mask, maskedoff, op1, vl) __riscv_th_vmsof_m_b1_mu(mask, maskedoff, op1, vl)
55675631
#define __riscv_vmsof_m_b2_m(mask, maskedoff, op1, vl) __riscv_th_vmsof_m_b2_mu(mask, maskedoff, op1, vl)
55685632
#define __riscv_vmsof_m_b4_m(mask, maskedoff, op1, vl) __riscv_th_vmsof_m_b4_mu(mask, maskedoff, op1, vl)
55695633
#define __riscv_vmsof_m_b8_m(mask, maskedoff, op1, vl) __riscv_th_vmsof_m_b8_mu(mask, maskedoff, op1, vl)
5634+
#define __riscv_vmsof_m_b16_m(mask, maskedoff, op1, vl) __riscv_th_vmsof_m_b16_mu(mask, maskedoff, op1, vl)
5635+
#define __riscv_vmsof_m_b32_m(mask, maskedoff, op1, vl) __riscv_th_vmsof_m_b32_mu(mask, maskedoff, op1, vl)
5636+
#define __riscv_vmsof_m_b64_m(mask, maskedoff, op1, vl) __riscv_th_vmsof_m_b64_mu(mask, maskedoff, op1, vl)
55705637

55715638
#define __riscv_vmsif_m_b1(op1, vl) __riscv_th_vmsif_m_b1(op1, vl)
55725639
#define __riscv_vmsif_m_b2(op1, vl) __riscv_th_vmsif_m_b2(op1, vl)
55735640
#define __riscv_vmsif_m_b4(op1, vl) __riscv_th_vmsif_m_b4(op1, vl)
55745641
#define __riscv_vmsif_m_b8(op1, vl) __riscv_th_vmsif_m_b8(op1, vl)
5642+
#define __riscv_vmsif_m_b16(op1, vl) __riscv_th_vmsif_m_b16(op1, vl)
5643+
#define __riscv_vmsif_m_b32(op1, vl) __riscv_th_vmsif_m_b32(op1, vl)
5644+
#define __riscv_vmsif_m_b64(op1, vl) __riscv_th_vmsif_m_b64(op1, vl)
55755645
#define __riscv_vmsif_m_b1_m(mask, maskedoff, op1, vl) __riscv_th_vmsif_m_b1_mu(mask, maskedoff, op1, vl)
55765646
#define __riscv_vmsif_m_b2_m(mask, maskedoff, op1, vl) __riscv_th_vmsif_m_b2_mu(mask, maskedoff, op1, vl)
55775647
#define __riscv_vmsif_m_b4_m(mask, maskedoff, op1, vl) __riscv_th_vmsif_m_b4_mu(mask, maskedoff, op1, vl)
55785648
#define __riscv_vmsif_m_b8_m(mask, maskedoff, op1, vl) __riscv_th_vmsif_m_b8_mu(mask, maskedoff, op1, vl)
5649+
#define __riscv_vmsif_m_b16_m(mask, maskedoff, op1, vl) __riscv_th_vmsif_m_b16_mu(mask, maskedoff, op1, vl)
5650+
#define __riscv_vmsif_m_b32_m(mask, maskedoff, op1, vl) __riscv_th_vmsif_m_b32_mu(mask, maskedoff, op1, vl)
5651+
#define __riscv_vmsif_m_b64_m(mask, maskedoff, op1, vl) __riscv_th_vmsif_m_b64_mu(mask, maskedoff, op1, vl)
55795652

55805653
#define __riscv_vid_v_u8m1(vl) __riscv_th_vid_v_u8m1(vl)
55815654
#define __riscv_vid_v_u8m2(vl) __riscv_th_vid_v_u8m2(vl)

clang/test/CodeGen/RISCV/rvv0p71-intrinsics-handcrafted/vector-mask-logical/thead/vcpop.c

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,36 @@ unsigned long test_vcpop_m_b8(vbool8_t op1, size_t vl) {
4646
return __riscv_th_vcpop_m_b8(op1, vl);
4747
}
4848

49+
// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b16
50+
// CHECK-RV64-SAME: (<vscale x 4 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
51+
// CHECK-RV64-NEXT: entry:
52+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.th.vmpopc.nxv4i1.i64(<vscale x 4 x i1> [[OP1]], i64 [[VL]])
53+
// CHECK-RV64-NEXT: ret i64 [[TMP0]]
54+
//
55+
unsigned long test_vcpop_m_b16(vbool16_t op1, size_t vl) {
56+
return __riscv_th_vcpop_m_b16(op1, vl);
57+
}
58+
59+
// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b32
60+
// CHECK-RV64-SAME: (<vscale x 2 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
61+
// CHECK-RV64-NEXT: entry:
62+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.th.vmpopc.nxv2i1.i64(<vscale x 2 x i1> [[OP1]], i64 [[VL]])
63+
// CHECK-RV64-NEXT: ret i64 [[TMP0]]
64+
//
65+
unsigned long test_vcpop_m_b32(vbool32_t op1, size_t vl) {
66+
return __riscv_th_vcpop_m_b32(op1, vl);
67+
}
68+
69+
// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b64
70+
// CHECK-RV64-SAME: (<vscale x 1 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
71+
// CHECK-RV64-NEXT: entry:
72+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.th.vmpopc.nxv1i1.i64(<vscale x 1 x i1> [[OP1]], i64 [[VL]])
73+
// CHECK-RV64-NEXT: ret i64 [[TMP0]]
74+
//
75+
unsigned long test_vcpop_m_b64(vbool64_t op1, size_t vl) {
76+
return __riscv_th_vcpop_m_b64(op1, vl);
77+
}
78+
4979
// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b1_m
5080
// CHECK-RV64-SAME: (<vscale x 64 x i1> [[MASK:%.*]], <vscale x 64 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
5181
// CHECK-RV64-NEXT: entry:
@@ -85,3 +115,34 @@ unsigned long test_vcpop_m_b4_m(vbool4_t mask, vbool4_t op1, size_t vl) {
85115
unsigned long test_vcpop_m_b8_m(vbool8_t mask, vbool8_t op1, size_t vl) {
86116
return __riscv_th_vcpop_m_b8_m(mask, op1, vl);
87117
}
118+
119+
// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b16_m
120+
// CHECK-RV64-SAME: (<vscale x 4 x i1> [[MASK:%.*]], <vscale x 4 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
121+
// CHECK-RV64-NEXT: entry:
122+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.th.vmpopc.mask.nxv4i1.i64(<vscale x 4 x i1> [[OP1]], <vscale x 4 x i1> [[MASK]], i64 [[VL]])
123+
// CHECK-RV64-NEXT: ret i64 [[TMP0]]
124+
//
125+
unsigned long test_vcpop_m_b16_m(vbool16_t mask, vbool16_t op1, size_t vl) {
126+
return __riscv_th_vcpop_m_b16_m(mask, op1, vl);
127+
}
128+
129+
// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b32_m
130+
// CHECK-RV64-SAME: (<vscale x 2 x i1> [[MASK:%.*]], <vscale x 2 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
131+
// CHECK-RV64-NEXT: entry:
132+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.th.vmpopc.mask.nxv2i1.i64(<vscale x 2 x i1> [[OP1]], <vscale x 2 x i1> [[MASK]], i64 [[VL]])
133+
// CHECK-RV64-NEXT: ret i64 [[TMP0]]
134+
//
135+
unsigned long test_vcpop_m_b32_m(vbool32_t mask, vbool32_t op1, size_t vl) {
136+
return __riscv_th_vcpop_m_b32_m(mask, op1, vl);
137+
}
138+
139+
// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b64_m
140+
// CHECK-RV64-SAME: (<vscale x 1 x i1> [[MASK:%.*]], <vscale x 1 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
141+
// CHECK-RV64-NEXT: entry:
142+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.th.vmpopc.mask.nxv1i1.i64(<vscale x 1 x i1> [[OP1]], <vscale x 1 x i1> [[MASK]], i64 [[VL]])
143+
// CHECK-RV64-NEXT: ret i64 [[TMP0]]
144+
//
145+
unsigned long test_vcpop_m_b64_m(vbool64_t mask, vbool64_t op1, size_t vl) {
146+
return __riscv_th_vcpop_m_b64_m(mask, op1, vl);
147+
}
148+

0 commit comments

Comments
 (0)