From 767c9c5bf5ba4dbaa8edadb1d2e26254321c30c0 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 30 Jun 2020 00:17:52 -0700 Subject: [PATCH] [X86] Remove an isel pattern than can never match. Remove bitcasts of loads from a few others. --- llvm/lib/Target/X86/X86InstrXOP.td | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/llvm/lib/Target/X86/X86InstrXOP.td b/llvm/lib/Target/X86/X86InstrXOP.td index 8b991ae..a5976b7 100644 --- a/llvm/lib/Target/X86/X86InstrXOP.td +++ b/llvm/lib/Target/X86/X86InstrXOP.td @@ -335,13 +335,13 @@ multiclass xop4op_int opc, string OpcodeStr, RegisterClass RC, [(set RC:$dst, (VT (or (and RC:$src3, RC:$src1), (X86andnp RC:$src3, RC:$src2))))]>, XOP_4V, Sched<[sched]>; - // FIXME: This pattern can't match. + // FIXME: We can't write a pattern for this in tablegen. + let hasSideEffects = 0, mayLoad = 1 in def rrm : IXOPi8Reg, + []>, XOP_4V, VEX_W, Sched<[sched.Folded, sched.ReadAfterFold, sched.ReadAfterFold]>; def rmr : IXOPi8Reg; def : Pat<(or (and VR128:$src3, VR128:$src1), - (X86andnp VR128:$src3, (bc_v16i8 (loadv2i64 addr:$src2)))), + (X86andnp VR128:$src3, (loadv16i8 addr:$src2))), (VPCMOVrmr VR128:$src1, addr:$src2, VR128:$src3)>; def : Pat<(or (and VR128:$src3, VR128:$src1), - (X86andnp VR128:$src3, (bc_v8i16 (loadv2i64 addr:$src2)))), + (X86andnp VR128:$src3, (loadv8i16 addr:$src2))), (VPCMOVrmr VR128:$src1, addr:$src2, VR128:$src3)>; def : Pat<(or (and VR128:$src3, VR128:$src1), - (X86andnp VR128:$src3, (bc_v4i32 (loadv2i64 addr:$src2)))), + (X86andnp VR128:$src3, (loadv4i32 addr:$src2))), (VPCMOVrmr VR128:$src1, addr:$src2, VR128:$src3)>; def : Pat<(v32i8 (or (and VR256:$src3, VR256:$src1), @@ -403,13 +403,13 @@ let Predicates = [HasXOP] in { (VPCMOVYrrr VR256:$src1, VR256:$src2, VR256:$src3)>; def : Pat<(or (and VR256:$src3, VR256:$src1), - (X86andnp VR256:$src3, (bc_v32i8 (loadv4i64 addr:$src2)))), + (X86andnp VR256:$src3, (loadv32i8 addr:$src2))), (VPCMOVYrmr VR256:$src1, addr:$src2, VR256:$src3)>; def : Pat<(or (and VR256:$src3, VR256:$src1), - (X86andnp VR256:$src3, (bc_v16i16 (loadv4i64 addr:$src2)))), + (X86andnp VR256:$src3, (loadv16i16 addr:$src2))), (VPCMOVYrmr VR256:$src1, addr:$src2, VR256:$src3)>; def : Pat<(or (and VR256:$src3, VR256:$src1), - (X86andnp VR256:$src3, (bc_v8i32 (loadv4i64 addr:$src2)))), + (X86andnp VR256:$src3, (loadv8i32 addr:$src2))), (VPCMOVYrmr VR256:$src1, addr:$src2, VR256:$src3)>; } -- 2.7.4