-
gnzlbg
I would like to be able to specify LLVM meta-data from Rust directly, without having to generate LLVM-IR and play with that.
-
gnzlbg
For example, whether a function/argument is readonly, readnone, etc.
-
gnzlbg
Not that this improves codegen directly, but in some cases i think it would make it easier to diagnose codegen issues
-
anp
eddyb: think i might have found my first measurable runtime perf change from this data
cl.ly/1n2u362R0S0p/Screen%20Shot%202018-05-04%20at%202.17.23%20AM.png
-
eddyb
anp: do you have the exact git commit hash or something?
-
anp
same step down at 2/10/18 for instruction count, wall time
-
anp
still getting there
-
anp
these are just nightlies
-
anp
takes foreverrrr to run so cant run on every commit
-
eddyb
which nightly?
-
eddyb
anp: I wonder if there's a way to do this visualization to draw some obvious lines
-
anp
looks like 2/11?
-
anp
yeah
-
anp
i have plans
-
eddyb
showing the "break"
-
anp
-
eddyb
anp: do you have the nightly around to query it?
-
eddyb
for -vV?
-
anp
id have to dl
-
eddyb
or where can I get that info without downloading it?
-
anp
but im on a fast connection
-
anp
uh
-
anp
nightlies.rs once i fix the service worker
-
eddyb
lmao
-
anp
oh and the lazy list scroll positions
-
eddyb
-
anp
and figure out a way to customize what targets/components/etc you want to see
-
eddyb
oh this is backports
-
anp
boo no nightly tags
-
anp
this is in the rustup metadata, sec
-
eddyb
-
anp
eddyb: 45fba43b3d5b4d1944268cf973099bfacb11bf4c
-
eddyb
I'm not seeing anything interesting
-
anp
is the commit on this
-
eddyb
anp: before or after?
-
anp
after
-
anp
and before ends at 3bcda48a30b21e46b81a7989deb30a3ba85fb918
-
eddyb
okay thanks
-
anp
np
-
anp
its definitely possible that something about this machine changed
-
eddyb
-
anp
llvm 6?
-
eddyb
yupp
-
eddyb
I was literally typing that :P
-
anp
lol
-
anp
i'm not seeing that pattern on any other benchmarks yet and they run in groups (all benches for a nightly in a group, then the next nightly) so i don't expect this to be an environmental variation
-
anp
and an llvm upgrade is a satisfying enough explanation
-
anp
ok well its 230am here, off to bed, but wanted to remark on the first lolbench sighting (albeit a really obvious one from a really obvious cause :P)
-
nox
anp: Nice!
-
nox
-
nox
rkruppe: "The InlineAsm only directly compares the function type pointers, so it will only consider InlineAsm blocks to be the same if they have exactly the same function type." where is that in the code?
-
nox
-
rkruppe
nox: yeah the interning decision is made based on the FunctionType equality
-
rkruppe
or at least so it seems
-
rkruppe
as i said i can't get what should be a nice clean repro to actually trigger this assertion
-
rkruppe
OH WAIT
-
rkruppe
maybe godbolt is without assertions?
-
nox
Hah!
-
rkruppe
nox: try to run opt on it locally (your local build has llvm assertions enabled right)?
-
nox
Not sure about that.
-
rkruppe
well try it
-
rkruppe
hopefully it just crashes and we'll have our answer :)
-
nox
rkruppe: Didn't crash, but I'm pretty sure I don't have assertions enabled.
-
rkruppe
:'(
-
rkruppe
oh i have a rust build around, let me try
-
nox
rkruppe: I have one too, but that doesn't build `opt` right?
-
rkruppe
it does!
-
rkruppe
.../llvm/bin/opt
-
rkruppe
that is, build/$triple/llvm/bin/opt
-
rkruppe
yeah it crashes for me
-
nox
Neat!
-
nox
rkruppe: So this is indeed an illegitimate assertion?
-
rkruppe
yeah
-
rkruppe
not sure what the right fix is (how does it handle the FunctionType for normal calls?) but something will have to change in llvm
-
nox
What do you mean about normal calls?
-
rkruppe
presumably it doesn't just check the function signature for inline asm but also for everything else has that a signature
-
rkruppe
-
rkruppe
so it doesn't assert much there
-
nox
Should it? I'm confused.
-
nox
I feel like the fix is to just remove the assertion, no?
-
rkruppe
The assert is "just" a sanity check so sure it could be removed
-
rkruppe
but modulo the FunctionType problem it serves as an effective way to ensure FunctionComparator and InlineAsm uniquing are in agreement
-
rkruppe
in particular that FunctionComparator doesn't forget about any fields (which would lead to a miscompilation)
-
rkruppe
so it would be nice to be able to salvage it
-
rkruppe
but that is for upstream to worry about
-
rkruppe
someone with a bugs.llvm.org account needs to report this and we backport the fix
-
nikic
rkruppe: could replace with an assertion that L->getFunctionType() != R->getFunctionType()
-
nikic
That would make sure that this is the only case that can compare equal without being uniqued
-
nox
nikic: Good idea.
-
nox
rkruppe: Just sent an email to the Powers That Be to get an account, hah.
-
rkruppe
nikic: that doesn't quite achieve what i said (could have both different FunctionType and forgotten another field) but it's better than nothing i guess
-
nox
rkruppe: If only that stuff could be derived. :)
-
rkruppe
nox: the monkey's paw curls and they generate that code... with tablegen
-
nox
-
rkruppe
👍
-
nox
nikic: Commented with your assertion suggestion just now,
bugs.llvm.org/show_bug.cgi?id=37339#c1
-
nox
rkruppe: What do you think of trying to land this in our own LLVM?
-
rkruppe
for moving forward with your pr we could just drop the assertion temporarily until an upstream bug fix (or use the one suggested by nikic, but not as important if it's temporary)
-
nox
rkruppe: Ok.
-
nox
rkruppe: It's apéro time though, so I'll do that later tonight or on Monday.
-
nox
This working group is not the only new stuff in my life, started theatre last year and we have our first show tomorrow evening. :3
-
gnzlbg
are the llvm.experimental.constrained... intrinsics new ?
-
nox
-
gnzlbg
they support different rounding modes
-
gnzlbg
including a dynamic one, such that changing the rounding mode when these are used is not undefined behavior :o
-
varkor
gnzlbg: they’re been around for about a year
-
rkruppe
gnzlbg: yes those intrinsics are a major component of the plan for supporting #pragma STD FENV_ACCESS, i.e., anything that deviates from the default floating point environment
-
varkor
I’m not sure what the view is on using experimental intrinsics in rust?
-
rkruppe
we already use some
-
rkruppe
e.g. vector reductions
-
anp
pushed the data and the notebook i'm using
github.com/anp/lolbench-analysis
-
lqd
-
lqd
-
anp
neato!
-
anp
looks like the likwid-perfctr thing is rather similar to the criterion patches i wrote