mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	move some stuff around, clean things up
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27802 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -39,16 +39,12 @@ a load/store/lve*x sequence. | |||||||
|  |  | ||||||
| //===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
| FABS/FNEG can be codegen'd with the appropriate and/xor of -0.0. |  | ||||||
|  |  | ||||||
| //===----------------------------------------------------------------------===// |  | ||||||
|  |  | ||||||
| For functions that use altivec AND have calls, we are VRSAVE'ing all call | For functions that use altivec AND have calls, we are VRSAVE'ing all call | ||||||
| clobbered regs. | clobbered regs. | ||||||
|  |  | ||||||
| //===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
| Implement passing vectors by value. | Implement passing vectors by value into calls and receiving them as arguments. | ||||||
|  |  | ||||||
| //===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
| @@ -57,13 +53,6 @@ of C1/C2/C3, then a load and vperm of Variable. | |||||||
|  |  | ||||||
| //===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
| We currently codegen SCALAR_TO_VECTOR as a store of the scalar to a 16-byte |  | ||||||
| aligned stack slot, followed by a load/vperm.  We should probably just store it |  | ||||||
| to a scalar stack slot, then use lvsl/vperm to load it.  If the value is already |  | ||||||
| in memory, this is a huge win. |  | ||||||
|  |  | ||||||
| //===----------------------------------------------------------------------===// |  | ||||||
|  |  | ||||||
| Do not generate the MFCR/RLWINM sequence for predicate compares when the | Do not generate the MFCR/RLWINM sequence for predicate compares when the | ||||||
| predicate compare is used immediately by a branch.  Just branch on the right | predicate compare is used immediately by a branch.  Just branch on the right | ||||||
| cond code on CR6. | cond code on CR6. | ||||||
| @@ -75,6 +64,13 @@ be constants.  The verifier should enforce this constraint. | |||||||
|  |  | ||||||
| //===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
|  | We currently codegen SCALAR_TO_VECTOR as a store of the scalar to a 16-byte | ||||||
|  | aligned stack slot, followed by a load/vperm.  We should probably just store it | ||||||
|  | to a scalar stack slot, then use lvsl/vperm to load it.  If the value is already | ||||||
|  | in memory this is a big win. | ||||||
|  |  | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
| extract_vector_elt of an arbitrary constant vector can be done with the  | extract_vector_elt of an arbitrary constant vector can be done with the  | ||||||
| following instructions: | following instructions: | ||||||
|  |  | ||||||
| @@ -87,8 +83,9 @@ We can do an arbitrary non-constant value by using lvsr/perm/ste. | |||||||
|  |  | ||||||
| If we want to tie instruction selection into the scheduler, we can do some | If we want to tie instruction selection into the scheduler, we can do some | ||||||
| constant formation with different instructions.  For example, we can generate | constant formation with different instructions.  For example, we can generate | ||||||
| "vsplti -1" with "vcmpequw R,R" and 1,1,1,1 with "vsubcuw R,R", both of which | "vsplti -1" with "vcmpequw R,R" and 1,1,1,1 with "vsubcuw R,R", and 0,0,0,0 with | ||||||
| use different execution units, thus could help scheduling. | "vsplti 0" or "vxor", each of which use different execution units, thus could | ||||||
|  | help scheduling. | ||||||
|  |  | ||||||
| This is probably only reasonable for a post-pass scheduler. | This is probably only reasonable for a post-pass scheduler. | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user