| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
Fixing this Windows build error:
..\lib\Target\Mips\MipsSEISelLowering.cpp(997) : error C2027: use of undefined type 'llvm::raw_ostream'
llvm-svn: 193696
|
| |
|
|
| |
llvm-svn: 193695
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
normal IR (i.e. not intrinsics)
Also corrected the definition of the intrinsics for these instructions (the
result register is also the first operand), and added intrinsics for bsel and
bseli to clang (they already existed in the backend).
These four operations are mostly equivalent to bsel, and bseli (the difference
is which operand is tied to the result). As a result some of the tests changed
as described below.
bitwise.ll:
- bsel.v test adapted so that the mask is unknown at compile-time. This stops
it emitting bmnzi.b instead of the intended bsel.v.
- The bseli.b test now tests the right thing. Namely the case when one of the
values is an uimm8, rather than when the condition is a uimm8 (which is
covered by bmnzi.b)
compare.ll:
- bsel.v tests now (correctly) emits bmnz.v instead of bsel.v because this
is the same operation (see MSA.txt).
i8.ll
- CHECK-DAG-ized test.
- bmzi.b test now (correctly) emits equivalent bmnzi.b with swapped operands
because this is the same operation (see MSA.txt).
- bseli.b still emits bseli.b though because the immediate makes it
distinguishable from bmnzi.b.
vec.ll:
- CHECK-DAG-ized test.
- bmz.v tests now (correctly) emits bmnz.v with swapped operands (see
MSA.txt).
- bsel.v tests now (correctly) emits bmnz.v with swapped operands (see
MSA.txt).
llvm-svn: 193693
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
not intrinsics)
This required correcting the definition of the bins[lr]i intrinsics because
the result is also the first operand.
It also required removing the (arbitrary) check for 32-bit immediates in
MipsSEDAGToDAGISel::selectVSplat().
Currently using binsli.d with 2 bits set in the mask doesn't select binsli.d
because the constant is legalized into a ConstantPool. Similar things can
happen with binsri.d with more than 10 bits set in the mask. The resulting
code when this happens is correct but not optimal.
llvm-svn: 193687
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(or (and $a, $mask), (and $b, $inverse_mask)) => (vselect $mask, $a, $b).
where $mask is a constant splat. This allows bitwise operations to make use
of bsel.
It's also a stepping stone towards matching bins[lr], and bins[lr]i from
normal IR.
Two sets of similar tests have been added in this commit. The bsel_* functions
test the case where binsri cannot be used. The binsr_*_i functions will
start to use the binsri instruction in the next commit.
llvm-svn: 193682
|
| |
|
|
|
|
|
|
| |
-debug-only=mips-isel
No test since -debug output is intended for developers and not end-users.
llvm-svn: 193681
|
| |
|
|
|
|
|
|
|
|
| |
intrinsics)
splat.d is implemented but this subtest is currently disabled. This is because
it is difficult to match the appropriate IR on MIPS32. There is a patch under
review that should help with this so I hope to enable the subtest soon.
llvm-svn: 193680
|
| |
|
|
| |
llvm-svn: 193673
|
| |
|
|
| |
llvm-svn: 193641
|
| |
|
|
| |
llvm-svn: 193627
|
| |
|
|
| |
llvm-svn: 193623
|
| |
|
|
| |
llvm-svn: 193618
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 193540
|
| |
|
|
| |
llvm-svn: 193512
|
| |
|
|
| |
llvm-svn: 193511
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Before I just ported the shell of the pass. I've tried to keep everything
nearly identical to the ARM version. I think it will be very easy to eventually
merge these two and create a new more general pass that other targets can
use. I have some improvements I would like to make to allow pools to
be shared across functions and some other things. When I'm all done we
can think about making a more general pass. More to be ported but the
basic mechanism works now almost as good as gcc mips16.
llvm-svn: 193509
|
| |
|
|
| |
llvm-svn: 193247
|
| |
|
|
| |
llvm-svn: 193240
|
| |
|
|
|
|
| |
intrinsics)
llvm-svn: 193239
|
| |
|
|
|
|
|
|
|
|
|
|
| |
These branches have a 16-bit offset (R_MIPS_PC16).
List of conditional branch instructions:
bnz.{b,h,w,d}
bnz.v
bz.{b,h,w,d}
bz.v
llvm-svn: 193157
|
| |
|
|
| |
llvm-svn: 193082
|
| |
|
|
| |
llvm-svn: 193081
|
| |
|
|
| |
llvm-svn: 193080
|
| |
|
|
|
|
|
|
| |
These instructions are logically related as they allow read/write of MSA control registers.
Currently MSA control registers are emitted by number but hopefully that will change as soon
as GAS starts accepting them by name as that would make the assembly easier to read.
llvm-svn: 193078
|
| |
|
|
| |
llvm-svn: 193077
|
| |
|
|
|
|
|
| |
The second parameter of the SLD intrinsic is the number of columns (GPR) to
slide left the source array.
llvm-svn: 193076
|
| |
|
|
| |
llvm-svn: 192895
|
| |
|
|
|
|
|
|
| |
These were present in a previous version of the MSA spec but are not
present in the published version. There is no hardware that uses these
instructions.
llvm-svn: 192888
|
| |
|
|
|
|
|
|
| |
Define these three instructions in alphabetical order (like the rest of the
file).
No functional change.
llvm-svn: 192880
|
| |
|
|
|
|
| |
We had a MCAsmInfoCOFF, but no common class for all the ELF MCAsmInfos before.
llvm-svn: 192760
|
| |
|
|
| |
llvm-svn: 192699
|
| |
|
|
|
|
| |
parts of the accumulators and gets expanded post-RA.
llvm-svn: 192667
|
| |
|
|
|
|
| |
of relying on AddedComplexity.
llvm-svn: 192665
|
| |
|
|
| |
llvm-svn: 192663
|
| |
|
|
| |
llvm-svn: 192662
|
| |
|
|
| |
llvm-svn: 192661
|
| |
|
|
| |
llvm-svn: 192660
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
List of instructions:
bclri.{b,h,w,d}
binsli.{b,h,w,d}
binsri.{b,h,w,d}
bnegi.{b,h,w,d}
bseti.{b,h,w,d}
sat_s.{b,h,w,d}
sat_u.{b,h,w,d}
slli.{b,h,w,d}
srai.{b,h,w,d}
srari.{b,h,w,d}
srli.{b,h,w,d}
srlri.{b,h,w,d}
llvm-svn: 192589
|
| |
|
|
|
|
|
| |
List of instructions:
and.v, bmnz.v, bmz.v, bsel.v, nor.v, or.v, xor.v.
llvm-svn: 192588
|
| |
|
|
| |
llvm-svn: 192587
|
| |
|
|
|
|
|
|
|
|
| |
List of instructions:
copy_s.{b,h,w}
copy_u.{b,h,w}
sldi.{b,h,w,d}
splati.{b,h,w,d}
llvm-svn: 192586
|
| |
|
|
|
|
|
|
|
| |
INSERT is the first type of MSA instruction that requires a change to the way
MSA registers are parsed. This happens because MSA registers may be suffixed by
an index in the form of an immediate or a general purpose register. The changes
to parseMSARegs reflect that requirement.
llvm-svn: 192582
|
| |
|
|
|
|
| |
they can be better handled and optimized in the Mips16 constant island code.
llvm-svn: 192520
|
| |
|
|
|
|
| |
This doesn't change the meaning of the output, but makes look right. PR17539.
llvm-svn: 192483
|
| |
|
|
| |
llvm-svn: 192451
|
| |
|
|
| |
llvm-svn: 192450
|
| |
|
|
| |
llvm-svn: 192449
|
| |
|
|
|
|
|
|
| |
INSERT is the first type of MSA instruction that requires a change to the way MSA registers are parsed.
This happens because MSA registers may be suffixed by an index in the form of an immediate or a
general purpose register. The changes to parseMSARegs reflect that requirement.
llvm-svn: 192447
|
| |
|
|
|
|
| |
normal IR (i.e. not intrinsics)
llvm-svn: 192438
|
| |
|
|
|
|
| |
intrinsics)
llvm-svn: 192435
|