aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/optim
AgeCommit message (Expand)AuthorFilesLines
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-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
2018-06-28simplify 'x & ~0' to 'x'Luc Van Oostenryck1-0/+7
2018-06-28simplify 'x | ~0' to '~0'Luc Van Oostenryck1-0/+15
2018-06-26cast: simplify TRUNC + ZEXT to ANDLuc Van Oostenryck2-0/+146
2018-06-26cse: move to next comparable instructionLuc Van Oostenryck1-1/+0
2018-06-23cse: add testcase for missed opportunityLuc Van Oostenryck1-0/+16
2018-06-23cast: specialize integer castsLuc Van Oostenryck3-38/+40
2018-06-23cast: specialize cast from pointersLuc Van Oostenryck1-0/+1
2018-06-23cast: specialize casts from unsigned to pointersLuc Van Oostenryck1-0/+1
2018-06-23cast: specialize floats to integer conversionLuc Van Oostenryck1-0/+1
2018-06-23cast: specialize FPCAST into [USF]CVTFLuc Van Oostenryck1-1/+1
2018-06-23cast: reorg testcases related to castsLuc Van Oostenryck1-0/+22
2018-06-21fix bad fpcast simplificationLuc Van Oostenryck1-1/+0
2018-06-21add testcase for bad fpcast simplificationLuc Van Oostenryck1-0/+14
2018-06-16testsuite: fix missing returnLuc Van Oostenryck1-0/+1
2018-03-18fix-return: remove special case for single returnLuc Van Oostenryck1-0/+24
2018-03-17optim: simplify null selectLuc Van Oostenryck1-0/+16
2018-03-14optim: kill unreachable BBS after CFG simplificationLuc Van Oostenryck2-2/+0
2018-03-14optim: add some more optimization testsLuc Van Oostenryck2-0/+42
2018-03-11fix symbol cleanupLuc Van Oostenryck1-1/+0
2018-03-11fix address_taken()Luc Van Oostenryck1-0/+19
2018-03-11testsuite: fix problem with double-escaping in patternsLuc Van Oostenryck7-11/+11
2018-02-27testsuite: add testcase about CSE problemLuc Van Oostenryck1-0/+18
2018-02-16Merge branches 'fix-converted-loads', 'kill-deadborn-loads', 'kill-dead-loads...Luc Van Oostenryck4-0/+64
2018-02-14kill dead stores when simplifying symbolsLuc Van Oostenryck1-1/+0
2018-02-14kill dead loadsLuc Van Oostenryck2-0/+36
2018-02-14fix killing of converted loadsLuc Van Oostenryck2-1/+25
2018-02-14add testcases for converted loadsLuc Van Oostenryck1-0/+15
2018-02-11add testcase for bad killing of dominated storesLuc Van Oostenryck1-0/+16
2018-01-16CSE: support CSE of floating-point literalLuc Van Oostenryck1-0/+12
2018-01-08add OP_SETFVALLuc Van Oostenryck1-0/+47
2018-01-02Merge branches 'fix-expand-bitfield-deref', 'fix-fpops-cse', 'null-expr', 'si...Luc Van Oostenryck2-0/+32
2017-12-21fix: restore CSE on floating-point comparesLuc Van Oostenryck1-1/+0
2017-12-21add testcase for CSE of floating-point comparesLuc Van Oostenryck1-0/+20
2017-12-21add testcases for the linearization of callsLuc Van Oostenryck1-0/+13
2017-12-08testsuite: fix invalid 'check-...' tagsLuc Van Oostenryck2-2/+2
2017-11-18fix support of floating-point compareLuc Van Oostenryck1-0/+123
2017-11-16inlined calls should not block BB packingLuc Van Oostenryck1-0/+30
2017-11-16canonicalize compare instructionsLuc Van Oostenryck1-0/+124
2017-11-13Merge branches 'testcases-bugs', 'testcases-bugs-optim' and 'testcases-mem2re...Luc Van Oostenryck6-0/+142
2017-11-13add test case for missing conversion to selectLuc Van Oostenryck1-0/+24
2017-11-13add test cases for canonicalization of boolean expressionsLuc Van Oostenryck1-0/+12
2017-11-13add testcase for mem2reg/SSA conversionLuc Van Oostenryck1-0/+27
2017-11-13add test cases for simplification of equivalent to 'x == 0' or 'x != 0'Luc Van Oostenryck2-0/+24
2017-11-13add test cases for canonicalization of mul chainsLuc Van Oostenryck1-0/+24
2017-11-13add test cases for canonicalization of add/sub chainsLuc Van Oostenryck1-0/+55
2017-11-11Merge branches 'volatile-loads-are-side-effects', 'fix-volatile-simplificatio...Luc Van Oostenryck2-0/+86
2017-11-10volatile loads are side-effects tooLuc Van Oostenryck1-0/+13
2017-11-08associate MOD_RESTRICT with restrict-qualified variablesLuc Van Oostenryck1-0/+73
2017-09-16testsuite: convert to the new patern syntaxLuc Van Oostenryck2-2/+2
2017-05-19Merge branches 'dump-macros-v2', 'fix-predefined-size', 'fix-bool-context', '...v0.5.1-rc1Luc Van Oostenryck2-2/+18
2017-05-12fix boolean context for OP_AND_BOOL & OP_OR_BOOLLuc Van Oostenryck2-2/+18
2017-05-12ignore VOID when trying to if-convert phi-nodesLuc Van Oostenryck1-0/+19
2017-02-23CSE: use commutativity to identify equivalent instructionsLuc Van Oostenryck1-0/+22
2017-02-23CSE: add test cases for comparisons dualityLuc Van Oostenryck1-0/+34
2017-02-16simplify float-to-float casts that doesn't change sizeLuc Van Oostenryck1-0/+15