Lines Matching defs:Zext
1305 // fold (aext (zext x)) -> (zext x)
1961 // Match a constant operand and a zext operand for the math instruction:
1971 // Match the zext operand as a setcc of a boolean.
1986 // add (zext i1 (seteq (X & 1), 0)), C --> sub C+1, (zext (X & 1))
1987 // sub C, (zext i1 (seteq (X & 1), 0)) --> add C-1, (zext (X & 1))
2083 // add (sext i1 X), 1 -> zext (not i1 X)
2085 // add (zext i1 X), -1 -> sext (not i1 X)
2086 // because most (?) targets generate better code for the zext form.
2256 // add (sext i1), X -> sub X, (zext i1)
2260 SDValue ZExt = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, N0.getOperand(0));
2261 return DAG.getNode(ISD::SUB, DL, VT, N1, ZExt);
2268 SDValue ZExt = DAG.getNode(ISD::AND, DL, VT, N1.getOperand(0),
2270 return DAG.getNode(ISD::SUB, DL, VT, N0, ZExt);
2739 SDValue ZExt = DAG.getNode(ISD::AND, DL, VT, N1.getOperand(0),
2741 return DAG.getNode(ISD::ADD, DL, VT, N0, ZExt);
3678 // fold (OP (zext x), (zext y)) -> (zext (OP x, y))
4187 // Use LE to convert equal sized loads to zext.
4438 SDValue Zext = DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N),
4442 CombineTo(N, Zext);
4447 CombineTo(N0.getNode(), Zext);
4593 // and (sub 0, zext(bool X)), 1 --> zext(bool X)
4594 // and (sub 0, sext(bool X)), 1 --> zext(bool X)
5555 // If the shift amount is sign/zext/any-extended just peel it off.
6028 // fold (not (zext (setcc x, y))) -> (zext (not (setcc x, y)))
6413 // fold (shl (zext (srl x, C)), C) -> (zext (shl (srl x, C), C))
6414 // Only fold this if the inner zext has no other uses to avoid increasing
7068 // transforms in the other direction (create a select from a zext/sext). There
7073 // select Cond, 0, 1 --> zext (!Cond)
7087 // select Cond, 1, 0 --> zext (Cond)
7104 // select Cond, C1, C1-1 --> add (zext Cond), C1-1
7700 // vselect <N x i1> Cond, C+1, C --> add (zext Cond), C
7899 /// Try to fold a sext/zext/aext dag node into a ConstantSDNode or
7901 /// This function is called by the DAGCombiner when visiting sext/zext/aext
7918 // fold (zext c1) -> c1
7924 // fold (zext (build_vector AllConstants) -> (build_vector AllConstants)
7953 Elts.push_back(DAG.getConstant(C.zext(VTBits), DL, SVT));
7981 // Sign bits will be lost after a zext.
8044 // FIXME: Bring more similar combines here, common to sext/zext (maybe aext?).
8054 // fold (sext (load x)) to multiple smaller sextloads; same for zext.
8141 zext (and/or/xor (shl/shr (load x), cst), cst)) ->
8142 // (and/or/xor (shl/shr (zextload x), (zext cst)), (zext cst))
8195 Mask = Mask.zext(VT.getSizeInBits());
8329 N->getOpcode() == ISD::ZERO_EXTEND) && "Expected sext or zext");
8347 // zext i1 (setgt iN X, -1) --> srl (not X), (N - 1)
8553 // fold (sext x) -> (zext x) if the sign bit is known zero.
8607 // fold (zext (zext x)) -> (zext x)
8608 // fold (zext (aext x)) -> (zext x)
8613 // fold (zext (truncate x)) -> (zext x) or
8614 // (zext (truncate x)) -> (truncate x)
8631 // fold (zext (truncate x)) -> (and x, mask)
8633 // fold (zext (truncate (load x))) -> (zext (smaller load x))
8634 // fold (zext (truncate (srl (load x), c))) -> (zext (smaller load (x+c/n)))
8674 // Fold (zext (and (trunc x), cst)) -> (and x, cst),
8685 Mask = Mask.zext(VT.getSizeInBits());
8691 // Try to simplify (zext (load x)).
8697 // fold (zext (load x)) to multiple smaller zextloads.
8702 // fold (zext (and/or/xor (load x), cst)) ->
8703 // (and/or/xor (zextload x), (zext cst))
8735 Mask = Mask.zext(VT.getSizeInBits());
8761 // fold (zext (and/or/xor (shl/shr (load x), cst), cst)) ->
8762 // (and/or/xor (shl/shr (zextload x), (zext cst)), (zext cst))
8766 // Try to simplify (zext (zextload x)).
8790 // zext(setcc) -> (and (vsetcc), (1, 1, ...) for vectors.
8807 // zext(setcc x,y,cc) -> select_cc x, y, 1, 0, cc
8816 // (zext (shl (zext x), cst)) -> (shl (zext x), cst)
8859 // fold (aext (zext x)) -> (zext x)
8895 Mask = Mask.zext(VT.getSizeInBits());
9256 // fold (sext_in_reg (zext x)) -> (sext x)
10067 zextOrTrunc(SrcBitSize).zext(DstBitSize);
11563 // fold (sint_to_fp (zext (setcc x, y, cc))) ->
11626 // Fold (fp_to_{s/u}int ({s/u}int_to_fpx)) -> zext x, sext x, trunc x, or x
12717 /// [Inst = zext Slice to Ty2], only if SliceTy <> Ty2
12834 UsedBits = UsedBits.zext(BitWidth);
12898 // Check that the zext is legal if it needs one.
13005 // 3. Check that we do not have a zext in the way.
13241 "It takes more than a zext to get to the loaded slice!!");
14290 // must not be zext, volatile, indexed, and they must be consecutive.
14813 /// (store (or (zext (bitcast F to i32) to i64),
14814 /// (shl (zext I to i64), 32)), addr) -->
15903 // (zext (extract_vector_elt X, C))
17934 // If the caller doesn't want us to simplify this into a zext of a compare,