@@ -335,13 +335,13 @@ multiclass xop4op_int<bits<8> opc, string OpcodeStr, RegisterClass RC,
335
335
[(set RC:$dst, (VT (or (and RC:$src3, RC:$src1),
336
336
(X86andnp RC:$src3, RC:$src2))))]>, XOP_4V,
337
337
Sched<[sched]>;
338
- // FIXME: This pattern can't match.
338
+ // FIXME: We can't write a pattern for this in tablegen.
339
+ let hasSideEffects = 0, mayLoad = 1 in
339
340
def rrm : IXOPi8Reg<opc, MRMSrcMemOp4, (outs RC:$dst),
340
341
(ins RC:$src1, RC:$src2, x86memop:$src3),
341
342
!strconcat(OpcodeStr,
342
343
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
343
- [(set RC:$dst, (VT (or (and (load addr:$src3), RC:$src1),
344
- (X86andnp (load addr:$src3), RC:$src2))))]>,
344
+ []>,
345
345
XOP_4V, VEX_W, Sched<[sched.Folded, sched.ReadAfterFold, sched.ReadAfterFold]>;
346
346
def rmr : IXOPi8Reg<opc, MRMSrcMem, (outs RC:$dst),
347
347
(ins RC:$src1, x86memop:$src2, RC:$src3),
@@ -383,13 +383,13 @@ let Predicates = [HasXOP] in {
383
383
(VPCMOVrrr VR128:$src1, VR128:$src2, VR128:$src3)>;
384
384
385
385
def : Pat<(or (and VR128:$src3, VR128:$src1),
386
- (X86andnp VR128:$src3, (bc_v16i8 (loadv2i64 addr:$src2) ))),
386
+ (X86andnp VR128:$src3, (loadv16i8 addr:$src2))),
387
387
(VPCMOVrmr VR128:$src1, addr:$src2, VR128:$src3)>;
388
388
def : Pat<(or (and VR128:$src3, VR128:$src1),
389
- (X86andnp VR128:$src3, (bc_v8i16 (loadv2i64 addr:$src2) ))),
389
+ (X86andnp VR128:$src3, (loadv8i16 addr:$src2))),
390
390
(VPCMOVrmr VR128:$src1, addr:$src2, VR128:$src3)>;
391
391
def : Pat<(or (and VR128:$src3, VR128:$src1),
392
- (X86andnp VR128:$src3, (bc_v4i32 (loadv2i64 addr:$src2) ))),
392
+ (X86andnp VR128:$src3, (loadv4i32 addr:$src2))),
393
393
(VPCMOVrmr VR128:$src1, addr:$src2, VR128:$src3)>;
394
394
395
395
def : Pat<(v32i8 (or (and VR256:$src3, VR256:$src1),
@@ -403,13 +403,13 @@ let Predicates = [HasXOP] in {
403
403
(VPCMOVYrrr VR256:$src1, VR256:$src2, VR256:$src3)>;
404
404
405
405
def : Pat<(or (and VR256:$src3, VR256:$src1),
406
- (X86andnp VR256:$src3, (bc_v32i8 (loadv4i64 addr:$src2) ))),
406
+ (X86andnp VR256:$src3, (loadv32i8 addr:$src2))),
407
407
(VPCMOVYrmr VR256:$src1, addr:$src2, VR256:$src3)>;
408
408
def : Pat<(or (and VR256:$src3, VR256:$src1),
409
- (X86andnp VR256:$src3, (bc_v16i16 (loadv4i64 addr:$src2) ))),
409
+ (X86andnp VR256:$src3, (loadv16i16 addr:$src2))),
410
410
(VPCMOVYrmr VR256:$src1, addr:$src2, VR256:$src3)>;
411
411
def : Pat<(or (and VR256:$src3, VR256:$src1),
412
- (X86andnp VR256:$src3, (bc_v8i32 (loadv4i64 addr:$src2) ))),
412
+ (X86andnp VR256:$src3, (loadv8i32 addr:$src2))),
413
413
(VPCMOVYrmr VR256:$src1, addr:$src2, VR256:$src3)>;
414
414
}
415
415
0 commit comments