From 93376b083e11f6dfcc678fe68abbc801eaa0a348 Mon Sep 17 00:00:00 2001 From: Nate Begeman Date: Mon, 8 May 2006 02:52:38 +0000 Subject: [PATCH] Update some stuff now that the new rlwimi code has gone in git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28162 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 1 - lib/Target/PowerPC/README.txt | 69 -------------------------- 2 files changed, 70 deletions(-) diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index 26f13168995..11b0c3df222 100644 --- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -405,7 +405,6 @@ SDNode *PPCDAGToDAGISel::SelectBitfieldInsert(SDNode *N) { TLI.ComputeMaskedBits(Op0, TgtMask, LKZ, LKO); TLI.ComputeMaskedBits(Op1, TgtMask, RKZ, RKO); - // FIXME: rotrwi / rotlwi if ((LKZ | RKZ) == 0x00000000FFFFFFFFULL) { unsigned PInsMask = ~RKZ; unsigned PTgtMask = ~LKZ; diff --git a/lib/Target/PowerPC/README.txt b/lib/Target/PowerPC/README.txt index bbe311cb38b..68fa8f2ae61 100644 --- a/lib/Target/PowerPC/README.txt +++ b/lib/Target/PowerPC/README.txt @@ -85,75 +85,6 @@ more than one use. Itanium will want this too. ===-------------------------------------------------------------------------=== -#define ARRAY_LENGTH 16 - -union bitfield { - struct { -#ifndef __ppc__ - unsigned int field0 : 6; - unsigned int field1 : 6; - unsigned int field2 : 6; - unsigned int field3 : 6; - unsigned int field4 : 3; - unsigned int field5 : 4; - unsigned int field6 : 1; -#else - unsigned int field6 : 1; - unsigned int field5 : 4; - unsigned int field4 : 3; - unsigned int field3 : 6; - unsigned int field2 : 6; - unsigned int field1 : 6; - unsigned int field0 : 6; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; -}; - - -typedef struct program_t { - union bitfield array[ARRAY_LENGTH]; - int size; - int loaded; -} program; - - -void AdjustBitfields(program* prog, unsigned int fmt1) -{ - prog->array[0].bitfields.field0 = fmt1; - prog->array[0].bitfields.field1 = fmt1 + 1; -} - -We currently generate: - -_AdjustBitfields: - lwz r2, 0(r3) - addi r5, r4, 1 - rlwinm r2, r2, 0, 0, 19 - rlwinm r5, r5, 6, 20, 25 - rlwimi r2, r4, 0, 26, 31 - or r2, r2, r5 - stw r2, 0(r3) - blr - -We should teach someone that or (rlwimi, rlwinm) with disjoint masks can be -turned into rlwimi (rlwimi) - -The better codegen would be: - -_AdjustBitfields: - lwz r0,0(r3) - rlwinm r4,r4,0,0xff - rlwimi r0,r4,0,26,31 - addi r4,r4,1 - rlwimi r0,r4,6,20,25 - stw r0,0(r3) - blr - -===-------------------------------------------------------------------------=== - Compile this: int %f1(int %a, int %b) {