DPDK patches and discussions
 help / color / mirror / Atom feed
From: Artur Trybula <arturx.trybula@intel.com>
To: dev@dpdk.org, stable@dpdk.org, fiona.trahe@intel.com,
	shallyv@marvell.com, adamx.dybkowski@intel.com,
	marcinx.danilewicz@intel.com, arturx.trybula@intel.com,
	akhil.goyal@nxp.com
Subject: [dpdk-dev] [PATCH] test/compress: replace test vector
Date: Tue, 14 Jan 2020 12:56:56 +0100
Message-ID: <20200114115656.14611-1-arturx.trybula@intel.com> (raw)

This patch replaces existing test vector with a new
one containing C code to fix license issue.

Signed-off-by: Artur Trybula <arturx.trybula@intel.com>
---
 app/test/test_compressdev_test_buffer.h | 228 ++++++++++++++----------
 1 file changed, 132 insertions(+), 96 deletions(-)

diff --git a/app/test/test_compressdev_test_buffer.h b/app/test/test_compressdev_test_buffer.h
index c0492f89a..4e8bd9eb2 100644
--- a/app/test/test_compressdev_test_buffer.h
+++ b/app/test/test_compressdev_test_buffer.h
@@ -190,106 +190,142 @@ static const char test_buf_shakespeare[] =
 	"\n"
 	"ORLANDO	Go apart, Adam, and thou shalt hear how he will\n";
 
-/* Snippet of source code in Pascal */
-static const char test_buf_pascal[] =
-	"	Ptr    = 1..DMem;\n"
-	"	Loc    = 1..IMem;\n"
-	"	Loc0   = 0..IMem;\n"
-	"	EdgeT  = (hout,lin,hin,lout); {Warning this order is important in}\n"
-	"				      {predicates such as gtS,geS}\n"
-	"	CardT  = (finite,infinite);\n"
-	"	ExpT   = Minexp..Maxexp;\n"
-	"	ManT   = Mininf..Maxinf; \n"
-	"	Pflag  = (PNull,PSoln,PTrace,PPrint);\n"
-	"	Sreal  = record\n"
-	"		    edge:EdgeT;\n"
-	"		    cardinality:CardT;\n"
-	"		    exp:ExpT; {exponent}\n"
-	"		    mantissa:ManT;\n"
-	"		 end;\n"
-	"	Int    = record\n"
-	"		    hi:Sreal;\n"
-	"		    lo:Sreal;\n"
-	"	 end;\n"
-	"	Instr  = record\n"
-	"		    Code:OpType;\n"
-	"		    Pars: array[0..Par] of 0..DMem;\n"
-	"		 end;\n"
-	"	DataMem= record\n"
-	"		    D        :array [Ptr] of Int;\n"
-	"		    S        :array [Loc] of State;\n"
-	"		    LastHalve:Loc;\n"
-	"		    RHalve   :array [Loc] of real;\n"
-	"		 end;\n"
-	"	DataFlags=record\n"
-	"		    PF	     :array [Ptr] of Pflag;\n"
-	"		 end;\n"
-	"var\n"
-	"	Debug  : (none,activity,post,trace,dump);\n"
-	"	Cut    : (once,all);\n"
-	"	GlobalEnd,Verifiable:boolean;\n"
-	"	HalveThreshold:real;\n"
-	"	I      : array [Loc] of Instr; {Memory holding instructions}\n"
-	"	End    : Loc; {last instruction in I}\n"
-	"	ParN   : array [OpType] of -1..Par; {number of parameters for each \n"
-	"			opcode. -1 means no result}\n"
-	"        ParIntersect : array [OpType] of boolean ;\n"
-	"	DInit  : DataMem; {initial memory which is cleared and \n"
-	"				used in first call}\n"
-	"	DF     : DataFlags; {hold flags for variables, e.g. print/trace}\n"
-	"	MaxDMem:0..DMem;\n"
-	"	Shift  : array[0..Digits] of 1..maxint;{array of constant multipliers}\n"
-	"						{used for alignment etc.}\n"
-	"	Dummy  :Positive;\n"
-	"	{constant intervals and Sreals}\n"
-	"	PlusInfS,MinusInfS,PlusSmallS,MinusSmallS,ZeroS,\n"
-	"	PlusFiniteS,MinusFiniteS:Sreal;\n"
-	"	Zero,All,AllFinite:Int;\n"
-	"\n"
-	"procedure deblank;\n"
-	"var Ch:char;\n"
-	"begin\n"
-	"   while (not eof) and (input^ in [' ','	']) do read(Ch);\n"
-	"end;\n"
-	"\n"
-	"procedure InitialOptions;\n"
-	"\n"
-	"#include '/user/profs/cleary/bin/options.i';\n"
-	"\n"
-	"   procedure Option;\n"
-	"   begin\n"
-	"      case Opt of\n"
-	"      'a','A':Debug:=activity;\n"
-	"      'd','D':Debug:=dump;\n"
-	"      'h','H':HalveThreshold:=StringNum/100;\n"
-	"      'n','N':Debug:=none;\n"
-	"      'p','P':Debug:=post;\n"
-	"      't','T':Debug:=trace;\n"
-	"      'v','V':Verifiable:=true;\n"
-	"      end;\n"
-	"   end;\n"
-	"\n"
-	"begin\n"
-	"   Debug:=trace;\n"
-	"   Verifiable:=false;\n"
-	"   HalveThreshold:=67/100;\n"
-	"   Options;\n"
-	"   writeln(Debug);\n"
-	"   writeln('Verifiable:',Verifiable);\n"
-	"   writeln('Halve threshold',HalveThreshold);\n"
-	"end;{InitialOptions}\n"
-	"\n"
-	"procedure NormalizeUp(E,M:integer;var S:Sreal;var Closed:boolean);\n"
-	"begin\n"
-	"with S do\n"
-	"begin\n"
-	"   if M=0 then S:=ZeroS else\n"
-	"   if M>0 then\n";
+/* Snippet of source code in C */
+static const char test_buf_c_code[] =
+	"/* SPDX-License-Identifier: BSD-3-Clause\n"
+	" * Copyright(c) 2010-2014 Intel Corporation\n"
+	" */\n"
+	"\n"
+	"#include <stdio.h>\n"
+	"#include <inttypes.h>\n"
+	"#include <string.h>\n"
+	"#include <math.h>\n"
+	"#include <rte_common.h>\n"
+	"#include <rte_hexdump.h>\n"
+	"#include <rte_pause.h>\n"
+	"\n"
+	"#include test.h\n"
+	"\n"
+	"#define MAX_NUM 1 << 20\n"
+	"\n"
+	"#define FAIL(x)\\n"
+	"	{printf(x '() test failed!\n');\\n"
+	"	return -1;}\n"
+	"\n"
+	"/* this is really a sanity check */\n"
+	"static int\n"
+	"test_macros(int __rte_unused unused_parm)\n"
+	"{\n"
+	"#define SMALLER 0x1000U\n"
+	"#define BIGGER 0x2000U\n"
+	"#define PTR_DIFF BIGGER - SMALLER\n"
+	"#define FAIL_MACRO(x)\\n"
+	"	{printf(#x '() test failed!\n');\\n"
+	"	return -1;}\n"
+	"\n"
+	"	uintptr_t unused = 0;\n"
+	"\n"
+	"	RTE_SET_USED(unused);\n"
+	"\n"
+	"if ((uintptr_t)RTE_PTR_ADD(SMALLER, PTR_DIFF) != BIGGER)\n"
+	"		FAIL_MACRO(RTE_PTR_ADD);\n"
+	"	if ((uintptr_t)RTE_PTR_SUB(BIGGER, PTR_DIFF) != SMALLER)\n"
+	"		FAIL_MACRO(RTE_PTR_SUB);\n"
+	"	if (RTE_PTR_DIFF(BIGGER, SMALLER) != PTR_DIFF)\n"
+	"		FAIL_MACRO(RTE_PTR_DIFF);\n"
+	"	if (RTE_MAX(SMALLER, BIGGER) != BIGGER)\n"
+	"		FAIL_MACRO(RTE_MAX);\n"
+	"	if (RTE_MIN(SMALLER, BIGGER) != SMALLER)\n"
+	"		FAIL_MACRO(RTE_MIN);\n"
+	"\n"
+	"	if (strncmp(RTE_STR(test), 'test', sizeof('test')))\n"
+	"		FAIL_MACRO(RTE_STR);\n"
+	"\n"
+	"	return 0;\n"
+	"}\n"
+	"\n"
+	"static int\n"
+	"test_bsf(void)\n"
+	"{\n"
+	"	uint32_t shift, pos;\n"
+	"\n"
+	"	/* safe versions should be able to handle 0 */\n"
+	"	if (rte_bsf32_safe(0, &pos) != 0)\n"
+	"		FAIL('rte_bsf32_safe');\n"
+	"	if (rte_bsf64_safe(0, &pos) != 0)\n"
+	"		FAIL('rte_bsf64_safe');\n"
+	"\n"
+	"	for (shift = 0; shift < 63; shift++) {\n"
+	"		uint32_t val32;\n"
+	"		uint64_t val64;\n"
+	"\n"
+	"		val64 = 1ULL << shift;\n"
+	"		if ((uint32_t)rte_bsf64(val64) != shift)\n"
+	"			FAIL('rte_bsf64');\n"
+	"		if (rte_bsf64_safe(val64, &pos) != 1)\n"
+	"			FAIL('rte_bsf64_safe');\n"
+	"		if (pos != shift)\n"
+	"			FAIL('rte_bsf64_safe');\n"
+	"\n"
+	"		if (shift > 31)\n"
+	"			continue;\n"
+	"\n"
+	"		val32 = 1U << shift;\n"
+	"		if ((uint32_t)rte_bsf32(val32) != shift)\n"
+	"			FAIL('rte_bsf32');\n"
+	"		if (rte_bsf32_safe(val32, &pos) != 1)\n"
+	"			FAIL('rte_bsf32_safe');\n"
+	"		if (pos != shift)\n"
+	"			FAIL('rte_bsf32_safe');\n"
+	"	}\n"
+	"\n"
+	"	return 0;\n"
+	"}\n"
+	"\n"
+	"static int\n"
+	"test_log2(void)\n"
+	"{\n"
+	"	uint32_t i, base, compare;\n"
+	"	const uint32_t max = 0x10000;\n"
+	"	const uint32_t step = 1;\n"
+	"\n"
+	"	for (i = 0; i < max; i = i + step) {\n"
+	"		uint64_t i64;\n"
+	"\n"
+	"		/* extend range for 64-bit */\n"
+	"		i64 = (uint64_t)i << 32;\n"
+	"		base = (uint32_t)ceilf(log2(i64));\n"
+	"		compare = rte_log2_u64(i64);\n"
+	"		if (base != compare) {\n"
+	"			printf('Wrong rte_log2_u64(%' PRIx64 ') val %x,"
+		" expected %x\n',\n"
+	"				i64, compare, base);\n"
+	"			return TEST_FAILED;\n"
+	"		}\n"
+	"\n"
+	"		base = (uint32_t)ceilf(log2((uint32_t)i));\n"
+	"		compare = rte_log2_u32((uint32_t)i);\n"
+	"		if (base != compare) {\n"
+	"			printf('Wrong rte_log2_u32(%x) val %x, expected"
+		" %x\n',\n"
+	"				i, compare, base);\n"
+	"			return TEST_FAILED;\n"
+	"		}\n"
+	"		compare = rte_log2_u64((uint64_t)i);\n"
+	"		if (base != compare) {\n"
+	"			printf('Wrong rte_log2_u64(%x) val %x, expected"
+		" %x\n',\n"
+	"				i, compare, base);\n"
+	"			return TEST_FAILED;\n"
+	"		}\n"
+	"	}\n"
+	"	return 0;\n"
+	"}\n";
 
 static const char * const compress_test_bufs[] = {
 	test_buf_alice,
 	test_buf_shakespeare,
-	test_buf_pascal
+	test_buf_c_code
 };
 
 #endif /* TEST_COMPRESSDEV_TEST_BUFFERS_H_ */
-- 
2.17.1


             reply	other threads:[~2020-01-14 11:57 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-14 11:56 Artur Trybula [this message]
2020-01-14 12:33 ` Trahe, Fiona
2020-01-15 15:54   ` Akhil Goyal
2020-01-17 21:51     ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2020-01-20 13:54       ` Mcnamara, John
2020-01-20 14:33         ` Thomas Monjalon
2020-01-20 15:00           ` Trahe, Fiona
2020-01-20 18:00           ` Mcnamara, John
2020-01-27 10:59             ` Mcnamara, John
2020-02-06  9:37 ` [dpdk-dev] [PATCH v2] " Artur Trybula
2020-02-12 13:25   ` Akhil Goyal
2020-02-12 13:31     ` Thomas Monjalon
2020-02-12 14:12       ` Akhil Goyal
2020-02-12 14:56         ` Trybula, ArturX
2020-02-13  9:30           ` Akhil Goyal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200114115656.14611-1-arturx.trybula@intel.com \
    --to=arturx.trybula@intel.com \
    --cc=adamx.dybkowski@intel.com \
    --cc=akhil.goyal@nxp.com \
    --cc=dev@dpdk.org \
    --cc=fiona.trahe@intel.com \
    --cc=marcinx.danilewicz@intel.com \
    --cc=shallyv@marvell.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git