Skip to content

Commit da05b27

Browse files
committed
revert intrinsic change, update pattern
1 parent 051d98e commit da05b27

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

llvm/lib/Target/AMDGPU/VOP3Instructions.td

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,19 @@ defm V_DIV_FMAS_F64 : VOP3Inst_Pseudo_Wrapper <"v_div_fmas_f64", VOP_F64_F64_F6
200200

201201
} // End isCommutable = 1
202202

203+
let True16Predicate = UseFakeTrue16Insts in
204+
multiclass int_amdgcn_alignbyte_fake16<string inst_name> {
205+
defvar inst = !cast<VOP_Pseudo>(inst_name#"_fake16_e64");
206+
def : GCNPat <
207+
(i32 (int_amdgcn_alignbyte (i32 (VOP3OpSelMods i32:$src0, i32:$src0_modifiers)),
208+
(i32 (VOP3OpSelMods i32:$src1, i32:$src1_modifiers)),
209+
(i32 (VOP3OpSelMods i32:$src2, i32:$src2_modifiers)))),
210+
(inst i32:$src0_mods, VSrc_b32:$src0,
211+
i32:$src1_mods, VSrc_b32:$src1,
212+
0, VGPR_32:$src2)
213+
>;
214+
}
215+
203216
let isReMaterializable = 1 in {
204217
let mayRaiseFPException = 0 in {
205218
defm V_CUBEID_F32 : VOP3Inst <"v_cubeid_f32", VOP3_Profile<VOP_F32_F32_F32_F32>, int_amdgcn_cubeid>;
@@ -212,11 +225,14 @@ defm V_BFE_U32 : VOP3Inst <"v_bfe_u32", VOP3_Profile<VOP_I32_I32_I32_I32>, AMDGP
212225
defm V_BFE_I32 : VOP3Inst <"v_bfe_i32", VOP3_Profile<VOP_I32_I32_I32_I32>, AMDGPUbfe_i32>;
213226
defm V_BFI_B32 : VOP3Inst <"v_bfi_b32", VOP3_Profile<VOP_I32_I32_I32_I32>, AMDGPUbfi>;
214227
defm V_ALIGNBIT_B32 : VOP3Inst <"v_alignbit_b32", VOP3_Profile<VOP_I32_I32_I32_I32>, fshr>;
215-
defm V_ALIGNBYTE_B32 : VOP3Inst_t16_with_profiles <"v_alignbyte_b32",
216-
VOP3_Profile<VOP_I32_I32_I32_I32>,
217-
VOP3_Profile_True16<VOP_I32_I32_I32_I16, VOP3_OPSEL>,
218-
VOP3_Profile_Fake16<VOP_I32_I32_I32_I16, VOP3_OPSEL>,
219-
int_amdgcn_alignbyte>;
228+
229+
let True16Predicate = NotHasTrue16BitInsts in
230+
defm V_ALIGNBYTE_B32 : VOP3Inst <"v_alignbyte_b32", VOP3_Profile<VOP_I32_I32_I32_I32>, int_amdgcn_alignbyte>;
231+
let True16Predicate = UseRealTrue16Insts in
232+
defm V_ALIGNBYTE_B32_t16 : VOP3Inst <"v_alignbyte_b32_t16", VOP3_Profile_True16<VOP_I32_I32_I32_I16, VOP3_OPSEL>>;
233+
let True16Predicate = UseFakeTrue16Insts in {
234+
defm V_ALIGNBYTE_B32_fake16 : VOP3Inst <"v_alignbyte_b32_fake16", VOP3_Profile_Fake16<VOP_I32_I32_I32_I16, VOP3_OPSEL>>;
235+
}
220236

221237
// XXX - No FPException seems suspect but manual doesn't say it does
222238
let mayRaiseFPException = 0 in {

0 commit comments

Comments
 (0)