@@ -2885,11 +2885,39 @@ static unsigned IsPredicateKnownToFail(const unsigned char *Table,
2885
2885
case SelectionDAGISel::OPC_CheckChild4Type:
2886
2886
case SelectionDAGISel::OPC_CheckChild5Type:
2887
2887
case SelectionDAGISel::OPC_CheckChild6Type:
2888
- case SelectionDAGISel::OPC_CheckChild7Type: {
2889
- Result =
2890
- !::CheckChildType (static_cast <MVT::SimpleValueType>(Table[Index++]), N,
2891
- SDISel.TLI , SDISel.CurDAG ->getDataLayout (),
2892
- Opcode - SelectionDAGISel::OPC_CheckChild0Type);
2888
+ case SelectionDAGISel::OPC_CheckChild7Type:
2889
+ case SelectionDAGISel::OPC_CheckChild0TypeI32:
2890
+ case SelectionDAGISel::OPC_CheckChild1TypeI32:
2891
+ case SelectionDAGISel::OPC_CheckChild2TypeI32:
2892
+ case SelectionDAGISel::OPC_CheckChild3TypeI32:
2893
+ case SelectionDAGISel::OPC_CheckChild4TypeI32:
2894
+ case SelectionDAGISel::OPC_CheckChild5TypeI32:
2895
+ case SelectionDAGISel::OPC_CheckChild6TypeI32:
2896
+ case SelectionDAGISel::OPC_CheckChild7TypeI32:
2897
+ case SelectionDAGISel::OPC_CheckChild0TypeI64:
2898
+ case SelectionDAGISel::OPC_CheckChild1TypeI64:
2899
+ case SelectionDAGISel::OPC_CheckChild2TypeI64:
2900
+ case SelectionDAGISel::OPC_CheckChild3TypeI64:
2901
+ case SelectionDAGISel::OPC_CheckChild4TypeI64:
2902
+ case SelectionDAGISel::OPC_CheckChild5TypeI64:
2903
+ case SelectionDAGISel::OPC_CheckChild6TypeI64:
2904
+ case SelectionDAGISel::OPC_CheckChild7TypeI64: {
2905
+ MVT::SimpleValueType VT;
2906
+ unsigned ChildNo;
2907
+ if (Opcode >= SelectionDAGISel::OPC_CheckChild0TypeI32 &&
2908
+ Opcode <= SelectionDAGISel::OPC_CheckChild7TypeI32) {
2909
+ VT = MVT::i32 ;
2910
+ ChildNo = Opcode - SelectionDAGISel::OPC_CheckChild0TypeI32;
2911
+ } else if (Opcode >= SelectionDAGISel::OPC_CheckChild0TypeI64 &&
2912
+ Opcode <= SelectionDAGISel::OPC_CheckChild7TypeI64) {
2913
+ VT = MVT::i64 ;
2914
+ ChildNo = Opcode - SelectionDAGISel::OPC_CheckChild0TypeI64;
2915
+ } else {
2916
+ VT = static_cast <MVT::SimpleValueType>(Table[Index++]);
2917
+ ChildNo = Opcode - SelectionDAGISel::OPC_CheckChild0Type;
2918
+ }
2919
+ Result = !::CheckChildType (VT, N, SDISel.TLI ,
2920
+ SDISel.CurDAG ->getDataLayout (), ChildNo);
2893
2921
return Index;
2894
2922
}
2895
2923
case SelectionDAGISel::OPC_CheckCondCode:
@@ -3412,15 +3440,48 @@ void SelectionDAGISel::SelectCodeCommon(SDNode *NodeToMatch,
3412
3440
<< ' \n ' );
3413
3441
continue ;
3414
3442
}
3415
- case OPC_CheckChild0Type: case OPC_CheckChild1Type:
3416
- case OPC_CheckChild2Type: case OPC_CheckChild3Type:
3417
- case OPC_CheckChild4Type: case OPC_CheckChild5Type:
3418
- case OPC_CheckChild6Type: case OPC_CheckChild7Type:
3419
- if (!::CheckChildType (
3420
- static_cast <MVT::SimpleValueType>(MatcherTable[MatcherIndex++]),
3421
- N, TLI, CurDAG->getDataLayout (), Opcode - OPC_CheckChild0Type))
3443
+ case OPC_CheckChild0Type:
3444
+ case OPC_CheckChild1Type:
3445
+ case OPC_CheckChild2Type:
3446
+ case OPC_CheckChild3Type:
3447
+ case OPC_CheckChild4Type:
3448
+ case OPC_CheckChild5Type:
3449
+ case OPC_CheckChild6Type:
3450
+ case OPC_CheckChild7Type:
3451
+ case OPC_CheckChild0TypeI32:
3452
+ case OPC_CheckChild1TypeI32:
3453
+ case OPC_CheckChild2TypeI32:
3454
+ case OPC_CheckChild3TypeI32:
3455
+ case OPC_CheckChild4TypeI32:
3456
+ case OPC_CheckChild5TypeI32:
3457
+ case OPC_CheckChild6TypeI32:
3458
+ case OPC_CheckChild7TypeI32:
3459
+ case OPC_CheckChild0TypeI64:
3460
+ case OPC_CheckChild1TypeI64:
3461
+ case OPC_CheckChild2TypeI64:
3462
+ case OPC_CheckChild3TypeI64:
3463
+ case OPC_CheckChild4TypeI64:
3464
+ case OPC_CheckChild5TypeI64:
3465
+ case OPC_CheckChild6TypeI64:
3466
+ case OPC_CheckChild7TypeI64: {
3467
+ MVT::SimpleValueType VT;
3468
+ unsigned ChildNo;
3469
+ if (Opcode >= SelectionDAGISel::OPC_CheckChild0TypeI32 &&
3470
+ Opcode <= SelectionDAGISel::OPC_CheckChild7TypeI32) {
3471
+ VT = MVT::i32 ;
3472
+ ChildNo = Opcode - SelectionDAGISel::OPC_CheckChild0TypeI32;
3473
+ } else if (Opcode >= SelectionDAGISel::OPC_CheckChild0TypeI64 &&
3474
+ Opcode <= SelectionDAGISel::OPC_CheckChild7TypeI64) {
3475
+ VT = MVT::i64 ;
3476
+ ChildNo = Opcode - SelectionDAGISel::OPC_CheckChild0TypeI64;
3477
+ } else {
3478
+ VT = static_cast <MVT::SimpleValueType>(MatcherTable[MatcherIndex++]);
3479
+ ChildNo = Opcode - SelectionDAGISel::OPC_CheckChild0Type;
3480
+ }
3481
+ if (!::CheckChildType (VT, N, TLI, CurDAG->getDataLayout (), ChildNo))
3422
3482
break ;
3423
3483
continue ;
3484
+ }
3424
3485
case OPC_CheckCondCode:
3425
3486
if (!::CheckCondCode (MatcherTable, MatcherIndex, N)) break ;
3426
3487
continue ;
0 commit comments