mc jit

I don't see any tests in either test or test-suite for -use-mcjit.

Are we not testing this yet?

There are lots of other llc options.

What is our plan for testing these?

For ARM, we need to manually switch to use mcjit, say

  $ make check-all LIT_ARGS=--param=jit_impl=mcjit

Regards,
chenwj

Thanks.

When I run this on x86 ubuntu, there are 47 failures.

Failing Tests (47):
     LLVM :: ExecutionEngine/MCJIT/2002-12-16-ArgTest.ll
     LLVM :: ExecutionEngine/MCJIT/2003-01-04-ArgumentBug.ll
     LLVM :: ExecutionEngine/MCJIT/2003-01-04-LoopTest.ll
     LLVM :: ExecutionEngine/MCJIT/2003-01-04-PhiTest.ll
     LLVM :: ExecutionEngine/MCJIT/2003-01-09-SARTest.ll
     LLVM :: ExecutionEngine/MCJIT/2003-01-10-FUCOM.ll
     LLVM :: ExecutionEngine/MCJIT/2003-01-15-AlignmentTest.ll
     LLVM :: ExecutionEngine/MCJIT/2003-05-06-LivenessClobber.ll
     LLVM :: ExecutionEngine/MCJIT/2003-05-07-ArgumentTest.ll
     LLVM :: ExecutionEngine/MCJIT/2003-05-11-PHIRegAllocBug.ll
     LLVM :: ExecutionEngine/MCJIT/2003-06-04-bzip2-bug.ll
     LLVM :: ExecutionEngine/MCJIT/2003-06-05-PHIBug.ll
     LLVM :: ExecutionEngine/MCJIT/2003-08-15-AllocaAssertion.ll
     LLVM :: ExecutionEngine/MCJIT/2003-08-21-EnvironmentTest.ll
     LLVM :: ExecutionEngine/MCJIT/2003-08-23-RegisterAllocatePhysReg.ll
     LLVM :: ExecutionEngine/MCJIT/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll
     LLVM :: ExecutionEngine/MCJIT/2005-12-02-TailCallBug.ll
     LLVM :: ExecutionEngine/MCJIT/2007-12-10-APIntLoadStore.ll
     LLVM :: ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll
     LLVM :: ExecutionEngine/MCJIT/2010-01-15-UndefValue.ll
     LLVM :: ExecutionEngine/MCJIT/fpbitcast.ll
     LLVM :: ExecutionEngine/MCJIT/hello.ll
     LLVM :: ExecutionEngine/MCJIT/hello2.ll
     LLVM :: ExecutionEngine/MCJIT/simplesttest.ll
     LLVM :: ExecutionEngine/MCJIT/simpletest.ll
     LLVM :: ExecutionEngine/MCJIT/stubs.ll
     LLVM :: ExecutionEngine/MCJIT/test-arith.ll
     LLVM :: ExecutionEngine/MCJIT/test-branch.ll
     LLVM :: ExecutionEngine/MCJIT/test-call-no-external-funcs.ll
     LLVM :: ExecutionEngine/MCJIT/test-call.ll
     LLVM :: ExecutionEngine/MCJIT/test-cast.ll
     LLVM :: ExecutionEngine/MCJIT/test-common-symbols.ll
     LLVM :: ExecutionEngine/MCJIT/test-constantexpr.ll
     LLVM :: ExecutionEngine/MCJIT/test-fp-no-external-funcs.ll
     LLVM :: ExecutionEngine/MCJIT/test-fp.ll
     LLVM :: ExecutionEngine/MCJIT/test-global-init-nonzero.ll
     LLVM :: ExecutionEngine/MCJIT/test-global.ll
     LLVM :: ExecutionEngine/MCJIT/test-loadstore.ll
     LLVM :: ExecutionEngine/MCJIT/test-local.ll
     LLVM :: ExecutionEngine/MCJIT/test-logical.ll
     LLVM :: ExecutionEngine/MCJIT/test-loop.ll
     LLVM :: ExecutionEngine/MCJIT/test-phi.ll
     LLVM :: ExecutionEngine/MCJIT/test-ret.ll
     LLVM :: ExecutionEngine/MCJIT/test-return.ll
     LLVM :: ExecutionEngine/MCJIT/test-setcond-fp.ll
     LLVM :: ExecutionEngine/MCJIT/test-setcond-int.ll
     LLVM :: ExecutionEngine/MCJIT/test-shift.ll

   Expected Passes : 10774
   Expected Failures : 82
   Unsupported Tests : 14
   Unexpected Failures: 47

I think you mean to say:

make check-all LIT_ARGS=--param=jit_impl=use-mcjit

Hrm, I was told that I can use LIT_ARGS=--param=jit_impl=mcjit.
Does yours make those failures go away? :slight_smile:

Regards,
chenwj

test/ExecutionEngine/MCJIT is currently a duplicate of test/ExecutionEngine, which runs the tests with MCJIT. So it already runs every time you "make check" (on build-bots too!). The duplication is unfortunate, but hopefully temporary - once the LIT SUBTEST patch gets in (it's been in review for ages now, ahem :wink: ) it should be gone and each test in test/ExecutionEngine will just be run twice - with old JIT and MCJIT.

Eli

test/ExecutionEngine/MCJIT is currently a duplicate of test/ExecutionEngine, which runs the tests with MCJIT. So it already runs every time you "make check" (on build-bots too!). The duplication is unfortunate, but hopefully temporary - once the LIT SUBTEST patch gets in (it's been in review for ages now, ahem :wink: ) it should be gone and each test in test/ExecutionEngine will just be run twice - with old JIT and MCJIT.

  When I tested ARM before LLVM 3.1 released, I was told that mcjit is enabled
by default on x86, on ARM I need to switch to mcjit manaully. Is that right?
I am confused here. :slight_smile:

Regards,
chenwj

> test/ExecutionEngine/MCJIT is currently a duplicate of
test/ExecutionEngine, which runs the tests with MCJIT. So it already runs
every time you "make check" (on build-bots too!). The duplication is
unfortunate, but hopefully temporary - once the LIT SUBTEST patch gets in
(it's been in review for ages now, ahem :wink: ) it should be gone and each test
in test/ExecutionEngine will just be run twice - with old JIT and MCJIT.

  When I tested ARM before LLVM 3.1 released, I was told that mcjit is
enabled by default on x86, on ARM I need to switch to mcjit manaully. Is that
right?
I am confused here. :slight_smile:

The state of target/OS support is in flow, as things get fixed. The best way to find out is to look in the lit.local.cfg file in the test/ExecutionEngine/MCJIT directory. Currently it looks that ARM is as supported as x86/x64. That said, some tests may have local XFAILs for ARM. Use the source :slight_smile:
Eli

Yes. I got no failures with my modified version.