| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
revision of the MSA spec (1.06).
This does not affect any of the existing output.
Patch by Matheus Almeida
llvm-svn: 191460
|
|
|
|
|
|
|
|
| |
This is the first set of instructions with a ".b" modifier thus we need to add the required code to disassemble a MSA128B register class.
Patch by Matheus Almeida
llvm-svn: 191415
|
|
|
|
|
|
|
|
|
|
|
| |
of the MSA spec (1.06).
Internal changes only.
Patch by Matheus Almeida
llvm-svn: 191414
|
|
|
|
|
|
| |
Patch by Matheus Almeida
llvm-svn: 191413
|
|
|
|
|
|
|
|
|
|
| |
In more detail, this patch adds the ability to parse, encode and decode MSA registers ($w0-$w31). The format of 2RF instructions (MipsMSAInstrFormat.td) was updated so that we could attach a test case to this patch i.e., the test case parses, encodes and decodes 2 MSA instructions. Following patches will add the remainder of the instructions.
Note that DecodeMSA128BRegisterClass is missing from MipsDisassembler.td because it's not yet required at this stage and having it would cause a compiler warning (unused function).
Patch by Matheus Almeida
llvm-svn: 191412
|
|
|
|
|
|
|
|
|
|
|
|
| |
revision of the MSA spec (1.06).
This only changes internal encodings and doesn't affect output.
Patch by Matheus Almeida
llvm-svn: 191411
|
|
|
|
|
|
| |
not intrinsics)
llvm-svn: 191306
|
|
|
|
|
|
| |
IR (i.e. not intrinsics)
llvm-svn: 191304
|
|
|
|
| |
llvm-svn: 191302
|
|
|
|
| |
llvm-svn: 191301
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUILD_VECTOR.
Most constant BUILD_VECTOR's are matched using ComplexPatterns which cover
bitcasted as well as normal vectors. However, it doesn't seem to be possible to
match ldi.[bhwd] in a type-agnostic manner (e.g. to support the widest range of
immediates, it should be possible to use ldi.b to load v2i64) using TableGen so
ldi.[bhwd] is matched using custom code in MipsSEISelDAGToDAG.cpp
This made the majority of the constant splat BUILD_VECTOR lowering redundant.
The only transformation remaining for constant splats is when an (up-to) 32-bit
constant splat is possible but the value does not fit into a 10-bit signed
integer. In this case, the BUILD_VECTOR is transformed into a bitcasted
BUILD_VECTOR so that fill.[bhw] can be used to splat the vector from a GPR32
register (which is initialized using the usual lui/addui sequence).
There are no additional tests since this is a re-implementation of previous
functionality. The change is intended to make it easier to implement some of
the upcoming instruction selection patches since they can rely on existing
support for BUILD_VECTOR's in the DAGCombiner.
compare_float.ll changed slightly because a BITCAST is no longer
introduced during legalization.
llvm-svn: 191299
|
|
|
|
|
|
|
|
| |
not intrinsics)
This covers the case where fmax_a can be used to implement ISD::FABS.
llvm-svn: 191296
|
|
|
|
|
|
| |
No functional change.
llvm-svn: 191295
|
|
|
|
|
|
| |
IR (i.e. not intrinsics)
llvm-svn: 191293
|
|
|
|
|
|
| |
(i.e. not intrinsics)
llvm-svn: 191291
|
|
|
|
|
|
|
|
| |
not intrinsics)
This required correcting the definition of the bsel and bseli intrinsics.
llvm-svn: 191290
|
|
|
|
|
|
|
|
|
| |
intrinsics)
MIPS SelectionDAG changes:
* Added VCEQ, VCL[ET]_[SU] nodes to represent vector comparisons that produce a bitmask.
llvm-svn: 191286
|
|
|
|
|
|
| |
(i.e. not intrinsics)
llvm-svn: 191285
|
|
|
|
|
|
| |
not intrinsics)
llvm-svn: 191203
|
|
|
|
|
|
|
|
|
|
|
| |
not intrinsics)
Changes to MIPS SelectionDAG:
* Added nodes VEXTRACT_[SZ]EXT_ELT to represent extract and extend in a single
operation and implemented the DAG combines necessary to fold sign/zero
extends into the extract.
llvm-svn: 191199
|
|
|
|
| |
llvm-svn: 191198
|
|
|
|
| |
llvm-svn: 191195
|
|
|
|
|
|
| |
not intrinsics)
llvm-svn: 191194
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SelectionDAG nodes (VSPLAT and VSPLATD)
Note: There's a later patch on my branch that re-implements this to select
build_vector without the custom SelectionDAG nodes. The future patch avoids
the constant-folding problems stemming from the custom node (i.e. it doesn't
need to re-implement all the DAG combines related to BUILD_VECTOR).
Changes to MIPS specific SelectionDAG nodes:
* Added VSPLAT
This is a special case of BUILD_VECTOR that covers the case the
BUILD_VECTOR is a splat operation.
* Added VSPLATD
This is a special case of VSPLAT that handles the cases when v2i64 is legal
llvm-svn: 191191
|
|
|
|
|
|
| |
from normal IR (i.e. not intrinsics)
llvm-svn: 190518
|
|
|
|
|
|
| |
fsqrt, and fsub from normal IR (i.e. not intrinsics)
llvm-svn: 190512
|
|
|
|
|
|
| |
intrinsics)
llvm-svn: 190509
|
|
|
|
|
|
| |
The corresponding intrinsic is now lowered into equivalent IR (ISD::ADD) before instruction selection.
llvm-svn: 190507
|
|
|
|
|
|
|
| |
The elements of the operands should be half the width of the elements of
the result.
llvm-svn: 190505
|
|
|
|
|
|
| |
The dotp_[su].b instructions never existed in any revision of the MSA spec.
llvm-svn: 190398
|
|
|
|
|
|
| |
into a 5-bit or 6-bit field.
llvm-svn: 190226
|
|
|
|
| |
llvm-svn: 190156
|
|
|
|
|
|
|
| |
Tested with 'llvm-tblgen -print-records' which outputs identical records before
and after this patch.
llvm-svn: 190155
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190153
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190151
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190150
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190146
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190145
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190143
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190142
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190141
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190140
|
|
|
|
|
|
| |
No functional change
llvm-svn: 190134
|
|
|
|
|
|
|
|
| |
Their default is to be the same as the result register set.
No functional change
llvm-svn: 190133
|
|
|
|
|
|
|
|
| |
NoItinerary at the moment.
No functional change
llvm-svn: 190131
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These intrinsics are legalized to V(ALL|ANY)_(NON)?ZERO nodes,
are matched as SN?Z_[BHWDV]_PSEUDO pseudo's, and emitted as
a branch/mov sequence to evaluate to 0 or 1.
Note: The resulting code is sub-optimal since it doesnt seem to be possible
to feed the result of an intrinsic directly into a brcond. At the moment
it uses (SETCC (VALL_ZERO $ws), 0, SETEQ) and similar which unnecessarily
evaluates the boolean twice.
llvm-svn: 189478
|
|
|
|
| |
llvm-svn: 189476
|
|
|
|
| |
llvm-svn: 189471
|
|
|
|
|
|
|
|
| |
The MSA control registers have been added as reserved registers,
and are only used via ISD::Copy(To|From)Reg. The intrinsics are lowered
into these nodes.
llvm-svn: 189468
|
|
|
|
|
|
| |
ftrunc_[su], hadd_[su], hsub_[su], sr[al]r, sr[al]ri
llvm-svn: 189467
|