Add a few more testcases to catch possible future regressions. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- validation/optim/and-shl-or-and0.c | 13 +++++++++++++ validation/optim/lsr-or-and0.c | 23 +++++++++++++++++++++++ validation/optim/shl-or-constant0.c | 12 ++++++++++++ validation/optim/shl-or-constant1.c | 12 ++++++++++++ validation/optim/shl-or-constant2.c | 12 ++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 validation/optim/and-shl-or-and0.c create mode 100644 validation/optim/lsr-or-and0.c create mode 100644 validation/optim/shl-or-constant0.c create mode 100644 validation/optim/shl-or-constant1.c create mode 100644 validation/optim/shl-or-constant2.c diff --git a/validation/optim/and-shl-or-and0.c b/validation/optim/and-shl-or-and0.c new file mode 100644 index 000000000000..ea08d2622a95 --- /dev/null +++ b/validation/optim/and-shl-or-and0.c @@ -0,0 +1,13 @@ +unsigned and_shl_or_and0(unsigned a, unsigned b) +{ + return (((a & 0xfff00000) | b) << 12) & 0xfff00000; +} + +/* + * check-name: and-shl-or-and0 + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-excludes: or\\. + * check-output-excludes: lsr\\. + */ diff --git a/validation/optim/lsr-or-and0.c b/validation/optim/lsr-or-and0.c new file mode 100644 index 000000000000..3c369cb9497e --- /dev/null +++ b/validation/optim/lsr-or-and0.c @@ -0,0 +1,23 @@ +#define S 12 + +// ((x & M) | b) >> S; +// -> ((x >> S) & (M >> S)) | (b >> S) +// 0a: (M >> S) == 0 +// 0b: (x >> S) == 0 +// 0c: (b >> S) == 0 + +int lsr_or_and0a(unsigned int x, unsigned int b) +{ + return ((x & 0x00000fff) | b) >> S; +} + +/* + * check-name: lsr-or-and0 + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-pattern(1): lsr\\. + * check-output-excludes: %arg1\\. + * check-output-excludes: and\\. + * check-output-excludes: or\\. + */ diff --git a/validation/optim/shl-or-constant0.c b/validation/optim/shl-or-constant0.c new file mode 100644 index 000000000000..25347b4b3b20 --- /dev/null +++ b/validation/optim/shl-or-constant0.c @@ -0,0 +1,12 @@ +unsigned shl_or_constant0(unsigned a) +{ + return (a | 0xfff00000) << 12; +} + +/* + * check-name: shl-or-constant0 + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-excludes: or\\. + */ diff --git a/validation/optim/shl-or-constant1.c b/validation/optim/shl-or-constant1.c new file mode 100644 index 000000000000..cd3ea8bb011b --- /dev/null +++ b/validation/optim/shl-or-constant1.c @@ -0,0 +1,12 @@ +unsigned shl_or_constant1(unsigned a) +{ + return (a | 0x000fffff) << 12; +} + +/* + * check-name: shl-or-constant1 + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: ret\\..*\\$0xfffff000 + */ diff --git a/validation/optim/shl-or-constant2.c b/validation/optim/shl-or-constant2.c new file mode 100644 index 000000000000..9dbde3b574d7 --- /dev/null +++ b/validation/optim/shl-or-constant2.c @@ -0,0 +1,12 @@ +unsigned shl_or_constant1(unsigned a) +{ + return (a | 0x00ffff0f) << 12; +} + +/* + * check-name: shl-or-constant2 + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: or\\..*\\$0xfff0f + */ -- 2.28.0