@@ -27,3 +27,68 @@ def : InstAlias<"$Vd = #0",
27
27
def : InstAlias<"$Vdd = #0",
28
28
(V6_vsubw_dv VecDblRegs:$Vdd, VecDblRegs:$Vdd, VecDblRegs:$Vdd)>,
29
29
Requires<[HasV60T]>;
30
+
31
+ // maps "$Qd = vcmp.eq($Vu.uh, $Vv.uh)" -> "$Qd = vcmp.eq($Vu.h, $Vv.h)"
32
+ def : InstAlias<"$Qd = vcmp.eq($Vu.uh, $Vv.uh)",
33
+ (V6_veqh VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
34
+ Requires<[HasV60T]>;
35
+
36
+ // maps "$Qd &= vcmp.eq($Vu.uh, $Vv.uh)" -> "$Qd &= vcmp.eq($Vu.h, $Vv.h)"
37
+ def : InstAlias<"$Qd &= vcmp.eq($Vu.uh, $Vv.uh)",
38
+ (V6_veqh_and VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
39
+ Requires<[HasV60T]>;
40
+
41
+ // maps "$Qd |= vcmp.eq($Vu.uh, $Vv.uh)" -> "$Qd |= vcmp.eq($Vu.h, $Vv.h)"
42
+ def : InstAlias<"$Qd |= vcmp.eq($Vu.uh, $Vv.uh)",
43
+ (V6_veqh_or VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
44
+ Requires<[HasV60T]>;
45
+
46
+ // maps "$Qd ^= vcmp.eq($Vu.uh, $Vv.uh)" -> "$Qd ^= vcmp.eq($Vu.h, $Vv.h)"
47
+ def : InstAlias<"$Qd ^= vcmp.eq($Vu.uh, $Vv.uh)",
48
+ (V6_veqh_xor VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
49
+ Requires<[HasV60T]>;
50
+
51
+ // maps "$Qd = vcmp.eq($Vu.uw, $Vv.uw)" -> "$Qd = vcmp.eq($Vu.w, $Vv.w)"
52
+ def : InstAlias<"$Qd = vcmp.eq($Vu.uw, $Vv.uw)",
53
+ (V6_veqw VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
54
+ Requires<[HasV60T]>;
55
+
56
+ // maps "$Qd &= vcmp.eq($Vu.uw, $Vv.uw)" -> "$Qd &= vcmp.eq($Vu.w, $Vv.w)"
57
+ def : InstAlias<"$Qd &= vcmp.eq($Vu.uw, $Vv.uw)",
58
+ (V6_veqw_and VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
59
+ Requires<[HasV60T]>;
60
+
61
+ // maps "$Qd |= vcmp.eq($Vu.uw, $Vv.uw)" -> "$Qd |= vcmp.eq($Vu.w, $Vv.w)"
62
+ def : InstAlias<"$Qd |= vcmp.eq($Vu.uw, $Vv.uw)",
63
+ (V6_veqh_or VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
64
+ Requires<[HasV60T]>;
65
+
66
+ // maps "$Qd ^= vcmp.eq($Vu.uw, $Vv.uw)" -> "$Qd ^= vcmp.eq($Vu.w, $Vv.w)"
67
+ def : InstAlias<"$Qd ^= vcmp.eq($Vu.uw, $Vv.uw)",
68
+ (V6_veqw_xor VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
69
+ Requires<[HasV60T]>;
70
+
71
+ // maps "$Qd = vcmp.eq($Vu.ub, $Vv.ub)" -> "$Qd = vcmp.eq($Vu.b, $Vv.b)"
72
+ def : InstAlias<"$Qd = vcmp.eq($Vu.ub, $Vv.ub)",
73
+ (V6_veqb VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
74
+ Requires<[HasV60T]>;
75
+
76
+ // maps "$Qd &= vcmp.eq($Vu.ub, $Vv.ub)" -> "$Qd &= vcmp.eq($Vu.b, $Vv.b)"
77
+ def : InstAlias<"$Qd &= vcmp.eq($Vu.ub, $Vv.ub)",
78
+ (V6_veqb_and VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
79
+ Requires<[HasV60T]>;
80
+
81
+ // maps "$Qd |= vcmp.eq($Vu.ub, $Vv.ub)" -> "$Qd |= vcmp.eq($Vu.b, $Vv.b)"
82
+ def : InstAlias<"$Qd |= vcmp.eq($Vu.ub, $Vv.ub)",
83
+ (V6_veqb_or VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
84
+ Requires<[HasV60T]>;
85
+
86
+ // maps "$Qd ^= vcmp.eq($Vu.ub, $Vv.ub)" -> "$Qd ^= vcmp.eq($Vu.b, $Vv.b)"
87
+ def : InstAlias<"$Qd ^= vcmp.eq($Vu.ub, $Vv.ub)",
88
+ (V6_veqb_xor VecPredRegs:$Qd, VectorRegs:$Vu, VectorRegs:$Vv)>,
89
+ Requires<[HasV60T]>;
90
+
91
+ // maps "$Rd.w = vextract($Vu, $Rs)" -> "$Rd = vextract($Vu, $Rs)"
92
+ def : InstAlias<"$Rd.w = vextract($Vu, $Rs)",
93
+ (V6_extractw IntRegs:$Rd, VectorRegs:$Vu, IntRegs:$Rs)>,
94
+ Requires<[HasV60T]>;
0 commit comments