[PATCH] [PATCH] Test case and FastISel fixes with FeatureVSX enabled

Bill Seurer seurer at linux.vnet.ibm.com
Thu Oct 9 07:49:29 PDT 2014


On 10/8/2014 6:09 PM, Eric Christopher wrote:
> There's more seemingly of these as well, but calling out each one
> separately seems to be a bit verbose.
>
> Thoughts?

This work started as getting the test cases to work that failed with 
FeatureVSX turned on.  There turned out to be 3 things that were causing 
problems when VSX is turned on:
1) FastISel not being able to handle VSX registers and hitting assertion 
checks.
2) Different (i.e., VSX) operations being generated in some test cases 
than were being checked for.  For these I changed the exiting test to 
use -mattr=-vsx and then added new checks for -mattr=+vsx.  The new 
checks in some cases are substantially the same because the same code is 
generated for parts of the test cases with or without VSX activated.
3) Basic incompatibility between options in some test cases; 32 bit 
compilations or targeting Darwin + VSX doesn't work.  For the tests that 
failed (and just the ones that failed) I just added -mattr=-vsx.  I 
thought about changing all the tests that had "bad" combinations but 
there were more than a hundred so I left that for later (maybe).

#2 and #3 are what all the test case changes are about and need to be 
done irregardless of the FastISel changes.  Back a long ways in the 
conversation I asked about doing the test case changes separately but no 
one responded then.

The Generic select-cc.ll test fails with VSX turned on.  Note that there 
is an identical test in CodeGen/PowerPC which also fails though that one 
uses the option -march=ppc32.

FAIL: LLVM :: CodeGen/Generic/select-cc.ll (9642 of 19384)
******************** TEST 'LLVM :: CodeGen/Generic/select-cc.ll' FAILED
. . .
LLVM ERROR: Cannot select: 0x1001e5b99f0: v2f64 = select_cc 
0x1001e5b96d8, 0x1001e5b97e0, 0x1001e5b7158, 0x1001e5b6f48,
0x1001e5b98e8 [ORD=4] [ID=20]
   0x1001e5b96d8: i1 = and 0x1001e5b7788, 0x1001e5b95d0 [ORD=4] [ID=19]
     0x1001e5b7788: i1 = setcc 0x1001e5b7470, 0x1001e5b9af8, 
0x1001e5b7260 [ORD=4] [ID=17]
       0x1001e5b7470: f64 = extract_vector_elt 0x1001e5b6f48, 
0x1001e5b7368 [ORD=2] [ID=15]
         0x1001e5b6f48: v2f64,ch = CopyFromReg 0x1001e582790, 
0x1001e5b6e40 [ORD=1] [ID=12]
           0x1001e5b6e40: v2f64 = Register %vreg0 [ID=1]
         0x1001e5b7368: i64 = Constant<0> [ID=3]
       0x1001e5b9af8: f64,ch = load 0x1001e582790, 0x1001e5b9d08, 
0x1001e5b7cb0<LD4[ConstantPool], anyext from f32> [ID=1
6]
         0x1001e5b9d08: i64 = PPCISD::TOC_ENTRY 0x1001e5b7578, 
0x1001e5b9c00 [ID=14]
           0x1001e5b7578: i64 = TargetConstantPool<float 0.000000e+00> 0 
[ID=10]
           0x1001e5b9c00: i64 = Register %X2 [ID=11]
         0x1001e5b7cb0: i64 = undef [ID=9]
     0x1001e5b95d0: i1 = setcc 0x1001e5b7470, 0x1001e5b9af8, 
0x1001e5b7890 [ORD=4] [ID=18]
       0x1001e5b7470: f64 = extract_vector_elt 0x1001e5b6f48, 
0x1001e5b7368 [ORD=2] [ID=15]
         0x1001e5b6f48: v2f64,ch = CopyFromReg 0x1001e582790, 
0x1001e5b6e40 [ORD=1] [ID=12]
           0x1001e5b6e40: v2f64 = Register %vreg0 [ID=1]
         0x1001e5b7368: i64 = Constant<0> [ID=3]
       0x1001e5b9af8: f64,ch = load 0x1001e582790, 0x1001e5b9d08, 
0x1001e5b7cb0<LD4[ConstantPool], anyext from f32> [ID=1
6]
         0x1001e5b9d08: i64 = PPCISD::TOC_ENTRY 0x1001e5b7578, 
0x1001e5b9c00 [ID=14]
           0x1001e5b7578: i64 = TargetConstantPool<float 0.000000e+00> 0 
[ID=10]
           0x1001e5b9c00: i64 = Register %X2 [ID=11]
         0x1001e5b7cb0: i64 = undef [ID=9]
   0x1001e5b97e0: i1 = Constant<0> [ID=7]
   0x1001e5b7158: v2f64,ch = CopyFromReg 0x1001e582790, 0x1001e5b7050 
[ORD=1] [ID=13]
     0x1001e5b7050: v2f64 = Register %vreg1 [ID=2]
   0x1001e5b6f48: v2f64,ch = CopyFromReg 0x1001e582790, 0x1001e5b6e40 
[ORD=1] [ID=12]
     0x1001e5b6e40: v2f64 = Register %vreg0 [ID=1]
In function: vector_select
-- 

-Bill Seurer




More information about the llvm-commits mailing list