@@ -403,28 +403,42 @@ multiclass avx10_minmax_scalar<string OpStr, X86VectorVTInfo _, SDNode OpNode,
403
403
SDNode OpNodeSAE> {
404
404
let ExeDomain = _.ExeDomain, Predicates = [HasAVX10_2] in {
405
405
let mayRaiseFPException = 1 in {
406
- defm rri : AVX512_maskable<0x53, MRMSrcReg, _, (outs VR128X:$dst),
407
- (ins VR128X:$src1, VR128X:$src2, i32u8imm:$src3),
408
- OpStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
409
- (_.VT (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
410
- (i32 timm:$src3)))>,
411
- Sched<[WriteFMAX]>;
412
-
413
- defm rmi : AVX512_maskable<0x53, MRMSrcMem, _, (outs VR128X:$dst),
414
- (ins VR128X:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
415
- OpStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
416
- (_.VT (OpNode (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr:$src2),
417
- (i32 timm:$src3)))>,
406
+ let isCodeGenOnly = 1 in {
407
+ def rri : AVX512Ii8<0x53, MRMSrcReg, (outs _.FRC:$dst),
408
+ (ins _.FRC:$src1, _.FRC:$src2, i32u8imm:$src3),
409
+ !strconcat(OpStr, "\t{$src3, $src2, $src1|$src1, $src2, $src3}"),
410
+ [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2, (i32 timm:$src3)))]>,
411
+ Sched<[WriteFMAX]>;
412
+
413
+ def rmi : AVX512Ii8<0x53, MRMSrcMem, (outs _.FRC:$dst),
414
+ (ins _.FRC:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
415
+ !strconcat(OpStr, "\t{$src3, $src2, $src1|$src1, $src2, $src3}"),
416
+ [(set _.FRC:$dst, (OpNode _.FRC:$src1, (_.ScalarLdFrag addr:$src2),
417
+ (i32 timm:$src3)))]>,
418
+ Sched<[WriteFMAX.Folded, WriteFMAX.ReadAfterFold]>;
419
+ }
420
+ defm rri_Int : AVX512_maskable<0x53, MRMSrcReg, _, (outs VR128X:$dst),
421
+ (ins VR128X:$src1, VR128X:$src2, i32u8imm:$src3),
422
+ OpStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
423
+ (_.VT (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
424
+ (i32 timm:$src3)))>,
425
+ Sched<[WriteFMAX]>;
426
+
427
+ defm rmi_Int : AVX512_maskable<0x53, MRMSrcMem, _, (outs VR128X:$dst),
428
+ (ins VR128X:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
429
+ OpStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
430
+ (_.VT (OpNode (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr:$src2),
431
+ (i32 timm:$src3)))>,
418
432
Sched<[WriteFMAX.Folded, WriteFMAX.ReadAfterFold]>;
419
433
}
420
434
let Uses = []<Register>, mayRaiseFPException = 0 in
421
- defm rrib : AVX512_maskable<0x53, MRMSrcReg, _, (outs VR128X:$dst),
422
- (ins VR128X:$src1, VR128X:$src2, i32u8imm:$src3),
423
- OpStr, "$src3, {sae}, $src2, $src1",
424
- "$src1, $src2, {sae}, $src3",
425
- (_.VT (OpNodeSAE (_.VT _.RC:$src1), (_.VT _.RC:$src2),
426
- (i32 timm:$src3)))>,
427
- Sched<[WriteFMAX]>, EVEX_B;
435
+ defm rrib_Int : AVX512_maskable<0x53, MRMSrcReg, _, (outs VR128X:$dst),
436
+ (ins VR128X:$src1, VR128X:$src2, i32u8imm:$src3),
437
+ OpStr, "$src3, {sae}, $src2, $src1",
438
+ "$src1, $src2, {sae}, $src3",
439
+ (_.VT (OpNodeSAE (_.VT _.RC:$src1), (_.VT _.RC:$src2),
440
+ (i32 timm:$src3)))>,
441
+ Sched<[WriteFMAX]>, EVEX_B;
428
442
}
429
443
}
430
444
0 commit comments