public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PR80582][X86] Add missing __mm256_set[r] intrinsics
@ 2017-05-09  9:35 Koval, Julia
  2017-05-09  9:42 ` Jakub Jelinek
  0 siblings, 1 reply; 4+ messages in thread
From: Koval, Julia @ 2017-05-09  9:35 UTC (permalink / raw)
  To: GCC Patches; +Cc: Uros Bizjak, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 543 bytes --]

Hi,

This patch implements missing intrinsics:
_mm256_set_m128
_mm256_set_m128d
_mm256_set_m128i
_mm256_setr_m128
_mm256_setr_m128d
_mm256_setr_m128i

gcc/
	* config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d,
	_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d,
	_mm256_setr_m128i): New intrinsics.

gcc/testsuite/
	* gcc.target/i386/avx-vinsertf128-256-1: Test new intrinsics.
	* gcc.target/i386/avx-vinsertf128-256-2: Ditto.
	* gcc.target/i386/avx-vinsertf128-256-3: Ditto.

Ok for trunk?

Thanks,
Julia

[-- Attachment #2: 0001-set_.patch --]
[-- Type: application/octet-stream, Size: 5591 bytes --]

From c08b3cee7906a5506ff1e81f2837e9c80e90638c Mon Sep 17 00:00:00 2001
From: julia <jkoval@gkticlel801.igk.intel.com>
Date: Tue, 9 May 2017 11:22:01 +0300
Subject: [PATCH] set_

---
 gcc/config/i386/avxintrin.h                        | 38 +++++++++++++++++++++-
 .../gcc.target/i386/avx-vinsertf128-256-1.c        | 22 +++++++++++--
 .../gcc.target/i386/avx-vinsertf128-256-2.c        | 20 ++++++++++--
 .../gcc.target/i386/avx-vinsertf128-256-3.c        | 20 ++++++++++--
 4 files changed, 92 insertions(+), 8 deletions(-)

diff --git a/gcc/config/i386/avxintrin.h b/gcc/config/i386/avxintrin.h
index 20c5a07..d69dc0b 100644
--- a/gcc/config/i386/avxintrin.h
+++ b/gcc/config/i386/avxintrin.h
@@ -746,6 +746,7 @@ _mm256_broadcast_ps (__m128 const *__X)
   return (__m256) __builtin_ia32_vbroadcastf128_ps256 (__X);
 }
 
+
 #ifdef __OPTIMIZE__
 extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_insertf128_pd (__m256d __X, __m128d __Y, const int __O)
@@ -770,7 +771,6 @@ _mm256_insertf128_si256 (__m256i __X, __m128i __Y, const int __O)
 						     (__v4si)__Y,
 						     __O);
 }
-
 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_insert_epi32 (__m256i __X, int __D, int const __N)
 {
@@ -1484,6 +1484,42 @@ _mm256_castsi128_si256 (__m128i __A)
   return (__m256i) __builtin_ia32_si256_si ((__v4si)__A);
 }
 
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_m128 ( __m128 __H, __m128 __L)
+{
+  return _mm256_insertf128_ps (_mm256_castps128_ps256 (__L), __H, 1);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_m128d (__m128d __H, __m128d __L)
+{
+  return _mm256_insertf128_pd (_mm256_castpd128_pd256 (__L), __H, 1);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_m128i (__m128i __H, __m128i __L)
+{
+  return _mm256_insertf128_si256 (_mm256_castsi128_si256 (__L), __H, 1);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_m128 (__m128 __L, __m128 __H)
+{
+  return _mm256_set_m128 (__H, __L);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_m128d (__m128d __L, __m128d __H)
+{
+  return _mm256_set_m128d (__H, __L);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_m128i (__m128i __L, __m128i __H)
+{
+  return _mm256_set_m128i (__H, __L);
+}
+
 #ifdef __DISABLE_AVX__
 #undef __DISABLE_AVX__
 #pragma GCC pop_options
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
index 2390e5c..a255c47 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
@@ -16,8 +16,8 @@ void static
 avx_test (void)
 {
   int i;
-  union256d u, s1;
-  union128d s2;
+  union256d u, u2, u3, s1;
+  union128d s2, s3;
   double e [4];
 
   s1.x = _mm256_set_pd (2134.3343,1234.635654,453.345635,54646.464356);
@@ -29,7 +29,23 @@ avx_test (void)
 
   for (i=0; i < 2; i++)
     e[i + (OFFSET * 2)] = s2.a[i];
-
+ 
   if (check_union256d (u, e))
     abort ();
+
+  s3.x = _mm_set_pd (435345.43535, 23235.316545);
+  u2.x = _mm256_set_m128d(s3.x, s2.x);
+  u3.x = _mm256_setr_m128d(s2.x, s3.x);
+
+  for (i = 0; i < 2; i++)
+    e[i] = s2.a[i];
+
+  for (i = 0; i < 2; i++)
+    e[i + 2] = s3.a[i];
+
+  if (check_union256d (u2, e))
+    abort ();
+
+  if (check_union256d (u3, e))
+    abort ();
 }
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
index ce0b23b..edae309 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
@@ -16,8 +16,8 @@ void static
 avx_test (void)
 {
   int i;
-  union256 u, s1;
-  union128 s2;
+  union256 u, u2, u3, s1;
+  union128 s2, s3;
   float e [8];
 
   s1.x = _mm256_set_ps (39.467, 45.789, 78.342, 67.892, 76.678, 12.963, 29.746, 24.753);
@@ -32,4 +32,20 @@ avx_test (void)
 
   if (check_union256 (u, e))
     abort ();
+
+  s3.x = _mm_set_ps (435.435, 25.35, 324.76, 32.11);
+  u2.x = _mm256_set_m128(s3.x, s2.x);
+  u3.x = _mm256_setr_m128(s2.x, s3.x);
+
+  for (i = 0; i < 4; i++)
+    e[i] = s2.a[i];
+
+  for (i = 0; i < 4; i++)
+    e[i + 4] = s3.a[i];
+
+  if (check_union256 (u2, e))
+    abort ();
+
+  if (check_union256 (u3, e))
+    abort ();
 }
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
index 89834d5..3398692 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
@@ -16,8 +16,8 @@ void static
 avx_test (void)
 {
   int i;
-  union256i_d u, s1;
-  union128i_d s2;
+  union256i_d u, u2, u3, s1;
+  union128i_d s2, s3;
   int e [8];
 
   s1.x = _mm256_set_epi32 (39467, 45789, 78342, 67892, 76678, 12963, 29746, 24753);
@@ -32,4 +32,20 @@ avx_test (void)
 
   if (check_union256i_d (u, e))
     abort ();
+
+  s3.x = _mm_set_epi32 (43534, 23235, 6545, 11);
+  u2.x = _mm256_set_m128i(s3.x, s2.x);
+  u3.x = _mm256_setr_m128i(s2.x, s3.x);
+
+  for (i = 0; i < 4; i++)
+    e[i] = s2.a[i];
+
+  for (i = 0; i < 4; i++)
+    e[i + 4] = s3.a[i];
+
+  if (check_union256i_d (u2, e))
+    abort ();
+
+  if (check_union256i_d (u3, e))
+    abort ();
 }
-- 
2.5.5


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

* Re: [PR80582][X86] Add missing __mm256_set[r] intrinsics
  2017-05-09  9:35 [PR80582][X86] Add missing __mm256_set[r] intrinsics Koval, Julia
@ 2017-05-09  9:42 ` Jakub Jelinek
  2017-05-09 10:01   ` Koval, Julia
  0 siblings, 1 reply; 4+ messages in thread
From: Jakub Jelinek @ 2017-05-09  9:42 UTC (permalink / raw)
  To: Koval, Julia; +Cc: GCC Patches, Uros Bizjak, Kirill Yukhin

On Tue, May 09, 2017 at 09:28:40AM +0000, Koval, Julia wrote:
> Hi,
> 
> This patch implements missing intrinsics:
> _mm256_set_m128
> _mm256_set_m128d
> _mm256_set_m128i
> _mm256_setr_m128
> _mm256_setr_m128d
> _mm256_setr_m128i
> 
> gcc/
> 	* config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d,
> 	_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d,
> 	_mm256_setr_m128i): New intrinsics.
> 
> gcc/testsuite/
> 	* gcc.target/i386/avx-vinsertf128-256-1: Test new intrinsics.
> 	* gcc.target/i386/avx-vinsertf128-256-2: Ditto.
> 	* gcc.target/i386/avx-vinsertf128-256-3: Ditto.
> 
> Ok for trunk?

--- a/gcc/config/i386/avxintrin.h
+++ b/gcc/config/i386/avxintrin.h
@@ -746,6 +746,7 @@ _mm256_broadcast_ps (__m128 const *__X)
   return (__m256) __builtin_ia32_vbroadcastf128_ps256 (__X);
 }
 
+
 #ifdef __OPTIMIZE__
 extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_insertf128_pd (__m256d __X, __m128d __Y, const int __O)
@@ -770,7 +771,6 @@ _mm256_insertf128_si256 (__m256i __X, __m128i __Y, const int __O)
 						     (__v4si)__Y,
 						     __O);
 }
-
 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_insert_epi32 (__m256i __X, int __D, int const __N)
 {

Why the above extra whitespace changes?  Especially the latter looks
undesirable, there should be one empty line in between different inline
functions.


	Jakub

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

* RE: [PR80582][X86] Add missing __mm256_set[r] intrinsics
  2017-05-09  9:42 ` Jakub Jelinek
@ 2017-05-09 10:01   ` Koval, Julia
  2017-05-10 18:06     ` Uros Bizjak
  0 siblings, 1 reply; 4+ messages in thread
From: Koval, Julia @ 2017-05-09 10:01 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: GCC Patches, Uros Bizjak, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 1857 bytes --]

Sorry, fixed that.

Thanks,
Julia

-----Original Message-----
From: Jakub Jelinek [mailto:jakub@redhat.com] 
Sent: Tuesday, May 09, 2017 11:36 AM
To: Koval, Julia <julia.koval@intel.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
Subject: Re: [PR80582][X86] Add missing __mm256_set[r] intrinsics

On Tue, May 09, 2017 at 09:28:40AM +0000, Koval, Julia wrote:
> Hi,
> 
> This patch implements missing intrinsics:
> _mm256_set_m128
> _mm256_set_m128d
> _mm256_set_m128i
> _mm256_setr_m128
> _mm256_setr_m128d
> _mm256_setr_m128i
> 
> gcc/
> 	* config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d,
> 	_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d,
> 	_mm256_setr_m128i): New intrinsics.
> 
> gcc/testsuite/
> 	* gcc.target/i386/avx-vinsertf128-256-1: Test new intrinsics.
> 	* gcc.target/i386/avx-vinsertf128-256-2: Ditto.
> 	* gcc.target/i386/avx-vinsertf128-256-3: Ditto.
> 
> Ok for trunk?

--- a/gcc/config/i386/avxintrin.h
+++ b/gcc/config/i386/avxintrin.h
@@ -746,6 +746,7 @@ _mm256_broadcast_ps (__m128 const *__X)
   return (__m256) __builtin_ia32_vbroadcastf128_ps256 (__X);  }
 
+
 #ifdef __OPTIMIZE__
 extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))  _mm256_insertf128_pd (__m256d __X, __m128d __Y, const int __O) @@ -770,7 +771,6 @@ _mm256_insertf128_si256 (__m256i __X, __m128i __Y, const int __O)
 						     (__v4si)__Y,
 						     __O);
 }
-
 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_insert_epi32 (__m256i __X, int __D, int const __N)  {

Why the above extra whitespace changes?  Especially the latter looks undesirable, there should be one empty line in between different inline functions.


	Jakub

[-- Attachment #2: 0001-set_.patch --]
[-- Type: application/octet-stream, Size: 4997 bytes --]

From e1a3bc9e7f8428dd1d4cd84eb10425844e07681e Mon Sep 17 00:00:00 2001
From: julia <jkoval@gkticlel801.igk.intel.com>
Date: Tue, 9 May 2017 11:22:01 +0300
Subject: [PATCH] set_

---
 gcc/config/i386/avxintrin.h                        | 36 ++++++++++++++++++++++
 .../gcc.target/i386/avx-vinsertf128-256-1.c        | 22 +++++++++++--
 .../gcc.target/i386/avx-vinsertf128-256-2.c        | 20 ++++++++++--
 .../gcc.target/i386/avx-vinsertf128-256-3.c        | 20 ++++++++++--
 4 files changed, 91 insertions(+), 7 deletions(-)

diff --git a/gcc/config/i386/avxintrin.h b/gcc/config/i386/avxintrin.h
index 20c5a07..678368c 100644
--- a/gcc/config/i386/avxintrin.h
+++ b/gcc/config/i386/avxintrin.h
@@ -1484,6 +1484,42 @@ _mm256_castsi128_si256 (__m128i __A)
   return (__m256i) __builtin_ia32_si256_si ((__v4si)__A);
 }
 
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_m128 ( __m128 __H, __m128 __L)
+{
+  return _mm256_insertf128_ps (_mm256_castps128_ps256 (__L), __H, 1);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_m128d (__m128d __H, __m128d __L)
+{
+  return _mm256_insertf128_pd (_mm256_castpd128_pd256 (__L), __H, 1);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_set_m128i (__m128i __H, __m128i __L)
+{
+  return _mm256_insertf128_si256 (_mm256_castsi128_si256 (__L), __H, 1);
+}
+
+extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_m128 (__m128 __L, __m128 __H)
+{
+  return _mm256_set_m128 (__H, __L);
+}
+
+extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_m128d (__m128d __L, __m128d __H)
+{
+  return _mm256_set_m128d (__H, __L);
+}
+
+extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm256_setr_m128i (__m128i __L, __m128i __H)
+{
+  return _mm256_set_m128i (__H, __L);
+}
+
 #ifdef __DISABLE_AVX__
 #undef __DISABLE_AVX__
 #pragma GCC pop_options
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
index 2390e5c..a255c47 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
@@ -16,8 +16,8 @@ void static
 avx_test (void)
 {
   int i;
-  union256d u, s1;
-  union128d s2;
+  union256d u, u2, u3, s1;
+  union128d s2, s3;
   double e [4];
 
   s1.x = _mm256_set_pd (2134.3343,1234.635654,453.345635,54646.464356);
@@ -29,7 +29,23 @@ avx_test (void)
 
   for (i=0; i < 2; i++)
     e[i + (OFFSET * 2)] = s2.a[i];
-
+ 
   if (check_union256d (u, e))
     abort ();
+
+  s3.x = _mm_set_pd (435345.43535, 23235.316545);
+  u2.x = _mm256_set_m128d(s3.x, s2.x);
+  u3.x = _mm256_setr_m128d(s2.x, s3.x);
+
+  for (i = 0; i < 2; i++)
+    e[i] = s2.a[i];
+
+  for (i = 0; i < 2; i++)
+    e[i + 2] = s3.a[i];
+
+  if (check_union256d (u2, e))
+    abort ();
+
+  if (check_union256d (u3, e))
+    abort ();
 }
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
index ce0b23b..edae309 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
@@ -16,8 +16,8 @@ void static
 avx_test (void)
 {
   int i;
-  union256 u, s1;
-  union128 s2;
+  union256 u, u2, u3, s1;
+  union128 s2, s3;
   float e [8];
 
   s1.x = _mm256_set_ps (39.467, 45.789, 78.342, 67.892, 76.678, 12.963, 29.746, 24.753);
@@ -32,4 +32,20 @@ avx_test (void)
 
   if (check_union256 (u, e))
     abort ();
+
+  s3.x = _mm_set_ps (435.435, 25.35, 324.76, 32.11);
+  u2.x = _mm256_set_m128(s3.x, s2.x);
+  u3.x = _mm256_setr_m128(s2.x, s3.x);
+
+  for (i = 0; i < 4; i++)
+    e[i] = s2.a[i];
+
+  for (i = 0; i < 4; i++)
+    e[i + 4] = s3.a[i];
+
+  if (check_union256 (u2, e))
+    abort ();
+
+  if (check_union256 (u3, e))
+    abort ();
 }
diff --git a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
index 89834d5..3398692 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
@@ -16,8 +16,8 @@ void static
 avx_test (void)
 {
   int i;
-  union256i_d u, s1;
-  union128i_d s2;
+  union256i_d u, u2, u3, s1;
+  union128i_d s2, s3;
   int e [8];
 
   s1.x = _mm256_set_epi32 (39467, 45789, 78342, 67892, 76678, 12963, 29746, 24753);
@@ -32,4 +32,20 @@ avx_test (void)
 
   if (check_union256i_d (u, e))
     abort ();
+
+  s3.x = _mm_set_epi32 (43534, 23235, 6545, 11);
+  u2.x = _mm256_set_m128i(s3.x, s2.x);
+  u3.x = _mm256_setr_m128i(s2.x, s3.x);
+
+  for (i = 0; i < 4; i++)
+    e[i] = s2.a[i];
+
+  for (i = 0; i < 4; i++)
+    e[i + 4] = s3.a[i];
+
+  if (check_union256i_d (u2, e))
+    abort ();
+
+  if (check_union256i_d (u3, e))
+    abort ();
 }
-- 
2.5.5


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

* Re: [PR80582][X86] Add missing __mm256_set[r] intrinsics
  2017-05-09 10:01   ` Koval, Julia
@ 2017-05-10 18:06     ` Uros Bizjak
  0 siblings, 0 replies; 4+ messages in thread
From: Uros Bizjak @ 2017-05-10 18:06 UTC (permalink / raw)
  To: Koval, Julia; +Cc: Jakub Jelinek, GCC Patches, Kirill Yukhin

On Tue, May 9, 2017 at 11:42 AM, Koval, Julia <julia.koval@intel.com> wrote:
> Sorry, fixed that.
>
> Thanks,
> Julia
>
> -----Original Message-----
> From: Jakub Jelinek [mailto:jakub@redhat.com]
> Sent: Tuesday, May 09, 2017 11:36 AM
> To: Koval, Julia <julia.koval@intel.com>
> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
> Subject: Re: [PR80582][X86] Add missing __mm256_set[r] intrinsics
>
> On Tue, May 09, 2017 at 09:28:40AM +0000, Koval, Julia wrote:
>> Hi,
>>
>> This patch implements missing intrinsics:
>> _mm256_set_m128
>> _mm256_set_m128d
>> _mm256_set_m128i
>> _mm256_setr_m128
>> _mm256_setr_m128d
>> _mm256_setr_m128i
>>
>> gcc/
>>       * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d,
>>       _mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d,
>>       _mm256_setr_m128i): New intrinsics.
>>
>> gcc/testsuite/
>>       * gcc.target/i386/avx-vinsertf128-256-1: Test new intrinsics.
>>       * gcc.target/i386/avx-vinsertf128-256-2: Ditto.
>>       * gcc.target/i386/avx-vinsertf128-256-3: Ditto.
>>
>> Ok for trunk?

Approved and committed to mainline SVN.

Thanks,
Uros.

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

end of thread, other threads:[~2017-05-10 18:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-09  9:35 [PR80582][X86] Add missing __mm256_set[r] intrinsics Koval, Julia
2017-05-09  9:42 ` Jakub Jelinek
2017-05-09 10:01   ` Koval, Julia
2017-05-10 18:06     ` Uros Bizjak

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).