Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
MIGraphX
Commits
d36f72c5
Commit
d36f72c5
authored
Aug 19, 2022
by
Paul
Browse files
Format
parent
8b5b6758
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
7 deletions
+8
-7
src/targets/gpu/kernels/include/migraphx/kernels/array.hpp
src/targets/gpu/kernels/include/migraphx/kernels/array.hpp
+8
-7
No files found.
src/targets/gpu/kernels/include/migraphx/kernels/array.hpp
View file @
d36f72c5
...
@@ -68,23 +68,23 @@ namespace migraphx {
...
@@ -68,23 +68,23 @@ namespace migraphx {
return z; \
return z; \
}
}
template
<
class
T
>
template
<
class
T
>
constexpr
auto
is_vectorizable
()
constexpr
auto
is_vectorizable
()
{
{
return
not
is_same
<
T
,
bool
>
{}
and
(
is_fundamental
<
T
>
{}
or
is_same
<
T
,
half
>
{});
return
not
is_same
<
T
,
bool
>
{}
and
(
is_fundamental
<
T
>
{}
or
is_same
<
T
,
half
>
{});
}
}
template
<
class
T
>
template
<
class
T
>
constexpr
auto
array2vec
(
T
x
)
constexpr
auto
array2vec
(
T
x
)
{
{
using
value_type
=
typename
T
::
value_type
;
using
value_type
=
typename
T
::
value_type
;
constexpr
auto
size
=
decltype
(
x
.
size
()){};
constexpr
auto
size
=
decltype
(
x
.
size
()){};
using
type
=
vec
<
value_type
,
size
>
;
using
type
=
vec
<
value_type
,
size
>
;
static_assert
(
size
!=
3
,
"Wrong size"
);
static_assert
(
size
!=
3
,
"Wrong size"
);
return
__builtin_bit_cast
(
type
,
x
);
return
__builtin_bit_cast
(
type
,
x
);
}
}
template
<
class
T
,
class
U
,
index_int
N
>
template
<
class
T
,
class
U
,
index_int
N
>
constexpr
void
vec2array
(
T
&
x
,
vec
<
U
,
N
>
v
)
constexpr
void
vec2array
(
T
&
x
,
vec
<
U
,
N
>
v
)
{
{
if
constexpr
(
not
is_const
<
T
>
{})
if
constexpr
(
not
is_const
<
T
>
{})
...
@@ -97,8 +97,9 @@ constexpr auto array_for_each(T& x, Ts&... xs)
...
@@ -97,8 +97,9 @@ constexpr auto array_for_each(T& x, Ts&... xs)
MIGRAPHX_ASSERT
((
x
.
size
()
==
xs
.
size
()
and
...));
MIGRAPHX_ASSERT
((
x
.
size
()
==
xs
.
size
()
and
...));
return
[
&
](
auto
f
)
{
return
[
&
](
auto
f
)
{
constexpr
auto
size
=
decltype
(
x
.
size
()){};
constexpr
auto
size
=
decltype
(
x
.
size
()){};
if
constexpr
((
is_vectorizable
<
typename
T
::
value_type
>
()
or
(
is_vectorizable
<
typename
Ts
::
value_type
>
()
or
...))
and
if
constexpr
((
is_vectorizable
<
typename
T
::
value_type
>
()
or
size
<=
8
and
size
>
1
and
(
size
%
2
==
0
))
(
is_vectorizable
<
typename
Ts
::
value_type
>
()
or
...))
and
size
<=
8
and
size
>
1
and
(
size
%
2
==
0
))
{
{
[
&
](
auto
v
,
auto
...
vs
)
{
[
&
](
auto
v
,
auto
...
vs
)
{
f
(
v
,
vs
...);
f
(
v
,
vs
...);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment