DescriptionAdd the ARM32 FP register table entries, simple arith, and args.
Lower some instructions, without much guarantee of
correctness. *Running* generated code will be risky
because the register allocator isn't aware of register
aliasing.
Fill in v{add,div,mul,sub}.f{32,64}, vmov, vldr
and vsqrt.f{32,64}. I tried to make the nacl-other-intrinsics
test not explode, so added vsqrt too. That was pretty
easy for sqrt, but then fabs tests also exploded. Those are not
truly fixed but are currently "fixed" by adding a FakeDef to
satisfy liveness.
Propagate float/double arguments to the right register
in lowerArguments, lowerCall, and propagate to s0/d0/q0
for lowerReturn. May need to double check the calling convention.
Currently can't test call-ret because vpush/vpop for prologues
and epilogues isn't done.
Legalize FP immediates to make the nacl-other-intrinsics sqrt
test happy. Use the correct type of load (vldr (.32 and .64 are
optional) instead of ldr{b,h,,d}).
Whether or not the float/vector instructions can be
predicated is a bit interesting. The float/double ones
can, but the SIMD versions cannot. E.g.
vadd<cond>.f32 s0, s0, s1 is okay
vadd<cond>.f32 q0, q0, q1 is not okay.
For now, just omit conditions from instructions that may
end up being reused for SIMD.
Split up the fp.pnacl.ll test into multiple ones so that
parts of lowering can be tested incrementally.
BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org
Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=86ebec12680b5268fcb7082f770a26394e8b8080
Patch Set 1 #Patch Set 2 : a little more stuff #Patch Set 3 : split the tests #Patch Set 4 : lower arguments to start piping stuff through #Patch Set 5 : a bit more lowerRet and copyToReg, but need size for vadd, etc. #Patch Set 6 : fix argument/call/return assignment #Patch Set 7 : squelch liveness for now #Patch Set 8 : fix ldr vs vldr, and fix legalizing immediates #Patch Set 9 : don't put a suffix for vldr... it would be .32 instead of .f32 if we really wanted, but it's option… #Patch Set 10 : tweak #
Total comments: 5
Patch Set 11 : line up #Patch Set 12 : format more #
Messages
Total messages: 6 (1 generated)
|