kristof.beyls (Kristof Beyls)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 18 2014, 12:59 AM (152 w, 6 d)

Recent Activity

Today

kristof.beyls created D33443: Fix PR33031: Cannot scavenge register without an emergency spill slot..
Tue, May 23, 7:50 AM

Fri, May 19

kristof.beyls updated subscribers of D33343: Add some tips on how to benchhmark.
Fri, May 19, 11:53 AM
kristof.beyls added inline comments to D33343: Add some tips on how to benchhmark.
Fri, May 19, 11:52 AM

Tue, May 16

kristof.beyls added a comment to D33222: [LegacyPassManager] Remove TargetMachine constructors.

Just wanted to point to https://reviews.llvm.org/D29494, which is a patch that isn't fully polished to split the StackProtector pass into an Analysis pass and a Transformation pass.
My motivation for that was also fixing PR30324.

Tue, May 16, 1:54 AM

Thu, May 11

kristof.beyls added a comment to D32529: [GlobalISel] Make multi-step legalization work..

Thanks for the review on the ARM-specific part, Diana!
@t.p.northover : would you have time for a quick glance at the target-independent parts in LegalizerInfo.h, LegalizerInfo.cpp and LegalizerInfoTest.cpp?

Thu, May 11, 7:54 AM

Wed, May 10

kristof.beyls accepted D32963: [AARCH64] Fix a comment to match the code. NFC..

LGTM, even if you don't implement the nitpicky suggestions I made.

Wed, May 10, 1:57 AM

Tue, May 9

kristof.beyls added inline comments to D31965: [SLP] Enable 64-bit wide vectorization for Cyclone.
Tue, May 9, 5:24 AM

Wed, May 3

kristof.beyls added a comment to D32706: [AArch64] Consider widening instructions in cast cost calculation.

Addressed Kristof's comments.

  • Changed wording to refer to "widening" instructions rather than "lengthening" instructions.
  • Changed function name to is isWideningFree.
  • Updated the logic to consider the W instruction variants in addition to the L variants.
  • Added code generation tests along side the cost test cases.
  • Added additional tests for the W variants.
Wed, May 3, 12:42 AM
kristof.beyls added a comment to D31965: [SLP] Enable 64-bit wide vectorization for Cyclone.

Hey Matt,

Hi Adam,

I'm not sure where the conversation about this patch landed, but I'm fine with it being a Cyclone only change for now if that's what you prefer. I haven't had a chance to evaluate it on our cores yet. But when I do, I can easily set MinVectorRegisterBitWith if there's any benefit. How does compile-time look?

There is no measurable compile-time change for AArch64 (testsuite, ctmark, spec).

I believe the idea was to try to enable this for all subtargets, assuming you and @evandro can test this. On the other hand, it's been almost a month and I'd like to wrap this up. So perhaps we should enable this for Cyclone and A57 for now and then perhaps file bugs for the remaining subtargets to evaluate this.

How does that sound, @rengolin and others?

Wed, May 3, 12:19 AM

Tue, May 2

kristof.beyls added inline comments to D32706: [AArch64] Consider widening instructions in cast cost calculation.
Tue, May 2, 8:01 AM
kristof.beyls added inline comments to D32706: [AArch64] Consider widening instructions in cast cost calculation.
Tue, May 2, 12:31 AM

Thu, Apr 27

kristof.beyls updated subscribers of D32272: [XRay] Add Google Benchmark library + initial XRay benchmarks.

Could you explain the rationale for adding libs/benchmarks-1.1.0?
Also, since that seems to have a different license, you probably need to add that directory to the top-level LICENSE.TXT file as one of the sub-directories with "additional or alternate copyrights,licenses, and/or restrictions".

Thu, Apr 27, 4:03 AM

Wed, Apr 26

kristof.beyls added a comment to D32529: [GlobalISel] Make multi-step legalization work..

Thanks for splitting this out! The ARM part looks excellent :)
I think you could add some target-independent tests for this in unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp, to make sure it works to WidenScalar/MoreElements etc to a type that has a Libcall or Custom action. That way we won't have to depend on ARM for testing this functionality.

Wed, Apr 26, 9:53 AM
kristof.beyls updated the diff for D32529: [GlobalISel] Make multi-step legalization work..

Adding a unit test.

Wed, Apr 26, 9:53 AM
kristof.beyls added a comment to D28152: Cortex-A57 scheduling model for ARM backend (AArch32).

I've also run the latest version of this patch with command line options '-O3 -DNDEBUG -mcpu=cortex-a57 -mthumb -fomit-frame-pointer' on the test-suite and a range of other benchmarks.
I do see the same few performance regressions as reported by Andrew, for the same reasons; and many performance improvements.
Overall, I see a geomean performance improvement of 1.70% for the benchmarks reporting execution time and a 1.63% performance improvement for the benchmarks reporting scores.

Wed, Apr 26, 7:30 AM
kristof.beyls created D32529: [GlobalISel] Make multi-step legalization work..
Wed, Apr 26, 4:00 AM

Mon, Apr 24

kristof.beyls retitled D32438: [LNT] Document how to capture linux perf profiles. from Document how to capture linux perf profiles. to [LNT] Document how to capture linux perf profiles..
Mon, Apr 24, 9:37 AM
kristof.beyls created D32438: [LNT] Document how to capture linux perf profiles..
Mon, Apr 24, 9:26 AM

Apr 21 2017

kristof.beyls added a comment to D32076: [ARM] Add big.LITTLE mcpu tuning options.

Adding big.LITTLE mcpu options for clang to be more command-line compatible with gcc is a good idea.
Mapping the code generation for it to what is done for the little core also is a defendable position.
I'm just wondering if in some of the implementation of this there could be less copy-paste? I've made a few specific comments in some places of the code where ideally there should be less copy-paste.

Apr 21 2017, 9:43 AM
kristof.beyls added inline comments to D31750: [globalisel] Enable tracing the legalizer with --debug-only=legalize-mir.
Apr 21 2017, 12:11 AM

Apr 19 2017

kristof.beyls closed D31934: [GlobalISel] Support vector-of-pointers in LLT.

Committed in r300664

Apr 19 2017, 8:26 AM
kristof.beyls accepted D31750: [globalisel] Enable tracing the legalizer with --debug-only=legalize-mir.
Apr 19 2017, 12:27 AM

Apr 18 2017

kristof.beyls added inline comments to D31750: [globalisel] Enable tracing the legalizer with --debug-only=legalize-mir.
Apr 18 2017, 5:44 AM
kristof.beyls added a comment to D32048: ClamAV: Copy zlib into ClamAV benchmark.

If a non-trivial amount of time is spent in zlib for clamav and we would want to retain benchmarking of the zlib library, maybe it'd be better to add zlib (with appropriate test input) as a separate benchmark to the test-suite?

There is already spec2000/164.gzip which has pretty much the same inflation/deflation code as zlib. Also this patch is not about adding a new benchmark but simply getting rid of an external dependency!

Apr 18 2017, 2:58 AM
kristof.beyls updated the diff for D31934: [GlobalISel] Support vector-of-pointers in LLT.

Move public methods to all be in the same location, as suggested by Ahmed, now that the implementation details are hidden more in private methods.

Apr 18 2017, 1:10 AM

Apr 14 2017

kristof.beyls added a comment to D32015: Make globalaa-retained.ll test catching more cases..

I have to note that after http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20170410/444886.html
[llvm] r300200 - Re-apply "[GVNHoist] Move GVNHoist to function simplification part of pipeline."
that test starts failing.

Apr 14 2017, 2:53 AM
kristof.beyls accepted D32015: Make globalaa-retained.ll test catching more cases..

LGTM, Thanks!

Apr 14 2017, 2:32 AM
kristof.beyls added inline comments to D32015: Make globalaa-retained.ll test catching more cases..
Apr 14 2017, 12:45 AM
kristof.beyls added a comment to D30521: Introduce llc/ExecuteTestCommands pass.

Currently, I really don't understand why this is the right approach...

We sometimes want to test a specific codegen API rather than a whole pass.

This adds a special pass to llc that features a minimalistic scripting language to
call some predefined API functions so we can test the API with the usual lit+FileCheck tools.

If you're actually trying to test a specific API, why aren't unittests the correct approach?

If the problem is that the unittests are hard to write, why not write libraries to make authoring the unittest easier?

I think there is something fundamental about how we write tests in llvm, and why we do not write pass tests in a unit testing framework because hey, who stops us implementing llc/opt as some functions in a unit testing library, they mostly have trivial APIs:

I think there is a beauty and we are hitting a sweet spot in the way most of our testing works in llvm: Forcing tests to be a simple human readable text file keeps things approachable and understandable. Understanding the basics of lit, llc, opt and FileCheck is easy. Having the full power of C++ in a unit test library on the other hand makes it way too easy do "fancy" stuff that is harder to understand because it happens to abstracted away in generic code and multiple layers of APIs that you have to learn and dig through when you actually have to understand a bug.

I don't see how things being abstracted away in a scripting language and complex fake "pass" infrastructure is going to be substantially better here.

Essentially, I totally understand prefering FileCheck and friends when testing something that is reasonably cohesive as a *pass*. But I feel like the point at which a scripting language or other things are being used to handle the fact that we're actually testing a specific API, I would *much rather* just write a unittest against that API directly.

I don't see why wanting FileCheck for things that aren't a pass isn't valid.

I don't think that pass vs. non-pass is the right distinction.

I think FileCheck makes sense when there is already a fundamental reason to have textual output that is sufficiently stable to use in tests. This can be everything from having an IR to having a clear and precise printing structure for an analysis. Those have utility *outside* of tests and also are great tools for testing.

But when the thing we are testing, fundamentally, is *an API*, I think we should test it *by calling that API*.

Admittedly I am not happy to introduce a scripting language here, but it seemed like the pragmatic choice compared with the alternative of building up a pile of small passes for every test or putting .mir code into C++ string literals in a unittest and still lacking all the llc mechanics for bringing up a target or having the nice matching capabilities of FileCheck.

Again, I am very much in favor of having the facilities from 'llc' or 'FileCheck' in useful APIs for unittests to leverage. But I don't think we should be adding a scripting language in order to write tests in a language other than C++ to exercise C++ API calls. I think this is significantly more burdensome than just writing unittests.

Sorry for the slow response, I think we may just fundamentally disagree about the right approach here. Currently, the approach you are proposing would make the resulting tests nearly incomprehensible to me... On the other hand, I think unittests (which are "just" C++ code even if sometimes non-obvious C++ code) *when used well* are much more friendly to people outside of the particular area than a MIR-specific scripting framework.

Apr 14 2017, 12:27 AM
kristof.beyls added a comment to D32048: ClamAV: Copy zlib into ClamAV benchmark.

Avoid the external zlib dependency in ClamAV by copying zlib-1.2.11
source into the benchmark.

External dependencies are problematic in benchmarks because:

They are not compiled with the same compiler/flags as the rest of the benchmarks.
They are an additional burden to setup when running the test-suite. While zlib is a really popular and ubiquitous library it is still sometimes missing in cross-compilation settings.
No external dependencies simplifies the buildsystem.

Apr 14 2017, 12:09 AM

Apr 13 2017

kristof.beyls added inline comments to D31934: [GlobalISel] Support vector-of-pointers in LLT.
Apr 13 2017, 12:48 PM
kristof.beyls updated the diff for D31934: [GlobalISel] Support vector-of-pointers in LLT.

Further tweaks based on Ahmed's feedback.

Apr 13 2017, 12:42 PM
kristof.beyls added a comment to D31934: [GlobalISel] Support vector-of-pointers in LLT.

Thanks very much for the review Ahmed! I think I took all feedback into account in the new version of the patch. Please have another look.

Apr 13 2017, 6:44 AM
kristof.beyls updated the diff for D31934: [GlobalISel] Support vector-of-pointers in LLT.

update patch taking into account Ahmed's review feedback.

Apr 13 2017, 6:30 AM

Apr 12 2017

kristof.beyls added a comment to D31965: [SLP] Enable 64-bit wide vectorization for Cyclone.

Hi Kristof,

Hi Renato,

Hi Adam,

Interesting results! But it doesn't sound like this is Cyclone specific.

Sure it's not, it is just a deployment strategy for this change. See the FIXME in the code.

Rolling it out for Cyclone-only is just a way to get this going in a controllable manner. Other subtargets can roll it this out as people find the time to benchmark and tune this.

As the results section shows I had and still doing some tuning on this. This mostly allows 2-lane vectorization for 32-bit types so they benefit of vectorization is not so great thus the accuracy of the cost model is really tested by enabling this.

I also got the impression that this is a change that is somewhat (but only somewhat) independent of micro-architecture, as I assume this is mostly about trading off the overhead that may be introduced to get data into the vector registers vs the gain by doing arithmetic in a SIMD fashion.
Of course, the cost of getting data in vector registers and the gain of doing arithmetic in a SIMD fashion is somewhat micro-architecture dependent.

I noticed that Adam points to a number of other patches improving things - I'm assuming these other patches lower the cost of getting data into the vector registers?

Yes, do you have rL299482?

Apr 12 2017, 8:44 AM
kristof.beyls added a comment to D31965: [SLP] Enable 64-bit wide vectorization for Cyclone.

Hi Renato,

Hi Adam,

Interesting results! But it doesn't sound like this is Cyclone specific.

Sure it's not, it is just a deployment strategy for this change. See the FIXME in the code.

Rolling it out for Cyclone-only is just a way to get this going in a controllable manner. Other subtargets can roll it this out as people find the time to benchmark and tune this.

As the results section shows I had and still doing some tuning on this. This mostly allows 2-lane vectorization for 32-bit types so they benefit of vectorization is not so great thus the accuracy of the cost model is really tested by enabling this.

Apr 12 2017, 8:08 AM

Apr 11 2017

kristof.beyls added inline comments to D31801: Performance enhancements for Cavium ThunderX2 T99.
Apr 11 2017, 8:17 AM
kristof.beyls created D31934: [GlobalISel] Support vector-of-pointers in LLT.
Apr 11 2017, 6:36 AM

Apr 10 2017

kristof.beyls accepted D31711: [GlobalISel] LegalizerInfo: Enable legalization of non-power-of-2 types.
Apr 10 2017, 11:31 PM

Apr 6 2017

kristof.beyls added inline comments to D31750: [globalisel] Enable tracing the legalizer with --debug-only=legalize-mir.
Apr 6 2017, 5:23 AM
kristof.beyls added inline comments to D31711: [GlobalISel] LegalizerInfo: Enable legalization of non-power-of-2 types.
Apr 6 2017, 2:40 AM

Apr 5 2017

kristof.beyls added inline comments to D31711: [GlobalISel] LegalizerInfo: Enable legalization of non-power-of-2 types.
Apr 5 2017, 8:10 AM

Mar 31 2017

kristof.beyls added inline comments to D31236: Refactor getHostCPUName to allow testing on non-native hardware..
Mar 31 2017, 11:32 AM
kristof.beyls added inline comments to D31503: [GlobalISel]: Fix bug where we can report GISelFailure on erased instructions.
Mar 31 2017, 12:08 AM

Mar 30 2017

kristof.beyls added inline comments to D31236: Refactor getHostCPUName to allow testing on non-native hardware..
Mar 30 2017, 4:45 AM

Mar 29 2017

kristof.beyls added a comment to D31359: [GlobalISel]: Allow backends to custom legalize Intrinsics.

It'd be nice if there could be a test case for the fallback mechanism in-tree for a case like this. It's not immediately obvious to me how such an in-tree test could be created at the moment.
All in all, my impression so far is that patch has 2 changes:

  1. Having a mechanism to not blow up reportGISelFailure when a multi-step legalization fails half-way through
  2. Allowing custom legalization of intrinsics. If I've understood correctly, maybe best to commit them separately once there's agreement?

Yes - you are correct with the above 2 impressions.
Please let me know if I should create two separate reviews instead of this one.

Mar 29 2017, 11:22 AM
kristof.beyls updated the diff for D31236: Refactor getHostCPUName to allow testing on non-native hardware..

. Added a few short tests for a few more cores.

Mar 29 2017, 9:42 AM
kristof.beyls added a comment to D31359: [GlobalISel]: Allow backends to custom legalize Intrinsics.

The other (easier) approach is to reportGlobalISelFailure on intermediate instructions whenever we're unable to legalize/Lower them.

Is this all accounting for the fact that you may not know if you can legalize an intrinsic before you've already erased it? Seems like a bit of an odd situation to be in if so.

Not sure if I understand the question correctly. My view is the Intrinsic was legalized by the backend (created some machine instruction, erased the generic intrinsic and created intermediate instructions). It's entirely possible that the intermediate instructions may fail legalization (for e.g. missing LegalizeActions/custom lowering of other intrinsics etc).

Mar 29 2017, 7:06 AM

Mar 24 2017

kristof.beyls updated the diff for D31236: Refactor getHostCPUName to allow testing on non-native hardware..
  • By refactoring a little bit more, it became possible to test using a regular unit test, not having to use a mock, which makes the test a lot cleaner.
  • During review discussions with Hal, it become clear that it's probably best to stick to unit testing rather than using lit-based testing for this feature.
Mar 24 2017, 7:42 AM

Mar 22 2017

kristof.beyls added a comment to D31236: Refactor getHostCPUName to allow testing on non-native hardware..

I'm curious why you chose to take this approach rather than add some option that allows us to change the file name being read? If we do that, then we can test this with lit tests. I generally think of our practice as using mocking, and unit tests in general, for cases where lit tests aren't practical (or, to put it another way, the infrastructure necessary to enable them is more complicated than unit testing in C++). This does not seem to be the case here. It seems straightforward to make -proc-cpuinfo-file=/foo/bar/cpuinfo.txt (modulo bikeshed) work.

As I recall, there are several other places in Clang where this is also a problem (we have hard-coded file names for /etc/lsb-release, /etc/redhat-release, etc.).

Mar 22 2017, 7:31 AM
kristof.beyls added inline comments to D31236: Refactor getHostCPUName to allow testing on non-native hardware..
Mar 22 2017, 5:23 AM
kristof.beyls created D31236: Refactor getHostCPUName to allow testing on non-native hardware..
Mar 22 2017, 2:50 AM

Mar 17 2017

kristof.beyls added a comment to D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].
  1. Would this allow merging data?

    When sub-arch specific decisions are concerned, having a way to override a base default case would reduce the amount of code on both table-gen and c++ parts.

    For example, we could have a default catch-all case like {1,widen; 32,legal; 33,unsupp}, and later on, based on sub-arch decisions, increment legality, lib calls, etc.

With the patch as is, you indeed need to re-specify the info for all bit sizes.
It could be that I pushed the current patch way too far in breaking existing APIs and if I turned back the patch to only change the internal representations used in LegalizerInfo.cpp,
this would work. So, the idea being that tablegen info and targets specify for which data types an action can be taken that doesn't require changing bitsize, such as Legal, Lower, Libcall.
And then the target-independent logic can hopefully make decisions on most/all operations on how to adapt types to different bitsizes when that's needed.
I'll look into that.

Mar 17 2017, 6:52 AM
kristof.beyls updated the diff for D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].
  • Made the API change to LegalizerInfo::setAction much smaller: the setAction API is largely unchanged now. The only difference is that it no longer allows legalizationActions that change the size to be specified this way.
  • Instead, specifying how to legalize when the size of the type legalized needs to change is specified using a SizeChangeStrategy. In follow-up work, I think that these size-changing strategies will turn out to be largely target-independent, and therefore can be shared between all targets, and not need to be respecified for each target separately.
  • Split setAction into setScalarAction and setPointerAction to avoid having to specify an LLT just to indicate whether the type is a scalar or a pointer(with address space).
  • To keep this patch as NFC as possible, for AArch64, I had to come up with some complicated SizeChangeStrategies. While not pretty, it demonstrates that it is possible to create very custom SizeChangeStrategies. These ugly SizeChangeStrategies are also only expect to be there for a short while, until we make functional-change-changes to allow all non-power-of-two-sized types
  • Moved some of the implementation code from LegalizerInfo.h to LegalizerInfo.cpp
  • A lot of smaller cleanups.
Mar 17 2017, 6:50 AM

Mar 14 2017

kristof.beyls updated the diff for D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].
  • Split LegalizerInfo::setAction into setScalarAction and setPointerAction to avoid having to specify a mostly meaningless LLT as an argument just to indicate whether the type is a scalar or a pointer(with address space).
Mar 14 2017, 7:16 AM
kristof.beyls added a comment to D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].

I haven't read the actual code yet, but I've got a couple questions and a comment based on the description and the conversation so far.

Mar 14 2017, 4:18 AM

Mar 13 2017

kristof.beyls added a comment to D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].

I hope the above makes sense?

It does, but there are two issues here:

Mar 13 2017, 8:49 AM
kristof.beyls added a comment to D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].

Hi Kristof,

I haven't seen the patch at all, but what about situations where 64-bit is done with lib calls? For example, ldivmod takes 64-bit arguments and you wouldn't want to narrow them to 32-bits.

If this patch is intended to just simplify the legal vs. others, it shouldn't have a narrow-all that spans to +inf. Makes sense?

cheers,
--renato

Mar 13 2017, 4:38 AM

Mar 10 2017

kristof.beyls updated the diff for D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].
  • Rebased to top-of-trunk.
  • Correctly store Action info for pointer types for targets with multiple address spaces.
  • Added a few basic checks to verify correctness of a targets legalization specification.
  • Added one more static function to LegalizerInfo to make specifications shorter and more readable. (UnsupportedButFor).
  • Adapted setAction API to be able to specify if a particular setAction should be the first specification on the operation, or if it could be a refinement.
  • Introduced a few typedefs to improve readability.
  • Made legalization info identical to current ToT for all backends, so that this patch becomes NFCi.
Mar 10 2017, 8:11 AM

Mar 9 2017

kristof.beyls added inline comments to D30786: [GlobalISel] LegalizerHelper: Lower (G_FSUB X, Y) to (G_FADD X, (G_FNEG Y)).
Mar 9 2017, 11:28 PM
kristof.beyls added a comment to D30539: [tablegen][globalisel] Add support for nested instruction matching..

Thanks for the updates, Daniel!
I don't have further remarks, but I think it's best if someone who understands the details better (like @ab ?) would also have a look.

Mar 9 2017, 12:18 AM

Mar 7 2017

kristof.beyls added inline comments to D30539: [tablegen][globalisel] Add support for nested instruction matching..
Mar 7 2017, 7:15 AM
kristof.beyls added inline comments to D30671: [GlobalISel] Translate floating-point negation.
Mar 7 2017, 3:03 AM
kristof.beyls added inline comments to D30671: [GlobalISel] Translate floating-point negation.
Mar 7 2017, 1:14 AM

Mar 6 2017

kristof.beyls added inline comments to D29030: [LNT] Add cross-compilation support to 'lnt runtest test-suite'.
Mar 6 2017, 8:02 AM
kristof.beyls updated the diff for D29030: [LNT] Add cross-compilation support to 'lnt runtest test-suite'.
Mar 6 2017, 8:01 AM
kristof.beyls added inline comments to D30364: AArch64 : Add FastCSEL feature..
Mar 6 2017, 5:51 AM

Mar 3 2017

kristof.beyls added a comment to D30313: [test-suite] Add regression test for indirect branch critical edge splitting.

Sorry to be this guy: This benchmark is running for too long! We should aim for 0.5-1s runtimes for our benchmarks and the 1000000 looks arbitrary to me. (This takes nearly 3x the time of salsa20, the next slowest benchmark in SingleSource/Benchmarks/Misc for me).

Mar 3 2017, 12:00 AM

Mar 2 2017

kristof.beyls added a comment to D29030: [LNT] Add cross-compilation support to 'lnt runtest test-suite'.

ping

Mar 2 2017, 8:58 AM
kristof.beyls updated the diff for D30488: [LNT] Add a few hints on how to reduce noisiness..
Mar 2 2017, 3:31 AM
kristof.beyls added inline comments to D30521: Introduce llc/ExecuteTestCommands pass.
Mar 2 2017, 3:04 AM
kristof.beyls created D30529: [GlobalISel] Enable specifying how to legalize non-power-of-2 size types. [NFC-ish].
Mar 2 2017, 2:43 AM

Mar 1 2017

kristof.beyls created D30488: [LNT] Add a few hints on how to reduce noisiness..
Mar 1 2017, 12:20 AM

Feb 28 2017

kristof.beyls added inline comments to D30216: GlobalISel: Translate ConstantDataVector.
Feb 28 2017, 11:32 AM

Feb 15 2017

kristof.beyls added a comment to D29991: Daily report: only display non empty result tables to avoid cluttering the UI..

I think that there are 2 main reasons why a table could be empty for a particular metric on the daily report page: either the test run just didn't collect the metric, or it did collect the metric, but there were no significant deltas that need to be reported.
I'd say that the ideal behaviour would be to not show an empty table when the test run didn't collect the metric; but to show the empty table when test results were collected, but there were no significant deltas.

Feb 15 2017, 8:42 AM
kristof.beyls updated the diff for D29030: [LNT] Add cross-compilation support to 'lnt runtest test-suite'.

Thanks for all the feedback and the interesting discussion!
I've adapted the patch accordingly, going for using cmake features more directly rather than adding ever more lnt runtest command line options.
I've also added documentation that should help with using 'lnt runtest test-suite' in a cross-compiling setup.

Feb 15 2017, 5:57 AM

Feb 14 2017

kristof.beyls added a comment to D29494: Mostly split the StackProtect Pass into an Analysis Pass and a Transformation Pass..

ping

Feb 14 2017, 8:19 AM
kristof.beyls added a comment to D29822: [LNT] Get cc info from CMake cache instead of from command-line.

Thanks for all the feedback! I've adapted the patch accordingly and committed in r295039.

Feb 14 2017, 2:01 AM

Feb 13 2017

kristof.beyls added a comment to D29891: Daily report: display the number of tests seen near the top of the report, rather than at the bottom..

I also think this is an improvement.
Probably best to hear from Chris M to see if he thinks so too.

Feb 13 2017, 6:57 AM

Feb 10 2017

kristof.beyls added inline comments to D29711: [globalisel] Sort RuleMatchers by priority..
Feb 10 2017, 10:00 AM
kristof.beyls added a dependency for D29030: [LNT] Add cross-compilation support to 'lnt runtest test-suite': D29822: [LNT] Get cc info from CMake cache instead of from command-line.
Feb 10 2017, 4:57 AM
kristof.beyls added a dependent revision for D29822: [LNT] Get cc info from CMake cache instead of from command-line: D29030: [LNT] Add cross-compilation support to 'lnt runtest test-suite'.
Feb 10 2017, 4:57 AM
kristof.beyls added a dependent revision for D29821: [LNT] Run configure earlier in runtest test-suite [NFC]: D29822: [LNT] Get cc info from CMake cache instead of from command-line.
Feb 10 2017, 4:57 AM
kristof.beyls added a dependency for D29822: [LNT] Get cc info from CMake cache instead of from command-line: D29821: [LNT] Run configure earlier in runtest test-suite [NFC].
Feb 10 2017, 4:57 AM
kristof.beyls created D29822: [LNT] Get cc info from CMake cache instead of from command-line.
Feb 10 2017, 4:55 AM
kristof.beyls created D29821: [LNT] Run configure earlier in runtest test-suite [NFC].
Feb 10 2017, 4:52 AM
kristof.beyls added inline comments to D29711: [globalisel] Sort RuleMatchers by priority..
Feb 10 2017, 1:59 AM

Feb 8 2017

kristof.beyls added inline comments to D29709: [globalisel] Separate the SelectionDAG importer from the emitter. NFC.
Feb 8 2017, 3:53 AM

Feb 3 2017

kristof.beyls abandoned D28513: Enable pass pipelines containing LocalStackSlotPass but not StackProtectorPass..

Abandoning this in favour of https://reviews.llvm.org/D29494, which aims to fix PR30324 in a non-hacky way.

Feb 3 2017, 7:36 AM
kristof.beyls created D29494: Mostly split the StackProtect Pass into an Analysis Pass and a Transformation Pass..
Feb 3 2017, 7:35 AM
kristof.beyls added inline comments to D29478: [GlobalISel] Generate selector with predicates; use it for FP binops..
Feb 3 2017, 4:35 AM

Jan 31 2017

kristof.beyls added a comment to D28152: Cortex-A57 scheduling model for ARM backend (AArch32).

FWIW, here are the programs with the biggest swings in the test-suite:

BTW, it is the results for thumb-mode, right?

Jan 31 2017, 11:00 AM
kristof.beyls added inline comments to D29321: [globalisel] Make the MatchAction hierarchy consistent with the matchers. NFC..
Jan 31 2017, 8:43 AM
kristof.beyls added inline comments to D29321: [globalisel] Make the MatchAction hierarchy consistent with the matchers. NFC..
Jan 31 2017, 5:25 AM
kristof.beyls added inline comments to D29321: [globalisel] Make the MatchAction hierarchy consistent with the matchers. NFC..
Jan 31 2017, 2:44 AM
kristof.beyls added a comment to D28152: Cortex-A57 scheduling model for ARM backend (AArch32).

I'm afraid I still see the same failures for cmake-driven benchmark suites.
For non-cmake-driven benchmark suites, I see the following error message at compile time:

DefIdx 0 exceeds machine model writes for %R0<def> = tLDRi %R0<kill>, 0, pred:14, pred:%noreg; mem:LD4[@Reg](tbaa=!12)(dereferenceable)
 (Try with MCSchedModel.CompleteModel set to false)incomplete machine model
UNREACHABLE executed at /work/llvm-test/slave2/cross-build/build/llvm/lib/CodeGen/TargetSchedule.cpp:216!

I don't understand - tLDRi must be covered by "tLDR" regexp here:

def : InstRW<[A57Write_4cyc_1L], (instregex "LDRi12", "LDRBi12",
  "LDRcp", "(t2|t)?LDRConstPool", "LDRLIT_ga_(pcrel|abs)",
  "PICLDR", "tLDR")>;

Are you sure using the updated patch and clang?
And yes, I used lnt really:

./lnt runtest test-suite --sandbox ~/fast/sandbox_arm --no-timestamp --test-suite ~/fast/test-suite --benchmarking-only --cppflags '-O3 -DNDEBUG -mcpu=cortex-a57 -mthumb -fomit-frame-pointer ' --threads 1 --build-threads 6 --use-perf time --use-lit lit --exec-multisample 1 --only-test=SingleSource/Benchmarks --cmake-define 'CMAKE_C_FLAGS_RELEASE=""' --cmake-define 'CMAKE_CXX_FLAGS_RELEASE=""' --cc ~/fast/llvm_trunk.build/bin/clang
Jan 31 2017, 12:48 AM

Jan 30 2017

kristof.beyls added a comment to D28152: Cortex-A57 scheduling model for ARM backend (AArch32).

@andrew.zhogin : I tried to measure the impact of this patch on performance on a Cortex-A57 system, but with this patch, testing in Thumb mode, the cmake-based test-suite runs fail early during the configuration step, with the following error:

-- Check size of unsigned long - failed
CMake Error at /usr/share/cmake-3.5/Modules/TestBigEndian.cmake:51 (message):
  no suitable type found
Call Stack (most recent call first):
  CMakeLists.txt:115 (test_big_endian)

This doesn't happen when testing in ARM mode, or when testing without your patch applied.
I tested on r292764.
Could you try and see if you could reproduce this?
The lnt runtest test-suite command line I used looks as follows:

lnt runtest test-suite --sandbox SANDBOX --no-timestamp --test-suite /work/llvm-test-suite --benchmarking-only --cppflags '-O3 -DNDEBUG -mcpu=cortex-a57 -mthumb -fomit-frame-pointer ' --threads 1 --build-threads 6 --use-perf time --use-lit lit --exec-multisample 1 --only-test=SingleSource/Benchmarks --cmake-define 'CMAKE_C_FLAGS_RELEASE=""' --cmake-define 'CMAKE_CXX_FLAGS_RELEASE=""'

I have updated patch with full support of thumb instructions.
I'm not familiar with lit - such command just succeeded on my local computer (x86_64) and I wonder why? It runs tests at some VM or remotely?

**********
Testing Time: 264.70s
  Expected Passes    : 126
2017-01-30 13:11:51: submitting result to dummy instance

Hi Andrew,

You'd need to run lnt (not lit) with the above command line on an AArch64 environment to be able to reproduce the issue.
On an x86_64 box, you probably tested code generation for x86_64, not AArch64.
Anyway, I've just kicked of another benchmarking run with your new patch. Will let you know the outcome.

Jan 30 2017, 6:39 AM
kristof.beyls added a comment to D28152: Cortex-A57 scheduling model for ARM backend (AArch32).

@andrew.zhogin : I tried to measure the impact of this patch on performance on a Cortex-A57 system, but with this patch, testing in Thumb mode, the cmake-based test-suite runs fail early during the configuration step, with the following error:

-- Check size of unsigned long - failed
CMake Error at /usr/share/cmake-3.5/Modules/TestBigEndian.cmake:51 (message):
  no suitable type found
Call Stack (most recent call first):
  CMakeLists.txt:115 (test_big_endian)

This doesn't happen when testing in ARM mode, or when testing without your patch applied.
I tested on r292764.
Could you try and see if you could reproduce this?
The lnt runtest test-suite command line I used looks as follows:

lnt runtest test-suite --sandbox SANDBOX --no-timestamp --test-suite /work/llvm-test-suite --benchmarking-only --cppflags '-O3 -DNDEBUG -mcpu=cortex-a57 -mthumb -fomit-frame-pointer ' --threads 1 --build-threads 6 --use-perf time --use-lit lit --exec-multisample 1 --only-test=SingleSource/Benchmarks --cmake-define 'CMAKE_C_FLAGS_RELEASE=""' --cmake-define 'CMAKE_CXX_FLAGS_RELEASE=""'

I have updated patch with full support of thumb instructions.
I'm not familiar with lit - such command just succeeded on my local computer (x86_64) and I wonder why? It runs tests at some VM or remotely?

**********
Testing Time: 264.70s
  Expected Passes    : 126
2017-01-30 13:11:51: submitting result to dummy instance
Jan 30 2017, 5:46 AM

Jan 25 2017

kristof.beyls added inline comments to D28942: [globalisel] Re-factor ISel matchers into a hierarchy. NFC.
Jan 25 2017, 11:06 PM
kristof.beyls added inline comments to D28942: [globalisel] Re-factor ISel matchers into a hierarchy. NFC.
Jan 25 2017, 8:24 AM