aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/optim
AgeCommit message (Expand)AuthorFilesLines
2022-06-24fix "unreplaced" warnings caused by using typeof() on inline functionsLuc Van Oostenryck1-0/+17
2021-04-20Merge branches misc, cmp-pow2, optim-and-cmp, cmp-and-or and optim-cast-eval ...Luc Van Oostenryck6-24/+136
2021-04-19simplify TRUNC(NOT(x)) --> NOT(TRUNC(x))Luc Van Oostenryck1-1/+0
2021-04-18simplify AND(x >= 0, x < C) --> (unsigned)x < CLuc Van Oostenryck2-2/+0
2021-04-18add testcases for AND(x > 0, x <= C) --> x u<= CLuc Van Oostenryck2-0/+32
2021-04-18canonicalize constant signed compares toward zeroLuc Van Oostenryck1-0/+74
2021-04-18Merge branches 'fix-phisrc' and 'insert-last-insn' into memops-prepLuc Van Oostenryck6-0/+124
2021-04-18add testcases for simplification of casts.Luc Van Oostenryck2-24/+21
2021-04-02fix remove_merging_phisrc()Luc Van Oostenryck1-1/+0
2021-03-28correctly count phi argumentsLuc Van Oostenryck1-0/+27
2021-03-26additional testcase for remove_merging_phisrc()Luc Van Oostenryck1-0/+24
2021-03-19fix phisources during SWITCH-BR conversionLuc Van Oostenryck1-1/+0
2021-03-19use convert_to_jump() when converting a CBR with same targetsLuc Van Oostenryck1-1/+0
2021-03-19fix phisources during CBR-BR conversionLuc Van Oostenryck2-2/+0
2021-03-19add testcases to check if phi-sources from removed targets are removed tooLuc Van Oostenryck4-0/+78
2021-03-13canonicalize ((x & M) == M) --> ((x & M) != 0) when M is a power-of-2Luc Van Oostenryck1-0/+12
2021-03-10simplify (x | M) cmpu CLuc Van Oostenryck1-1/+0
2021-03-10simplify (x | M) cmps CLuc Van Oostenryck1-1/+0
2021-03-10simplify (x | M) {==,!=} CLuc Van Oostenryck1-1/+0
2021-03-10simplify (x & M) {==,!=} CLuc Van Oostenryck1-1/+0
2021-03-10simplify (x & M) cmps 0Luc Van Oostenryck1-1/+0
2021-03-10simplify (x & M) cmpu CLuc Van Oostenryck1-1/+0
2021-03-10simplify (x & M) cmps CLuc Van Oostenryck1-1/+0
2021-03-10add testcases for constant compares against AND/ORLuc Van Oostenryck7-0/+116
2021-03-10change testing of signed compares against SMIN or SMAXLuc Van Oostenryck1-4/+4
2021-01-26cmps: canonicalize SEL(x > 0, a, -a) --> SEL(x >= 0, a, -a)Luc Van Oostenryck1-1/+0
2021-01-26cmps: canonicalize SEL(x {<,<=} y, a, b) --> SEL(x {>=,>} y, b, a)Luc Van Oostenryck1-1/+0
2021-01-26cmps: canonicalize signed compares with constantLuc Van Oostenryck1-1/+0
2021-01-26cmps: canonicalize SMIN/SMAX +- 1 --> EQ/NELuc Van Oostenryck1-1/+0
2021-01-26cmps: canonicalize signed compares with SMIN/SMAXLuc Van Oostenryck1-1/+0
2021-01-26cmps: simplify signed compares with SMIN or SMAXLuc Van Oostenryck1-1/+0
2021-01-26cmps: add testcases for simplification of signed comparesLuc Van Oostenryck6-0/+106
2021-01-26cmps: fix simplification of sext(x) + signed compare of {SMAX,SMIN}Luc Van Oostenryck1-11/+35
2021-01-24simplify LSR + SEXT into ASRLuc Van Oostenryck1-0/+27
2020-11-28Merge branch 'bit-trans' into nextLuc Van Oostenryck9-0/+228
2020-11-27convert SEL(x & BIT1, BIT2, 0) into SHIFT(x & BIT1, S)Luc Van Oostenryck1-1/+0
2020-11-27factorize SEL(x, OP(y,z), y) into OP(SEL(x, z, 0), y)Luc Van Oostenryck1-1/+0
2020-11-27add testscases for 'bits translation' optimizationLuc Van Oostenryck2-0/+44
2020-11-27factorize SHIFT(x, s) OP SHIFT(y, s) into SHIFT((x OP y), s)Luc Van Oostenryck3-3/+0
2020-11-27factorize (x OP1 z) OP2 (y OP1 z) into (x OP2 y) OP1 zLuc Van Oostenryck4-4/+0
2020-11-27add testscases for some factorization of distributive operationsLuc Van Oostenryck7-0/+193
2020-11-26fix trivial_phi() when the target is before the single valueLuc Van Oostenryck1-0/+20
2020-11-24Merge branch 'optim-not' into nextLuc Van Oostenryck6-0/+69
2020-11-22Merge branch 'optim-cgoto' into nextLuc Van Oostenryck3-0/+54
2020-11-22not: simplify ((x cmp y) {&,|,^} (x !cmp y)) --> {0,1,1}Luc Van Oostenryck1-1/+0
2020-11-22not: simplify (~x {&,|,^} x) --> {0,~0,~0}Luc Van Oostenryck1-1/+0
2020-11-22canon: put PSEUDO_REGs in canonical order tooLuc Van Oostenryck1-1/+0
2020-11-22canon: put PSEUDO_ARGs in canonical order tooLuc Van Oostenryck1-1/+0
2020-11-22not: add testcases for canonicalization & simplification of negationsLuc Van Oostenryck6-0/+73
2020-11-21add a new instruction for label-as-valueLuc Van Oostenryck1-1/+0
2020-11-21simplify CGOTO(SEL(x, L1, L2)) into CBR x, L1, L2Luc Van Oostenryck1-1/+0
2020-11-21simplify OP_COMPUTEDGOTO with unique and known targetLuc Van Oostenryck1-1/+0
2020-11-21add testcases for COMPUTEDGOTO simplificationLuc Van Oostenryck3-0/+57
2020-11-17cfg: early CFG simplificationLuc Van Oostenryck1-1/+1
2020-11-17cfg: call simplify_memops() unconditionally.Luc Van Oostenryck2-0/+37
2020-11-17cfg: remove phi-sources when merging BBsLuc Van Oostenryck1-1/+0
2020-11-15cfg: add testcase for phi-adjusting during BB mergeLuc Van Oostenryck1-0/+24
2020-11-15testcase: avoid UNDEFLuc Van Oostenryck1-2/+3
2020-11-09Merge branch 'optim-cmp' into nextLuc Van Oostenryck16-111/+293
2020-11-08select: simplify select(x, x, 0) --> xLuc Van Oostenryck2-9/+3
2020-11-08select: simplify handling of select(x, 0, x) --> 0Luc Van Oostenryck1-0/+9
2020-11-08cmp: simplify compares and sign/zero extendLuc Van Oostenryck2-2/+0
2020-11-08cmp: simplify zext(x) cmpu CLuc Van Oostenryck1-1/+0
2020-11-08cmp: simplify zext(x) cmps CLuc Van Oostenryck1-1/+0
2020-11-08cmp: canonicalize sext(x) cmpu C (with C >= SMAX)Luc Van Oostenryck1-1/+0
2020-11-08cmp: simplify sext(x) cmps {SMAX,SMIN}Luc Van Oostenryck1-1/+0
2020-11-08cmp: simplify zext(x) cmp C --> x cmp CLuc Van Oostenryck3-3/+0
2020-11-08cmp: simplify sext(x) cmp C --> x cmp CLuc Van Oostenryck1-1/+0
2020-11-08cmp: canonicalize unsigned (x {<=,>} SMAX)Luc Van Oostenryck1-1/+0
2020-11-08cmp: canonicalize unsigned compare with UMAX or UMAX-1Luc Van Oostenryck1-1/+0
2020-11-08cmp: simplify unsigned (x {<=,>} UMAX) into {1,0}Luc Van Oostenryck1-1/+0
2020-11-08cmp: canonicalize unsigned (x {<,>=} C) --> (x {<=,>} C-1)Luc Van Oostenryck1-1/+0
2020-11-07simplify SEL(x == y, x, y) and friendsLuc Van Oostenryck1-0/+12
2020-11-07select: simplify SEL(SEL(x, C1, C2), y, z) --> y (with C1, C2 != 0)Luc Van Oostenryck1-1/+0
2020-11-07select: simplify SEL(SEL(x, C, 0), y, z) --> SEL(x, y, z) and its dualLuc Van Oostenryck2-2/+0
2020-11-07select: add some testcases for select simplificationLuc Van Oostenryck5-0/+54
2020-11-05cmp: add testcases for the simplification of comparesLuc Van Oostenryck15-0/+293
2020-11-02cmp: adapt testcase for compares' canonicalizationLuc Van Oostenryck1-111/+14
2020-11-01eval_insn: give an explicit type to compare's operandsLuc Van Oostenryck2-2/+0
2020-11-01eval_insn: add testcases for incorrect type in OP_SET_*Luc Van Oostenryck3-0/+47
2020-11-01testsuite: add a new tag: check-output-returnsLuc Van Oostenryck1-0/+1
2020-11-01testsuite: add a new tag: check-output-matchLuc Van Oostenryck1-0/+12
2020-10-24Merge branches 'optim-setuimm' and 'optim-unop' into nextLuc Van Oostenryck8-0/+85
2020-10-24unop: simplify ~(-x) --> x - 1Luc Van Oostenryck1-1/+0
2020-10-24unop: simplify ~(x ^ C) --> x ^ ~CLuc Van Oostenryck1-1/+0
2020-10-24unop: simplify ~(C - x) --> x + ~CLuc Van Oostenryck1-1/+0
2020-10-24unop: simplify ~(x + C) --> ~C - xLuc Van Oostenryck1-1/+0
2020-10-24unop: simplify -(~x) --> x + 1Luc Van Oostenryck1-1/+0
2020-10-24unop: simplify -(x - y) --> y - xLuc Van Oostenryck1-1/+0
2020-10-24unop: simplify -(x + C) --> -C - xLuc Van Oostenryck1-1/+0
2020-10-23canonicalize unsigned compares against 0 or 1Luc Van Oostenryck1-1/+5
2020-10-23simplify unsigned compares against 0Luc Van Oostenryck1-0/+10
2020-10-23unop: add testcases for unop simplificationsLuc Van Oostenryck7-0/+78
2020-10-22Merge branch 'optim-base' into nextLuc Van Oostenryck15-0/+156
2020-10-21optim: fix some testcases related to bitfield manipulationLuc Van Oostenryck2-5/+8
2020-10-20Merge branch 'bf-sign' into nextLuc Van Oostenryck2-15/+4
2020-10-20sub: simplify x + (y - x) --> yLuc Van Oostenryck1-1/+0
2020-10-20sub: simplify (x - y) + y --> xLuc Van Oostenryck1-1/+0
2020-10-20sub: simplify x - (y + x) --> -yLuc Van Oostenryck1-1/+0
2020-10-20sub: simplify x - (x + y) --> -yLuc Van Oostenryck1-1/+0
2020-10-20sub: simplify (x + y) - y --> xLuc Van Oostenryck1-1/+0
2020-10-20sub: simplify (x + y) - x --> yLuc Van Oostenryck1-1/+0
2020-10-20add: simplify (-x + y) --> (y - x)Luc Van Oostenryck1-1/+0
2020-10-20add: simplify (x + -y) --> (x - y)Luc Van Oostenryck1-1/+0
2020-10-20sub: simplify (x - -y) --> (x + y)Luc Van Oostenryck1-1/+0
2020-10-20sub: simplify (C - y) + D --> eval(C+D) - yLuc Van Oostenryck1-1/+0
2020-10-20sub: simplify C - (D - z) --> z + eval(C-D)Luc Van Oostenryck1-1/+0
2020-10-20sub: simplify C - (y + D) --> eval(C-D) - yLuc Van Oostenryck1-1/+0
2020-10-20sub: canonicalize (0 - x) into -xLuc Van Oostenryck1-1/+0
2020-10-20reassoc: simplify (x # C) # K --> x # eval(C # K)Luc Van Oostenryck1-1/+0
2020-10-20constants must be truncated to the operation's sizeLuc Van Oostenryck1-1/+0
2020-10-20add testcases about OP_ADD & OP_SUB simplificationsLuc Van Oostenryck15-0/+171
2020-10-01testsuite: fix erroneous commentLuc Van Oostenryck1-1/+1
2020-09-16teach sparse about -funsigned-bitfieldsLuc Van Oostenryck2-15/+4
2020-08-06bad-shift: wait dead code elimination to warn about bad shiftsLuc Van Oostenryck1-4/+8
2019-02-04target.c: ignore -m64 on archs where int32_t is a longLuc Van Oostenryck1-0/+1
2018-09-10test: use integers of different sizes, even on 32-bitLuc Van Oostenryck1-2/+2
2018-09-06Merge branch 'rem-trivial-phi' into tipLuc Van Oostenryck1-0/+14
2018-09-01trivial-phi: remove more complex trivial phi-nodesLuc Van Oostenryck1-1/+0
2018-09-01trivial-phi: add testcase for unneeded trivial phi-nodesLuc Van Oostenryck1-0/+15
2018-08-25fix: do not optimize away accesses to volatile bitfieldsLuc Van Oostenryck1-1/+0
2018-08-25add testcase for accesses to volatile bitfieldsLuc Van Oostenryck1-0/+17
2018-08-25Merge branch 'ssa' into tipLuc Van Oostenryck4-3/+24
2018-08-25Merge branch 'kill-dead-stores' into tipLuc Van Oostenryck4-0/+128
2018-08-24Merge branches 'optim-trunc-or' and 'optim-mask-shift-or' into tipLuc Van Oostenryck4-4/+0
2018-08-24simplify TRUNC(SHIFT(a | b, S), N)Luc Van Oostenryck2-2/+0
2018-08-24simplify AND(SHIFT(a | b, S), M)Luc Van Oostenryck2-2/+0
2018-08-22simplify TRUNC((x & M') | y, N)Luc Van Oostenryck4-4/+0
2018-08-22Merge branches 'optim-shift-and' and 'optim-bitfield' into tipLuc Van Oostenryck38-0/+628
2018-08-22simplify ((x & M) << S) when (M << S) == (-1 << S)Luc Van Oostenryck1-1/+0
2018-08-22simplify ((x & M) << S) when (M << S) == 0Luc Van Oostenryck1-1/+0
2018-08-22simplify ((x & M) >> S) when (M >> S) == (-1 >> S)Luc Van Oostenryck1-1/+0
2018-08-22simplify ((x & M) >> S) when (M >> S) == 0Luc Van Oostenryck1-1/+0
2018-08-22add testcases for {LSR,SHL}(AND(x, M), S) with shared AND(x, M)Luc Van Oostenryck4-0/+66
2018-08-22simplify SHL((x & M') | y, S)Luc Van Oostenryck7-7/+0
2018-08-22simplify OP((x | C), K) when (C & M) != CLuc Van Oostenryck1-1/+0
2018-08-22simplify OP((x | C), K) when (C & M) == MLuc Van Oostenryck1-1/+0
2018-08-22simplify OP((x | C), K) when (C & M) == 0Luc Van Oostenryck2-2/+0
2018-08-22simplify OP(((x & M') | y), K) when (M' & M) != M'Luc Van Oostenryck3-3/+0
2018-08-22simplify OP(((x & M') | y), K) when (M' & M) == MLuc Van Oostenryck3-3/+0
2018-08-22allow simplification of OP(((x & y) | (a & M')), K)Luc Van Oostenryck3-3/+0
2018-08-22add testcases for bitfield & AND/OR simplificationLuc Van Oostenryck36-0/+625
2018-08-22add testcase for (((x & M') | (y & M'')) & M)Luc Van Oostenryck2-0/+23
2018-08-17Merge branches 'optim-shl-lsr' and 'optim-trunc-trunc' into tipLuc Van Oostenryck1-0/+12
2018-08-17simplify TRUNC(TRUNC(x))Luc Van Oostenryck1-1/+0
2018-08-17simplify ((x >> S) << S)Luc Van Oostenryck1-1/+0
2018-08-16add testcase for TRUNC(TRUNC(x)) simplificationLuc Van Oostenryck1-0/+13
2018-08-16add testcase for ((x >> S) << S) simplificationLuc Van Oostenryck1-0/+15
2018-08-16rename testcase for ((x << S) >> S) simplificationLuc Van Oostenryck1-1/+1
2018-08-08simplify (x & M) >> S to (x >> S) & (M >> S)Luc Van Oostenryck1-1/+0
2018-08-08simplify (x << S) >> S into x & (-1 >> S)Luc Van Oostenryck3-11/+3
2018-08-08simplify ((x & M) | y) >> S to (y >> S) when (M >> S) == 0Luc Van Oostenryck1-1/+0
2018-08-08simplify ((x & M') | y ) & M into (y & M) when (M' & M) == 0Luc Van Oostenryck1-1/+0
2018-08-07optim: add a few more testcases for shift & maskLuc Van Oostenryck1-0/+15
2018-08-06boolean conversion of boolean value is a no-opLuc Van Oostenryck1-6/+6
2018-08-06simplify AND(SETCC(x,y), M)Luc Van Oostenryck1-1/+0
2018-08-06simplify TRUNC(SETCC(x,y), N)Luc Van Oostenryck1-1/+0
2018-08-06simplify SEXT(SETCC(x,y), N)Luc Van Oostenryck1-1/+0
2018-08-06simplify ZEXT(SETCC(x,y), N)Luc Van Oostenryck3-8/+3
2018-08-06simplify SETNE(TRUNC(x,N),{0,1})Luc Van Oostenryck1-1/+0
2018-08-06simplify SETNE(AND(X,1),0) to AND(X,1)Luc Van Oostenryck1-1/+0
2018-08-06conditional branches can't accept arbitrary expressionsLuc Van Oostenryck1-2/+2
2018-08-04add testcase for linearize_logical()Luc Van Oostenryck7-0/+118
2018-07-28Merge branch 'optim-setne' into tipLuc Van Oostenryck4-37/+43
2018-07-28simplify 'x != 0' or 'x == 1' to 'x'Luc Van Oostenryck2-37/+19
2018-07-28simplify SET{EQ,NE}(SEXT(x, N),{0,1})Luc Van Oostenryck1-1/+0
2018-07-28simplify SET{EQ,NE}(ZEXT(x, N),{0,1})Luc Van Oostenryck1-1/+0
2018-07-25testcase for SET{EQ,NE}([SZ]EXT(x, N),{0,1})'s simplificationLuc Van Oostenryck2-0/+26
2018-07-25Merge branch 'optim-cast' into tipLuc Van Oostenryck18-0/+322
2018-07-25Merge branch 'optim-shift' into tipLuc Van Oostenryck4-0/+286
2018-07-25shift: simplify ASR(ZEXT(X, N), C)Luc Van Oostenryck1-0/+13
2018-07-25shift: simplify ASR(LSR(x,N),N')Luc Van Oostenryck1-0/+42
2018-07-25shift: simplify LSR(LSR(x,N),N') & friendsLuc Van Oostenryck1-0/+149
2018-07-24use "%Le" to display floatsLuc Van Oostenryck1-8/+8
2018-07-23big-shift: add testcases for simplification of over-sized shiftsLuc Van Oostenryck1-7/+55
2018-07-23cast: simplify SEXT(ZEXT(x,N),N')Luc Van Oostenryck1-1/+0
2018-07-23cast: simplify ZEXT(ZEXT(x,N),N')Luc Van Oostenryck1-1/+0
2018-07-23cast: simplify SEXT(SEXT(x,N),N')Luc Van Oostenryck1-1/+0
2018-07-23cast: simplify AND(ZEXT(x,M),N)Luc Van Oostenryck2-2/+0
2018-07-23cast: simplify [ZS]EXT(AND(x,M),N)Luc Van Oostenryck3-3/+0
2018-07-23cast: preserve the sizes of TRUNC(AND(x,M),N)Luc Van Oostenryck1-1/+0
2018-07-23cast: simplify [SZ]EXT + TRUNC to a smaller/greater sizeLuc Van Oostenryck2-2/+0
2018-07-23cast: simplify [SZ]EXT + TRUNC to original sizeLuc Van Oostenryck1-1/+0
2018-07-23add testcases for casts & bitfield insertion/extractionLuc Van Oostenryck18-0/+334
2018-07-23big-shift: simplify over-sized OP_SHLsLuc Van Oostenryck1-0/+7
2018-07-23big-shift: simplify over-sized OP_LSRsLuc Van Oostenryck1-0/+27
2018-07-01ssa: activate the new SSA conversionLuc Van Oostenryck2-3/+1
2018-07-01testsuite: improve mem2reg testcasesLuc Van Oostenryck2-0/+23
2018-06-30kds: fix recursion in kill_dead_stores_bb()Luc Van Oostenryck1-1/+0
2018-06-30kds: kill dead stores after memops simplificationLuc Van Oostenryck2-2/+0
2018-06-30kds: add testcases for kill_dead_stores()Luc Van Oostenryck4-0/+131
2018-06-30Merge branch 'cse-cast' into tipLuc Van Oostenryck1-0/+15
2018-06-30Merge branch 'cast-optim' into tipLuc Van Oostenryck2-0/+415
2018-06-29cast: optimize away casts to/from pointersLuc Van Oostenryck2-16/+26
2018-06-29cast: reorganize testcases for cast optimizationLuc Van Oostenryck1-0/+405
2018-06-28bool: generate plain OP_{AND,OR} instead of OP_{AND,OR}_BOOLLuc Van Oostenryck3-28/+53
2018-06-28bool: fix missing boolean context for floatsLuc Van Oostenryck1-0/+48
2018-06-28bool: simplify ZEXT in bool -> int -> boolLuc Van Oostenryck2-33/+29
2018-06-28bool: add testcase for bool simplificationLuc Van Oostenryck1-0/+247
2018-06-28simplify 'x ^ ~0' to '~x'Luc Van Oostenryck1-0/+8