public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen
@ 2020-11-03  8:51 rguenth at gcc dot gnu.org
  2020-11-03  9:08 ` [Bug testsuite/97688] " ubizjak at gmail dot com
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-11-03  8:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

            Bug ID: 97688
           Summary: check_vect doesn't detect AVX2 on zen
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: testsuite
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

Running on a zen2 machine (3900X) check_vect() doesn't detect AVX2 which
asks for

    /* Determine what instruction set we've been compiled for, and detect
       that we're running with it.  This allows us to at least do a compile
       check for, e.g. SSE4.1 when the machine only supports SSE2.  */
# if defined(__AVX2__)
    want_level = 7, want_b = bit_AVX2;

but __get_cpuid returns 0 for b

__maxlevel is 16

and regs after cpuid are

(gdb) info reg 
rax            0x0                 0
rbx            0x0                 0
rcx            0x0                 0
rdx            0x0                 0
rsi            0x68747541          1752462657
rdi            0x0                 0

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
@ 2020-11-03  9:08 ` ubizjak at gmail dot com
  2020-11-03  9:18 ` rguenth at gcc dot gnu.org
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: ubizjak at gmail dot com @ 2020-11-03  9:08 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
AVX2 should be detected using __get_cpuid_count, because a sub-leaf needs to be
specified for leaf 7.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
  2020-11-03  9:08 ` [Bug testsuite/97688] " ubizjak at gmail dot com
@ 2020-11-03  9:18 ` rguenth at gcc dot gnu.org
  2020-11-03  9:19 ` rguenth at gcc dot gnu.org
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-11-03  9:18 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, it doesn't work on a i7-8565U either ...

Doesn't work means check_vect () does exit (0).  Those do not end up
UNSUPPORTED (not sure if using a magic exit code to communicate this
would be possible).

Looks like $rcx is not cleared before 'cpuid' and we get garbage?!

If I set $rcx to zero it works.  The comment in cpuid.h says

/* At least one cpu (Winchip 2) does not set %ebx and %ecx
   for cpuid leaf 1. Forcibly zero the two registers before
   calling cpuid as a precaution.  */

but it does the clearing only for constant level (doesn't work at -O0
which is where I debugged check_vect).  At -O2 I see

Dump of assembler code for function check_vect:
   0x0000000000400680 <+0>:     push   %rbx
   0x0000000000400681 <+1>:     mov    $0x4006c0,%esi
   0x0000000000400686 <+6>:     mov    $0x4,%edi
   0x000000000040068b <+11>:    callq  0x400490 <signal@plt>
=> 0x0000000000400690 <+16>:    xor    %eax,%eax
   0x0000000000400692 <+18>:    cpuid  
   0x0000000000400694 <+20>:    cmp    $0x6,%eax
   0x0000000000400697 <+23>:    jbe    0x4006a5 <check_vect+37>
   0x0000000000400699 <+25>:    mov    $0x7,%eax
   0x000000000040069e <+30>:    cpuid  
   0x00000000004006a0 <+32>:    and    $0x20,%ebx
   0x00000000004006a3 <+35>:    jne    0x4006ac <check_vect+44>
   0x00000000004006a5 <+37>:    xor    %edi,%edi
   0x00000000004006a7 <+39>:    callq  0x4004a0 <exit@plt>
   0x00000000004006ac <+44>:    xor    %esi,%esi
   0x00000000004006ae <+46>:    mov    $0x4,%edi
   0x00000000004006b3 <+51>:    pop    %rbx
   0x00000000004006b4 <+52>:    jmpq   0x400490 <signal@plt>

so no zeroing of the regs of the result of the __maxlevel call and
we call cpuid with

rax            0x7                 7
rbx            0x68747541          1752462657
rcx            0x444d4163          1145913699
rdx            0x69746e65          1769238117
rsi            0x7fffffffd8b0      140737488345264
rdi            0x0                 0

and on zen2 get

rax            0x0                 0
rbx            0x0                 0
rcx            0x0                 0
rdx            0x0                 0

on i7-8565U the garbage is similar:

rax  0x7
rbx  0x756e6547
rcx  0x6c65746e
rdx  0x49656e69

with same all-zero result.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
  2020-11-03  9:08 ` [Bug testsuite/97688] " ubizjak at gmail dot com
  2020-11-03  9:18 ` rguenth at gcc dot gnu.org
@ 2020-11-03  9:19 ` rguenth at gcc dot gnu.org
  2020-11-03  9:40 ` ubizjak at gmail dot com
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-11-03  9:19 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org
   Last reconfirmed|                            |2020-11-03

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ah.  So I guess

diff --git a/gcc/testsuite/gcc.dg/vect/tree-vect.h
b/gcc/testsuite/gcc.dg/vect/tree-vect.h
index 5d8d9eba3f8..c4b81441216 100644
--- a/gcc/testsuite/gcc.dg/vect/tree-vect.h
+++ b/gcc/testsuite/gcc.dg/vect/tree-vect.h
@@ -52,7 +52,7 @@ check_vect (void)
     want_level = 1, want_d = bit_SSE2;
 # endif

-    if (!__get_cpuid (want_level, &a, &b, &c, &d)
+    if (!__get_cpuid_count (want_level, 0, &a, &b, &c, &d)
        || ((b & want_b) | (c & want_c) | (d & want_d)) == 0)
       exit (0);
   }

will work.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2020-11-03  9:19 ` rguenth at gcc dot gnu.org
@ 2020-11-03  9:40 ` ubizjak at gmail dot com
  2020-11-03 10:14 ` cvs-commit at gcc dot gnu.org
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: ubizjak at gmail dot com @ 2020-11-03  9:40 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Richard Biener from comment #3)
> Ah.  So I guess
> 
> diff --git a/gcc/testsuite/gcc.dg/vect/tree-vect.h
> b/gcc/testsuite/gcc.dg/vect/tree-vect.h
> index 5d8d9eba3f8..c4b81441216 100644
> --- a/gcc/testsuite/gcc.dg/vect/tree-vect.h
> +++ b/gcc/testsuite/gcc.dg/vect/tree-vect.h
> @@ -52,7 +52,7 @@ check_vect (void)
>      want_level = 1, want_d = bit_SSE2;
>  # endif
>  
> -    if (!__get_cpuid (want_level, &a, &b, &c, &d)
> +    if (!__get_cpuid_count (want_level, 0, &a, &b, &c, &d)
>         || ((b & want_b) | (c & want_c) | (d & want_d)) == 0)
>        exit (0);
>    }
> 
> will work.

Exactly.  The patch is pre-approved.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2020-11-03  9:40 ` ubizjak at gmail dot com
@ 2020-11-03 10:14 ` cvs-commit at gcc dot gnu.org
  2020-11-03 10:18 ` cvs-commit at gcc dot gnu.org
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-11-03 10:14 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:

https://gcc.gnu.org/g:8414529156e0bca37647c440c71beeca1d04ac86

commit r11-4647-g8414529156e0bca37647c440c71beeca1d04ac86
Author: Richard Biener <rguenther@suse.de>
Date:   Tue Nov 3 10:24:02 2020 +0100

    testsuite/97688 - fix check_vect () with __AVX2__

    This fixes the cpuid check to always specify a subleaf zero
    which is required to detect AVX2 and doesn't hurt for level one.
    Without this fix we get zero runtime coverage when -mavx2 is
    specified.

    2020-11-03  Richard Biener  <rguenther@suse.de>

            PR testsuite/97688
            * gcc.dg/vect/tree-vect.h (check_vect): Fix the x86 cpuid
            check to always specify subleaf zero.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2020-11-03 10:14 ` cvs-commit at gcc dot gnu.org
@ 2020-11-03 10:18 ` cvs-commit at gcc dot gnu.org
  2020-11-03 10:19 ` cvs-commit at gcc dot gnu.org
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-11-03 10:18 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:

https://gcc.gnu.org/g:725244355f83de56f8692abc6c0e1b3d4d248198

commit r10-8968-g725244355f83de56f8692abc6c0e1b3d4d248198
Author: Richard Biener <rguenther@suse.de>
Date:   Tue Nov 3 10:24:02 2020 +0100

    testsuite/97688 - fix check_vect () with __AVX2__

    This fixes the cpuid check to always specify a subleaf zero
    which is required to detect AVX2 and doesn't hurt for level one.
    Without this fix we get zero runtime coverage when -mavx2 is
    specified.

    2020-11-03  Richard Biener  <rguenther@suse.de>

            PR testsuite/97688
            * gcc.dg/vect/tree-vect.h (check_vect): Fix the x86 cpuid
            check to always specify subleaf zero.

    (cherry picked from commit 8414529156e0bca37647c440c71beeca1d04ac86)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2020-11-03 10:18 ` cvs-commit at gcc dot gnu.org
@ 2020-11-03 10:19 ` cvs-commit at gcc dot gnu.org
  2020-11-03 10:20 ` cvs-commit at gcc dot gnu.org
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-11-03 10:19 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-9 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:

https://gcc.gnu.org/g:e42cb1d48035b85a43adb202433ff0193c151410

commit r9-9021-ge42cb1d48035b85a43adb202433ff0193c151410
Author: Richard Biener <rguenther@suse.de>
Date:   Tue Nov 3 10:24:02 2020 +0100

    testsuite/97688 - fix check_vect () with __AVX2__

    This fixes the cpuid check to always specify a subleaf zero
    which is required to detect AVX2 and doesn't hurt for level one.
    Without this fix we get zero runtime coverage when -mavx2 is
    specified.

    2020-11-03  Richard Biener  <rguenther@suse.de>

            PR testsuite/97688
            * gcc.dg/vect/tree-vect.h (check_vect): Fix the x86 cpuid
            check to always specify subleaf zero.

    (cherry picked from commit 8414529156e0bca37647c440c71beeca1d04ac86)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2020-11-03 10:19 ` cvs-commit at gcc dot gnu.org
@ 2020-11-03 10:20 ` cvs-commit at gcc dot gnu.org
  2020-11-03 10:21 ` rguenth at gcc dot gnu.org
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-11-03 10:20 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-8 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:

https://gcc.gnu.org/g:80b6f6cf6374a6541a7515d7bfef1a3506db2a3d

commit r8-10606-g80b6f6cf6374a6541a7515d7bfef1a3506db2a3d
Author: Richard Biener <rguenther@suse.de>
Date:   Tue Nov 3 10:24:02 2020 +0100

    testsuite/97688 - fix check_vect () with __AVX2__

    This fixes the cpuid check to always specify a subleaf zero
    which is required to detect AVX2 and doesn't hurt for level one.
    Without this fix we get zero runtime coverage when -mavx2 is
    specified.

    2020-11-03  Richard Biener  <rguenther@suse.de>

            PR testsuite/97688
            * gcc.dg/vect/tree-vect.h (check_vect): Fix the x86 cpuid
            check to always specify subleaf zero.

    (cherry picked from commit 8414529156e0bca37647c440c71beeca1d04ac86)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2020-11-03 10:20 ` cvs-commit at gcc dot gnu.org
@ 2020-11-03 10:21 ` rguenth at gcc dot gnu.org
  2020-11-03 12:18 ` hjl.tools at gmail dot com
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-11-03 10:21 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed everywhere.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2020-11-03 10:21 ` rguenth at gcc dot gnu.org
@ 2020-11-03 12:18 ` hjl.tools at gmail dot com
  2020-11-03 12:40 ` rguenther at suse dot de
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: hjl.tools at gmail dot com @ 2020-11-03 12:18 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #10 from H.J. Lu <hjl.tools at gmail dot com> ---
FWIW, x86 source in gcc testsuite should be converted to
__builtin_cpu_supports().

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2020-11-03 12:18 ` hjl.tools at gmail dot com
@ 2020-11-03 12:40 ` rguenther at suse dot de
  2020-11-03 12:51 ` hjl.tools at gmail dot com
  2020-11-03 13:18 ` rguenth at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: rguenther at suse dot de @ 2020-11-03 12:40 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #11 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 3 Nov 2020, hjl.tools at gmail dot com wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688
> 
> --- Comment #10 from H.J. Lu <hjl.tools at gmail dot com> ---
> FWIW, x86 source in gcc testsuite should be converted to
> __builtin_cpu_supports().

The check_vect () is quite convenient since it allows you to
build-test with target support you cannot run on via
--target_board=unix/-mavx512f for example (well, it is
incomplete and support for avx512 testing hasn't been added).

I don't see how the same functionality can be achieved with
a series of __builtin_cpu_supports checks (unless we only
adjust tree-vect.h to do

# if defined(__AVX2__)
  if (!__builtin_cpu_supports ("magic"))
    exit (0);
# ...

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2020-11-03 12:40 ` rguenther at suse dot de
@ 2020-11-03 12:51 ` hjl.tools at gmail dot com
  2020-11-03 13:18 ` rguenth at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: hjl.tools at gmail dot com @ 2020-11-03 12:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> ---
Created attachment 49495
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49495&action=edit
Something like this.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug testsuite/97688] check_vect doesn't detect AVX2 on zen
  2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
                   ` (11 preceding siblings ...)
  2020-11-03 12:51 ` hjl.tools at gmail dot com
@ 2020-11-03 13:18 ` rguenth at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-11-03 13:18 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97688

--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #12)
> Created attachment 49495 [details]
> Something like this.

Doesn't look much better IMHO.

A __builtin_cpu_supported_as_compiled () would be nice to have though
(match up what is supported with the active -mISA flags).

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-11-03 13:18 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03  8:51 [Bug testsuite/97688] New: check_vect doesn't detect AVX2 on zen rguenth at gcc dot gnu.org
2020-11-03  9:08 ` [Bug testsuite/97688] " ubizjak at gmail dot com
2020-11-03  9:18 ` rguenth at gcc dot gnu.org
2020-11-03  9:19 ` rguenth at gcc dot gnu.org
2020-11-03  9:40 ` ubizjak at gmail dot com
2020-11-03 10:14 ` cvs-commit at gcc dot gnu.org
2020-11-03 10:18 ` cvs-commit at gcc dot gnu.org
2020-11-03 10:19 ` cvs-commit at gcc dot gnu.org
2020-11-03 10:20 ` cvs-commit at gcc dot gnu.org
2020-11-03 10:21 ` rguenth at gcc dot gnu.org
2020-11-03 12:18 ` hjl.tools at gmail dot com
2020-11-03 12:40 ` rguenther at suse dot de
2020-11-03 12:51 ` hjl.tools at gmail dot com
2020-11-03 13:18 ` rguenth at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).