Skip to content

Commit 0a3f0a1

Browse files
committed
Split the integer and floating point APIs
This makes it being able to filter the `float16` APIs from those that are not `zvfh*`. This patch also remove the APIs contain `float16` from general APIs.
1 parent 44e1b6f commit 0a3f0a1

File tree

5 files changed

+145
-29
lines changed

5 files changed

+145
-29
lines changed

rvv-intrinsic-generator/rvv_intrinsic_gen/constants.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
NCVTLMULS = ["f4", "f2", 1, 2, 4, 8]
2424
SEWS = [8, 16, 32, 64]
2525
WSEWS = [8, 16, 32]
26-
FSEWS = [16, 32, 64]
27-
WFSEWS = [16, 32]
26+
FSEWS = [32, 64]
27+
WFSEWS = [32]
2828
NSEWS = [16, 32, 64]
2929
TYPES = ["float", "int", "uint"]
3030
ITYPES = ["int", "uint"]

rvv-intrinsic-generator/rvv_intrinsic_gen/inst.py

Lines changed: 133 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,19 @@ def gen(g):
5757
g.start_group("Vector Loads and Stores Intrinsics")
5858

5959
g.function_group(load_template, "Vector Unit-Stride Load Intrinsics",
60-
"vector-unit-stride-load", ["vle"], TYPES, SEWS, LMULS,
60+
"vector-unit-stride-load", ["vle"], ITYPES, SEWS, LMULS,
61+
decorators.has_masking_maskedoff_policy)
62+
63+
g.function_group(load_template, "Float Vector Unit-Stride Load Intrinsics",
64+
"float-vector-unit-stride-load", ["vle"], FTYPES, FSEWS, LMULS,
6165
decorators.has_masking_maskedoff_policy)
6266

6367
g.function_group(store_template, "Vector Unit-Stride Store Intrinsics",
64-
"vector-unit-stride-store", ["vse"], TYPES, SEWS, LMULS,
68+
"vector-unit-stride-store", ["vse"], ITYPES, SEWS, LMULS,
69+
decorators.has_masking_no_maskedoff)
70+
71+
g.function_group(store_template, "Float Vector Unit-Stride Store Intrinsics",
72+
"float-vector-unit-stride-store", ["vse"], FTYPES, FSEWS, LMULS,
6573
decorators.has_masking_no_maskedoff)
6674

6775
g.function_group(mask_load_store_template,
@@ -70,24 +78,45 @@ def gen(g):
7078
decorators.has_no_masking)
7179

7280
g.function_group(load_template, "Vector Strided Load Intrinsics",
73-
"vector-strided-load", ["vlse"], TYPES, SEWS, LMULS,
81+
"vector-strided-load", ["vlse"], ITYPES, SEWS, LMULS,
82+
decorators.has_masking_maskedoff_policy)
83+
84+
g.function_group(load_template, "Float Vector Strided Load Intrinsics",
85+
"float-vector-strided-load", ["vlse"], FTYPES, FSEWS, LMULS,
7486
decorators.has_masking_maskedoff_policy)
7587

7688
g.function_group(store_template, "Vector Strided Store Intrinsics",
77-
"vector-strided-store", ["vsse"], TYPES, SEWS, LMULS,
89+
"vector-strided-store", ["vsse"], ITYPES, SEWS, LMULS,
90+
decorators.has_masking_no_maskedoff)
91+
92+
g.function_group(store_template, "Float Vector Strided Store Intrinsics",
93+
"float-vector-strided-store", ["vsse"], FTYPES, FSEWS, LMULS,
7894
decorators.has_masking_no_maskedoff)
7995

8096
g.function_group(load_template, "Vector Indexed Load Intrinsics",
81-
"vector-indexed-load", ["vloxei", "vluxei"], TYPES, SEWS,
97+
"vector-indexed-load", ["vloxei", "vluxei"], ITYPES, SEWS,
98+
LMULS, decorators.has_masking_maskedoff_policy)
99+
100+
g.function_group(load_template, "Float Vector Indexed Load Intrinsics",
101+
"float-vector-indexed-load", ["vloxei", "vluxei"], FTYPES, FSEWS,
82102
LMULS, decorators.has_masking_maskedoff_policy)
83103

84104
g.function_group(store_template, "Vector Indexed Store Intrinsics",
85-
"vector-indexed-store", ["vsoxei", "vsuxei"], TYPES, SEWS,
105+
"vector-indexed-store", ["vsoxei", "vsuxei"], ITYPES, SEWS,
106+
LMULS, decorators.has_masking_no_maskedoff)
107+
108+
g.function_group(store_template, "Float Vector Indexed Store Intrinsics",
109+
"float-vector-indexed-store", ["vsoxei", "vsuxei"], FTYPES, FSEWS,
86110
LMULS, decorators.has_masking_no_maskedoff)
87111

88112
g.function_group(load_template,
89113
"Unit-stride Fault-Only-First Loads Intrinsics",
90-
"unit-stride-fault-only-first-loads", ["vleff"], TYPES, SEWS,
114+
"unit-stride-fault-only-first-loads", ["vleff"], ITYPES, SEWS,
115+
LMULS, decorators.has_masking_maskedoff_policy)
116+
117+
g.function_group(load_template,
118+
"Float Unit-stride Fault-Only-First Loads Intrinsics",
119+
"float-unit-stride-fault-only-first-loads", ["vleff"], FTYPES, FSEWS,
91120
LMULS, decorators.has_masking_maskedoff_policy)
92121

93122
####################################################################
@@ -97,30 +126,58 @@ def gen(g):
97126
g.function_group(seg_load_template,
98127
"Vector Unit-Stride Segment Load Intrinsics",
99128
"vector-unit-stride-segment-load", ["vlseg", "vlsegff"],
100-
TYPES, SEWS, LMULS, decorators.has_masking_maskedoff_policy)
129+
ITYPES, SEWS, LMULS, decorators.has_masking_maskedoff_policy)
130+
131+
g.function_group(seg_load_template,
132+
"Float Vector Unit-Stride Segment Load Intrinsics",
133+
"float-vector-unit-stride-segment-load", ["vlseg", "vlsegff"],
134+
FTYPES, FSEWS, LMULS, decorators.has_masking_maskedoff_policy)
101135

102136
g.function_group(seg_store_template,
103137
"Vector Unit-Stride Segment Store Intrinsics",
104-
"vecrtor-unit-stride-segment-store", ["vsseg"], TYPES, SEWS,
138+
"vecrtor-unit-stride-segment-store", ["vsseg"], ITYPES, SEWS,
139+
LMULS, decorators.has_masking_no_maskedoff)
140+
141+
g.function_group(seg_store_template,
142+
"Float Vector Unit-Stride Segment Store Intrinsics",
143+
"float-vecrtor-unit-stride-segment-store", ["vsseg"], FTYPES, FSEWS,
105144
LMULS, decorators.has_masking_no_maskedoff)
106145

107146
g.function_group(seg_load_template, "Vector Strided Segment Load Intrinsics",
108-
"vector-strided-segment-load", ["vlsseg"], TYPES, SEWS,
147+
"vector-strided-segment-load", ["vlsseg"], ITYPES, SEWS,
148+
LMULS, decorators.has_masking_maskedoff_policy)
149+
150+
g.function_group(seg_load_template, "Float Vector Strided Segment Load Intrinsics",
151+
"float-vector-strided-segment-load", ["vlsseg"], FTYPES, FSEWS,
109152
LMULS, decorators.has_masking_maskedoff_policy)
110153

111154
g.function_group(seg_store_template,
112155
"Vector Strided Segment Store Intrinsics",
113-
"vector-strided-segment-store", ["vssseg"], TYPES, SEWS,
156+
"vector-strided-segment-store", ["vssseg"], ITYPES, SEWS,
157+
LMULS, decorators.has_masking_no_maskedoff)
158+
159+
g.function_group(seg_store_template,
160+
"Float Vector Strided Segment Store Intrinsics",
161+
"float-vector-strided-segment-store", ["vssseg"], FTYPES, FSEWS,
114162
LMULS, decorators.has_masking_no_maskedoff)
115163

116164
g.function_group(seg_load_template, "Vector Indexed Segment Load Intrinsics",
117-
"vector-indexed-segment-load", ["vloxseg", "vluxseg"], TYPES,
165+
"vector-indexed-segment-load", ["vloxseg", "vluxseg"], ITYPES,
118166
SEWS, LMULS, decorators.has_masking_maskedoff_policy)
119167

168+
g.function_group(seg_load_template, "Float Vector Indexed Segment Load Intrinsics",
169+
"float-vector-indexed-segment-load", ["vloxseg", "vluxseg"], FTYPES,
170+
FSEWS, LMULS, decorators.has_masking_maskedoff_policy)
171+
120172
g.function_group(seg_store_template,
121173
"Vector Indexed Segment Store Intrinsics",
122174
"vector-indexed-segment-store", ["vsoxseg", "vsuxseg"],
123-
TYPES, SEWS, LMULS, decorators.has_masking_no_maskedoff)
175+
ITYPES, SEWS, LMULS, decorators.has_masking_no_maskedoff)
176+
177+
g.function_group(seg_store_template,
178+
"Float Vector Indexed Segment Store Intrinsics",
179+
"float-vector-indexed-segment-store", ["vsoxseg", "vsuxseg"],
180+
FTYPES, FSEWS, LMULS, decorators.has_masking_no_maskedoff)
124181

125182
####################################################################
126183

@@ -448,29 +505,55 @@ def gen(g):
448505
g.start_group("Vector Permutation Intrinsics")
449506

450507
g.function_group(permute_template,
451-
"Integer and Floating-Point Scalar Move Intrinsics",
452-
"integer-scalar-move", ["mv"], TYPES, SEWS, LMULS,
508+
"Integer Scalar Move Intrinsics",
509+
"integer-scalar-move", ["mv"], ITYPES, SEWS, LMULS,
510+
decorators.has_no_masking_policy)
511+
512+
g.function_group(permute_template,
513+
"Floating-Point Scalar Move Intrinsics",
514+
"float-scalar-move", ["mv"], FTYPES, FSEWS, LMULS,
453515
decorators.has_no_masking_policy)
454516

455517
g.function_group(permute_template, "Vector Slideup Intrinsics",
456-
"vector-slideup", ["slideup"], TYPES, SEWS, LMULS,
518+
"vector-slideup", ["slideup"], ITYPES, SEWS, LMULS,
519+
decorators.has_masking_no_maskedoff_policy_vslide)
520+
521+
g.function_group(permute_template, "Float Vector Slideup Intrinsics",
522+
"float-vector-slideup", ["slideup"], FTYPES, FSEWS, LMULS,
457523
decorators.has_masking_no_maskedoff_policy_vslide)
458524

459525
g.function_group(permute_template, "Vector Slidedown Intrinsics",
460-
"vector-slidedown", ["slidedown"], TYPES, SEWS, LMULS,
526+
"vector-slidedown", ["slidedown"], ITYPES, SEWS, LMULS,
527+
decorators.has_masking_maskedoff_policy)
528+
529+
g.function_group(permute_template, "Float Vector Slidedown Intrinsics",
530+
"float-vector-slidedown", ["slidedown"], FTYPES, FSEWS, LMULS,
461531
decorators.has_masking_maskedoff_policy)
462532

463533
g.function_group(permute_template,
464534
"Vector Slide1up and Slide1down Intrinsics",
465535
"vector-slide1up-and-slide1down", ["slide1up", "slide1down"],
466-
TYPES, SEWS, LMULS, decorators.has_masking_maskedoff_policy)
536+
ITYPES, SEWS, LMULS, decorators.has_masking_maskedoff_policy)
537+
538+
g.function_group(permute_template,
539+
"Float Vector Slide1up and Slide1down Intrinsics",
540+
"float-vector-slide1up-and-slide1down", ["slide1up", "slide1down"],
541+
FTYPES, FSEWS, LMULS, decorators.has_masking_maskedoff_policy)
467542

468543
g.function_group(binary_op_template, "Vector Register Gather Intrinsics",
469-
"vector-register-gather", ["rgather", "rgatherei16"], TYPES,
544+
"vector-register-gather", ["rgather", "rgatherei16"], ITYPES,
470545
SEWS, LMULS, decorators.has_masking_maskedoff_policy)
471546

547+
g.function_group(binary_op_template, "Float Vector Register Gather Intrinsics",
548+
"float-vector-register-gather", ["rgather", "rgatherei16"], FTYPES,
549+
FSEWS, LMULS, decorators.has_masking_maskedoff_policy)
550+
472551
g.function_group(permute_template, "Vector Compress Intrinsics",
473-
"vector-compress", ["compress"], TYPES, SEWS, LMULS,
552+
"vector-compress", ["compress"], ITYPES, SEWS, LMULS,
553+
decorators.has_no_masking_policy)
554+
555+
g.function_group(permute_template, "Float Vector Compress Intrinsics",
556+
"float-vector-compress", ["compress"], FTYPES, FSEWS, LMULS,
474557
decorators.has_no_masking_policy)
475558

476559
####################################################################
@@ -488,27 +571,51 @@ def gen(g):
488571
LMULS, decorators.has_no_masking)
489572

490573
g.function_group(misc_op_template, "Vector LMUL Extension Intrinsics",
491-
"vector-lmul-extensionn", ["vlmul_ext_v"], TYPES, SEWS,
574+
"vector-lmul-extensionn", ["vlmul_ext_v"], ITYPES, SEWS,
575+
LMULS, decorators.has_no_masking)
576+
577+
g.function_group(misc_op_template, "Float Vector LMUL Extension Intrinsics",
578+
"float-vector-lmul-extensionn", ["vlmul_ext_v"], FTYPES, FSEWS,
492579
LMULS, decorators.has_no_masking)
493580

494581
g.function_group(misc_op_template, "Vector LMUL Truncation Intrinsics",
495-
"vector-lmul-truncation", ["vlmul_trunc_v"], TYPES, SEWS,
582+
"vector-lmul-truncation", ["vlmul_trunc_v"], ITYPES, SEWS,
583+
LMULS, decorators.has_no_masking)
584+
585+
g.function_group(misc_op_template, "Float Vector LMUL Truncation Intrinsics",
586+
"float-vector-lmul-truncation", ["vlmul_trunc_v"], FTYPES, FSEWS,
496587
LMULS, decorators.has_no_masking)
497588

498589
g.function_group(misc_op_template, "Vector Initialization Intrinsics",
499-
"vector-initialization", ["vundefined"], TYPES, SEWS, LMULS,
590+
"vector-initialization", ["vundefined"], ITYPES, SEWS, LMULS,
591+
decorators.has_no_masking)
592+
593+
g.function_group(misc_op_template, "Float Vector Initialization Intrinsics",
594+
"float-vector-initialization", ["vundefined"], FTYPES, FSEWS, LMULS,
500595
decorators.has_no_masking)
501596

502597
g.function_group(get_set_diff_lmul_op_template, "Vector Insertion Intrinsics",
503-
"vector-insertion", ["vset"], TYPES, SEWS, LMULS,
598+
"vector-insertion", ["vset"], ITYPES, SEWS, LMULS,
599+
decorators.has_no_masking)
600+
601+
g.function_group(get_set_diff_lmul_op_template, "Float Vector Insertion Intrinsics",
602+
"float-vector-insertion", ["vset"], FTYPES, FSEWS, LMULS,
504603
decorators.has_no_masking)
505604

506605
g.function_group(get_set_diff_lmul_op_template,
507606
"Vector Extraction Intrinsics", "vector-extraction",
508-
["vget"], TYPES, SEWS, LMULS, decorators.has_no_masking)
607+
["vget"], ITYPES, SEWS, LMULS, decorators.has_no_masking)
608+
609+
g.function_group(get_set_diff_lmul_op_template,
610+
"Float Vector Extraction Intrinsics", "float-vector-extraction",
611+
["vget"], FTYPES, FSEWS, LMULS, decorators.has_no_masking)
509612

510613
g.function_group(misc_op_template, "Vector Creation Intrinsics",
511-
"vector-creation", ["vcreate"], TYPES, SEWS, LMULS,
614+
"vector-creation", ["vcreate"], ITYPES, SEWS, LMULS,
615+
decorators.has_no_masking)
616+
617+
g.function_group(misc_op_template, "Float Vector Creation Intrinsics",
618+
"float-vector-creation", ["vcreate"], FTYPES, FSEWS, LMULS,
512619
decorators.has_no_masking)
513620

514621
####################################################################

rvv-intrinsic-generator/rvv_intrinsic_gen/templates/cvt_op_template.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,11 @@ def render(G, op_list, type_list, sew_list, lmul_list, decorator_list):
133133
if type_list != "float16_zvfhmin" and\
134134
args["TYPES1"] == "f" and args["TYPES3"] == "f":
135135
continue
136+
else:
137+
# Skip the cases that contain float16 but not zvfh*.
138+
if "float16" in src_type or "float16" in dst_type:
139+
continue
140+
136141
if type_list == "bfloat16":
137142
if "ncvt" in args["OP"]:
138143
func_name = "{OP}_f_f_w_bf{LSEW}m{LLMUL}".format_map(args)

rvv-intrinsic-generator/rvv_intrinsic_gen/templates/reint_op_template.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ def render(G, op_list, type_list, sew_list, lmul_list, decorator_list):
6161
if (args["TYPES1"] == "f" or args["TYPES3"] == "f") and sew == 8:
6262
continue
6363

64+
if type_list != "float16_zvfhmin" and\
65+
((args["TYPES1"] == "f" or args["TYPES3"] == "f") and sew == 16):
66+
continue
67+
6468
if (args["TYPES1"] == "bf" or args["TYPES3"] == "bf") and sew != 16:
6569
continue
6670

rvv-intrinsic-generator/rvv_intrinsic_gen/zvfhmin_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def misc_group(g):
104104
decorators = IntrinsicDecorators(g.has_tail_policy)
105105

106106
g.function_group(reint_op_template, "Reinterpret Cast Conversion Intrinsics",
107-
"reinterpret-cast-conversion", ["vreinterpret"], FTYPES,
107+
"reinterpret-cast-conversion", ["vreinterpret"], "float16_zvfhmin",
108108
SEWS, LMULS, decorators.has_no_masking)
109109

110110
g.function_group(misc_op_template, "Vector LMUL Extension Intrinsics",

0 commit comments

Comments
 (0)