Skip to content

Commit cce1b0e

Browse files
committed
[PowerPC] Implement Vector Extract Low/High Order Builtins in LLVM/Clang
This patch implements the function prototypes vec_extractl and vec_extracth in altivec.h to utilize the vector extract double element instructions introduced in Power10. Differential Revision: https://reviews.llvm.org/D84622
1 parent 55de46f commit cce1b0e

File tree

6 files changed

+361
-16
lines changed

6 files changed

+361
-16
lines changed

clang/include/clang/Basic/BuiltinsPPC.def

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,16 @@ BUILTIN(__builtin_altivec_vinshvrx, "V8UsV8UsUiV8Us", "")
336336
BUILTIN(__builtin_altivec_vinswvlx, "V4UiV4UiUiV4Ui", "")
337337
BUILTIN(__builtin_altivec_vinswvrx, "V4UiV4UiUiV4Ui", "")
338338

339+
// P10 Vector Extract built-ins.
340+
BUILTIN(__builtin_altivec_vextdubvlx, "V2ULLiV16UcV16UcUi", "")
341+
BUILTIN(__builtin_altivec_vextdubvrx, "V2ULLiV16UcV16UcUi", "")
342+
BUILTIN(__builtin_altivec_vextduhvlx, "V2ULLiV8UsV8UsUi", "")
343+
BUILTIN(__builtin_altivec_vextduhvrx, "V2ULLiV8UsV8UsUi", "")
344+
BUILTIN(__builtin_altivec_vextduwvlx, "V2ULLiV4UiV4UiUi", "")
345+
BUILTIN(__builtin_altivec_vextduwvrx, "V2ULLiV4UiV4UiUi", "")
346+
BUILTIN(__builtin_altivec_vextddvlx, "V2ULLiV2ULLiV2ULLiUi", "")
347+
BUILTIN(__builtin_altivec_vextddvrx, "V2ULLiV2ULLiV2ULLiUi", "")
348+
339349
// VSX built-ins.
340350

341351
BUILTIN(__builtin_vsx_lxvd2x, "V2divC*", "")

clang/lib/Headers/altivec.h

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17101,6 +17101,92 @@ vec_inserth(vector unsigned int __a, vector unsigned int __b,
1710117101
#endif
1710217102
}
1710317103

17104+
/* vec_extractl */
17105+
17106+
static __inline__ vector unsigned long long __ATTRS_o_ai vec_extractl(
17107+
vector unsigned char __a, vector unsigned char __b, unsigned int __c) {
17108+
#ifdef __LITTLE_ENDIAN__
17109+
return __builtin_altivec_vextdubvrx(__a, __b, __c);
17110+
#else
17111+
vector unsigned long long __ret = __builtin_altivec_vextdubvlx(__a, __b, __c);
17112+
return vec_sld(__ret, __ret, 8);
17113+
#endif
17114+
}
17115+
17116+
static __inline__ vector unsigned long long __ATTRS_o_ai vec_extractl(
17117+
vector unsigned short __a, vector unsigned short __b, unsigned int __c) {
17118+
#ifdef __LITTLE_ENDIAN__
17119+
return __builtin_altivec_vextduhvrx(__a, __b, __c);
17120+
#else
17121+
vector unsigned long long __ret = __builtin_altivec_vextduhvlx(__a, __b, __c);
17122+
return vec_sld(__ret, __ret, 8);
17123+
#endif
17124+
}
17125+
17126+
static __inline__ vector unsigned long long __ATTRS_o_ai vec_extractl(
17127+
vector unsigned int __a, vector unsigned int __b, unsigned int __c) {
17128+
#ifdef __LITTLE_ENDIAN__
17129+
return __builtin_altivec_vextduwvrx(__a, __b, __c);
17130+
#else
17131+
vector unsigned long long __ret = __builtin_altivec_vextduwvlx(__a, __b, __c);
17132+
return vec_sld(__ret, __ret, 8);
17133+
#endif
17134+
}
17135+
17136+
static __inline__ vector unsigned long long __ATTRS_o_ai
17137+
vec_extractl(vector unsigned long long __a, vector unsigned long long __b,
17138+
unsigned int __c) {
17139+
#ifdef __LITTLE_ENDIAN__
17140+
return __builtin_altivec_vextddvrx(__a, __b, __c);
17141+
#else
17142+
vector unsigned long long __ret = __builtin_altivec_vextddvlx(__a, __b, __c);
17143+
return vec_sld(__ret, __ret, 8);
17144+
#endif
17145+
}
17146+
17147+
/* vec_extracth */
17148+
17149+
static __inline__ vector unsigned long long __ATTRS_o_ai vec_extracth(
17150+
vector unsigned char __a, vector unsigned char __b, unsigned int __c) {
17151+
#ifdef __LITTLE_ENDIAN__
17152+
return __builtin_altivec_vextdubvlx(__a, __b, __c);
17153+
#else
17154+
vector unsigned long long __ret = __builtin_altivec_vextdubvrx(__a, __b, __c);
17155+
return vec_sld(__ret, __ret, 8);
17156+
#endif
17157+
}
17158+
17159+
static __inline__ vector unsigned long long __ATTRS_o_ai vec_extracth(
17160+
vector unsigned short __a, vector unsigned short __b, unsigned int __c) {
17161+
#ifdef __LITTLE_ENDIAN__
17162+
return __builtin_altivec_vextduhvlx(__a, __b, __c);
17163+
#else
17164+
vector unsigned long long __ret = __builtin_altivec_vextduhvrx(__a, __b, __c);
17165+
return vec_sld(__ret, __ret, 8);
17166+
#endif
17167+
}
17168+
17169+
static __inline__ vector unsigned long long __ATTRS_o_ai vec_extracth(
17170+
vector unsigned int __a, vector unsigned int __b, unsigned int __c) {
17171+
#ifdef __LITTLE_ENDIAN__
17172+
return __builtin_altivec_vextduwvlx(__a, __b, __c);
17173+
#else
17174+
vector unsigned long long __ret = __builtin_altivec_vextduwvrx(__a, __b, __c);
17175+
return vec_sld(__ret, __ret, 8);
17176+
#endif
17177+
}
17178+
17179+
static __inline__ vector unsigned long long __ATTRS_o_ai
17180+
vec_extracth(vector unsigned long long __a, vector unsigned long long __b,
17181+
unsigned int __c) {
17182+
#ifdef __LITTLE_ENDIAN__
17183+
return __builtin_altivec_vextddvlx(__a, __b, __c);
17184+
#else
17185+
vector unsigned long long __ret = __builtin_altivec_vextddvrx(__a, __b, __c);
17186+
return vec_sld(__ret, __ret, 8);
17187+
#endif
17188+
}
17189+
1710417190
#ifdef __VSX__
1710517191

1710617192
/* vec_permx */

clang/test/CodeGen/builtins-ppc-p10vector.c

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,102 @@ vector unsigned int test_vec_inserth_uiv(void) {
569569
return vec_inserth(vuia, vuib, uia);
570570
}
571571

572+
vector unsigned long long test_vec_extractl_uc(void) {
573+
// CHECK-BE: @llvm.ppc.altivec.vextdubvlx(<16 x i8> %{{.+}}, <16 x i8> %{{.+}}, i32
574+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
575+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
576+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
577+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
578+
// CHECK-BE: ret <2 x i64>
579+
// CHECK-LE: @llvm.ppc.altivec.vextdubvrx(<16 x i8> %{{.+}}, <16 x i8> %{{.+}}, i32
580+
// CHECK-LE-NEXT: ret <2 x i64>
581+
return vec_extractl(vuca, vucb, uia);
582+
}
583+
584+
vector unsigned long long test_vec_extractl_us(void) {
585+
// CHECK-BE: @llvm.ppc.altivec.vextduhvlx(<8 x i16> %{{.+}}, <8 x i16> %{{.+}}, i32
586+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
587+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
588+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
589+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
590+
// CHECK-BE: ret <2 x i64>
591+
// CHECK-LE: @llvm.ppc.altivec.vextduhvrx(<8 x i16> %{{.+}}, <8 x i16> %{{.+}}, i32
592+
// CHECK-LE-NEXT: ret <2 x i64>
593+
return vec_extractl(vusa, vusb, uia);
594+
}
595+
596+
vector unsigned long long test_vec_extractl_ui(void) {
597+
// CHECK-BE: @llvm.ppc.altivec.vextduwvlx(<4 x i32> %{{.+}}, <4 x i32> %{{.+}}, i32
598+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
599+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
600+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
601+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
602+
// CHECK-BE: ret <2 x i64>
603+
// CHECK-LE: @llvm.ppc.altivec.vextduwvrx(<4 x i32> %{{.+}}, <4 x i32> %{{.+}}, i32
604+
// CHECK-LE-NEXT: ret <2 x i64>
605+
return vec_extractl(vuia, vuib, uia);
606+
}
607+
608+
vector unsigned long long test_vec_extractl_ul(void) {
609+
// CHECK-BE: @llvm.ppc.altivec.vextddvlx(<2 x i64> %{{.+}}, <2 x i64> %{{.+}}, i32
610+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
611+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
612+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
613+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
614+
// CHECK-BE: ret <2 x i64>
615+
// CHECK-LE: @llvm.ppc.altivec.vextddvrx(<2 x i64> %{{.+}}, <2 x i64> %{{.+}}, i32
616+
// CHECK-LE-NEXT: ret <2 x i64>
617+
return vec_extractl(vulla, vullb, uia);
618+
}
619+
620+
vector unsigned long long test_vec_extracth_uc(void) {
621+
// CHECK-BE: @llvm.ppc.altivec.vextdubvrx(<16 x i8> %{{.+}}, <16 x i8> %{{.+}}, i32
622+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
623+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
624+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
625+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
626+
// CHECK-BE: ret <2 x i64>
627+
// CHECK-LE: @llvm.ppc.altivec.vextdubvlx(<16 x i8> %{{.+}}, <16 x i8> %{{.+}}, i32
628+
// CHECK-LE-NEXT: ret <2 x i64>
629+
return vec_extracth(vuca, vucb, uia);
630+
}
631+
632+
vector unsigned long long test_vec_extracth_us(void) {
633+
// CHECK-BE: @llvm.ppc.altivec.vextduhvrx(<8 x i16> %{{.+}}, <8 x i16> %{{.+}}, i32
634+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
635+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
636+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
637+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
638+
// CHECK-BE: ret <2 x i64>
639+
// CHECK-LE: @llvm.ppc.altivec.vextduhvlx(<8 x i16> %{{.+}}, <8 x i16> %{{.+}}, i32
640+
// CHECK-LE-NEXT: ret <2 x i64>
641+
return vec_extracth(vusa, vusb, uia);
642+
}
643+
644+
vector unsigned long long test_vec_extracth_ui(void) {
645+
// CHECK-BE: @llvm.ppc.altivec.vextduwvrx(<4 x i32> %{{.+}}, <4 x i32> %{{.+}}, i32
646+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
647+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
648+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
649+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
650+
// CHECK-BE: ret <2 x i64>
651+
// CHECK-LE: @llvm.ppc.altivec.vextduwvlx(<4 x i32> %{{.+}}, <4 x i32> %{{.+}}, i32
652+
// CHECK-LE-NEXT: ret <2 x i64>
653+
return vec_extracth(vuia, vuib, uia);
654+
}
655+
656+
vector unsigned long long test_vec_extracth_ul(void) {
657+
// CHECK-BE: @llvm.ppc.altivec.vextddvrx(<2 x i64> %{{.+}}, <2 x i64> %{{.+}}, i32
658+
// CHECK-BE: [[T1:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
659+
// CHECK-BE: [[T2:%.+]] = bitcast <2 x i64> %{{.*}} to <4 x i32>
660+
// CHECK-BE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8> {{.+}})
661+
// CHECK-BE: [[T4:%.+]] = bitcast <4 x i32> [[T3]] to <2 x i64>
662+
// CHECK-BE: ret <2 x i64>
663+
// CHECK-LE: @llvm.ppc.altivec.vextddvlx(<2 x i64> %{{.+}}, <2 x i64> %{{.+}}, i32
664+
// CHECK-LE-NEXT: ret <2 x i64>
665+
return vec_extracth(vulla, vullb, uia);
666+
}
667+
572668
vector signed int test_vec_vec_splati_si(void) {
573669
// CHECK: ret <4 x i32> <i32 -17, i32 -17, i32 -17, i32 -17>
574670
return vec_splati(-17);

llvm/include/llvm/IR/IntrinsicsPowerPC.td

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,39 @@ let TargetPrefix = "ppc" in { // All intrinsics start with "llvm.ppc.".
531531
Intrinsic<[llvm_v2i64_ty],
532532
[llvm_v2i64_ty, llvm_i64_ty, llvm_i32_ty],
533533
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
534+
// P10 Vector Extract.
535+
def int_ppc_altivec_vextdubvlx : GCCBuiltin<"__builtin_altivec_vextdubvlx">,
536+
Intrinsic<[llvm_v2i64_ty],
537+
[llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
538+
[IntrNoMem]>;
539+
def int_ppc_altivec_vextdubvrx : GCCBuiltin<"__builtin_altivec_vextdubvrx">,
540+
Intrinsic<[llvm_v2i64_ty],
541+
[llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
542+
[IntrNoMem]>;
543+
def int_ppc_altivec_vextduhvlx : GCCBuiltin<"__builtin_altivec_vextduhvlx">,
544+
Intrinsic<[llvm_v2i64_ty],
545+
[llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
546+
[IntrNoMem]>;
547+
def int_ppc_altivec_vextduhvrx : GCCBuiltin<"__builtin_altivec_vextduhvrx">,
548+
Intrinsic<[llvm_v2i64_ty],
549+
[llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
550+
[IntrNoMem]>;
551+
def int_ppc_altivec_vextduwvlx : GCCBuiltin<"__builtin_altivec_vextduwvlx">,
552+
Intrinsic<[llvm_v2i64_ty],
553+
[llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
554+
[IntrNoMem]>;
555+
def int_ppc_altivec_vextduwvrx : GCCBuiltin<"__builtin_altivec_vextduwvrx">,
556+
Intrinsic<[llvm_v2i64_ty],
557+
[llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
558+
[IntrNoMem]>;
559+
def int_ppc_altivec_vextddvlx : GCCBuiltin<"__builtin_altivec_vextddvlx">,
560+
Intrinsic<[llvm_v2i64_ty],
561+
[llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
562+
[IntrNoMem]>;
563+
def int_ppc_altivec_vextddvrx : GCCBuiltin<"__builtin_altivec_vextddvrx">,
564+
Intrinsic<[llvm_v2i64_ty],
565+
[llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
566+
[IntrNoMem]>;
534567
}
535568

536569
// Vector average.

llvm/lib/Target/PowerPC/PPCInstrPrefix.td

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -948,37 +948,69 @@ let Predicates = [IsISA3_1] in {
948948
(int_ppc_altivec_vinsdrx v2i64:$vDi, i64:$rA, i64:$rB))]>,
949949
RegConstraint<"$vDi = $vD">, NoEncode<"$vDi">;
950950
def VEXTDUBVLX : VAForm_1a<24, (outs vrrc:$vD),
951-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
951+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
952952
"vextdubvlx $vD, $vA, $vB, $rC",
953-
IIC_VecGeneral, []>;
953+
IIC_VecGeneral,
954+
[(set v2i64:$vD,
955+
(int_ppc_altivec_vextdubvlx v16i8:$vA,
956+
v16i8:$vB,
957+
i32:$rC))]>;
954958
def VEXTDUBVRX : VAForm_1a<25, (outs vrrc:$vD),
955-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
959+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
956960
"vextdubvrx $vD, $vA, $vB, $rC",
957-
IIC_VecGeneral, []>;
961+
IIC_VecGeneral,
962+
[(set v2i64:$vD,
963+
(int_ppc_altivec_vextdubvrx v16i8:$vA,
964+
v16i8:$vB,
965+
i32:$rC))]>;
958966
def VEXTDUHVLX : VAForm_1a<26, (outs vrrc:$vD),
959-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
967+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
960968
"vextduhvlx $vD, $vA, $vB, $rC",
961-
IIC_VecGeneral, []>;
969+
IIC_VecGeneral,
970+
[(set v2i64:$vD,
971+
(int_ppc_altivec_vextduhvlx v8i16:$vA,
972+
v8i16:$vB,
973+
i32:$rC))]>;
962974
def VEXTDUHVRX : VAForm_1a<27, (outs vrrc:$vD),
963-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
975+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
964976
"vextduhvrx $vD, $vA, $vB, $rC",
965-
IIC_VecGeneral, []>;
977+
IIC_VecGeneral,
978+
[(set v2i64:$vD,
979+
(int_ppc_altivec_vextduhvrx v8i16:$vA,
980+
v8i16:$vB,
981+
i32:$rC))]>;
966982
def VEXTDUWVLX : VAForm_1a<28, (outs vrrc:$vD),
967-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
983+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
968984
"vextduwvlx $vD, $vA, $vB, $rC",
969-
IIC_VecGeneral, []>;
985+
IIC_VecGeneral,
986+
[(set v2i64:$vD,
987+
(int_ppc_altivec_vextduwvlx v4i32:$vA,
988+
v4i32:$vB,
989+
i32:$rC))]>;
970990
def VEXTDUWVRX : VAForm_1a<29, (outs vrrc:$vD),
971-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
991+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
972992
"vextduwvrx $vD, $vA, $vB, $rC",
973-
IIC_VecGeneral, []>;
993+
IIC_VecGeneral,
994+
[(set v2i64:$vD,
995+
(int_ppc_altivec_vextduwvrx v4i32:$vA,
996+
v4i32:$vB,
997+
i32:$rC))]>;
974998
def VEXTDDVLX : VAForm_1a<30, (outs vrrc:$vD),
975-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
999+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
9761000
"vextddvlx $vD, $vA, $vB, $rC",
977-
IIC_VecGeneral, []>;
1001+
IIC_VecGeneral,
1002+
[(set v2i64:$vD,
1003+
(int_ppc_altivec_vextddvlx v2i64:$vA,
1004+
v2i64:$vB,
1005+
i32:$rC))]>;
9781006
def VEXTDDVRX : VAForm_1a<31, (outs vrrc:$vD),
979-
(ins vrrc:$vA, vrrc:$vB, g8rc:$rC),
1007+
(ins vrrc:$vA, vrrc:$vB, gprc:$rC),
9801008
"vextddvrx $vD, $vA, $vB, $rC",
981-
IIC_VecGeneral, []>;
1009+
IIC_VecGeneral,
1010+
[(set v2i64:$vD,
1011+
(int_ppc_altivec_vextddvrx v2i64:$vA,
1012+
v2i64:$vB,
1013+
i32:$rC))]>;
9821014
def VPDEPD : VXForm_1<1485, (outs vrrc:$vD), (ins vrrc:$vA, vrrc:$vB),
9831015
"vpdepd $vD, $vA, $vB", IIC_VecGeneral,
9841016
[(set v2i64:$vD,

0 commit comments

Comments
 (0)