Tcl Source Code

Check-in [518ab3c556]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:cpu-count (performance counter) recognition is rewritten (also resolves gcc warning: suggest parentheses around '&&' within '||')
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | sebres-8-5-event-perf-branch
Files: files | file ages | folders
SHA3-256: 518ab3c556cd4642cf541ffe2d1866c0ad3de1a95cb9141c4075e6dde05bf6ab
User & Date: sebres 2019-03-08 04:37:12
Context
2019-03-08
04:38
merge 8.5 (fixed performance test for short exec-time) check-in: 177092d5da user: sebres tags: sebres-8-5-event-perf-branch
04:37
cpu-count (performance counter) recognition is rewritten (also resolves gcc warning: suggest parenth... check-in: 518ab3c556 user: sebres tags: sebres-8-5-event-perf-branch
04:08
merge 8.5 - timerate is part of Tcl now (since TIP#527 got merged), conflicts resolved, merge-points... check-in: 1ca0b19a51 user: sebres tags: sebres-8-5-event-perf-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to win/tclWinTime.c.

697
698
699
700
701
702
703

704


705
706
707
708
709
710
711
712

713
714



715
716
717
718
719
720
721
		 */

		SYSTEM_INFO systemInfo;
		unsigned int regs[4];

		GetSystemInfo(&systemInfo);


		if (TclWinCPUID(0, regs) == TCL_OK


			&& regs[1] == 0x756e6547	/* "Genu" */
			&& regs[3] == 0x49656e69	/* "ineI" */
			&& regs[2] == 0x6c65746e	/* "ntel" */
			&& TclWinCPUID(1, regs) == TCL_OK
			&& (( ((regs[0]&0x00000F00) == 0xF00) /* Pentium 4 */
			   || ((regs[0]&0x00000F00) == 0x600) ) /* or compatible (VM) */
			&& ((regs[0] & 0x0FF00000)	/* Extended family (bits 20-27) */
			|| (regs[3] & 0x10000000)))	/* Hyperthread (bit 28) */

			|| (((regs[1]&0x00FF0000) >> 16) >= 2 /* CPU count */
			    || systemInfo.dwNumberOfProcessors >= 2)) {



		    timeInfo.perfCounterAvailable = TRUE;
		} else {
		    timeInfo.perfCounterAvailable = FALSE;
		}

	    }
#endif /* above code is Win32 only */






>
|
>
>
|







>
|
<
>
>
>







697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717

718
719
720
721
722
723
724
725
726
727
		 */

		SYSTEM_INFO systemInfo;
		unsigned int regs[4];

		GetSystemInfo(&systemInfo);

		if ( systemInfo.dwNumberOfProcessors >= 2
		  || (TclWinCPUID(0, regs) == TCL_OK
		    && (
		    	(
			   regs[1] == 0x756e6547	/* "Genu" */
			&& regs[3] == 0x49656e69	/* "ineI" */
			&& regs[2] == 0x6c65746e	/* "ntel" */
			&& TclWinCPUID(1, regs) == TCL_OK
			&& (( ((regs[0]&0x00000F00) == 0xF00) /* Pentium 4 */
			   || ((regs[0]&0x00000F00) == 0x600) ) /* or compatible (VM) */
			&& ((regs[0] & 0x0FF00000)	/* Extended family (bits 20-27) */
			|| (regs[3] & 0x10000000)))	/* Hyperthread (bit 28) */
			)
			|| ((regs[1]&0x00FF0000) >> 16) >= 2 /* CPU count */

		    )
		  )
		) {
		    timeInfo.perfCounterAvailable = TRUE;
		} else {
		    timeInfo.perfCounterAvailable = FALSE;
		}

	    }
#endif /* above code is Win32 only */