@@ -40,23 +40,20 @@ def isZEXT_B
40
40
CheckImmOperand<2, 255>
41
41
]>>>;
42
42
43
- // Returns true if this is the zext.b pattern, andi rd, rs1, 255.
44
43
def isSelectPseudo
45
44
: TIIPredicate<"isSelectPseudo",
46
- MCOpcodeSwitchStatement<
47
- [MCOpcodeSwitchCase<
48
- [Select_GPR_Using_CC_GPR,
49
- Select_GPR_Using_CC_Imm,
50
- Select_FPR16_Using_CC_GPR,
51
- Select_FPR16INX_Using_CC_GPR,
52
- Select_FPR32_Using_CC_GPR,
53
- Select_FPR32INX_Using_CC_GPR,
54
- Select_FPR64_Using_CC_GPR,
55
- Select_FPR64INX_Using_CC_GPR,
56
- Select_FPR64IN32X_Using_CC_GPR
57
- ],
58
- MCReturnStatement<TruePred>>],
59
- MCReturnStatement<FalsePred>>>;
45
+ MCReturnStatement<
46
+ CheckOpcode<[
47
+ Select_GPR_Using_CC_GPR,
48
+ Select_GPR_Using_CC_Imm,
49
+ Select_FPR16_Using_CC_GPR,
50
+ Select_FPR16INX_Using_CC_GPR,
51
+ Select_FPR32_Using_CC_GPR,
52
+ Select_FPR32INX_Using_CC_GPR,
53
+ Select_FPR64_Using_CC_GPR,
54
+ Select_FPR64INX_Using_CC_GPR,
55
+ Select_FPR64IN32X_Using_CC_GPR
56
+ ]>>>;
60
57
61
58
// Returns true if this is a vector configuration instruction.
62
59
def isVectorConfigInstr
@@ -82,43 +79,43 @@ def isFloatScalarMoveOrScalarSplatInstr
82
79
: TIIPredicate<"isFloatScalarMoveOrScalarSplatInstr",
83
80
MCReturnStatement<
84
81
CheckOpcode<!listflatten([
85
- !instances<Pseudo>("PseudoVFMV_S_F.*"),
86
- !instances<Pseudo>("PseudoVFMV_V_F.*")
82
+ !instances<Pseudo>("^ PseudoVFMV_S_F.*"),
83
+ !instances<Pseudo>("^ PseudoVFMV_V_F.*")
87
84
])>>>;
88
85
89
86
def isScalarExtractInstr
90
87
: TIIPredicate<"isScalarExtractInstr",
91
88
MCReturnStatement<
92
89
CheckOpcode<!listflatten([
93
- !instances<Pseudo>("PseudoVMV_X_S.*"),
94
- !instances<Pseudo>("PseudoVFMV_F.*_S.*")
90
+ !instances<Pseudo>("^ PseudoVMV_X_S.*"),
91
+ !instances<Pseudo>("^ PseudoVFMV_F.*_S.*")
95
92
])>>>;
96
93
97
94
def isScalarInsertInstr
98
95
: TIIPredicate<"isScalarInsertInstr",
99
96
MCReturnStatement<
100
97
CheckOpcode<!listflatten([
101
- !instances<Pseudo>("PseudoVMV_S_X.*"),
102
- !instances<Pseudo>("PseudoVFMV_S_F.*")
98
+ !instances<Pseudo>("^ PseudoVMV_S_X.*"),
99
+ !instances<Pseudo>("^ PseudoVFMV_S_F.*")
103
100
])>>>;
104
101
105
102
def isScalarSplatInstr
106
103
: TIIPredicate<"isScalarSplatInstr",
107
104
MCReturnStatement<
108
105
CheckOpcode<!listflatten([
109
- !instances<Pseudo>("PseudoVMV_V_I.*"),
110
- !instances<Pseudo>("PseudoVMV_V_X.*"),
111
- !instances<Pseudo>("PseudoVFMV_V_F.*")
106
+ !instances<Pseudo>("^ PseudoVMV_V_I.*"),
107
+ !instances<Pseudo>("^ PseudoVMV_V_X.*"),
108
+ !instances<Pseudo>("^ PseudoVFMV_V_F.*")
112
109
])>>>;
113
110
114
111
def isVSlideInstr
115
112
: TIIPredicate<"isVSlideInstr",
116
113
MCReturnStatement<
117
114
CheckOpcode<!listflatten([
118
- !instances<Pseudo>("PseudoVSLIDEDOWN_VX.*"),
119
- !instances<Pseudo>("PseudoVSLIDEDOWN_VI.*"),
120
- !instances<Pseudo>("PseudoVSLIDEUP_VX.*"),
121
- !instances<Pseudo>("PseudoVSLIDEUP_VI.*")
115
+ !instances<Pseudo>("^ PseudoVSLIDEDOWN_VX.*"),
116
+ !instances<Pseudo>("^ PseudoVSLIDEDOWN_VI.*"),
117
+ !instances<Pseudo>("^ PseudoVSLIDEUP_VX.*"),
118
+ !instances<Pseudo>("^ PseudoVSLIDEUP_VI.*")
122
119
])>>>;
123
120
124
121
def isNonZeroLoadImmediate
@@ -136,8 +133,8 @@ def ignoresVXRM
136
133
MCOpcodeSwitchStatement<
137
134
[MCOpcodeSwitchCase<
138
135
!listflatten([
139
- !instances<Pseudo>("PseudoVNCLIP_WI.*"),
140
- !instances<Pseudo>("PseudoVNCLIPU_WI.*")
136
+ !instances<Pseudo>("^ PseudoVNCLIP_WI.*"),
137
+ !instances<Pseudo>("^ PseudoVNCLIPU_WI.*")
141
138
]),
142
139
MCReturnStatement<CheckImmOperand<3, 0>>>],
143
140
MCReturnStatement<FalsePred>>>;
0 commit comments