►
From YouTube: .NET Design Reviews: Hardware Intrinsics (ARM)
Description
We're looking at these issues today:
https://github.com/dotnet/corefx/issues/26574
https://github.com/dotnet/corefx/issues/26179
https://github.com/dotnet/corefx/issues/26180
https://github.com/dotnet/corefx/issues/26181
https://github.com/dotnet/corefx/issues/26182
https://github.com/dotnet/corefx/issues/26183
https://github.com/dotnet/corefx/issues/26185
https://github.com/dotnet/corefx/issues/26220
https://github.com/dotnet/corefx/issues/26527
https://github.com/dotnet/corefx/issues/26564
https://github.com/dotnet/corefx/issues/26581
A
Start
swing
and
I
remember
to
mute
myself
so
I,
don't
you
might
say
that
you
sit
there,
so
we
want
to
look
at
the
intrinsic
stuff
that
Tanner
I
think
view
of
us
like
a
long
time
ago,
and
so
this
time
you
want
to
go
over
the
specifics
that
are
relevant
for
the
slightly
odd
design,
I
guess.
But
so
how
do
you
want
to
do
this?
We
want
to
go
with
a
matter
issue.
First,
you
want
to
discuss
the
individual
items.
Then,
how
do
you
want
to
draft
this
I?
Think.
B
B
B
C
C
This
one
was
this
one
unit
on
the
screen
right
now
was
drafted
to
cover
the
Cindy
issues,
so
the
Cindy
subset
of
the
intrinsics,
which
is
what
I
thought
I,
was
going
to
be
working
on
heavily
at
the
time
and
I
did
work
on
somewhat
so
because
I
started
filing
a
whole
bunch
of
API
API
proposals,
I
started
thinking,
maybe
I
should
stress
and
naming
conventions.
An
argument
could,
rather
than
sort
of
minutely,
reviewing
everyone,
and
so
this
document
really
came
from
a
review
of
the
arm.
C
A
We're
talking
about
this
before
they
I
mean
bases.
You
only
said
like.
If
you
look
at
the
instruction
set,
there's
very
often
just
abbreviations.
If
you
just
spell
them
all,
you
basically
get
a
name
that
is
probably
good
enough
for
the
most
cases,
unless
it's
something
that
is
really
really
butchered
or
something
yeah,
but
I
also
don't
need
to
innovate
too
much
here,
because
I
think
some
of
them
will
probably
be.
A
You
know
very
domain
specific
where
it's
just
you
have
to
know
what
those
terms
mean
in
order
to
make
sense
of
it,
but
I
think
that's
generally
acceptable.
Right,
I
mean
I.
Think
the
last
example
the
tenor
brought
up
was
you
know
few
small
2-ply
add
I
mean
like
its
OC
up.
You
have
to
know
what
this
thing
does
and
then,
but
it
gives
you
enough
keywords
to
Google
as
well,
so
I
think
it's
better
than
some
weird
abbreviation.
That
is
very
common,
but
not
specific
enough.
So
then,
so
you
said
you
want
to.
B
B
A
B
Are
the
base
shared
types
between
both
x86
and
arm
yeah,
if
only
I
couldn't
even
get
down?
This
would
be
super
helpful,
yeah
and
then
I
put
a
link
in
the
Skype
chat,
which
is
to
the
official
arm
tage
further
entry
for
their
safety.
In
physics,
it's
listed
under
their
neon
page
when
it
covers
a
32
and
a
64.
C
So
one
of
the
things
that
sort
of
drove
the
decision
to
put
this
in
a
separate
arm,
64
no
choices-
was
erm.
32
was
the
discrepancy
in
the
support
of
types.
So
in
order
to
make
it
clear
which
types
are
supported,
the
the
64
or
hardware
intrinsics
were
kept
in
a
separate
name
case
from
arm
32,
rv7
and.
B
E
I
remember
a
long
time
ago,
when
we
talked
about
three
six,
we
said
there
are
two
suspects
and
we
cannot
have
separate
classes
for
different
versions.
Yet
to
me
totally
makes
sense,
because
well,
spec
is
at
some
point
ratified,
and
it's
gloves
correct,
so
version
you
know.
2.1
will
always
get
this
instruction
when
we
separate
api's
into
different
classes
based
on
at
manufacture
of
the
chip
and
some
other
things
do
we
expect
it
to
change
over
time.
Like,
for
example,
today
we
say:
hey.
F
We
had
talked
about
I
believe
to
your
point.
We
had
talked
about
taking
functionality
that
was
common
to
multiple
different
chipsets
and
also
exposing
those
as
or
generic.
Ap
is
like
more
more
typical
dominant
in
the
eyes
in
addition
to
what's
being
displayed
here.
But
that's
exactly
the
issue
that
they're
the
concepts.
E
A
The
comment
I
believe
the
idea
of
these
ciders
that
they
are
always
ship
specific
right.
So
the
idea
is
that
they
are
all
supported
by
the
coach
and
in
the
sense
that
that
will,
if
we
call
them
that
would
just
omit
the
exact
up
code
that
the
architecture
supports.
And
if
you
want
to
omit
different
code
between
you
know,
arm
and
and
that's
the
x86.
You
were
supposed
to
write.
But
as
I
said,
there
are
some
that
we
already
put.
G
B
F
A
I
think
the
other
thing
is
like
we
don't
this
form
or
other
generics
in
the
work
typically
earlier,
that
you
need
to
have
the
right
way
molarity
as
well.
In
order
to
make
software
phobics
not
insane
I
mean
the
vector
ones
that
we
have
are
I
forgot
about.
The
measurement
was
about
was
like
3
X
lower
than
the
native
implementation,
which
basically
takes
away
all
the
video
right,
and
so
the
you
you
would
expect
X
1x,
crc32
or
whatever
like
when
you
have
an
intrinsic
rated.
So
it's
a
one-line
instruction.
A
Otherwise
you
have
to
I,
don't
know
four
or
five
lines
of
code
that
you
have
to
write
and
see,
see
sure
whatever
I
can
save
code
or
they
do
the
same
thing.
And
then
you
have,
you
know
sensible,
API,
right,
I,
guess
but
I
think
for
some
of
these
things
is
like
I,
don't
even
know
what
the
common
API
would
look
like
right.
Unless
you
did,
you
have
the
exact
same
instruction,
but
you
don't
think
it's
super
common.
B
A
G
B
Of
the
other
things
that
we've
that
needs
to
be
discussed
is
for
the
between
x86
and
arm
the
instructions.
Some
of
the
instructions
may
do
basically
the
same
thing,
but
they
may
have
different
conventions
like
on
x86,
you've
got
and
nan,
which
actually
functionally
does
a
not
and
and
you've
got
the
same
instruction
on
arm.
That
does
the
end
and
then
the
knot
instead,
but
we,
if
we
call
them
both
and
mod,
they
may
be
confusing
the
psalm
and.
A
Assert
to
me
and
honestly
for
the
intrinsics,
I
I,
don't
think
alignment
between
them
and
is
super
important,
I
think
the
design
like
the
you
know.
How
do
we,
how
do
we
expose
intrinsic,
should
follow
a
set
of
patterns
that
are
the
same?
But
you
know
if
one
instruction
said
this
operation
a
full
of
operation
media.
A
The
way
does
it
the
other
way
around
I
would
say:
I
wouldn't
try
to
abstract
this,
because
the
whole
point
of
these
things
is
that
they're
so
close
to
the
metal
that
if
you
know
what
you're
doing
you
can
do,
what
you
want
to
do
and
then
there
is
completely
separated
from
the
intrinsic
sense
higher
level.
Api
is
that
we
try
to
say
on
how
we
expose
you
know
a
high
level
operation.
I
To
the
developers
and
that's
the
place
where
we
try
to
align,
I
mean
another
organ
for
making.
These
low-level
is
presumably
sometimes
you'll,
be
translating
them
from
a
sample
or
something
is
really
an
actual
assembler.
So
you're
looking
for
him
now
well,
yeah
would
be
just
careful
health
IT
addresses
because.
F
B
H
The
binary
operators,
we
sing
always
left
and
right
on
a
binary
operator
only
on
an
associative
operator
because,
like
for
division,
I
think
if
we
normally
named
a
dividend
and
divisor
so
that
we're
telling
you
which
one
is
which,
especially
for
things
like
I,
guess,
the
rim
is
a
binary
right,
a
tuple
to
tuple.
So
we
need
the
name
that
one
yeah.
H
E
E
B
You
do
left
operator
right
and
you're
expected
to
know
the
semantics
of
what
the
live
birth
versus
the
right
is
I'm,
very
suppose
the
trinsic
for
different,
no
there's
a
proposal
for
that
be
it
falls
under
that
general
category
of
this
is
part
of
the
base
cpu
it's
on
every
CPU
ever,
but
it
may
have
platform
or
architecture
specific
behavior
that
is
not
easily
representable
in
c-sharp
code.
We.
J
E
B
F
F
A
E
F
B
B
There
holes
there's,
there's
no
intrinsic,
they
all
have
software
fallback,
but
there
are
some
that
will
win.
The
underlying
CPU
supports
it
amid
the
direct
instruction
like
math
dot
round,
when
you
have
a
CPU,
that's
a
sequel.
One
support
will
emit
round
PS
instead
I
sin
square
root
since,
like
the
don't
limit
square
root,
SS,
okay,.
A
D
I
B
At
least
on
x86
today,
there
are
a
few
functions
which
are
x64
specific
they're
generally.
The
Milano
overloads,
which
will
report,
as
is
supported
because
there
in
the
general
is
a.
But
if
you
try
and
execute
them
on
a
32-bit
machine,
they
will
fail
and
that's
something
that
we're
supposed
to
discuss
next
week
with
the
x86
design
review.
There.
A
B
Now
the
ones
that
will
throw
exceptions
are
like,
for
example,
if
you've
got
something
that
requires
a
constant
parameter
and
that
parameter
only
accepts
a
you
know,
0
through
128,
and
doesn't
support
129
through
255.
It
will
throw
an
argument
out
of
range
exception
right
and
that's
done
by
the
jail.
Ok.
B
Yeah
for
so
for
any
instructions
that
throw
an
exception
like,
for
example,
if
it
requires
an
aligned
parameter,
then
the
instruction
will
just
raise
the
access
violation
exception,
because
the
JED
already
handles
all
of
that
behavior
from
the
instructions,
but
otherwise
they
just
return.
Whatever
result,
the
instruction
returns
with
no
fiddling
around
for
bits
or
anything
to.
B
H
C
This
is
that,
if
you
looked
at
that
table
of
see
empty
instructions,
this
is
sort
of
the
outline
of
the
classes
of
instructions.
I
was
sort
of
keeping
track,
of
which
ones
I
had
created
an
API
proposal
for
and
which
ones
I,
hadn't
I
think
this
is
a
little
out
of
date.
I
think
there's
proposals
for
a
few
that
that
I've
been
implemented
that
aren't
in
here.
Yet,
as
did
the
Associated
API
proposal
members
and
isn't
here,
okay.
B
B
Besides
that,
for
you,
there
are
a
number
of
functions
which
are
basically
helper
functions
that
represent
core
functionality
like
reinterpret,
cast
or
create
a
vector
64
and
set
each
element
or
set
all
off
elements
to
one
value
that
are,
they
basically
have
a
software
implementation
that
we
build
up
using
the
other
instructions,
they're
not
contracted
to
do.
If
you
go
to
instruction
for
those
there's
been
discussion
and
requests
on.
Do
we
keep
these
separate
between
the
two
or
do
we
provide?
A
C
So
so
one
of
the
issues
is
that,
like
iron
54
supports
vector,
sixty-four
vector
128
here,
I
think,
if
that's
the
right
name
in
collection
and
the
x86
supported,
120
and
256.
So
if
you
start
trying
to
figure
out,
what's
supported
keeping
it
with
the
intrinsics,
we've
had
this
sort
of
idea
of
there's
any
supported
property
and
every
one
of
these
classes
right,
so
that
the
program
can
figure
it
out.
If
you
start
moving
it
outside
of
the
intrinsic
sense
may
be
a
little
harder.
Well.
A
I
would
then
say
that
you're
not
sitting
all
you
know,
elements
in
the
vector
to
specific
failure.
I
would
hope
this
would
be
a
you
know.
A
BCI
defied
API
that
happens
to
use
intrinsic,
but
I,
don't
have
to
write
it
myself,
like
I,
can
just
call
vector
to
128
set
all
to
0
and
then,
when
unarmed
it
does.
This
on
x86
does
the
other
thing
to
be
as
efficient
as
possible,
but
I
don't
have
to
write
that
code,
but.
B
I
think
Steve's
point
is
for
something
like
arm
which
doesn't
support,
vector
256.
Would
we
also
have
a
vector
256
is
supported
to
say
like
this?
If
you
called
one
functions
like
set
0,
would
that
just
work
at
the
JIT
level
and
the
jig
would
have
to
do
the
software
implementation
for
those
specific
general
or
would
we
just
say
it
throws
on
arm
his
arm?
Doesn't
have
the
hardware
support
for
this?
Well,
I
would
I.
A
Would
say
if
it's
not
even
it's
in
the
transit
namespace,
it
should
not
fail,
because
that
would
be
generally.
The
expectation
of
these
API
is
now
I.
Think
for
I,
don't
know
like
for
the
vector
types.
My
understanding
was
that
they
will
always
be
supported,
because
we
can
always
have
a
video
on
the
stack
of
that
size.
I
would
say
in
those
cases
say
yeah.
You
should
probably
have
an
LS
at
the
very
bottom.
A
A
A
A
Unarmed,
yes,
can
I
use,
vector,
256
well,
I
would
say
that
you
know
you
will
have
a
bunch
of
types.
Yeah
then
are
in
the
unphysical
namespace.
Those
have
been
supported
property
because
they
represent
instruction
sets
and
those
that
take
a
vector
128.
Yes,
you
operate
on
that
line,
but
then
one
with
the
director
128
by
itself
is
uses.
It
just
holds.
You
know
the
data,
so
you
can
use.
You
can
use
all
the
instructions
that
are
supported
and
the
ones
there's.
C
E
A
Not
those
kind
of
strange
look
as
I'm
saying
is
that
it
depends
on
where
the
API
is,
but
if
the
API
is
on
vector,
it
should
work
everywhere.
If
the
API
is
on
an
instruction
set
specific
type
well,
then
it
would
work
the
instructions
that
are
supported,
so
it's
a
pretty
straight
forward
and
I
think
will
develop
and
we
already
made
vector
256
work
on
our
it
just
doesn't
do
anything
well.
G
G
B
A
J
A
H
H
A
I
mean
the
other
video,
the
other
option
that
we
have
is.
We
don't
have
back
to
128,
256
and
intrinsic
answers.
We
actually
move
them
into
the
you
know,
architecture,
specific
settings,
but
then
you
have
like
well
go
into
the
eyes.
One
arm
has
one
and
they're
all
effectively
the
same
they're,
just
under
28
bits
and.
B
B
B
For
forearm
64,
as
far
as
I've
been
able
to
see
the
majority
of
instructions
support
all
ten
types
arm.
Thirty-Two,
that's
not
the
case.
They
generally
support
nine
out
of
the
ten
types
where
they
don't
support
double,
but
this
is
a
similar
question
that
we've
had
the
with
arm.
They
kind
of
exposed
everything
all
at
once,
rather
than
in
multiple
versions
of
the
ISA,
whereas.
B
B
B
Because
the
that's
one
of
the
things
we're
part
of
the
analyzer
that
I
want
to
get
written
and
that
I
started
working
on
in
my
spare
time
is
like,
if
you're,
using
the
legal
type
for
that's,
not
one
of
the
ten
primitive,
then
throw
or
you
know,
give
a
compilation,
error
and
also
flag
things
like
you're
doing
this.
But
that's
equivalent
to
this
instruction,
which
is
more
performant
as
Uproxx
I
mean.
A
I
think
vector
of
T
currently
like
the
the
the
other
one
that
we
were
three
years
ago
only
supports
I,
think
one
of
ten
times
right
yeah,
so
you
can
compile
a
code
that
uses
any
type,
but
at
one
time
we
will
fail
before
the
tab.
Initialization
error,
which
seems
like
something
I,
would
probably
like
us
to
do,
because
it's
the
next
best
thing
we
can
do.
A
It
will
be
Everest
want
to
support
other
traits
drugs,
probably
not
right,
and
ideally,
if
we
shall
ever
ads-
and
you
know
where
T
primitive,
you
know-
then
I
would
like
to
be
able
to
use
it
and
not
have
to
worry
about
backwards.
Compatibility
the
only
backwards.
Compare
there
would
be
somebody
managed
to
compile
source
that
they
never
load
it,
which
I
don't
think,
is
a
reasonable
combat
bar
I'm.
F
T
numeric
or
something
yeah,
yeah
yeah,
just
as
a
point
of
reference
from
the
analyzer
own,
make
sure
that
there's
at
least
a
way
to
turn
off
that
morning,
because
we
do
have
code
pouts,
where
we
have
generic
methods
where
we
take
a
T
and
we
do
all
the
checks
upfront
and
then
we
call
it
the
vector
routine.
Under
the
covers
right,
no
end
up
the
chip
will
just
sort
things
out.
It
would
be
that
if
those
no
longer
compiled
great
well.
D
C
Should
be
done
or
not,
but
that's
that
so
the
set
of
supported
types
is
not
the
full
set.
So
in
general
we
expanded
out
if
the
set
of
the
ten
primitive
types
was
not
fully
supported,
ICU
or
these
special
cases
where
the
types
don't
match
right.
If
you
want
to
change
the
type
that
makes
complete
sense
anyway,
we'll
do
that.
B
C
K
C
B
B
I
E
C
B
B
E
B
That
people
may
think
that
it
has
a
particular
semantics
when
it
really
doesn't
like.
What's
a
motor
like
the
semantics
at
the
instruction
level
is
that
it
returns
a
type
that
is
on
the
side,
so
it
may
have
special
handling
or
endowment
value
as
compared
to
what
c-sharp
may
do
if
you
do
end
up
min
value,
absolute
value,
which
su
short,
throws
right
now,
they've
getting
home
ethical
helps,
that's
good,
so
it
doesn't.
E
C
C
Mean
strictly
speaking,
you
could
treat
this
as
the
return
value
as
a
signed
vector
it
just
would
have
negative
values
in
it,
but
you
could
put
them
in
it
afterwards.
Well,
it
could
have
their
values
right.
I
mean
the
absolute
value
is
going
to
remove
the
negative
values,
but
you
could
put
them
in
again.
H
F
B
And
we've
tried
there
at
least
I've
tried
to
make
every
account
for
like
we
don't
do
special
handling.
We
don't
do
transformations
that
the
user
might
not
expect
because,
for
the
most
part,
they're
writing
performance,
oriented
code,
they're,
taking
the
risk
factor
on,
and
we
don't
want
to
introduce
unexpected
performance
issues
when
they
thought
that
it
would
do
one
thing
we
said:
do
something
else:
how
would
they
develop
a
reinterpret
house?
One
of
these
things
is
your
own
API
for
on
Intel
and
x86.
B
F
B
A
B
Think
unless
you're
riding
a
general-purpose
helper
library
like
what
vector
of
T
is
then
you're
probably
going
to
be
writing
an
algorithm.
That's
typed
like
you'll.
Be
writing
a
vectorized
implementation
of
string
dot
index
of
in
your
type
will
explicitly
be
you
sure
right
or
you'll
be
doing
math
dot.
You
know
sealing
and
you'll
explicitly
be
using
float
or
double.
A
B
F
F
B
E
You
know
what
could
be
useful,
adding
remarks,
basically
the
comments
that
you
guys
just
made
add
them
to
remarks
of
these
80
eyes,
because
actually
I
can
imagine
people
coding
and
like
where
the
heck
is
this
overload.
And
then
the
remarks
would
say
you
know
doesn't
make
sense
because
multiplying
two
very.
F
H
F
Ended
what
we've
done
for
things
like
span
of
T?
Is
we
actually
create
the
method
and
have
it
obsolete
with
a
message
so
that
you
know
exactly
what's
happening?
Really:
yeah
we've
done
before
what
the
API
we
did
it
with
good
hash
profanity,
for
instance.
Okay!
Well,
because
we
didn't
Kevin
I
mean
exists.
F
A
We
feel
like
I,
don't
think
it's
a
bad
idea,
because
the
volume
of
these
kind
of
things
is
also
like
Jeremy's
a
bit
down.
I
really
got
boobs
anymore,
without
even
have
all
the
group
pages
anymore.
We
just
put
them
all
on
one
giant
page.
So
do
you
want
every
single
overload
to
specify
every
other
type
of
support
that
seems
a
bit
over
the
top?
At
this
point,
it
might
be
easier
to
just
specify
that,
because
Bessie,
you
have
to
say,
I,
don't
support
you
long
on
each
of
these
overloads
right,
which
seems
like
adding.
H
A
H
A
H
And
it
would
be
weird
if
we
add
it
now
and
then
in
two
years
a
new
instruction
set
extension
comes
out,
and
then
we
probably
go
back
and
be
like.
Don't
call
this
one
call
the
one
that
lives
over
there
and
you'd
be
like
why
it's
like,
because
we
break
these
classes
up
by
instructions
that
architecture
and
it
lives
over
there.
Okay,
people.
D
E
F
B
The
real
concern
is
probably
going
in
the
real
problem
time
when
we're
going
to
run
into
these
issues
is
you're
going
to
have
plenty
of
people
who
are
familiar
with
x86
code,
who
want
to
add
an
arm
path
before
the
go
and
assume
that
arm
operates
the
same
and
it
doesn't,
and
that's
probably
where
people
are
going
to
start
running
into
things.
Leslie.
E
H
Mean
so
I
think
it's
like
a
I
mean
I
would
expect
that
our
documentation
has
for
each
class
a
link
to
like
this
is
where
you
go,
get
the
instruction
set
architecture,
dhaka,
that's
pretty
much
the
level
of
maybe
that's
a
good
stuff.
That's,
where
weakens
where
we
stop
being
able
to
help
you
and
everything
else.
Is
you
need
to
understand
what
the
side
effects
of
this
are,
and
it's
all
copyright,
the
company
that
made
the
instruction
set
well
I,
would.
A
B
H
Like
arm
64
Dawson,
well
yeah,
it
is
it.
Is
that
reasonable,
based
off
the
instruction
set
architecture-
name
that
is
being
implemented
here
like
because
if
they
do
at
vector,
128
one
multiply
or
whatever
this
later
with
like
people
might
want
I
guess
I'm
asking
is
Cindy
name
from
the
instruction
set?
Are
we
naming
it
for
the
concept
these
are
for
naming
it
for
the
concept
we're
doing
people
at
this
service.
B
C
There
are
some
extensions
already
existing
I,
don't
know
about
the
proposal
part.
But
if
you
look
at
this
comment
about
this
I
be
a
a
64
PR
0
e
l1,
that's
the
identifier
in
the
CPU.
So
there's
a
field
in
there
called
advanced,
MD
and
well
that's
equal
0,
which
is
basically
base
the
base.
Md
support
for
arms
54,
which
basically
exists
on
every
arm,
64
processor,
except
I,
think
the
ones
that
well,
except
for
prostitution,
to
be
given
an
exception
for
various
architecture
of
specific
uses.
C
So
what
I
think
there
isn't
one
that
Cynthia
extensions?
This
comes
later,
it's
like
long,
polynomial
multiplies,
and
so
they
just
call
there's
a
name
for
that
extension,
and
so
this
would
be
another
class.
It's
at
like
Cindy,
long
polynomial
or
something
I
don't
happen
to
remember
what
I
proposed
or,
if
I
proposed
it
yet,
but
it
would
have
to
be
in
a
separate
class.
So
any
extension
would
go
in
this
upper
class
and
the
name
would
have
to
correspond
to
the
architectural
proposal.
So
yes,
that
she
one
of
the
big
ones,
is
sve.
C
H
On
this,
one
in
particular,
I'm
just
concerned
that,
because
while
this
may
match
the
name
of
the
instruction
set,
it's
also
the
name
of
the
concept
and
that
that
made
that
might
actually
just
confuse
people
as
the
extent
as
they're
looking
for
things
from
the
extensions.
And
so,
if
there's
a
work
that
we
could
put
on
here
that
identifies
that
this
is
the
same.
The
instruction
set
from
whatever
so
whether
that's
a
BBC
MD
or
17,
0
or
whatever,
like
I.
Just
something
that
helps
people
understand
like
this
is
only
one
particular
set
of
instructions.
E
H
E
K
B
Well
well,
the
difference
is
that
for
x86
AMD
64
is
a
true
extension
on
top
of
32-bit,
whereas
with
arm
arm
32
and
arm
64
are
technically
despair.
N't
ISAs
and
you
can't
say
that
arm.
64
is
an
extension
of
the
previous,
so
so
like
with
x86.
We
just
have
an
x86
namespace
and
then
an
SSD
class.
We
don't
have
different
for
a
32
versus
64-bit,
so
this
year,
yeah,
where.
C
H
Is
what
does
that
yeah
like
anybody
who
wants
to
be
trying
to
do
arm
in
arm
64?
They
would
just
only
use
using
up
to
a
certain
point
that
they
I
guess
they
can
be
using
alias
the
namespace
and
then
it's
arm
60
4.18
d
dot,
whatever
in
arm
that,
maybe
not
whatever
I
guess.
I
just
think
a
language
that
I
work
around
yes,
yeah
I
got.
B
B
B
A
A
A
Oh,
it's
clear
to
me
that
if
it's
an
SS,
c1
I
go
to
the
SSE
and
if
it's
necessary
to
go
to
SSA
to
and
if
I
meant
on,
sse2
I
do
to
inheritance,
esse,
one
and
SSA
to
on
the
same
time,
I'd
I
mean
that
it
needs
to
be
somewhat
sensible
that
you
can
reasonably
know
which
time
you
need
to
go
to
in
order
to
get
a
particular
instruction.
Yeah.
B
It
looks
like
in
the
manual
it's
adb,
CMD,
it's
four
bits.
Rather
than
one
and
a
bit
pattern
of
one
one.
One
one
means
it's
not
implemented
a
bit
pattern
of
0
0,
0
1
implements
it
implements
everything
plus
half
support
and
0
indicates
that
it
implements
integer,
single
integer
and
single
sport,
so
you're
saying
they
have
they've
got
it
so
they've
got
two
forms
of
advanced
in
me,
Oh
God,
so
we
could
call
it
a.
B
B
H
H
H
H
E
E
K
Maybe
I
set
up
two
seconds,
but
like
a
lot
of
big
pattern,
is
you
have
like
a
line
of
hips
right?
If
a
BX
is
supported,
then
do
something
if
SSE
is
supported,
then
do
thing
if
ADB
sim
d0
is
supported.
It's
kind
of
like
sse
and
AVX
are
very
x86
specific
names
right,
ABB,
simp,
D
isn't
really
oh
I
mean
it.
Is
it
an
arm
specific
term?
That's
the
one
that
I
just
look
at
this
code
and
it'd
be
like
Oh.
Obviously
this
is
I'm
on
an
ARM
chip.
We.
I
H
A
B
C
The
proposals,
so
these
were
I,
think
these
are
the
ones
that
were
actually
produced
by
the
cindy
vector
the
vector,
the
cindy
implementation
of
the
vector
class
and
so
they've
this.
We
were
really
easy
to
do
so.
They're
like
well
as
ready
as
proposals.
It
was
in
the
tube
just
before
shipping
to
one
and
I
was
trying
to
sort
of
divvy
up
work
that
could
be
delivered
by
two
one,
so
yeah.
So
this
is
strategically
low
hanging
fruit,
okay,
so
these
are
sort
of
numeric,
simple
ops,
that
already.
H
Exist
to
drop
a
bottom
lolly
walk
out
the
door.
We
didn't
talk
about
the
generic
already,
but
given
that
adb,
CMD
zero
is
the
these
ten
types
and
adb
71
is
the
half
type.
Should
we
pre
expand
all
these
generics
to
be
very
clear,
which
ones
are
the
zero
and
which
ones
are
the
one
because
happy?
You
would
write
the
line
for
half
and
then
we're
just
going
to
throw
at
runtime
because
you
generic
expanded
when
you
want
them.
H
C
B
B
The
search
is
well,
the
search
is
just
to
match
the
method
name,
not
the
type
name
as
well.
I,
don't
think
the
type
names
are
done
separately
after
the
method.
Name
search
but
I
have
the
il
level.
Two
methods
that
have
the
same
body
can
be
collapsed
to
the
same
ion
signature,
but
if
they're
all
recursive,
then
they
don't
collapse.
They
each
have
their
own
method,
body
entry
and
so
the
library
gets
bigger.
So
that's
not.
B
E
B
E
B
Is
like
at
least
a
thousand
and
arms
going
to
be
justice
finding,
but
for
for
the
the
thousand
only
impacts
like
the
x86,
because
we've
got
the
multiple
builds
of
courland,
so
the
x86
core
live
bro
instructions
throw
P
NSE
directly,
so
those
collapse
into
one
method
body.
So
just
the
Intel
take
space
for
x86
and
it
doesn't
take
any
weights
on
our
vice
versa.
A
A
B
E
A
E
E
B
C
A
B
What
we
did
with
x86
is
that
for
anything
that
takes
or
returns
a
mask,
we
returned
the
same
type
as
the
input.
So
if
it
took
a
float,
it
returns
a
float
and
for
anything
that
took
a
control
word.
Instead,
we
would
take
and
return
an
integer
type
rather
than
like
a
floating
point
type
and
the
reason
we
did.
That
was
because,
when
you're
working
with
masks,
you
would
generally
create
and
construct
those
based
on
the
result
of
another
operation
like,
for
example,
compare
equal
where's
for
the
control
word,
the
usual
be
constructing.
B
B
I
J
Main
reason
for
distinguishing
that
I
mean
in
some
sense
logically
you'd
like
to
treat
the
masks.
They
were
more
like
an
integer.
Those
are
not
really
used
as
floats,
but
it
complicates
the
usage
model
to
have
to
figure
out
that.
Oh,
this
is
a
float.
So
what
I
need
to
hold
the
mask
is
an
int.
E
B
Could
do
whatever
you
want
it,
but
like,
for
example,
with
floats,
you
might
be
doing
something
like
doing
an
end
which
will
return
a
float
and
that
can
be
your
mask
and
and
should
return
a
float.
So
you
don't
want
to
have
something
like
compare
equal
return,
not
a
float,
and
you
have
to
do
something
special
with
it
to
make
it
work
with
the
rest
of
the
float
in
operations.
Yeah.
A
Remember
let
me
do
this
for
vector
of
teeth.
Rémi
exercise
writing
code
like
it
became
like
this
horrific
thing
where
you
kept
costing
between
menus,
but
the
problem
seok's
have
to
cast
the
right
size,
so
that
becomes
really
like
it's
on
as
trivial
as
you
think
it
is
for
the
most
part
and
like
usually
don't
hear
about
the
wages
because
you
just
passed
them
on
an
agency
like
things
compose
much
nicer
in
code,
and
it
becomes
much
less
annoying
to
me.
But
yeah
I
mean
writing
back
to
rice
code
in
general.
B
Perfect
example
really
is
like
you:
do
you
do
some
operation
you
compare
to
determine
which
which
values
you
want
to
operate
on,
and
then
you
pass
the
that
compare
to
and
to
mask
out
everything
right
that
you
don't
care
about,
and
if
you
return
an
integer
type
for
the
mask,
then
you
have
to
reinterpret
casts
to
pass
it
from
the
end
and
that's
the
most
common
case.
So
you
don't
want
to
make
that
overly
verbose
to.
G
B
Think
for
x86
most
the
time
we
call
it
control,
but
that's
also
what
it's
referred
to
in
the
spec.
If
they've
arm
reverse
to
it
and
select,
that's
probably
better
name
for
them,
select
or
select
row
select,
I
would
think
whatever
that
whatever
the
spec
actually
refers
to
it
has
I
would
think
would
be
the
better
name.
B
F
C
A
B
Yeah,
this
is
one
of
the
ones
where
I
think
resting
six.
We
were
done
in
Tudor
type,
because
the
user
will
probably
be
constructing
the
bitwise
pattern
for
left
versus
right
right.
It
doesn't
correspond
to
an
entire
field
of
left
versus
an
entire
field
of
right.
It's
an
individual
babe,
oh
I,
see
so
like,
like
with
with
with
x86
there's
some
masks
which
are
like
we
take
the
upper
bit
of
each
field
right
and
then
select
vertices.
E
C
F
A
C
B
B
B
A
A
B
B
A
B
I
A
A
E
B
And
x64,
it's
formally
called
the
base
instruction
set,
I,
don't
know
about
arm,
but
I
think
I
made
it
up
for
arm
yeah,
yeah
I
think
base
probably
makes
the
most
sense
for
the
term.
If
you
were
given
that
these
are
is
a
names
calling
it
the
base
is
a
make
sense.
You
could
call
it
basic
if
you
wanted.
B
F
A
D
B
B
And
there's
the
that
same
comment,
therefore,
byte
index
must
be
a
jet.
Constant
also
applies
to
a
lot
of
the
x86
instructions,
and
what
we
do
today
is
if
the
user
passes
in
a
non
constant
value,
then
we
emit
a
fallback
which
is
basically
a
jump
table
for
each
index,
so
it's
not
as
efficient,
but
it
still
emits
the
contracted
instruction.
B
B
Do
we
need
another
to
support
and
switch
on?
Therefore,
those
extensions-
maybe
if
we
were
to
do
that,
we'd-
have
to
create
a
subclass
that
contain
just
the
64-bit
ones
right
because
there's
otherwise,
you
have
like
an
is
supported
for
five
or
six
different
methods,
individual
methods-
and
that
was
just
get
insane.
It's
probably
easier,
just
to
say,
don't
do
this
on
I
just
want
to
have
an
exam,
whether.
C
D
D
D
Class,
at
least
unless
I
say
I,
think
they
need
to
be
said.
Requests
especially
observe
over
this
different
types
of
this
wondering
whether
or
not
there's
something
that
people
can
check
to
determine
whether
this
is
going
to
succeed
without
having
to
hand
over
the
platform
a
supporting
exception.
I
would.
B
Hope
the
analyzer
would
cover
that,
and
we
just
tell
people
if
you're
writing
these
instructions.
You
really
should
be
using
this
analyze.
Do
you
need
to
do
a
run
time
in
some
cases
or
maybe
cuz?
You
want
to
run
this
code
on
one
home
yeah,
but
then
you
just
do
and
I
don't
know
if
this
is
a
jet
constant
right
now,
what
it
probably
should
be
if
OS
architecture
or
a
process
architecture
is
x86
versus
X
excitable.
D
D
B
F
B
So
it
what
it
does
is
it
emits
a
jump
table
that
basically
says
switch
index
K
0,
and
then
it
emits
the
exact
instruction
with
the
zero
byte
encoding
case,
one
exact
instruction
with
the
one
byte
index.
So
it
still
calls
the
exact
instruction,
but
you're
only
expected
to
have
that
happen.
If
you
do
much
reflection
or
something
like.
B
D
B
K
That
should
be
just
an
arm
namespace.
We
put
it
there
in
case
of
that,
but
I
don't
there
is
anything
yet
what'll
be
the
end
of
the
world.
If
we
made
it
arm,
3264
is
top
level
and
then
later
said.
Oh,
these
are
common,
so
we
just
put
them
in
arm
like
as
a
side.
Namespace
they're,
not
nested,
but
I-
think
that.
B
E
F
B
D
Guess
maybe
I
didn't
specify,
but
they
were
they.
Gonna
have
the
same
type
names
and
it's
different
different
namespaces,
because
that's
going
to
potentially
cause
problems
if
you're
trying
to
make
the
right
call
yeah.
Like
me,
he
just
told
me
now
that
the
r32
is
gonna
have
a
same
type
name
as
well,
but
so.
G
D
E
C
B
Would
have
the
index
at
the
end?
Would
it
makes
sense
to
just
order
these
same
as
the
operand
order
of
the
instruction
and
not
care
about
matching
them
up?
I
think
that
would
also
make
the
runtime
handling
easier
to
understand
when
you're
looking
at
it,
because
then
you
don't
have
to
worry
about.
Oh
operand,
3
at
the
c-sharp
level,
is
really
operand
2
at
the
instruction
level,
and
so
I've
got
to
restore
them
and
have
comments
in
my
code
indicating
why
etc,
2
what
you're
translating
from.
C
B
B
B
Yeah,
this
is
one
of
the
ones
where
its
core
functionality-
that's
basically
both
it's
effectively
a
helper
method
for
initializing,
and
but
this
that
this
is
actually
instruction
on
arm
64
right.
Well,
it's
effectively
an
instruction
on
Intel
as
well,
but
and
I'm,
not
sure
if
it's
the
same
with
farm
64,
but
at
least
on
x86,
you
might
do
you
might
use
one
instruction
on
if
you
only
support
ssee.
C
B
C
C
A
Say
that
the
way
I
see
these
times
is
they
should
expose
effectively
almost
all
of
the
instructions
that,
if
that
makes
sense,
and
then,
as
Steve
said,
what
I
would
do
is
I
would
have
a
generic
setter
on
the
on
the
types
that
is
implemented
in
terms
of
those
and
on
arm.
It
might
just
be
calling
this
one
method
on
x86.
It
might
mean
either
calling
two
of
them
or
calling
different
ones
depending
on
how
far
the
spec
level
is
and
then
let's
situated.
So
what
would
the
common
idea
ii
would
like?
E
E
A
B
B
C
B
Was
basically
x86
does
it,
so
maybe
we
should
do
harm
the
same
way,
but
I
would
think
for
familiarity
with
people
who
already
doing
that
code.
We
should
be
calling
this
duplicate
instead
because,
like
for
the
C++
intrinsic,
it's
called
v
tube
underscore
in
underscore.
You
know
s8
for
signed
by,
and
so
people
will
not
go
to
advance
in
D
in
pipe
and
set
all
little
type
doop
and
expect
duplicate
to
come
up,
which.
A
F
B
B
A
Be
very
careful
with
doing
generics
at
this
level.
I
would
honestly
say
the
way
I
would
do
it
would.
I
would
rather
have
some
duplication
between
the
individual
Hardware
stuff
and
say
then
there
is
a
completely
non
right.
Look,
you
know
intrinsic
fine
generic
PCL
API
that
will
always
work
I.
Think
that's
a
way
better
way
to
factor
that
than
to
try
to
say.
Oh,
they
have
some
overlap.
B
D
F
B
This
is
one
of
those
cases
were
like
both
expose
it,
but
they're
quite
different
at
times
in
the
what
exactly
it
supports
that
this
might
be
a
case
of
if
we're
going
to
put
everything
under
an
arm
namespace.
If
we
can
look
at
the
spec
and
determine
that
they
are
identical
at
both
CPU
check
and
behavior
between
over
32
and
64,
we
should
just
call
it
crc32
or
whatever
that
I
say
is.
But
if
there's
actual
differences
between
the
two,
because
they're
technically
distinct
I
says
we
should
make
them
separate.
E
G
G
E
F
E
E
C
So
if
you
it
consistency,
makes
implication
easier
to
so
like
a
lot
of
this
is
table
German
implementation.
So
if
you
try
to
add,
exceptions
were
like
this
class
works
on
both
and
I.
Can't
answer
the
am
64
question.
The
supported
question
from
arm
64
code
then
make
it's
more
complicated
yeah,
but
that's
you
know
you
make
the
implement
it
to
make
it
do
the
right
thing
anyway.
So,
but
it
is
a
it's.
A
Me,
the
biggest
one
of
these
times
is
not
so
much
usability,
because
ability
is
what
it
is.
But
I
would
say
that
you
need
to
be
able
to
predict
where
stuff
will
run
and
when
it
will
play
all
right
and
that's
why
I
think
it's
worthwhile
to
just
mirror
the
reality
here
and
say
up
there.
Two
types,
two
different
things:
yeah.
A
F
A
F
B
E
C
C
C
E
A
C
C
F
F
B
C
C
B
B
F
A
F
B
C
Yeah
I
think
this
corresponds
to
a
move-in
arm,
64
jet,
but
if
the
move
is
to
the
same
register
that
move
just
gets
eliminated
because
the
static
cast
here
could
create
it,
because
it's
creating
a
new
object
that
could
go
into
a
new
register
just
because
you
cast
it
so
it
doesn't
mean
the
old
on
old
objects.
Gonna
disappear,
no
of
course,
but
it
seems
like
move.
Doesn't.
B
I
think
Steve's
at
what
seemed
was
just
saying,
was
how
the
static
cast
was
originally
implemented
for
x86
as
well,
which
was
we
basically
say
by
the
time
we
got
to
coach
and
if
target
register
and
source
register
were
the
same,
then
we
just
dropped
it.
Otherwise
we
did
a
move,
but
then
Carol
suggested
that
in
the
importer
we
just
eliminate
the
static
cast
there
you
know
and
then
there's
basically
you
never
see
static
has
passed
the
importer
so.
F
I
have
a
related
question
along
those
lines.
I
consider
api's
like
and
not
like
the
single
end
on
a
TR
is
the
JIT
free
to
say
you
have
vectors
a
and
B
you're
inverting
the
and
then
ending
it
with
a
you've
called
two
different
instructions,
but
I'm
still
going
to
collapse
into
a
single
hand.
Mode
is.
B
B
Like
active
all
the
native
compilers
do
this
in
other,
like
if
they
see
a
shuffle
by
like
0x
68,
they
convert
it
to
an
unpacked
low
instead
of
doing
the
shuffle,
because
it
does
the
same
logical
operation,
much
more
efficient
encoding.
We
don't
do
that
today
and
there's
still
an
open
issue
of
like.
Should
we
allow
this
or
should
we
just
say
we
will
never
do
this
and
we'll
rely
on
an
analyzer
to
tell
you.
You
should
be
doing
this
and
set
go
that
way.
C
B
There
are
some
users
who
want
us
to
add
either
ref
of
T
or
span
overloads
and
I
after
having
thought
this
over
a
lot
and
discussed
with
various
people.
I
am
against
it
and
the
reason
being
that
at
least
with
x86
oftentimes.
You
are
doing
this
with
performance
oriented
code,
and
you
are
wanting
to
do
things
like
work
with
a
large
number
of
elements
in
an
array,
and
so
the
typical
operation
should
be
I.
B
Pin
this
I
do
something
to
make
sure
the
rest
of
the
data
is
aligned
in
the
my
operate
on
all
the
data
as
if
it
was
a
line
till
the
end,
because
otherwise
the
GC
is
free
to
move
your
types
around
if
it's
in
a
span
or
a
rep,
and
you
that
will
kill
cache
locality,
that
will
kill
alignment
checks
and
everything
else.
So
in
the
end,
it
just
ends
up
being
better
for
users
to
pin
their
pipes
and
operate
it
under
the
assumption
that
has
been
pulled.
F
E
A
B
E
G
C
B
Us
from
having
us
in
the
future
service
so
Steve
to
answer
your
question,
the
reason
that
you
basically
have
to
pin
it
is
because
otherwise
the
JC
can
move.
It
can
move
the
the
underline
span
and
then
you're
stuck
with
oh
I,
read
from
address
X
and
now
I'm
reading
from
new
address
ax
rather
than
address
X
plus
one.
But.
C
B
B
No
longer
have
the
ability
to
say
this
was
definitely
aligned
because
it
was
before
because
it
needs
to
be
an
eigenvector
well,
at
least
on
the
x86
of
it
yeah
on
x86
there's
an
explicit
like
load
aligned
instruction,
which
basically
people
want
one
boundary.
It
objects
in
the
heap
are
aligned
to,
like
only.
B
B
A
E
E
A
B
F
A
B
Other
than
the
back
like
like
at
the
enterprise
level,
various
corporations
will
say,
like
I,
don't
care
what
you're
using
sha-1
for
just
don't
use
it.
So
it's
just
that
question
like
even
we
have
rules
like
you're
not
allowed
to
you
shot,
one
for
anything,
no
exceptions,
except
for
the
already
exposed
api's.
My.
F
A
A
E
C
E
A
F
K
A
What
I
would
know
what
I
would
say
that
it
depends
on
why
they're
named
this
way
right,
sometimes
they're,
just
lazy
to
just
name
buffer,
a
be
AVR
and
there's
no
reason
why
that
should
be
named
like
that
right
and
there's
other
cases
where
you
named
a
parameter
coming
from
some
math.
That
just
happens
to
be
called
E
in
any
sort
of
math
tape,
and
that's
the
only
sensible
name
for
that,
in
which
case
it's
fine
right
so
but
I
think
there's
a
you
know.
F
F
E
B
C
B
E
C
E
F
B
C
B
And
just
like,
with
x86,
I'm
sure,
there's
possibly
typos
in
some
of
these
and
we'll
come
across
them
as
we
implement
them,
and
then
login
issues
get
in
temporarily
fixed
and
then
come
back
post
implementation
like
we're
going
to
do
next
week
for
x86
and
be
like.
Does
this
all
look
correct,
yeah
a
little.
C
B
Done
then,
I
think
we're
done
for
the
day.
What
do
we
want
to
say
about
the
rest
of
the
advance
in
the
instructions
that
we
haven't
reviewed
that
weren't
part
of
the
proposal,
but
still
exist
like
like
there's
a
number
of
them
that
didn't
show
up
in
any
of
these?
That,
for
you,
my
guess
is
90%
of
them
are
aren't
proposed
yet
or
80%.
So
yeah
there's
like
4,000,
but
then,
if
I
take
what
I
copied
off
the.
B
B
E
B
A
A
It
would
be
nice
if
we
had
a
recipe
where
somebody
could
step
in
and
add
an
intrinsic
and
we
can
MLK.
You
have
to
add
this
method
here.
Put
this
attribute
on
it
change
it
over
here
at
the
tests
over
there
and
then
rinse
and
repeat,
and
then
we
can
probably
call
so
that
an
extent
to
intercept
artists
as
well
I
mean
my
hope
is
that
most
of
them
are
also
motivated
by
what
people
ask
for
an
unjust,
as
when
only
picking
from
this
Bank,
in
which
case
yeah
I,
don't
see
the
pollen.
E
B
That
no
no
it's
putting
the
proposal
in
reviewing
it
like
so
for
x86,
when
we
did
originally
behind
the
closed
doors
or
whatever.
We
basically
have
the
Intel
come
in
and
be
like.
Here's,
the
proposal,
here's
the
abstract
concept
and
here's
a
review,
select
pieces
of
it,
but
we're
proposing
like
this
entire
is
a
be
implemented
right
and
now
we've
gotten
implemented
it
are.
We
also
saying
that
for
a
arc
64,
we
have
looked
at
several
VAP
eyes.
B
A
What
we
do
so,
whatever
the
thing
is
that
so
I
think
we
have
enough
handle
on
what
the
patterns
are
yeah,
but
that
is
usually
whatever,
but
I
try
to
get
another
view.
If
now
somebody
dumps
effectively
the
P
R
and
says
here's
like
you
know,
three
thousand
nine
Delta
and
API
became
critical.
Whether
this
is
consistent,
yes
or
no
I
mean
when
we
reviewed
wasn't
they
had
25,000
API.
We
did
not
look
over
all
of
them.
We
looked
at
like
three
or
the
syntax.
Api
is
and
said:
okay,
that's
the
parent
you
have.
E
Words
implemented
and
then
we
have
a
tool
to
generate
the
API
yeah
listening
and
then
we
can
defend
the
review.
It's
kind
of
awful
I
like
sandy
and
said
you
know
as
far
as
I'm
concerned.
They
all
follow
the
same
pattern.
Let
me
discuss
it
there
if
you,
if
somebody
finds
an
issue,
please
let
me
know
yes,.
B
And
that's
basically,
what
I
would
like
to
do
is
you
know
after
I
eat
lunch
today
go
sit
down
open
and
up
for
grabs
issue
on
corvex.
Of
course
you
are
saying
they
are
x64.
Advanced
MD
in
a
r32
advanced
MD
has
been
approved,
but
these
ones
have
been
formally
reviewed.
You
can
go
ahead
and
implement
them
if
you
feel
like
you're
up
to
the
task
and
the
rest
of
them
have
been
basically
preliminarily
reviewed
and
will
be
approved
and
they'll
be
reviewed
as
the
PRS
come.