►
From YouTube: OMR Architecture Meeting 20210513
Description
Agenda:
* Revisit: Clean up centralized opcode enums (#5703) [ @fjeremic ]
* Prune vector IL opcodes (#6003) [ @0xdaryl ]
A
Welcome
everyone
to
the
may
13th
omar
architecture
meeting
today
we
have
a
couple
of
topics:
I'm
not
sure
how
long
either
we'll
take
to
get
through.
A
A
C
B
It
was
debug
build
or
not,
but
it
wasn't.
A
Okay,
I
don't
want
to
I'll.
Let
him
speak
in
the
issue,
but
I
think
he'll
be
okay.
With
a
point
seven
percent
increase
myself,
I
mean
the
feedback
that
I
would
have
is
I'm
I
mean
it's.
It's
moving
us
forward
in
a
in
a
direction
that
I
think
that
we
want
to
move
into.
So
I'm
in
the
absence
of
any
better
solutions.
I'm
I'm
I'm
fine
with
with
going
ahead
with
that.
A
So
let's
just
see
that
get
closed
off
or
that
let
mark
provide
us
feedback
in
the
issue
unless
anybody
on
the
call
here
wants
to
bring
up
any
concerns
or
objections
or
other
feedback
that
they
have
on
the
design.
A
Here:
okay!
Well,
if
there
are
concerns
that
anybody
has
please
raise
them
as
soon
as
possible
in
that
in
that
issue.
Otherwise,
if,
if
mark
signs
off
on
it,
then
I'd
say
that
we're
free
to
go
ahead
with
that.
B
Yep,
I
will
comment.
It
is
a
large
amount
of
just
boilerplate
code
effectively
until
we
do
actually
finally
clean
up
and
in
line
a
lot
of
the
duplication.
B
So
we
do
have
the
option
of
just
going
to
if
deaf
route,
which
will
enable
us
to
override
evaluators,
we
won't
have
the
canonicalization
of
names
or
things
like
that,
but
we
could
do
it
in
a
two-step
process,
where
first
we
let
the
overrides
happen.
We
can
do
our
downstream
improvements
in
opengni,
for
example,
and
then,
as
a
second
step,
we
could
change
the
names
like
we
have
it
today.
A
B
I
would
say
two
weeks
would
probably
be
reasonable
if
we
want
to
go
the
full
way
if
we
just
want
to
do
the
fdef,
probably
a
couple
days,
because
it's
very
mechanical
I
mean
even
this
change
is
mechanical.
It's
just
getting
the
builds
to
actually
work.
A
B
Less
riskier
and
it's
a
knob
change
in
terms
of
footprint
size
I
mean.
B
No,
we
won't
end
up
in
the
same
spot.
The
evaluators
will
still
have
different
names
across
platforms,
and
I
think
when
we
delete
il
or
change
il
names,
and
things
like
that,
you'll
still
have
to
do
manual.
Changes
to
these
lift
ups.
B
B
A
Yeah
I
mean
personally,
I'm
not
overly
concerned
about
that,
but
yeah
yeah.
A
B
B
A
Okay,
so
let's
move
on
to
the
next
one
so
6003,
that
is
a
proposal
to
prune
some
vector
il
opcode.
So
let
me.
A
We
may
have
the
sort
of
a
chicken
and
egg
kind
of
issue
with,
so
let
me
provide
a
little
bit
of
background
here.
What
what's.
C
What's
motivating
this
so
sorry
daryl
just
a
second,
if,
if
I
may
am
I
the
only
one
who's
seeing
no
longer
seeing
what
is
presumably
on
daryl's
screen,
but
I'm
just
seeing
like
a
gray.
A
C
A
I
know
what
it's
doing
yeah.
This
is
a
you're
seeing
it
oh
there
we
go.
A
It's
it's
when
I
switch
desktops
to
to
do
something
to
look
at
something
else
which
or
take
notes
something
like
that,
it
it
it
it
grays
over
the
the
presentation
view.
So
I'm
a
bit
of
a.
A
You
know
what
the
agenda
is.
You
know
what
I'm
talking
about,
so
I'm
gonna,
okay,
okay,
let's
talk
so
the
background
here
is
that
we
are
looking
at
improving
the
the
vector
op
code
and
vector
back-end
implementation
in
in
omr.
A
A
lot
of
this
is
being
driven
by
a
downstream
project,
open
j9
because
they
are
introducing
a
new
vector
to
the
java
language,
which
is
intended
to
map
directly
onto
hardware
instructions
to
get
any
sort
of
performance
out
of
that,
and
there
has
been
a
bit
of
thought
put
into
that
api
from
the
java
layer
with
the
intention
of
you
know,
with
the
intention
of
mapping
it
directly
to
to
hardware
instructions
now
what
we
have
in
the
the
way
that
we
would
actually
implement
this
in
in
omr
is
by
by
recognizing
various
methods
and
then
turning
them
into
actual
il
op
code
codes
that
we
have
at
least
that's
the
way
that
we
would
have
done
that
in
in
sort
of
a
traditional
sense.
A
There
has
been
various
vector
implementations
in
omr
over
the
years
or
what
you
see
in
omr
over
the
years.
This
has
been
driven
by
a
variety
of
different
things,
and
if
you
look
at
the
op
codes
that
that
we
have
there's
109
of
them
at
least
there
is
a
fairly
incomplete
set
of
implementation
for
these
various
ilop
codes.
A
Some
of
them
were
driven
by
certain
platform
requirements.
Some
of
them
were
driven
by
features
and
other
front
ends
other
than
openj9.
That
required
certain
bits
of
functionality
to
to
be
there
and
that's
why
they
only
appear
on
certain
architectures.
A
You
know
others
are
driven
by
the
spindizer,
our
the
vectorization
component,
so
it
is
a
fairly
large
set
of
of
aisle
op
codes.
The
other
thing
about
these
vector
op
codes
is
that
when,
when
they
were
designed,
the
idea
was
that
they
are
all
going
to
map
to
128
bit
vector
length.
A
And,
of
course,
these
days
vector
lengths
are
128,
512
256.,
there's
proposals
in
the
works
for
our
for
future
architectures
as
well
that
go
up
to
2048
bits
as
well.
So
you
know
it's
it's
it's
it's
grown
past
what
we
are
able
to
handle
with
the
with
the
way
that
we
represent
vectors
in
in
omr.
So
so
clearly,
some
some
rethinking
needs
to
happen
here
and
gita
is
sort
of
on
the
forefront
of
thinking
about
how
to
re-represent
the
vector
operations
in
in
il.
A
If
you
go
back
and
look
at
the
history,
it's
one
of
the
first
ones
that
we
have
and
actually
gita
came
to
that
meeting,
then
and
and
put
forth
a
proposal
for
for
adding
vector
lengths,
different
vector
lengths
to
the
to
the
il
op
codes.
I
suspect
that
well
one
of
the
outcomes
of
that
was.
We
came
up
with
a
proposal
or
a
set
of
ideas.
A
We
were
going
to
go
away
and
write
up
a
proposal
and
then
come
back
to
the
group
with
a
with
that
proposal
to
get
to
get
approved.
We're
kind
of
at
that
state
right
now,
where
it's
likely
someone
like
is
going
to
come
back
with
a
with
a
new
proposal
for
for
vector
aisle
op
codes,
but
in
thinking
about
how
that
should
be
designed
it.
A
What
is
the
core
set
that
we
actually
use
and
need,
and
what
is
a
set
that
we
that
we
that
we
don't
actually
maybe
I'll,
share
what
I'm
looking
at
right
now,
I
think.
A
Sorry
for
this
particular
for
this
particular
issue:
do
you
see
my
browser
yep
yep?
Okay,
so
what
I've
discovered
was
that
there's
about
27
op
codes
that
we
actually
do
use
and
then
there's
a
whole
bunch
that
we
don't
I'll
just
skip
over
this
one
for
a
sec,
but
there's
a
whole
pile
here
that
we
that
we
don't
seem
to
have
any
use
for
the
the
semantics
aren't
necessarily
clear
what
they
do.
There's
incomplete
implementations
for
for
some
of
these
as
well.
A
A
So
the
fact
that
so
with
that
notion,
I
I
think
that
many
of
these
should
be
considered
for
for
for
removal
and
again,
like
some
of
the
other
iop
codes
that
we
had
removed
in
in
in
recent
memory
here.
The
advantage
of
removing
them
is
that,
if
somebody
does
come
up
with
a
use
case
for
these
in
the
future,
when
they
do
come
back
with
a
use
case,
they
should
come
with
documentation.
They
should
come
with
trill
tests
to
exercise
them
and
and
all
those
good
good
sorts
of
things.
A
So
if
we
ever
do
need
an
implementation
of
these,
obviously
the
code
is
still
there
in
git,
so
we're
not
losing
anything
here,
but
it's
really
just
an
attempt
to
get
that
109
up
codes
down
to
a
much
more
manageable
set
that
we
can
that
we
can
reason
about.
So
what
I
was
hoping
was
that
you
know
people
could
review
this
list
that
I
have
here
to
see
whether
or
not
there's
anything
that
well.
A
First
of
all,
if
you
agree
with
this
approach
and
if
there's
anything
in
here
that
you
think
that
we
need
to
pardon-
I
have
another
set
here
that
I
that
is
also
not
used
at
the
moment,
but
if
we're
going
to
look
at
families
of
vector.
A
Oh
sorry,
if
we're
looking
at
families
of
that
include
element,
size,
sorry,
different
element
types.
I
think
these
bunch
down
here
will
actually
fall
into
some
of
the
comparison
ones
up
up
here
so
like
right
now
we
have
these
sort
of
generic
vector.
Compare
equal,
not
equal.
That
kind
of
thing,
but
if
we
start
adding
ones
for
integers
bytes
doubles
floats
that
kind
of
thing
these
ones
would
just
sort
of
naturally
get
represented
in
in
in
that,
so
it
may
be
worth
saving
these.
A
I
also
have
the
max
and
the
min
up
codes
on
here.
These
are
more
for
symmetry,
with
non-vector
op
codes
as
well.
I'm
not
sure
if
we
should
keep
them,
but
I
have
them
in
this
list
right
now
for
now
and
the
list
that
we
do
have
that.
I
think
that
we
should
keep.
It
is
consists
of
basically
the
the
the
arithmetic
operations:
it's
got:
data
movement,
op
codes
and
comparison,
op
codes
and,
of
course,
the
the
register
ones.
A
There
are
vector
specific
ones
like
get
element
and
set
elements
and
splats
that
kind
of
thing
those
are
here
be
mainly
because
not
because
they
are
they're
here,
because
we
are
using
them
in
some
capacity
in
in
either
the
spindizer
or
the
escape
analysis
is
even
using
these
the
simplifiers
introducing
these
so
rather
than
think
through
all
those
cases
and
whether
or
not
they're
actually
needed.
I
just
kept
them
on
this
list
for
now.
A
So
this
is
why
this
list
may
grow
or
contract,
but
it's
it's
sort
of
the
starter
set
of
of
what
we
have
here.
A
A
We
can
reason
about
and
then,
of
course,
in
the
coming
weeks,
I
think
you
will
see
a
a
design
proposal
for
for
a
family
of
of
new
il
opcodes
for
vector
that
will
replace
what
we
currently
have
here
and
hopefully
being
a
more
sensible
and
documented
and
tested
set
of
ilop
codes.
C
So
I
can
imagine
what
what
v
compare
eq
and
ne
might
be
without
a
particular
element
size,
but
I
don't
know
about
the
ordering
comparisons.
I
think
usually
the
the
the
typical
comparison
that
you're
going
to
apply
to
vectors
is
going
to
be
element
wise
with
a
sort
of
vector
of
results.
Right
eq,
any
you
can
you
can
easily
imagine
okay,
well
we're
going
to
check
if
the
entire
thing
is
equal,
but
what
what
does
less
than
mean?
Is
it
lexicographic?
A
So
you're
referring
to
like
these
four
here
yeah,
so
without
without
an
element
type.
So
unlike
what
these
have
that
were
they're
specifically
for
integers
or
doubles
right,
okay,
you're,
maybe
right
there
see
how
we're
actually
implementing
those
in
the
in
the
back
ends
that
do
to
see
what
operation
they're
mapping
to
you're
right
unless
the
data
type
is
somehow
the
element
type
is
somehow
implicit
in
this
right
right
fortune,
which
would
be
unfortunate.
C
A
Yeah,
I
think
the
proposal
that,
when
we
had
discussed
this
three
years
ago,
I
think
the
proposal
the
conclusion
from
that
was
to
go
away
from
some
of
these
typeless
opcodes
and
actually
introduce
not
just
the
128
512
and
256
bit
versions,
but
also
have
byte
short
int.
Long
double
and
float
versions
of
of
of
them
so
make
the
element
type
explicit.
A
Multiplier
as
possible,
we're
in
a
you
know
it.
It
might
give
us
more
options
if
we're
starting
with
109
op
codes,
then
obviously
we're
you
know
we're
up
into
the
2000
like
almost
2000
opcodes.
If
we
go
for
all
the
data
types
and
all
the
the
vector
links.
A
So
when
we
discussed
this
a
few
years
ago,
it
was
we
had
the
same
kind.
This
was
I
mean
this
is
the
same
kind
of
discussion
that
we
had.
It
was
the
sort
of
the
shock
over
the
number
of
op
codes
that
this
may
introduce,
but
but
we
need
to
think
about
ways
of
potentially
reducing
reducing
that
number.
So.
C
All
right
on
the
possibly
to
be
removed
list,
I
think
I
saw
calls
and
returns,
and
I
maybe
we
don't
currently
have
a
use
case
for
those.
But
it
seems
to
me
like
those
are
something
where
there
is
a
clear
use
case
that
that
could
be
had.
C
It
seems
like
that
to
me
that
that
a
language
or
runtime
that
wants
to
use
vector
opcodes
will
also
want
to
return
them
from
functions.
Return
vectors
from
functions
sometimes,
maybe.
C
It
might
not
be
possible
with
the
the
java
vector
api
that
we're
looking
at
coming
up,
but.
B
C
If
you
use
like
the
like
platform
vector
intrinsics,
they
have
vector
types
that
are
get
allocated
into
vector
registers
and
you
can
pass
them
as
arguments
and
you
can
return
them.
C
It
might
make
sense
to
remove
them
anyway
and
re-add
them
if
and
when.
We
want
to
actually
support
that
it
just
stood
out
to
me
as
something
that
seems
like
a
runtime
would
want
to
commonly
support
if
it
supports
vectors,
vector
operations.
A
I
I
think
it
would
be
an
easy,
an
easy
thing
to
add
in
the
future
if
there,
if
there
actually
was
a
use
case
for
them,
because
obviously
it
would
be,
there
would
be
an
asymmetry
with
with
vectors
and
and
and
the
scalar
scalar
types.
I
guess
the
one
thing
about
that
would
be.
Do
we
have
different
versions
for
100
like
returning
128
bit
100
returning,
you
know
256.
A
That
kind
of
thing
I
don't
know
those
are
things
that
we
would
have
to
think
about
and
unfortunately
we're
thinking
of
a.
I
guess
we're
trying
to
keep
by
introducing
them
now
we're
providing
a
solution
to
something
that
we
don't
really
have
a
need
for
at
the
at
the
moment.
Yep
yep,
that's
fair.
I
guess
I
guess
I
could
go
back
and
try
to
find
out
when
they
were
introduced
and
why
they
were
introduced.
I
mean,
obviously
somebody
had
a
need
for
that.
C
Right,
like
I,
I
think
it's
easy
to
motivate
them
in
an
abstract
way,
but
to
motivate
them
within
omr
in
terms
of
having
support
for
it.
I
guess
we're:
if
we're
not
immediately
going
to
have
support
for
it,
then
we
don't
need
them
right.
A
A
Okay,
so
I
know
that
gita
wasn't
able
to
make
this
call,
but
I
I
know
she
she
did
want
to
weigh
in
on
on
this
before
before
we
made
a
decision,
and
she
wanted
to
give
some
thought
to
some
of
this
as
well,
so
certainly
not
to
make
a
decision
on
this
right
now,
but
I
just
want
to
invite
anyone.
A
Who's
got
opinions
on
this
to
to
put
them
up
here,
and
I'm
hopeful
that
we
can
make
some
some
progress
on
on
reducing
these,
if
anything,
just
to
reduce
some
of
the
tactical
depth
that
we
have
in
the
code
around
some
of
these.
A
Kind
of
influence,
everything
yeah-
that's
why
I
said:
there's
kind
of
a
chicken
and
egg
thing
here
between
you
know,
between
this
and
and
and
that
like
if
we
had
got
this
down
to
like
a
set
of
10
op
codes
and
we
were
trying
to
explode
10
up
codes,
you
know
three
vector
lengths
and
six
data,
six
element
types.
A
You
know
that
that
multiplication
isn't
very
big,
but
if
we're,
if
we
have
a
much
larger
set
of
base
op
codes
that
we're
trying
to
explode,
then
that
would
be
that
makes
it
more
problematic,
so
yeah,
so
the
other
one
will
be
coming
back
to
this
discussion
group
within
the
coming
weeks.
A
Okay,
there's
nothing
else
on
that.
That
actually
was
our
last
last
topic
for
this
week.
So
there's
nothing
else.
Then
I
think
we'll
adjourn
now
and.
A
I've
got
the
agenda
open
for
the
may
30th
meeting.
So
if
you
have
any
topics
you
want
to
bring
up,
please
please
add
them
there.
I
will
just
say
that
I
was
I
was
close
to
getting
the
the
the
annotations
on
the
for
the
omar
extensible
class
annotations.
I
was
close
to
getting
that
incorporating
some
of
the
discussion
points
that
we
had
in
the
in
the
last
call
that
we
had
on
that.
A
So
that
might
be
ready
in
a
couple
weeks
for
for
for
more
discussion
to
see
how
that
goes.