1
//===- TableGen'erated file -------------------------------------*- C++ -*-===//
3
// DAG Instruction Selector for the PPC target
5
// Automatically generated file, do not edit!
7
//===----------------------------------------------------------------------===//
9
// *** NOTE: This file is #included into the middle of the target
10
// *** instruction selector class. These functions are really methods.
13
// Predicate functions.
14
inline bool Predicate_V_immneg0(SDNode *N) const {
16
return PPC::isAllNegativeZeroVector(N);
19
inline bool Predicate_atomic_cmp_swap_16(SDNode *N) const {
21
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
24
inline bool Predicate_atomic_cmp_swap_32(SDNode *N) const {
26
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
29
inline bool Predicate_atomic_cmp_swap_64(SDNode *N) const {
31
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
34
inline bool Predicate_atomic_cmp_swap_8(SDNode *N) const {
36
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
39
inline bool Predicate_atomic_load_add_16(SDNode *N) const {
41
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
44
inline bool Predicate_atomic_load_add_32(SDNode *N) const {
46
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
49
inline bool Predicate_atomic_load_add_64(SDNode *N) const {
51
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
54
inline bool Predicate_atomic_load_add_8(SDNode *N) const {
56
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
59
inline bool Predicate_atomic_load_and_16(SDNode *N) const {
61
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
64
inline bool Predicate_atomic_load_and_32(SDNode *N) const {
66
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
69
inline bool Predicate_atomic_load_and_64(SDNode *N) const {
71
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
74
inline bool Predicate_atomic_load_and_8(SDNode *N) const {
76
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
79
inline bool Predicate_atomic_load_max_16(SDNode *N) const {
81
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
84
inline bool Predicate_atomic_load_max_32(SDNode *N) const {
86
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
89
inline bool Predicate_atomic_load_max_64(SDNode *N) const {
91
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
94
inline bool Predicate_atomic_load_max_8(SDNode *N) const {
96
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
99
inline bool Predicate_atomic_load_min_16(SDNode *N) const {
101
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
104
inline bool Predicate_atomic_load_min_32(SDNode *N) const {
106
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
109
inline bool Predicate_atomic_load_min_64(SDNode *N) const {
111
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
114
inline bool Predicate_atomic_load_min_8(SDNode *N) const {
116
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
119
inline bool Predicate_atomic_load_nand_16(SDNode *N) const {
121
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
124
inline bool Predicate_atomic_load_nand_32(SDNode *N) const {
126
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
129
inline bool Predicate_atomic_load_nand_64(SDNode *N) const {
131
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
134
inline bool Predicate_atomic_load_nand_8(SDNode *N) const {
136
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
139
inline bool Predicate_atomic_load_or_16(SDNode *N) const {
141
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
144
inline bool Predicate_atomic_load_or_32(SDNode *N) const {
146
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
149
inline bool Predicate_atomic_load_or_64(SDNode *N) const {
151
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
154
inline bool Predicate_atomic_load_or_8(SDNode *N) const {
156
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
159
inline bool Predicate_atomic_load_sub_16(SDNode *N) const {
161
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
164
inline bool Predicate_atomic_load_sub_32(SDNode *N) const {
166
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
169
inline bool Predicate_atomic_load_sub_64(SDNode *N) const {
171
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
174
inline bool Predicate_atomic_load_sub_8(SDNode *N) const {
176
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
179
inline bool Predicate_atomic_load_umax_16(SDNode *N) const {
181
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
184
inline bool Predicate_atomic_load_umax_32(SDNode *N) const {
186
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
189
inline bool Predicate_atomic_load_umax_64(SDNode *N) const {
191
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
194
inline bool Predicate_atomic_load_umax_8(SDNode *N) const {
196
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
199
inline bool Predicate_atomic_load_umin_16(SDNode *N) const {
201
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
204
inline bool Predicate_atomic_load_umin_32(SDNode *N) const {
206
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
209
inline bool Predicate_atomic_load_umin_64(SDNode *N) const {
211
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
214
inline bool Predicate_atomic_load_umin_8(SDNode *N) const {
216
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
219
inline bool Predicate_atomic_load_xor_16(SDNode *N) const {
221
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
224
inline bool Predicate_atomic_load_xor_32(SDNode *N) const {
226
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
229
inline bool Predicate_atomic_load_xor_64(SDNode *N) const {
231
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
234
inline bool Predicate_atomic_load_xor_8(SDNode *N) const {
236
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
239
inline bool Predicate_atomic_swap_16(SDNode *N) const {
241
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
244
inline bool Predicate_atomic_swap_32(SDNode *N) const {
246
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
249
inline bool Predicate_atomic_swap_64(SDNode *N) const {
251
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
254
inline bool Predicate_atomic_swap_8(SDNode *N) const {
256
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
259
inline bool Predicate_cvtff(SDNode *N) const {
261
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_FF;
264
inline bool Predicate_cvtfs(SDNode *N) const {
266
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_FS;
269
inline bool Predicate_cvtfu(SDNode *N) const {
271
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_FU;
274
inline bool Predicate_cvtsf(SDNode *N) const {
276
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_SF;
279
inline bool Predicate_cvtss(SDNode *N) const {
281
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_SS;
284
inline bool Predicate_cvtsu(SDNode *N) const {
286
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_SU;
289
inline bool Predicate_cvtuf(SDNode *N) const {
291
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_UF;
294
inline bool Predicate_cvtus(SDNode *N) const {
296
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_US;
299
inline bool Predicate_cvtuu(SDNode *N) const {
301
return cast<CvtRndSatSDNode>(N)->getCvtCode() == ISD::CVT_UU;
304
inline bool Predicate_extload(SDNode *N) const {
306
return cast<LoadSDNode>(N)->getExtensionType() == ISD::EXTLOAD;
309
inline bool Predicate_extloadf32(SDNode *N) const {
311
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::f32;
314
inline bool Predicate_extloadf64(SDNode *N) const {
316
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::f64;
319
inline bool Predicate_extloadi1(SDNode *N) const {
321
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i1;
324
inline bool Predicate_extloadi16(SDNode *N) const {
326
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
329
inline bool Predicate_extloadi32(SDNode *N) const {
331
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
334
inline bool Predicate_extloadi8(SDNode *N) const {
336
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i8;
339
inline bool Predicate_imm16ShiftedSExt(SDNode *inN) const {
340
ConstantSDNode *N = cast<ConstantSDNode>(inN);
342
// imm16ShiftedSExt predicate - True if only bits in the top 16-bits of the
343
// immediate are set. Used by instructions like 'addis'. Identical to
344
// imm16ShiftedZExt in 32-bit mode.
345
if (N->getZExtValue() & 0xFFFF) return false;
346
if (N->getValueType(0) == MVT::i32)
348
// For 64-bit, make sure it is sext right.
349
return N->getZExtValue() == (uint64_t)(int)N->getZExtValue();
352
inline bool Predicate_imm16ShiftedZExt(SDNode *inN) const {
353
ConstantSDNode *N = cast<ConstantSDNode>(inN);
355
// imm16ShiftedZExt predicate - True if only bits in the top 16-bits of the
356
// immediate are set. Used by instructions like 'xoris'.
357
return (N->getZExtValue() & ~uint64_t(0xFFFF0000)) == 0;
360
inline bool Predicate_immAllOnesV(SDNode *N) const {
362
return ISD::isBuildVectorAllOnes(N);
365
inline bool Predicate_immAllOnesV_bc(SDNode *N) const {
367
return ISD::isBuildVectorAllOnes(N);
370
inline bool Predicate_immAllZerosV(SDNode *N) const {
372
return ISD::isBuildVectorAllZeros(N);
375
inline bool Predicate_immAllZerosV_bc(SDNode *N) const {
377
return ISD::isBuildVectorAllZeros(N);
380
inline bool Predicate_immSExt16(SDNode *inN) const {
381
ConstantSDNode *N = cast<ConstantSDNode>(inN);
383
// immSExt16 predicate - True if the immediate fits in a 16-bit sign extended
384
// field. Used by instructions like 'addi'.
385
if (N->getValueType(0) == MVT::i32)
386
return (int32_t)N->getZExtValue() == (short)N->getZExtValue();
388
return (int64_t)N->getZExtValue() == (short)N->getZExtValue();
391
inline bool Predicate_immZExt16(SDNode *inN) const {
392
ConstantSDNode *N = cast<ConstantSDNode>(inN);
394
// immZExt16 predicate - True if the immediate fits in a 16-bit zero extended
395
// field. Used by instructions like 'ori'.
396
return (uint64_t)N->getZExtValue() == (unsigned short)N->getZExtValue();
399
inline bool Predicate_istore(SDNode *N) const {
401
return !cast<StoreSDNode>(N)->isTruncatingStore();
404
inline bool Predicate_itruncstore(SDNode *N) const {
406
return cast<StoreSDNode>(N)->isTruncatingStore();
409
inline bool Predicate_load(SDNode *N) const {
411
return cast<LoadSDNode>(N)->getExtensionType() == ISD::NON_EXTLOAD;
414
inline bool Predicate_maskimm32(SDNode *inN) const {
415
ConstantSDNode *N = cast<ConstantSDNode>(inN);
417
// maskImm predicate - True if immediate is a run of ones.
419
if (N->getValueType(0) == MVT::i32)
420
return isRunOfOnes((unsigned)N->getZExtValue(), mb, me);
425
inline bool Predicate_post_store(SDNode *N) const {
427
ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
428
return AM == ISD::POST_INC || AM == ISD::POST_DEC;
431
inline bool Predicate_post_truncst(SDNode *N) const {
433
ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
434
return AM == ISD::POST_INC || AM == ISD::POST_DEC;
437
inline bool Predicate_post_truncstf32(SDNode *N) const {
439
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::f32;
442
inline bool Predicate_post_truncsti1(SDNode *N) const {
444
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i1;
447
inline bool Predicate_post_truncsti16(SDNode *N) const {
449
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i16;
452
inline bool Predicate_post_truncsti32(SDNode *N) const {
454
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i32;
457
inline bool Predicate_post_truncsti8(SDNode *N) const {
459
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i8;
462
inline bool Predicate_pre_store(SDNode *N) const {
464
ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
465
return AM == ISD::PRE_INC || AM == ISD::PRE_DEC;
468
inline bool Predicate_pre_truncst(SDNode *N) const {
470
ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
471
return AM == ISD::PRE_INC || AM == ISD::PRE_DEC;
474
inline bool Predicate_pre_truncstf32(SDNode *N) const {
476
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::f32;
479
inline bool Predicate_pre_truncsti1(SDNode *N) const {
481
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i1;
484
inline bool Predicate_pre_truncsti16(SDNode *N) const {
486
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i16;
489
inline bool Predicate_pre_truncsti32(SDNode *N) const {
491
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i32;
494
inline bool Predicate_pre_truncsti8(SDNode *N) const {
496
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i8;
499
inline bool Predicate_sextload(SDNode *N) const {
501
return cast<LoadSDNode>(N)->getExtensionType() == ISD::SEXTLOAD;
504
inline bool Predicate_sextloadi1(SDNode *N) const {
506
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i1;
509
inline bool Predicate_sextloadi16(SDNode *N) const {
511
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
514
inline bool Predicate_sextloadi32(SDNode *N) const {
516
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
519
inline bool Predicate_sextloadi8(SDNode *N) const {
521
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i8;
524
inline bool Predicate_store(SDNode *N) const {
526
return !cast<StoreSDNode>(N)->isTruncatingStore();
529
inline bool Predicate_truncstore(SDNode *N) const {
531
return cast<StoreSDNode>(N)->isTruncatingStore();
534
inline bool Predicate_truncstoref32(SDNode *N) const {
536
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::f32;
539
inline bool Predicate_truncstoref64(SDNode *N) const {
541
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::f64;
544
inline bool Predicate_truncstorei16(SDNode *N) const {
546
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i16;
549
inline bool Predicate_truncstorei32(SDNode *N) const {
551
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i32;
554
inline bool Predicate_truncstorei8(SDNode *N) const {
556
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i8;
559
inline bool Predicate_unindexedload(SDNode *N) const {
561
return cast<LoadSDNode>(N)->getAddressingMode() == ISD::UNINDEXED;
564
inline bool Predicate_unindexedstore(SDNode *N) const {
566
return cast<StoreSDNode>(N)->getAddressingMode() == ISD::UNINDEXED;
569
inline bool Predicate_vecspltisb(SDNode *N) const {
571
return PPC::get_VSPLTI_elt(N, 1, *CurDAG).getNode() != 0;
574
inline bool Predicate_vecspltish(SDNode *N) const {
576
return PPC::get_VSPLTI_elt(N, 2, *CurDAG).getNode() != 0;
579
inline bool Predicate_vecspltisw(SDNode *N) const {
581
return PPC::get_VSPLTI_elt(N, 4, *CurDAG).getNode() != 0;
584
inline bool Predicate_vmrghb_shuffle(SDNode *N) const {
586
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 1, false);
589
inline bool Predicate_vmrghb_unary_shuffle(SDNode *N) const {
591
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 1, true);
594
inline bool Predicate_vmrghh_shuffle(SDNode *N) const {
596
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 2, false);
599
inline bool Predicate_vmrghh_unary_shuffle(SDNode *N) const {
601
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 2, true);
604
inline bool Predicate_vmrghw_shuffle(SDNode *N) const {
606
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 4, false);
609
inline bool Predicate_vmrghw_unary_shuffle(SDNode *N) const {
611
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 4, true);
614
inline bool Predicate_vmrglb_shuffle(SDNode *N) const {
616
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 1, false);
619
inline bool Predicate_vmrglb_unary_shuffle(SDNode *N) const {
621
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 1, true);
624
inline bool Predicate_vmrglh_shuffle(SDNode *N) const {
626
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 2, false);
629
inline bool Predicate_vmrglh_unary_shuffle(SDNode *N) const {
631
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 2, true);
634
inline bool Predicate_vmrglw_shuffle(SDNode *N) const {
636
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 4, false);
639
inline bool Predicate_vmrglw_unary_shuffle(SDNode *N) const {
641
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 4, true);
644
inline bool Predicate_vpkuhum_shuffle(SDNode *N) const {
646
return PPC::isVPKUHUMShuffleMask(cast<ShuffleVectorSDNode>(N), false);
649
inline bool Predicate_vpkuhum_unary_shuffle(SDNode *N) const {
651
return PPC::isVPKUHUMShuffleMask(cast<ShuffleVectorSDNode>(N), true);
654
inline bool Predicate_vpkuwum_shuffle(SDNode *N) const {
656
return PPC::isVPKUWUMShuffleMask(cast<ShuffleVectorSDNode>(N), false);
659
inline bool Predicate_vpkuwum_unary_shuffle(SDNode *N) const {
661
return PPC::isVPKUWUMShuffleMask(cast<ShuffleVectorSDNode>(N), true);
664
inline bool Predicate_vsldoi_shuffle(SDNode *N) const {
666
return PPC::isVSLDOIShuffleMask(N, false) != -1;
669
inline bool Predicate_vsldoi_unary_shuffle(SDNode *N) const {
671
return PPC::isVSLDOIShuffleMask(N, true) != -1;
674
inline bool Predicate_vspltb_shuffle(SDNode *N) const {
676
return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 1);
679
inline bool Predicate_vsplth_shuffle(SDNode *N) const {
681
return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 2);
684
inline bool Predicate_vspltw_shuffle(SDNode *N) const {
686
return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 4);
689
inline bool Predicate_vtFP(SDNode *inN) const {
690
VTSDNode *N = cast<VTSDNode>(inN);
691
return N->getVT().isFloatingPoint();
693
inline bool Predicate_vtInt(SDNode *inN) const {
694
VTSDNode *N = cast<VTSDNode>(inN);
695
return N->getVT().isInteger();
697
inline bool Predicate_zextload(SDNode *N) const {
699
return cast<LoadSDNode>(N)->getExtensionType() == ISD::ZEXTLOAD;
702
inline bool Predicate_zextloadi1(SDNode *N) const {
704
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i1;
707
inline bool Predicate_zextloadi16(SDNode *N) const {
709
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
712
inline bool Predicate_zextloadi32(SDNode *N) const {
714
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
717
inline bool Predicate_zextloadi8(SDNode *N) const {
719
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i8;
724
// The main instruction selector code.
725
SDNode *SelectCode(SDNode *N) {
726
// Opcodes are emitted as 2 bytes, TARGET_OPCODE handles this.
727
#define TARGET_OPCODE(X) X & 255, unsigned(X) >> 8
728
static const unsigned char MatcherTable[] = {
729
OPC_SwitchOpcode , 37, ISD::MEMBARRIER,
732
OPC_CheckOpcode, ISD::Constant,
733
OPC_CheckType, MVT::i32,
736
OPC_CheckOpcode, ISD::Constant,
739
OPC_CheckOpcode, ISD::Constant,
742
OPC_CheckOpcode, ISD::Constant,
745
OPC_CheckOpcode, ISD::Constant,
747
OPC_EmitMergeInputChains, 1, 0,
748
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SYNC), 0|OPFL_Chain,
750
114|128,4, ISD::INTRINSIC_VOID,
754
OPC_CheckInteger, 80|128,2,
757
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
758
OPC_EmitMergeInputChains, 1, 0,
759
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBA), 0|OPFL_Chain,
762
OPC_CheckInteger, 81|128,2,
765
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
766
OPC_EmitMergeInputChains, 1, 0,
767
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBF), 0|OPFL_Chain,
770
OPC_CheckInteger, 82|128,2,
773
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
774
OPC_EmitMergeInputChains, 1, 0,
775
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBI), 0|OPFL_Chain,
778
OPC_CheckInteger, 83|128,2,
781
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
782
OPC_EmitMergeInputChains, 1, 0,
783
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBST), 0|OPFL_Chain,
786
OPC_CheckInteger, 84|128,2,
789
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
790
OPC_EmitMergeInputChains, 1, 0,
791
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBT), 0|OPFL_Chain,
794
OPC_CheckInteger, 85|128,2,
797
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
798
OPC_EmitMergeInputChains, 1, 0,
799
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBTST), 0|OPFL_Chain,
802
OPC_CheckInteger, 86|128,2,
805
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
806
OPC_EmitMergeInputChains, 1, 0,
807
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBZ), 0|OPFL_Chain,
810
OPC_CheckInteger, 87|128,2,
813
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
814
OPC_EmitMergeInputChains, 1, 0,
815
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBZL), 0|OPFL_Chain,
818
OPC_CheckInteger, 76|128,1,
822
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
823
OPC_EmitMergeInputChains, 1, 0,
824
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVEBX), 0|OPFL_Chain,
827
OPC_CheckInteger, 77|128,1,
831
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
832
OPC_EmitMergeInputChains, 1, 0,
833
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVEHX), 0|OPFL_Chain,
836
OPC_CheckInteger, 78|128,1,
840
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
841
OPC_EmitMergeInputChains, 1, 0,
842
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVEWX), 0|OPFL_Chain,
845
OPC_CheckInteger, 79|128,1,
849
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
850
OPC_EmitMergeInputChains, 1, 0,
851
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVX), 0|OPFL_Chain,
854
OPC_CheckInteger, 80|128,1,
858
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
859
OPC_EmitMergeInputChains, 1, 0,
860
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVXL), 0|OPFL_Chain,
863
OPC_CheckInteger, 61|128,1,
867
OPC_CheckOpcode, ISD::Constant,
869
OPC_EmitMergeInputChains, 1, 0,
870
OPC_EmitInteger, MVT::i32, 0,
871
OPC_EmitConvertToTarget, 1,
872
OPC_EmitInteger, MVT::i32, 0,
873
OPC_EmitInteger, MVT::i32, 0,
874
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSS), 0|OPFL_Chain,
877
OPC_CheckInteger, 63|128,1,
881
OPC_CheckChild2Type, MVT::i32,
885
OPC_CheckOpcode, ISD::Constant,
887
OPC_EmitMergeInputChains, 1, 0,
888
OPC_EmitInteger, MVT::i32, 0,
889
OPC_EmitConvertToTarget, 3,
890
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DST), 0|OPFL_Chain,
893
OPC_CheckChild2Type, MVT::i64,
897
OPC_CheckOpcode, ISD::Constant,
899
OPC_EmitMergeInputChains, 1, 0,
900
OPC_EmitInteger, MVT::i32, 0,
901
OPC_EmitConvertToTarget, 3,
902
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DST64), 0|OPFL_Chain,
906
OPC_CheckInteger, 66|128,1,
910
OPC_CheckChild2Type, MVT::i32,
914
OPC_CheckOpcode, ISD::Constant,
916
OPC_EmitMergeInputChains, 1, 0,
917
OPC_EmitInteger, MVT::i32, 1,
918
OPC_EmitConvertToTarget, 3,
919
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTT), 0|OPFL_Chain,
922
OPC_CheckChild2Type, MVT::i64,
926
OPC_CheckOpcode, ISD::Constant,
928
OPC_EmitMergeInputChains, 1, 0,
929
OPC_EmitInteger, MVT::i32, 1,
930
OPC_EmitConvertToTarget, 3,
931
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTT64), 0|OPFL_Chain,
935
OPC_CheckInteger, 64|128,1,
939
OPC_CheckChild2Type, MVT::i32,
943
OPC_CheckOpcode, ISD::Constant,
945
OPC_EmitMergeInputChains, 1, 0,
946
OPC_EmitInteger, MVT::i32, 0,
947
OPC_EmitConvertToTarget, 3,
948
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTST), 0|OPFL_Chain,
951
OPC_CheckChild2Type, MVT::i64,
955
OPC_CheckOpcode, ISD::Constant,
957
OPC_EmitMergeInputChains, 1, 0,
958
OPC_EmitInteger, MVT::i32, 0,
959
OPC_EmitConvertToTarget, 3,
960
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTST64), 0|OPFL_Chain,
964
OPC_CheckInteger, 65|128,1,
968
OPC_CheckChild2Type, MVT::i32,
972
OPC_CheckOpcode, ISD::Constant,
974
OPC_EmitMergeInputChains, 1, 0,
975
OPC_EmitInteger, MVT::i32, 1,
976
OPC_EmitConvertToTarget, 3,
977
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTSTT), 0|OPFL_Chain,
980
OPC_CheckChild2Type, MVT::i64,
984
OPC_CheckOpcode, ISD::Constant,
986
OPC_EmitMergeInputChains, 1, 0,
987
OPC_EmitInteger, MVT::i32, 1,
988
OPC_EmitConvertToTarget, 3,
989
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTSTT64), 0|OPFL_Chain,
993
OPC_CheckInteger, 88|128,2,
995
OPC_EmitMergeInputChains, 1, 0,
996
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SYNC), 0|OPFL_Chain,
999
OPC_CheckInteger, 75|128,1,
1002
OPC_EmitMergeInputChains, 1, 0,
1003
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTVSCR), 0|OPFL_Chain,
1006
OPC_CheckInteger, 62|128,1,
1008
OPC_EmitMergeInputChains, 1, 0,
1009
OPC_EmitInteger, MVT::i32, 1,
1010
OPC_EmitInteger, MVT::i32, 0,
1011
OPC_EmitInteger, MVT::i32, 0,
1012
OPC_EmitInteger, MVT::i32, 0,
1013
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSSALL), 0|OPFL_Chain,
1016
125, ISD::INTRINSIC_W_CHAIN,
1020
OPC_CheckInteger, 67|128,1,
1023
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1024
OPC_EmitMergeInputChains, 1, 0,
1025
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVEBX), 0|OPFL_Chain,
1026
1, MVT::v16i8, 2, 2, 3,
1028
OPC_CheckInteger, 68|128,1,
1031
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1032
OPC_EmitMergeInputChains, 1, 0,
1033
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVEHX), 0|OPFL_Chain,
1034
1, MVT::v8i16, 2, 2, 3,
1036
OPC_CheckInteger, 69|128,1,
1039
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1040
OPC_EmitMergeInputChains, 1, 0,
1041
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVEWX), 0|OPFL_Chain,
1042
1, MVT::v4i32, 2, 2, 3,
1044
OPC_CheckInteger, 72|128,1,
1047
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1048
OPC_EmitMergeInputChains, 1, 0,
1049
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVX), 0|OPFL_Chain,
1050
1, MVT::v4i32, 2, 2, 3,
1052
OPC_CheckInteger, 73|128,1,
1055
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1056
OPC_EmitMergeInputChains, 1, 0,
1057
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVXL), 0|OPFL_Chain,
1058
1, MVT::v4i32, 2, 2, 3,
1060
OPC_CheckInteger, 74|128,1,
1062
OPC_EmitMergeInputChains, 1, 0,
1063
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MFVSCR), 0|OPFL_Chain,
1066
18|128,13, ISD::INTRINSIC_WO_CHAIN,
1069
OPC_CheckInteger, 70|128,1,
1072
OPC_CheckComplexPat, /*CP*/0, /*#*/0,
1073
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVSL), 0,
1074
1, MVT::v16i8, 2, 1, 2,
1076
OPC_CheckInteger, 71|128,1,
1079
OPC_CheckComplexPat, /*CP*/0, /*#*/0,
1080
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVSR), 0,
1081
1, MVT::v16i8, 2, 1, 2,
1083
OPC_CheckInteger, 94|128,1,
1088
OPC_CheckOpcode, ISD::Constant,
1090
OPC_EmitConvertToTarget, 1,
1091
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCFSX), 0,
1092
1, MVT::v4f32, 2, 2, 0,
1094
OPC_CheckInteger, 95|128,1,
1099
OPC_CheckOpcode, ISD::Constant,
1101
OPC_EmitConvertToTarget, 1,
1102
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCFUX), 0,
1103
1, MVT::v4f32, 2, 2, 0,
1105
OPC_CheckInteger, 122|128,1,
1110
OPC_CheckOpcode, ISD::Constant,
1112
OPC_EmitConvertToTarget, 1,
1113
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCTSXS), 0,
1114
1, MVT::v4i32, 2, 2, 0,
1116
OPC_CheckInteger, 123|128,1,
1121
OPC_CheckOpcode, ISD::Constant,
1123
OPC_EmitConvertToTarget, 1,
1124
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCTUXS), 0,
1125
1, MVT::v4i32, 2, 2, 0,
1127
OPC_CheckInteger, 6|128,2,
1132
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMHADDSHS), 0,
1133
1, MVT::v8i16, 3, 0, 1, 2,
1135
OPC_CheckInteger, 7|128,2,
1140
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMHRADDSHS), 0,
1141
1, MVT::v8i16, 3, 0, 1, 2,
1143
OPC_CheckInteger, 15|128,2,
1148
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMLADDUHM), 0,
1149
1, MVT::v8i16, 3, 0, 1, 2,
1151
OPC_CheckInteger, 31|128,2,
1156
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPERM), 0,
1157
1, MVT::v4i32, 3, 0, 1, 2,
1159
OPC_CheckInteger, 48|128,2,
1164
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSEL), 0,
1165
1, MVT::v4i32, 3, 0, 1, 2,
1167
OPC_CheckInteger, 81|128,1,
1171
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDCUW), 0,
1172
1, MVT::v4i32, 2, 0, 1,
1174
OPC_CheckInteger, 82|128,1,
1178
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDSBS), 0,
1179
1, MVT::v16i8, 2, 0, 1,
1181
OPC_CheckInteger, 83|128,1,
1185
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDSHS), 0,
1186
1, MVT::v8i16, 2, 0, 1,
1188
OPC_CheckInteger, 84|128,1,
1192
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDSWS), 0,
1193
1, MVT::v4i32, 2, 0, 1,
1195
OPC_CheckInteger, 85|128,1,
1199
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUBS), 0,
1200
1, MVT::v16i8, 2, 0, 1,
1202
OPC_CheckInteger, 86|128,1,
1206
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUHS), 0,
1207
1, MVT::v8i16, 2, 0, 1,
1209
OPC_CheckInteger, 87|128,1,
1213
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUWS), 0,
1214
1, MVT::v4i32, 2, 0, 1,
1216
OPC_CheckInteger, 124|128,1,
1219
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VEXPTEFP), 0,
1220
1, MVT::v4f32, 1, 0,
1222
OPC_CheckInteger, 125|128,1,
1225
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VLOGEFP), 0,
1226
1, MVT::v4f32, 1, 0,
1228
OPC_CheckInteger, 88|128,1,
1232
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGSB), 0,
1233
1, MVT::v16i8, 2, 0, 1,
1235
OPC_CheckInteger, 89|128,1,
1239
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGSH), 0,
1240
1, MVT::v8i16, 2, 0, 1,
1242
OPC_CheckInteger, 90|128,1,
1246
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGSW), 0,
1247
1, MVT::v4i32, 2, 0, 1,
1249
OPC_CheckInteger, 91|128,1,
1253
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGUB), 0,
1254
1, MVT::v16i8, 2, 0, 1,
1256
OPC_CheckInteger, 92|128,1,
1260
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGUH), 0,
1261
1, MVT::v8i16, 2, 0, 1,
1263
OPC_CheckInteger, 93|128,1,
1267
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGUW), 0,
1268
1, MVT::v4i32, 2, 0, 1,
1270
OPC_CheckInteger, 127|128,1,
1274
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXFP), 0,
1275
1, MVT::v4f32, 2, 0, 1,
1277
OPC_CheckInteger, 0|128,2,
1281
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXSB), 0,
1282
1, MVT::v16i8, 2, 0, 1,
1284
OPC_CheckInteger, 1|128,2,
1288
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXSH), 0,
1289
1, MVT::v8i16, 2, 0, 1,
1291
OPC_CheckInteger, 2|128,2,
1295
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXSW), 0,
1296
1, MVT::v4i32, 2, 0, 1,
1298
OPC_CheckInteger, 3|128,2,
1302
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXUB), 0,
1303
1, MVT::v16i8, 2, 0, 1,
1305
OPC_CheckInteger, 4|128,2,
1309
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXUH), 0,
1310
1, MVT::v8i16, 2, 0, 1,
1312
OPC_CheckInteger, 5|128,2,
1316
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXUW), 0,
1317
1, MVT::v4i32, 2, 0, 1,
1319
OPC_CheckInteger, 8|128,2,
1323
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINFP), 0,
1324
1, MVT::v4f32, 2, 0, 1,
1326
OPC_CheckInteger, 9|128,2,
1330
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINSB), 0,
1331
1, MVT::v16i8, 2, 0, 1,
1333
OPC_CheckInteger, 10|128,2,
1337
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINSH), 0,
1338
1, MVT::v8i16, 2, 0, 1,
1340
OPC_CheckInteger, 11|128,2,
1344
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINSW), 0,
1345
1, MVT::v4i32, 2, 0, 1,
1347
OPC_CheckInteger, 12|128,2,
1351
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINUB), 0,
1352
1, MVT::v16i8, 2, 0, 1,
1354
OPC_CheckInteger, 13|128,2,
1358
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINUH), 0,
1359
1, MVT::v8i16, 2, 0, 1,
1361
OPC_CheckInteger, 14|128,2,
1365
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINUW), 0,
1366
1, MVT::v4i32, 2, 0, 1,
1368
OPC_CheckInteger, 16|128,2,
1373
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMMBM), 0,
1374
1, MVT::v4i32, 3, 0, 1, 2,
1376
OPC_CheckInteger, 17|128,2,
1381
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMSHM), 0,
1382
1, MVT::v4i32, 3, 0, 1, 2,
1384
OPC_CheckInteger, 18|128,2,
1389
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMSHS), 0,
1390
1, MVT::v4i32, 3, 0, 1, 2,
1392
OPC_CheckInteger, 19|128,2,
1397
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMUBM), 0,
1398
1, MVT::v4i32, 3, 0, 1, 2,
1400
OPC_CheckInteger, 20|128,2,
1405
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMUHM), 0,
1406
1, MVT::v4i32, 3, 0, 1, 2,
1408
OPC_CheckInteger, 21|128,2,
1413
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMUHS), 0,
1414
1, MVT::v4i32, 3, 0, 1, 2,
1416
OPC_CheckInteger, 22|128,2,
1420
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULESB), 0,
1421
1, MVT::v8i16, 2, 0, 1,
1423
OPC_CheckInteger, 23|128,2,
1427
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULESH), 0,
1428
1, MVT::v4i32, 2, 0, 1,
1430
OPC_CheckInteger, 24|128,2,
1434
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULEUB), 0,
1435
1, MVT::v8i16, 2, 0, 1,
1437
OPC_CheckInteger, 25|128,2,
1441
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULEUH), 0,
1442
1, MVT::v4i32, 2, 0, 1,
1444
OPC_CheckInteger, 26|128,2,
1448
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOSB), 0,
1449
1, MVT::v8i16, 2, 0, 1,
1451
OPC_CheckInteger, 27|128,2,
1455
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOSH), 0,
1456
1, MVT::v4i32, 2, 0, 1,
1458
OPC_CheckInteger, 28|128,2,
1462
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOUB), 0,
1463
1, MVT::v8i16, 2, 0, 1,
1465
OPC_CheckInteger, 29|128,2,
1469
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOUH), 0,
1470
1, MVT::v4i32, 2, 0, 1,
1472
OPC_CheckInteger, 39|128,2,
1475
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VREFP), 0,
1476
1, MVT::v4f32, 1, 0,
1478
OPC_CheckInteger, 40|128,2,
1481
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIM), 0,
1482
1, MVT::v4f32, 1, 0,
1484
OPC_CheckInteger, 41|128,2,
1487
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIN), 0,
1488
1, MVT::v4f32, 1, 0,
1490
OPC_CheckInteger, 42|128,2,
1493
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIP), 0,
1494
1, MVT::v4f32, 1, 0,
1496
OPC_CheckInteger, 43|128,2,
1499
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIZ), 0,
1500
1, MVT::v4f32, 1, 0,
1502
OPC_CheckInteger, 47|128,2,
1505
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRSQRTEFP), 0,
1506
1, MVT::v4f32, 1, 0,
1508
OPC_CheckInteger, 62|128,2,
1512
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBCUW), 0,
1513
1, MVT::v4i32, 2, 0, 1,
1515
OPC_CheckInteger, 63|128,2,
1519
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBSBS), 0,
1520
1, MVT::v16i8, 2, 0, 1,
1522
OPC_CheckInteger, 64|128,2,
1526
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBSHS), 0,
1527
1, MVT::v8i16, 2, 0, 1,
1529
OPC_CheckInteger, 65|128,2,
1533
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBSWS), 0,
1534
1, MVT::v4i32, 2, 0, 1,
1536
OPC_CheckInteger, 66|128,2,
1540
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUBS), 0,
1541
1, MVT::v16i8, 2, 0, 1,
1543
OPC_CheckInteger, 67|128,2,
1547
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUHS), 0,
1548
1, MVT::v8i16, 2, 0, 1,
1550
OPC_CheckInteger, 68|128,2,
1554
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUWS), 0,
1555
1, MVT::v4i32, 2, 0, 1,
1557
OPC_CheckInteger, 73|128,2,
1561
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUMSWS), 0,
1562
1, MVT::v4i32, 2, 0, 1,
1564
OPC_CheckInteger, 69|128,2,
1568
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM2SWS), 0,
1569
1, MVT::v4i32, 2, 0, 1,
1571
OPC_CheckInteger, 70|128,2,
1575
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM4SBS), 0,
1576
1, MVT::v4i32, 2, 0, 1,
1578
OPC_CheckInteger, 71|128,2,
1582
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM4SHS), 0,
1583
1, MVT::v4i32, 2, 0, 1,
1585
OPC_CheckInteger, 72|128,2,
1589
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM4UBS), 0,
1590
1, MVT::v4i32, 2, 0, 1,
1592
OPC_CheckInteger, 44|128,2,
1596
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRLB), 0,
1597
1, MVT::v16i8, 2, 0, 1,
1599
OPC_CheckInteger, 45|128,2,
1603
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRLH), 0,
1604
1, MVT::v8i16, 2, 0, 1,
1606
OPC_CheckInteger, 46|128,2,
1610
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRLW), 0,
1611
1, MVT::v4i32, 2, 0, 1,
1613
OPC_CheckInteger, 49|128,2,
1617
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSL), 0,
1618
1, MVT::v4i32, 2, 0, 1,
1620
OPC_CheckInteger, 52|128,2,
1624
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLO), 0,
1625
1, MVT::v4i32, 2, 0, 1,
1627
OPC_CheckInteger, 50|128,2,
1631
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLB), 0,
1632
1, MVT::v16i8, 2, 0, 1,
1634
OPC_CheckInteger, 51|128,2,
1638
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLH), 0,
1639
1, MVT::v8i16, 2, 0, 1,
1641
OPC_CheckInteger, 53|128,2,
1645
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLW), 0,
1646
1, MVT::v4i32, 2, 0, 1,
1648
OPC_CheckInteger, 54|128,2,
1652
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSR), 0,
1653
1, MVT::v4i32, 2, 0, 1,
1655
OPC_CheckInteger, 60|128,2,
1659
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRO), 0,
1660
1, MVT::v4i32, 2, 0, 1,
1662
OPC_CheckInteger, 55|128,2,
1666
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAB), 0,
1667
1, MVT::v16i8, 2, 0, 1,
1669
OPC_CheckInteger, 56|128,2,
1673
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAH), 0,
1674
1, MVT::v8i16, 2, 0, 1,
1676
OPC_CheckInteger, 57|128,2,
1680
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAW), 0,
1681
1, MVT::v4i32, 2, 0, 1,
1683
OPC_CheckInteger, 58|128,2,
1687
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRB), 0,
1688
1, MVT::v16i8, 2, 0, 1,
1690
OPC_CheckInteger, 59|128,2,
1694
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRH), 0,
1695
1, MVT::v8i16, 2, 0, 1,
1697
OPC_CheckInteger, 61|128,2,
1701
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRW), 0,
1702
1, MVT::v4i32, 2, 0, 1,
1704
OPC_CheckInteger, 32|128,2,
1708
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKPX), 0,
1709
1, MVT::v8i16, 2, 0, 1,
1711
OPC_CheckInteger, 33|128,2,
1715
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSHSS), 0,
1716
1, MVT::v16i8, 2, 0, 1,
1718
OPC_CheckInteger, 34|128,2,
1722
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSHUS), 0,
1723
1, MVT::v16i8, 2, 0, 1,
1725
OPC_CheckInteger, 35|128,2,
1729
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSWSS), 0,
1730
1, MVT::v16i8, 2, 0, 1,
1732
OPC_CheckInteger, 36|128,2,
1736
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSWUS), 0,
1737
1, MVT::v8i16, 2, 0, 1,
1739
OPC_CheckInteger, 37|128,2,
1743
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUHUS), 0,
1744
1, MVT::v16i8, 2, 0, 1,
1746
OPC_CheckInteger, 38|128,2,
1750
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUWUS), 0,
1751
1, MVT::v8i16, 2, 0, 1,
1753
OPC_CheckInteger, 74|128,2,
1756
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKHPX), 0,
1757
1, MVT::v4i32, 1, 0,
1759
OPC_CheckInteger, 75|128,2,
1762
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKHSB), 0,
1763
1, MVT::v8i16, 1, 0,
1765
OPC_CheckInteger, 76|128,2,
1768
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKHSH), 0,
1769
1, MVT::v4i32, 1, 0,
1771
OPC_CheckInteger, 77|128,2,
1774
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKLPX), 0,
1775
1, MVT::v4i32, 1, 0,
1777
OPC_CheckInteger, 78|128,2,
1780
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKLSB), 0,
1781
1, MVT::v8i16, 1, 0,
1783
OPC_CheckInteger, 79|128,2,
1786
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKLSH), 0,
1787
1, MVT::v4i32, 1, 0,
1789
OPC_CheckInteger, 126|128,1,
1794
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
1795
1, MVT::v4f32, 3, 0, 1, 2,
1797
OPC_CheckInteger, 30|128,2,
1802
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNMSUBFP), 0,
1803
1, MVT::v4f32, 3, 0, 1, 2,
1806
OPC_Scope, 42|128,1,
1809
OPC_SwitchOpcode , 23, PPCISD::Lo,
1812
OPC_CheckOpcode, ISD::TargetGlobalAddress,
1815
OPC_CheckInteger, 0,
1818
OPC_CheckType, MVT::i32,
1819
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LA), 0,
1820
1, MVT::i32, 2, 0, 1,
1821
9|128,1, PPCISD::Hi,
1824
OPC_SwitchOpcode , 31, ISD::TargetGlobalAddress,
1827
OPC_CheckInteger, 0,
1830
OPC_SwitchType , 9, MVT::i32,
1831
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1832
1, MVT::i32, 2, 0, 1,
1834
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1835
1, MVT::i64, 2, 0, 1,
1837
31, ISD::TargetConstantPool,
1840
OPC_CheckInteger, 0,
1843
OPC_SwitchType , 9, MVT::i32,
1844
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1845
1, MVT::i32, 2, 0, 1,
1847
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1848
1, MVT::i64, 2, 0, 1,
1850
31, ISD::TargetJumpTable,
1853
OPC_CheckInteger, 0,
1856
OPC_SwitchType , 9, MVT::i32,
1857
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1858
1, MVT::i32, 2, 0, 1,
1860
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1861
1, MVT::i64, 2, 0, 1,
1863
31, ISD::TargetBlockAddress,
1866
OPC_CheckInteger, 0,
1869
OPC_SwitchType , 9, MVT::i32,
1870
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1871
1, MVT::i32, 2, 0, 1,
1873
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1874
1, MVT::i64, 2, 0, 1,
1880
OPC_SwitchOpcode , 24, PPCISD::Lo,
1883
OPC_CheckOpcode, ISD::TargetGlobalAddress,
1886
OPC_CheckInteger, 0,
1890
OPC_CheckType, MVT::i32,
1891
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LA), 0,
1892
1, MVT::i32, 2, 1, 0,
1893
13|128,1, PPCISD::Hi,
1896
OPC_SwitchOpcode , 32, ISD::TargetGlobalAddress,
1899
OPC_CheckInteger, 0,
1903
OPC_SwitchType , 9, MVT::i64,
1904
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1905
1, MVT::i64, 2, 1, 0,
1907
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1908
1, MVT::i32, 2, 1, 0,
1910
32, ISD::TargetConstantPool,
1913
OPC_CheckInteger, 0,
1917
OPC_SwitchType , 9, MVT::i64,
1918
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1919
1, MVT::i64, 2, 1, 0,
1921
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1922
1, MVT::i32, 2, 1, 0,
1924
32, ISD::TargetJumpTable,
1927
OPC_CheckInteger, 0,
1931
OPC_SwitchType , 9, MVT::i64,
1932
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1933
1, MVT::i64, 2, 1, 0,
1935
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1936
1, MVT::i32, 2, 1, 0,
1938
32, ISD::TargetBlockAddress,
1941
OPC_CheckInteger, 0,
1945
OPC_SwitchType , 9, MVT::i64,
1946
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1947
1, MVT::i64, 2, 1, 0,
1949
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1950
1, MVT::i32, 2, 1, 0,
1959
OPC_CheckOpcode, ISD::Constant,
1961
OPC_CheckPredicate, 0,
1963
OPC_CheckType, MVT::i32,
1964
OPC_EmitConvertToTarget, 1,
1965
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDI), 0,
1966
1, MVT::i32, 2, 0, 2,
1968
OPC_CheckPredicate, 1,
1970
OPC_CheckType, MVT::i32,
1971
OPC_EmitConvertToTarget, 1,
1972
OPC_EmitNodeXForm, 0, 2,
1973
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
1974
1, MVT::i32, 2, 0, 3,
1976
OPC_CheckPredicate, 0,
1978
OPC_CheckType, MVT::i64,
1979
OPC_EmitConvertToTarget, 1,
1980
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDI8), 0,
1981
1, MVT::i64, 2, 0, 2,
1983
OPC_CheckPredicate, 1,
1985
OPC_CheckType, MVT::i64,
1986
OPC_EmitConvertToTarget, 1,
1987
OPC_EmitNodeXForm, 0, 2,
1988
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
1989
1, MVT::i64, 2, 0, 3,
1992
OPC_CheckType, MVT::i32,
1993
OPC_EmitConvertToTarget, 1,
1994
OPC_EmitNodeXForm, 1, 2,
1995
OPC_EmitNode, TARGET_OPCODE(PPC::ADDI), 0,
1996
1, MVT::i32, 2, 0, 3,
1997
OPC_EmitConvertToTarget, 1,
1998
OPC_EmitNodeXForm, 2, 5,
1999
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
2000
1, MVT::i32, 2, 4, 6,
2003
OPC_CheckType, MVT::i32,
2004
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADD4), 0,
2005
1, MVT::i32, 2, 0, 1,
2007
OPC_CheckType, MVT::v16i8,
2008
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUBM), 0,
2009
1, MVT::v16i8, 2, 0, 1,
2011
OPC_CheckType, MVT::v8i16,
2012
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUHM), 0,
2013
1, MVT::v8i16, 2, 0, 1,
2015
OPC_CheckType, MVT::v4i32,
2016
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUWM), 0,
2017
1, MVT::v4i32, 2, 0, 1,
2019
OPC_CheckType, MVT::i64,
2020
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADD8), 0,
2021
1, MVT::i64, 2, 0, 1,
2024
12|128,8, ISD::LOAD,
2025
OPC_CheckPredicate, 2,
2027
OPC_CheckPredicate, 3,
2028
OPC_CheckPredicate, 4,
2032
OPC_CheckType, MVT::i32,
2033
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2034
OPC_EmitMergeInputChains, 1, 0,
2035
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
2036
1, MVT::i32, 2, 2, 3,
2038
OPC_CheckPredicate, 5,
2039
OPC_CheckPredicate, 6,
2043
OPC_CheckType, MVT::i32,
2044
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2045
OPC_EmitMergeInputChains, 1, 0,
2046
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHA), 0|OPFL_Chain|OPFL_MemRefs,
2047
1, MVT::i32, 2, 2, 3,
2049
OPC_CheckPredicate, 3,
2050
OPC_CheckPredicate, 7,
2054
OPC_CheckType, MVT::i32,
2055
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2056
OPC_EmitMergeInputChains, 1, 0,
2057
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ), 0|OPFL_Chain|OPFL_MemRefs,
2058
1, MVT::i32, 2, 2, 3,
2060
OPC_CheckPredicate, 8,
2064
OPC_SwitchType , 15, MVT::i32,
2065
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2066
OPC_EmitMergeInputChains, 1, 0,
2067
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZ), 0|OPFL_Chain|OPFL_MemRefs,
2068
1, MVT::i32, 2, 2, 3,
2070
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2071
OPC_EmitMergeInputChains, 1, 0,
2072
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFS), 0|OPFL_Chain|OPFL_MemRefs,
2073
1, MVT::f32, 2, 2, 3,
2075
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2076
OPC_EmitMergeInputChains, 1, 0,
2077
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFD), 0|OPFL_Chain|OPFL_MemRefs,
2078
1, MVT::f64, 2, 2, 3,
2081
OPC_CheckPredicate, 3,
2082
OPC_CheckPredicate, 4,
2086
OPC_CheckType, MVT::i32,
2087
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2088
OPC_EmitMergeInputChains, 1, 0,
2089
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
2090
1, MVT::i32, 2, 2, 3,
2092
OPC_CheckPredicate, 5,
2093
OPC_CheckPredicate, 6,
2097
OPC_CheckType, MVT::i32,
2098
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2099
OPC_EmitMergeInputChains, 1, 0,
2100
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHAX), 0|OPFL_Chain|OPFL_MemRefs,
2101
1, MVT::i32, 2, 2, 3,
2103
OPC_CheckPredicate, 3,
2104
OPC_CheckPredicate, 7,
2108
OPC_CheckType, MVT::i32,
2109
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2110
OPC_EmitMergeInputChains, 1, 0,
2111
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX), 0|OPFL_Chain|OPFL_MemRefs,
2112
1, MVT::i32, 2, 2, 3,
2114
OPC_CheckPredicate, 8,
2118
OPC_SwitchType , 15, MVT::i32,
2119
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2120
OPC_EmitMergeInputChains, 1, 0,
2121
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZX), 0|OPFL_Chain|OPFL_MemRefs,
2122
1, MVT::i32, 2, 2, 3,
2124
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2125
OPC_EmitMergeInputChains, 1, 0,
2126
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFSX), 0|OPFL_Chain|OPFL_MemRefs,
2127
1, MVT::f32, 2, 2, 3,
2129
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2130
OPC_EmitMergeInputChains, 1, 0,
2131
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFDX), 0|OPFL_Chain|OPFL_MemRefs,
2132
1, MVT::f64, 2, 2, 3,
2135
OPC_CheckPredicate, 3,
2136
OPC_CheckPredicate, 9,
2140
OPC_CheckType, MVT::i32,
2142
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2143
OPC_EmitMergeInputChains, 1, 0,
2144
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
2145
1, MVT::i32, 2, 2, 3,
2147
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2148
OPC_EmitMergeInputChains, 1, 0,
2149
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
2150
1, MVT::i32, 2, 2, 3,
2153
OPC_CheckPredicate, 10,
2155
OPC_CheckPredicate, 11,
2159
OPC_CheckType, MVT::i32,
2161
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2162
OPC_EmitMergeInputChains, 1, 0,
2163
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
2164
1, MVT::i32, 2, 2, 3,
2166
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2167
OPC_EmitMergeInputChains, 1, 0,
2168
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
2169
1, MVT::i32, 2, 2, 3,
2172
OPC_CheckPredicate, 12,
2176
OPC_CheckType, MVT::i32,
2178
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2179
OPC_EmitMergeInputChains, 1, 0,
2180
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
2181
1, MVT::i32, 2, 2, 3,
2183
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2184
OPC_EmitMergeInputChains, 1, 0,
2185
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
2186
1, MVT::i32, 2, 2, 3,
2189
OPC_CheckPredicate, 13,
2193
OPC_CheckType, MVT::i32,
2195
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2196
OPC_EmitMergeInputChains, 1, 0,
2197
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ), 0|OPFL_Chain|OPFL_MemRefs,
2198
1, MVT::i32, 2, 2, 3,
2200
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2201
OPC_EmitMergeInputChains, 1, 0,
2202
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX), 0|OPFL_Chain|OPFL_MemRefs,
2203
1, MVT::i32, 2, 2, 3,
2207
OPC_CheckPredicate, 8,
2211
OPC_CheckType, MVT::v4i32,
2212
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2213
OPC_EmitMergeInputChains, 1, 0,
2214
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVX), 0|OPFL_Chain|OPFL_MemRefs,
2215
1, MVT::v4i32, 2, 2, 3,
2217
OPC_CheckPredicate, 5,
2219
OPC_CheckPredicate, 6,
2223
OPC_CheckType, MVT::i64,
2224
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2225
OPC_EmitMergeInputChains, 1, 0,
2226
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHA8), 0|OPFL_Chain|OPFL_MemRefs,
2227
1, MVT::i64, 2, 2, 3,
2229
OPC_CheckPredicate, 14,
2233
OPC_CheckType, MVT::i64,
2234
OPC_CheckComplexPat, /*CP*/3, /*#*/1,
2235
OPC_EmitMergeInputChains, 1, 0,
2236
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWA), 0|OPFL_Chain|OPFL_MemRefs,
2237
1, MVT::i64, 2, 2, 3,
2239
OPC_CheckPredicate, 6,
2243
OPC_CheckType, MVT::i64,
2244
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2245
OPC_EmitMergeInputChains, 1, 0,
2246
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHAX8), 0|OPFL_Chain|OPFL_MemRefs,
2247
1, MVT::i64, 2, 2, 3,
2249
OPC_CheckPredicate, 14,
2253
OPC_CheckType, MVT::i64,
2254
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2255
OPC_EmitMergeInputChains, 1, 0,
2256
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWAX), 0|OPFL_Chain|OPFL_MemRefs,
2257
1, MVT::i64, 2, 2, 3,
2260
OPC_CheckPredicate, 3,
2262
OPC_CheckPredicate, 4,
2266
OPC_CheckType, MVT::i64,
2267
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2268
OPC_EmitMergeInputChains, 1, 0,
2269
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
2270
1, MVT::i64, 2, 2, 3,
2272
OPC_CheckPredicate, 7,
2276
OPC_CheckType, MVT::i64,
2277
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2278
OPC_EmitMergeInputChains, 1, 0,
2279
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ8), 0|OPFL_Chain|OPFL_MemRefs,
2280
1, MVT::i64, 2, 2, 3,
2282
OPC_CheckPredicate, 15,
2286
OPC_CheckType, MVT::i64,
2287
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2288
OPC_EmitMergeInputChains, 1, 0,
2289
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZ8), 0|OPFL_Chain|OPFL_MemRefs,
2290
1, MVT::i64, 2, 2, 3,
2292
OPC_CheckPredicate, 4,
2296
OPC_CheckType, MVT::i64,
2297
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2298
OPC_EmitMergeInputChains, 1, 0,
2299
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
2300
1, MVT::i64, 2, 2, 3,
2302
OPC_CheckPredicate, 7,
2306
OPC_CheckType, MVT::i64,
2307
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2308
OPC_EmitMergeInputChains, 1, 0,
2309
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX8), 0|OPFL_Chain|OPFL_MemRefs,
2310
1, MVT::i64, 2, 2, 3,
2312
OPC_CheckPredicate, 15,
2316
OPC_CheckType, MVT::i64,
2317
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2318
OPC_EmitMergeInputChains, 1, 0,
2319
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZX8), 0|OPFL_Chain|OPFL_MemRefs,
2320
1, MVT::i64, 2, 2, 3,
2323
OPC_CheckPredicate, 8,
2327
OPC_CheckType, MVT::i64,
2329
OPC_CheckComplexPat, /*CP*/3, /*#*/1,
2330
OPC_EmitMergeInputChains, 1, 0,
2331
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LD), 0|OPFL_Chain|OPFL_MemRefs,
2332
1, MVT::i64, 2, 2, 3,
2334
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2335
OPC_EmitMergeInputChains, 1, 0,
2336
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDX), 0|OPFL_Chain|OPFL_MemRefs,
2337
1, MVT::i64, 2, 2, 3,
2340
OPC_CheckPredicate, 3,
2341
OPC_CheckPredicate, 9,
2345
OPC_CheckType, MVT::i64,
2347
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2348
OPC_EmitMergeInputChains, 1, 0,
2349
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
2350
1, MVT::i64, 2, 2, 3,
2352
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2353
OPC_EmitMergeInputChains, 1, 0,
2354
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
2355
1, MVT::i64, 2, 2, 3,
2358
OPC_CheckPredicate, 10,
2360
OPC_CheckPredicate, 11,
2364
OPC_CheckType, MVT::i64,
2366
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2367
OPC_EmitMergeInputChains, 1, 0,
2368
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
2369
1, MVT::i64, 2, 2, 3,
2371
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2372
OPC_EmitMergeInputChains, 1, 0,
2373
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
2374
1, MVT::i64, 2, 2, 3,
2377
OPC_CheckPredicate, 12,
2381
OPC_CheckType, MVT::i64,
2383
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2384
OPC_EmitMergeInputChains, 1, 0,
2385
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
2386
1, MVT::i64, 2, 2, 3,
2388
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2389
OPC_EmitMergeInputChains, 1, 0,
2390
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
2391
1, MVT::i64, 2, 2, 3,
2394
OPC_CheckPredicate, 13,
2398
OPC_CheckType, MVT::i64,
2400
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2401
OPC_EmitMergeInputChains, 1, 0,
2402
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ8), 0|OPFL_Chain|OPFL_MemRefs,
2403
1, MVT::i64, 2, 2, 3,
2405
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2406
OPC_EmitMergeInputChains, 1, 0,
2407
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX8), 0|OPFL_Chain|OPFL_MemRefs,
2408
1, MVT::i64, 2, 2, 3,
2411
OPC_CheckPredicate, 16,
2415
OPC_CheckType, MVT::i64,
2417
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2418
OPC_EmitMergeInputChains, 1, 0,
2419
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZ8), 0|OPFL_Chain|OPFL_MemRefs,
2420
1, MVT::i64, 2, 2, 3,
2422
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2423
OPC_EmitMergeInputChains, 1, 0,
2424
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZX8), 0|OPFL_Chain|OPFL_MemRefs,
2425
1, MVT::i64, 2, 2, 3,
2428
OPC_CheckPredicate, 17,
2432
OPC_CheckType, MVT::f64,
2434
OPC_CheckComplexPat, /*CP*/1, /*#*/1,
2435
OPC_EmitMergeInputChains, 1, 0,
2436
OPC_EmitNode, TARGET_OPCODE(PPC::LFS), 0|OPFL_Chain,
2437
1, MVT::f32, 2, 2, 3,
2438
OPC_EmitNode, TARGET_OPCODE(PPC::FMRSD), 0|OPFL_MemRefs,
2440
OPC_CompleteMatch, 1, 5,
2443
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
2444
OPC_EmitMergeInputChains, 1, 0,
2445
OPC_EmitNode, TARGET_OPCODE(PPC::LFSX), 0|OPFL_Chain,
2446
1, MVT::f32, 2, 2, 3,
2447
OPC_EmitNode, TARGET_OPCODE(PPC::FMRSD), 0|OPFL_MemRefs,
2449
OPC_CompleteMatch, 1, 5,
2454
35|128,5, ISD::STORE,
2455
OPC_Scope, 68|128,3,
2456
OPC_CheckPredicate, 18,
2458
OPC_CheckPredicate, 19,
2460
OPC_CheckPredicate, 20,
2464
OPC_CheckChild1Type, MVT::i32,
2466
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2467
OPC_EmitMergeInputChains, 1, 0,
2468
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STB), 0|OPFL_Chain|OPFL_MemRefs,
2471
OPC_CheckPredicate, 21,
2475
OPC_CheckChild1Type, MVT::i32,
2477
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2478
OPC_EmitMergeInputChains, 1, 0,
2479
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STH), 0|OPFL_Chain|OPFL_MemRefs,
2483
OPC_CheckPredicate, 22,
2488
OPC_CheckChild1Type, MVT::i32,
2490
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2491
OPC_EmitMergeInputChains, 1, 0,
2492
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STW), 0|OPFL_Chain|OPFL_MemRefs,
2495
OPC_CheckChild1Type, MVT::f32,
2497
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2498
OPC_EmitMergeInputChains, 1, 0,
2499
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFS), 0|OPFL_Chain|OPFL_MemRefs,
2502
OPC_CheckChild1Type, MVT::f64,
2504
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2505
OPC_EmitMergeInputChains, 1, 0,
2506
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFD), 0|OPFL_Chain|OPFL_MemRefs,
2510
OPC_CheckPredicate, 19,
2512
OPC_CheckPredicate, 20,
2516
OPC_CheckChild1Type, MVT::i32,
2518
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2519
OPC_EmitMergeInputChains, 1, 0,
2520
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBX), 0|OPFL_Chain|OPFL_MemRefs,
2523
OPC_CheckPredicate, 21,
2527
OPC_CheckChild1Type, MVT::i32,
2529
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2530
OPC_EmitMergeInputChains, 1, 0,
2531
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHX), 0|OPFL_Chain|OPFL_MemRefs,
2535
OPC_CheckPredicate, 22,
2540
OPC_CheckChild1Type, MVT::i32,
2542
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2543
OPC_EmitMergeInputChains, 1, 0,
2544
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWX), 0|OPFL_Chain|OPFL_MemRefs,
2547
OPC_CheckChild1Type, MVT::f32,
2549
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2550
OPC_EmitMergeInputChains, 1, 0,
2551
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFSX), 0|OPFL_Chain|OPFL_MemRefs,
2554
OPC_CheckChild1Type, MVT::f64,
2556
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2557
OPC_EmitMergeInputChains, 1, 0,
2558
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFDX), 0|OPFL_Chain|OPFL_MemRefs,
2561
OPC_CheckChild1Type, MVT::v4i32,
2563
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
2564
OPC_EmitMergeInputChains, 1, 0,
2565
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVX), 0|OPFL_Chain|OPFL_MemRefs,
2569
OPC_CheckPredicate, 19,
2571
OPC_CheckPredicate, 20,
2575
OPC_CheckChild1Type, MVT::i64,
2577
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2578
OPC_EmitMergeInputChains, 1, 0,
2579
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STB8), 0|OPFL_Chain|OPFL_MemRefs,
2582
OPC_CheckPredicate, 21,
2586
OPC_CheckChild1Type, MVT::i64,
2588
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2589
OPC_EmitMergeInputChains, 1, 0,
2590
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STH8), 0|OPFL_Chain|OPFL_MemRefs,
2593
OPC_CheckPredicate, 23,
2597
OPC_CheckChild1Type, MVT::i64,
2599
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
2600
OPC_EmitMergeInputChains, 1, 0,
2601
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STW8), 0|OPFL_Chain|OPFL_MemRefs,
2604
OPC_CheckPredicate, 20,
2608
OPC_CheckChild1Type, MVT::i64,
2610
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2611
OPC_EmitMergeInputChains, 1, 0,
2612
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBX8), 0|OPFL_Chain|OPFL_MemRefs,
2615
OPC_CheckPredicate, 21,
2619
OPC_CheckChild1Type, MVT::i64,
2621
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2622
OPC_EmitMergeInputChains, 1, 0,
2623
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHX8), 0|OPFL_Chain|OPFL_MemRefs,
2626
OPC_CheckPredicate, 23,
2630
OPC_CheckChild1Type, MVT::i64,
2632
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2633
OPC_EmitMergeInputChains, 1, 0,
2634
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWX8), 0|OPFL_Chain|OPFL_MemRefs,
2638
OPC_CheckPredicate, 22,
2642
OPC_CheckChild1Type, MVT::i64,
2645
OPC_CheckComplexPat, /*CP*/3, /*#*/2,
2646
OPC_EmitMergeInputChains, 1, 0,
2647
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STD), 0|OPFL_Chain|OPFL_MemRefs,
2650
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
2651
OPC_EmitMergeInputChains, 1, 0,
2652
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDX), 0|OPFL_Chain|OPFL_MemRefs,
2657
OPC_CheckPredicate, 24,
2658
OPC_CheckPredicate, 25,
2660
OPC_CheckPredicate, 26,
2664
OPC_CheckChild1Type, MVT::i32,
2667
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2668
OPC_EmitMergeInputChains, 1, 0,
2669
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBU), 0|OPFL_Chain|OPFL_MemRefs,
2670
1, MVT::iPTR, 3, 1, 4, 2,
2672
OPC_CheckPredicate, 27,
2676
OPC_CheckChild1Type, MVT::i32,
2679
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2680
OPC_EmitMergeInputChains, 1, 0,
2681
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHU), 0|OPFL_Chain|OPFL_MemRefs,
2682
1, MVT::iPTR, 3, 1, 4, 2,
2685
OPC_CheckPredicate, 28,
2686
OPC_CheckPredicate, 29,
2691
OPC_CheckChild1Type, MVT::i32,
2694
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2695
OPC_EmitMergeInputChains, 1, 0,
2696
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWU), 0|OPFL_Chain|OPFL_MemRefs,
2697
1, MVT::iPTR, 3, 1, 4, 2,
2699
OPC_CheckChild1Type, MVT::f32,
2702
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2703
OPC_EmitMergeInputChains, 1, 0,
2704
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFSU), 0|OPFL_Chain|OPFL_MemRefs,
2705
1, MVT::iPTR, 3, 1, 4, 2,
2707
OPC_CheckChild1Type, MVT::f64,
2710
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2711
OPC_EmitMergeInputChains, 1, 0,
2712
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFDU), 0|OPFL_Chain|OPFL_MemRefs,
2713
1, MVT::iPTR, 3, 1, 4, 2,
2716
OPC_CheckPredicate, 24,
2717
OPC_CheckPredicate, 25,
2719
OPC_CheckPredicate, 26,
2723
OPC_CheckChild1Type, MVT::i64,
2726
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2727
OPC_EmitMergeInputChains, 1, 0,
2728
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBU8), 0|OPFL_Chain|OPFL_MemRefs,
2729
1, MVT::iPTR, 3, 1, 4, 2,
2731
OPC_CheckPredicate, 27,
2735
OPC_CheckChild1Type, MVT::i64,
2738
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2739
OPC_EmitMergeInputChains, 1, 0,
2740
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHU8), 0|OPFL_Chain|OPFL_MemRefs,
2741
1, MVT::iPTR, 3, 1, 4, 2,
2744
OPC_CheckPredicate, 28,
2745
OPC_CheckPredicate, 29,
2749
OPC_CheckChild1Type, MVT::i64,
2752
OPC_CheckComplexPat, /*CP*/4, /*#*/3,
2753
OPC_EmitMergeInputChains, 1, 0,
2754
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDU), 0|OPFL_Chain|OPFL_MemRefs,
2755
1, MVT::iPTR, 3, 1, 4, 2,
2757
26|128,1, ISD::FSUB,
2760
OPC_SwitchOpcode , 30, ISD::BUILD_VECTOR,
2761
OPC_CheckPredicate, 30,
2764
OPC_CheckOpcode, ISD::FSUB,
2766
OPC_CheckOpcode, ISD::FMUL,
2772
OPC_CheckType, MVT::v4f32,
2773
OPC_CheckPatternPredicate, 0,
2774
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNMSUBFP), 0,
2775
1, MVT::v4f32, 3, 0, 1, 2,
2781
OPC_SwitchType , 12, MVT::f64,
2782
OPC_CheckPatternPredicate, 0,
2783
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMSUB), 0,
2784
1, MVT::f64, 3, 0, 1, 2,
2786
OPC_CheckPatternPredicate, 0,
2787
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMSUBS), 0,
2788
1, MVT::f32, 3, 0, 1, 2,
2795
OPC_CheckOpcode, ISD::FMUL,
2799
OPC_SwitchType , 12, MVT::f64,
2800
OPC_CheckPatternPredicate, 0,
2801
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUB), 0,
2802
1, MVT::f64, 3, 1, 2, 0,
2804
OPC_CheckPatternPredicate, 0,
2805
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUBS), 0,
2806
1, MVT::f32, 3, 1, 2, 0,
2810
OPC_SwitchType , 9, MVT::f64,
2811
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSUB), 0,
2812
1, MVT::f64, 2, 0, 1,
2814
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSUBS), 0,
2815
1, MVT::f32, 2, 0, 1,
2817
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBFP), 0,
2818
1, MVT::v4f32, 2, 0, 1,
2822
102, ISD::ATOMIC_LOAD_ADD,
2824
OPC_CheckPredicate, 31,
2829
OPC_CheckType, MVT::i32,
2830
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2831
OPC_EmitMergeInputChains, 1, 0,
2832
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I8), 0|OPFL_Chain|OPFL_MemRefs,
2833
1, MVT::i32, 3, 3, 4, 2,
2835
OPC_CheckPredicate, 32,
2840
OPC_CheckType, MVT::i32,
2841
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2842
OPC_EmitMergeInputChains, 1, 0,
2843
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I16), 0|OPFL_Chain|OPFL_MemRefs,
2844
1, MVT::i32, 3, 3, 4, 2,
2846
OPC_CheckPredicate, 33,
2851
OPC_CheckType, MVT::i32,
2852
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2853
OPC_EmitMergeInputChains, 1, 0,
2854
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I32), 0|OPFL_Chain|OPFL_MemRefs,
2855
1, MVT::i32, 3, 3, 4, 2,
2857
OPC_CheckPredicate, 34,
2862
OPC_CheckType, MVT::i64,
2863
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2864
OPC_EmitMergeInputChains, 1, 0,
2865
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I64), 0|OPFL_Chain|OPFL_MemRefs,
2866
1, MVT::i64, 3, 3, 4, 2,
2868
102, ISD::ATOMIC_LOAD_SUB,
2870
OPC_CheckPredicate, 35,
2875
OPC_CheckType, MVT::i32,
2876
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2877
OPC_EmitMergeInputChains, 1, 0,
2878
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I8), 0|OPFL_Chain|OPFL_MemRefs,
2879
1, MVT::i32, 3, 3, 4, 2,
2881
OPC_CheckPredicate, 36,
2886
OPC_CheckType, MVT::i32,
2887
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2888
OPC_EmitMergeInputChains, 1, 0,
2889
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I16), 0|OPFL_Chain|OPFL_MemRefs,
2890
1, MVT::i32, 3, 3, 4, 2,
2892
OPC_CheckPredicate, 37,
2897
OPC_CheckType, MVT::i32,
2898
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2899
OPC_EmitMergeInputChains, 1, 0,
2900
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I32), 0|OPFL_Chain|OPFL_MemRefs,
2901
1, MVT::i32, 3, 3, 4, 2,
2903
OPC_CheckPredicate, 38,
2908
OPC_CheckType, MVT::i64,
2909
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2910
OPC_EmitMergeInputChains, 1, 0,
2911
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I64), 0|OPFL_Chain|OPFL_MemRefs,
2912
1, MVT::i64, 3, 3, 4, 2,
2914
102, ISD::ATOMIC_LOAD_AND,
2916
OPC_CheckPredicate, 39,
2921
OPC_CheckType, MVT::i32,
2922
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2923
OPC_EmitMergeInputChains, 1, 0,
2924
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I8), 0|OPFL_Chain|OPFL_MemRefs,
2925
1, MVT::i32, 3, 3, 4, 2,
2927
OPC_CheckPredicate, 40,
2932
OPC_CheckType, MVT::i32,
2933
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2934
OPC_EmitMergeInputChains, 1, 0,
2935
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I16), 0|OPFL_Chain|OPFL_MemRefs,
2936
1, MVT::i32, 3, 3, 4, 2,
2938
OPC_CheckPredicate, 41,
2943
OPC_CheckType, MVT::i32,
2944
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2945
OPC_EmitMergeInputChains, 1, 0,
2946
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I32), 0|OPFL_Chain|OPFL_MemRefs,
2947
1, MVT::i32, 3, 3, 4, 2,
2949
OPC_CheckPredicate, 42,
2954
OPC_CheckType, MVT::i64,
2955
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2956
OPC_EmitMergeInputChains, 1, 0,
2957
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I64), 0|OPFL_Chain|OPFL_MemRefs,
2958
1, MVT::i64, 3, 3, 4, 2,
2960
102, ISD::ATOMIC_LOAD_OR,
2962
OPC_CheckPredicate, 43,
2967
OPC_CheckType, MVT::i32,
2968
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2969
OPC_EmitMergeInputChains, 1, 0,
2970
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I8), 0|OPFL_Chain|OPFL_MemRefs,
2971
1, MVT::i32, 3, 3, 4, 2,
2973
OPC_CheckPredicate, 44,
2978
OPC_CheckType, MVT::i32,
2979
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2980
OPC_EmitMergeInputChains, 1, 0,
2981
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I16), 0|OPFL_Chain|OPFL_MemRefs,
2982
1, MVT::i32, 3, 3, 4, 2,
2984
OPC_CheckPredicate, 45,
2989
OPC_CheckType, MVT::i32,
2990
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2991
OPC_EmitMergeInputChains, 1, 0,
2992
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I32), 0|OPFL_Chain|OPFL_MemRefs,
2993
1, MVT::i32, 3, 3, 4, 2,
2995
OPC_CheckPredicate, 46,
3000
OPC_CheckType, MVT::i64,
3001
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3002
OPC_EmitMergeInputChains, 1, 0,
3003
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I64), 0|OPFL_Chain|OPFL_MemRefs,
3004
1, MVT::i64, 3, 3, 4, 2,
3006
102, ISD::ATOMIC_LOAD_XOR,
3008
OPC_CheckPredicate, 47,
3013
OPC_CheckType, MVT::i32,
3014
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3015
OPC_EmitMergeInputChains, 1, 0,
3016
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I8), 0|OPFL_Chain|OPFL_MemRefs,
3017
1, MVT::i32, 3, 3, 4, 2,
3019
OPC_CheckPredicate, 48,
3024
OPC_CheckType, MVT::i32,
3025
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3026
OPC_EmitMergeInputChains, 1, 0,
3027
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I16), 0|OPFL_Chain|OPFL_MemRefs,
3028
1, MVT::i32, 3, 3, 4, 2,
3030
OPC_CheckPredicate, 49,
3035
OPC_CheckType, MVT::i32,
3036
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3037
OPC_EmitMergeInputChains, 1, 0,
3038
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I32), 0|OPFL_Chain|OPFL_MemRefs,
3039
1, MVT::i32, 3, 3, 4, 2,
3041
OPC_CheckPredicate, 50,
3046
OPC_CheckType, MVT::i64,
3047
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3048
OPC_EmitMergeInputChains, 1, 0,
3049
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I64), 0|OPFL_Chain|OPFL_MemRefs,
3050
1, MVT::i64, 3, 3, 4, 2,
3052
102, ISD::ATOMIC_LOAD_NAND,
3054
OPC_CheckPredicate, 51,
3059
OPC_CheckType, MVT::i32,
3060
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3061
OPC_EmitMergeInputChains, 1, 0,
3062
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I8), 0|OPFL_Chain|OPFL_MemRefs,
3063
1, MVT::i32, 3, 3, 4, 2,
3065
OPC_CheckPredicate, 52,
3070
OPC_CheckType, MVT::i32,
3071
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3072
OPC_EmitMergeInputChains, 1, 0,
3073
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I16), 0|OPFL_Chain|OPFL_MemRefs,
3074
1, MVT::i32, 3, 3, 4, 2,
3076
OPC_CheckPredicate, 53,
3081
OPC_CheckType, MVT::i32,
3082
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3083
OPC_EmitMergeInputChains, 1, 0,
3084
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I32), 0|OPFL_Chain|OPFL_MemRefs,
3085
1, MVT::i32, 3, 3, 4, 2,
3087
OPC_CheckPredicate, 54,
3092
OPC_CheckType, MVT::i64,
3093
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3094
OPC_EmitMergeInputChains, 1, 0,
3095
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I64), 0|OPFL_Chain|OPFL_MemRefs,
3096
1, MVT::i64, 3, 3, 4, 2,
3098
110, ISD::ATOMIC_CMP_SWAP,
3100
OPC_CheckPredicate, 55,
3106
OPC_CheckType, MVT::i32,
3107
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3108
OPC_EmitMergeInputChains, 1, 0,
3109
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I8), 0|OPFL_Chain|OPFL_MemRefs,
3110
1, MVT::i32, 4, 4, 5, 2, 3,
3112
OPC_CheckPredicate, 56,
3118
OPC_CheckType, MVT::i32,
3119
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3120
OPC_EmitMergeInputChains, 1, 0,
3121
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I16), 0|OPFL_Chain|OPFL_MemRefs,
3122
1, MVT::i32, 4, 4, 5, 2, 3,
3124
OPC_CheckPredicate, 57,
3130
OPC_CheckType, MVT::i32,
3131
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3132
OPC_EmitMergeInputChains, 1, 0,
3133
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I32), 0|OPFL_Chain|OPFL_MemRefs,
3134
1, MVT::i32, 4, 4, 5, 2, 3,
3136
OPC_CheckPredicate, 58,
3142
OPC_CheckType, MVT::i64,
3143
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3144
OPC_EmitMergeInputChains, 1, 0,
3145
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I64), 0|OPFL_Chain|OPFL_MemRefs,
3146
1, MVT::i64, 4, 4, 5, 2, 3,
3148
102, ISD::ATOMIC_SWAP,
3150
OPC_CheckPredicate, 59,
3155
OPC_CheckType, MVT::i32,
3156
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3157
OPC_EmitMergeInputChains, 1, 0,
3158
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I8), 0|OPFL_Chain|OPFL_MemRefs,
3159
1, MVT::i32, 3, 3, 4, 2,
3161
OPC_CheckPredicate, 60,
3166
OPC_CheckType, MVT::i32,
3167
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3168
OPC_EmitMergeInputChains, 1, 0,
3169
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I16), 0|OPFL_Chain|OPFL_MemRefs,
3170
1, MVT::i32, 3, 3, 4, 2,
3172
OPC_CheckPredicate, 61,
3177
OPC_CheckType, MVT::i32,
3178
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3179
OPC_EmitMergeInputChains, 1, 0,
3180
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I32), 0|OPFL_Chain|OPFL_MemRefs,
3181
1, MVT::i32, 3, 3, 4, 2,
3183
OPC_CheckPredicate, 62,
3188
OPC_CheckType, MVT::i64,
3189
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3190
OPC_EmitMergeInputChains, 1, 0,
3191
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I64), 0|OPFL_Chain|OPFL_MemRefs,
3192
1, MVT::i64, 3, 3, 4, 2,
3194
52, PPCISD::DYNALLOC,
3198
OPC_CheckChild1Type, MVT::i32,
3200
OPC_CheckChild2Type, MVT::iPTR,
3201
OPC_CheckType, MVT::i32,
3202
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
3203
OPC_EmitMergeInputChains, 1, 0,
3204
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DYNALLOC), 0|OPFL_Chain,
3205
1, MVT::i32, 3, 1, 3, 4,
3207
OPC_CheckChild1Type, MVT::i64,
3209
OPC_CheckChild2Type, MVT::iPTR,
3210
OPC_CheckType, MVT::i64,
3211
OPC_CheckComplexPat, /*CP*/1, /*#*/2,
3212
OPC_EmitMergeInputChains, 1, 0,
3213
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DYNALLOC8), 0|OPFL_Chain,
3214
1, MVT::i64, 3, 1, 3, 4,
3219
OPC_SwitchType , 15, MVT::i32,
3220
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3221
OPC_EmitMergeInputChains, 1, 0,
3222
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWARX), 0|OPFL_Chain,
3223
1, MVT::i32, 2, 2, 3,
3225
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3226
OPC_EmitMergeInputChains, 1, 0,
3227
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDARX), 0|OPFL_Chain,
3228
1, MVT::i64, 2, 2, 3,
3234
OPC_CheckChild1Type, MVT::i32,
3236
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
3237
OPC_EmitMergeInputChains, 1, 0,
3238
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWCX), 0|OPFL_Chain,
3241
OPC_CheckChild1Type, MVT::i64,
3243
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
3244
OPC_EmitMergeInputChains, 1, 0,
3245
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDCX), 0|OPFL_Chain,
3253
OPC_CheckValueType, MVT::i16,
3255
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3256
OPC_EmitMergeInputChains, 1, 0,
3257
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHBRX), 0|OPFL_Chain,
3258
1, MVT::i32, 2, 2, 3,
3260
OPC_CheckValueType, MVT::i32,
3262
OPC_CheckComplexPat, /*CP*/0, /*#*/1,
3263
OPC_EmitMergeInputChains, 1, 0,
3264
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWBRX), 0|OPFL_Chain,
3265
1, MVT::i32, 2, 2, 3,
3273
OPC_CheckValueType, MVT::i16,
3275
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
3276
OPC_EmitMergeInputChains, 1, 0,
3277
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHBRX), 0|OPFL_Chain,
3280
OPC_CheckValueType, MVT::i32,
3282
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
3283
OPC_EmitMergeInputChains, 1, 0,
3284
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWBRX), 0|OPFL_Chain,
3291
OPC_CheckComplexPat, /*CP*/0, /*#*/2,
3292
OPC_EmitMergeInputChains, 1, 0,
3293
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFIWX), 0|OPFL_Chain,
3297
OPC_CaptureFlagInput,
3299
OPC_CheckChild1Type, MVT::iPTR,
3300
OPC_CheckType, MVT::i64,
3302
OPC_CheckComplexPat, /*CP*/3, /*#*/1,
3303
OPC_EmitMergeInputChains, 1, 0,
3304
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LD), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
3305
1, MVT::i64, 2, 2, 3,
3307
OPC_CheckComplexPat, /*CP*/2, /*#*/1,
3308
OPC_EmitMergeInputChains, 1, 0,
3309
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDX), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
3310
1, MVT::i64, 2, 2, 3,
3315
OPC_CheckChild1Type, MVT::i32,
3318
OPC_CheckComplexPat, /*CP*/3, /*#*/2,
3319
OPC_EmitMergeInputChains, 1, 0,
3320
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STD_32), 0|OPFL_Chain,
3323
OPC_CheckComplexPat, /*CP*/2, /*#*/2,
3324
OPC_EmitMergeInputChains, 1, 0,
3325
OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDX_32), 0|OPFL_Chain,
3328
127|128,4, ISD::XOR,
3329
OPC_Scope, 36|128,1,
3331
OPC_SwitchOpcode , 41, ISD::AND,
3336
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3338
OPC_SwitchType , 9, MVT::i32,
3339
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NAND), 0,
3340
1, MVT::i32, 2, 0, 1,
3342
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NAND8), 0,
3343
1, MVT::i64, 2, 0, 1,
3350
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3352
OPC_SwitchType , 9, MVT::i32,
3353
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOR), 0,
3354
1, MVT::i32, 2, 0, 1,
3356
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOR8), 0,
3357
1, MVT::i64, 2, 0, 1,
3365
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3367
OPC_SwitchType , 9, MVT::i32,
3368
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV), 0,
3369
1, MVT::i32, 2, 0, 1,
3371
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV8), 0,
3372
1, MVT::i64, 2, 0, 1,
3376
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3380
OPC_CheckType, MVT::i32,
3381
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV), 0,
3382
1, MVT::i32, 2, 0, 1,
3388
OPC_CheckOpcode, ISD::XOR,
3391
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3394
OPC_CheckType, MVT::i32,
3395
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV), 0,
3396
1, MVT::i32, 2, 1, 0,
3399
OPC_CheckOpcode, ISD::XOR,
3402
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3406
OPC_CheckType, MVT::i64,
3407
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV8), 0,
3408
1, MVT::i64, 2, 0, 1,
3412
OPC_CheckOpcode, ISD::XOR,
3415
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3418
OPC_CheckType, MVT::i64,
3419
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV8), 0,
3420
1, MVT::i64, 2, 1, 0,
3423
OPC_SwitchOpcode , 39, ISD::OR,
3428
OPC_SwitchOpcode , 14, ISD::BUILD_VECTOR,
3429
OPC_CheckPredicate, 63,
3431
OPC_CheckType, MVT::v4i32,
3432
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3433
1, MVT::v4i32, 2, 0, 1,
3434
14, ISD::BIT_CONVERT,
3435
OPC_CheckPredicate, 64,
3437
OPC_CheckType, MVT::v4i32,
3438
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3439
1, MVT::v4i32, 2, 0, 1,
3441
21, ISD::BUILD_VECTOR,
3442
OPC_CheckPredicate, 63,
3445
OPC_CheckOpcode, ISD::OR,
3449
OPC_CheckType, MVT::v4i32,
3450
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3451
1, MVT::v4i32, 2, 0, 1,
3452
21, ISD::BIT_CONVERT,
3453
OPC_CheckPredicate, 64,
3456
OPC_CheckOpcode, ISD::OR,
3460
OPC_CheckType, MVT::v4i32,
3461
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3462
1, MVT::v4i32, 2, 0, 1,
3468
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3470
OPC_CheckType, MVT::i32,
3471
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOR), 0,
3472
1, MVT::i32, 2, 0, 0,
3476
OPC_CheckOpcode, ISD::Constant,
3478
OPC_CheckPredicate, 65,
3480
OPC_CheckType, MVT::i32,
3481
OPC_EmitConvertToTarget, 1,
3482
OPC_EmitNodeXForm, 1, 2,
3483
OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORI), 0,
3484
1, MVT::i32, 2, 0, 3,
3486
OPC_CheckPredicate, 66,
3488
OPC_CheckType, MVT::i32,
3489
OPC_EmitConvertToTarget, 1,
3490
OPC_EmitNodeXForm, 0, 2,
3491
OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORIS), 0,
3492
1, MVT::i32, 2, 0, 3,
3496
OPC_SwitchOpcode , 14, ISD::BUILD_VECTOR,
3497
OPC_CheckPredicate, 63,
3499
OPC_CheckType, MVT::v4i32,
3500
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3501
1, MVT::v4i32, 2, 0, 0,
3502
14, ISD::BIT_CONVERT,
3503
OPC_CheckPredicate, 64,
3505
OPC_CheckType, MVT::v4i32,
3506
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3507
1, MVT::v4i32, 2, 0, 0,
3512
OPC_CheckOpcode, ISD::Constant,
3514
OPC_CheckPredicate, 65,
3516
OPC_CheckType, MVT::i64,
3517
OPC_EmitConvertToTarget, 1,
3518
OPC_EmitNodeXForm, 1, 2,
3519
OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORI8), 0,
3520
1, MVT::i64, 2, 0, 3,
3522
OPC_CheckPredicate, 66,
3524
OPC_CheckType, MVT::i64,
3525
OPC_EmitConvertToTarget, 1,
3526
OPC_EmitNodeXForm, 0, 2,
3527
OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORIS8), 0,
3528
1, MVT::i64, 2, 0, 3,
3533
OPC_SwitchOpcode , 15, ISD::BUILD_VECTOR,
3534
OPC_CheckPredicate, 63,
3537
OPC_CheckType, MVT::v4i32,
3538
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3539
1, MVT::v4i32, 2, 0, 0,
3540
15, ISD::BIT_CONVERT,
3541
OPC_CheckPredicate, 64,
3544
OPC_CheckType, MVT::v4i32,
3545
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
3546
1, MVT::v4i32, 2, 0, 0,
3553
OPC_CheckOpcode, ISD::Constant,
3555
OPC_CheckType, MVT::i32,
3556
OPC_EmitConvertToTarget, 1,
3557
OPC_EmitNodeXForm, 1, 2,
3558
OPC_EmitNode, TARGET_OPCODE(PPC::XORI), 0,
3559
1, MVT::i32, 2, 0, 3,
3560
OPC_EmitConvertToTarget, 1,
3561
OPC_EmitNodeXForm, 0, 5,
3562
OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORIS), 0,
3563
1, MVT::i32, 2, 4, 6,
3565
OPC_CheckType, MVT::i32,
3566
OPC_MorphNodeTo, TARGET_OPCODE(PPC::XOR), 0,
3567
1, MVT::i32, 2, 0, 1,
3569
OPC_CheckType, MVT::v4i32,
3570
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VXOR), 0,
3571
1, MVT::v4i32, 2, 0, 1,
3573
OPC_CheckType, MVT::i64,
3574
OPC_MorphNodeTo, TARGET_OPCODE(PPC::XOR8), 0,
3575
1, MVT::i64, 2, 0, 1,
3582
OPC_CheckOpcode, ISD::XOR,
3585
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3588
OPC_SwitchType , 9, MVT::i32,
3589
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC), 0,
3590
1, MVT::i32, 2, 0, 1,
3592
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC8), 0,
3593
1, MVT::i64, 2, 0, 1,
3597
OPC_SwitchOpcode , 41, ISD::XOR,
3600
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3604
OPC_SwitchType , 9, MVT::i32,
3605
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC), 0,
3606
1, MVT::i32, 2, 1, 0,
3608
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC8), 0,
3609
1, MVT::i64, 2, 1, 0,
3614
OPC_CheckChild1Type, MVT::i32,
3618
OPC_CheckOpcode, ISD::Constant,
3619
OPC_CheckPredicate, 67,
3621
OPC_CheckType, MVT::i32,
3622
OPC_EmitConvertToTarget, 2,
3623
OPC_EmitNodeXForm, 3, 3,
3624
OPC_EmitConvertToTarget, 2,
3625
OPC_EmitNodeXForm, 4, 5,
3626
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWNM), 0,
3627
1, MVT::i32, 4, 0, 1, 4, 6,
3632
OPC_CheckOpcode, ISD::XOR,
3636
OPC_SwitchOpcode , 15, ISD::BUILD_VECTOR,
3637
OPC_CheckPredicate, 63,
3640
OPC_CheckType, MVT::v4i32,
3641
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3642
1, MVT::v4i32, 2, 0, 1,
3643
15, ISD::BIT_CONVERT,
3644
OPC_CheckPredicate, 64,
3647
OPC_CheckType, MVT::v4i32,
3648
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3649
1, MVT::v4i32, 2, 0, 1,
3653
OPC_CheckOpcode, ISD::BUILD_VECTOR,
3654
OPC_CheckPredicate, 63,
3658
OPC_CheckType, MVT::v4i32,
3659
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3660
1, MVT::v4i32, 2, 0, 1,
3664
OPC_CheckOpcode, ISD::XOR,
3668
OPC_CheckOpcode, ISD::BUILD_VECTOR,
3669
OPC_CheckPredicate, 63,
3673
OPC_CheckType, MVT::v4i32,
3674
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3675
1, MVT::v4i32, 2, 1, 0,
3678
OPC_CheckOpcode, ISD::BUILD_VECTOR,
3679
OPC_CheckPredicate, 63,
3684
OPC_CheckType, MVT::v4i32,
3685
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3686
1, MVT::v4i32, 2, 1, 0,
3691
OPC_CheckOpcode, ISD::XOR,
3693
OPC_CheckOpcode, ISD::BIT_CONVERT,
3694
OPC_CheckPredicate, 64,
3698
OPC_CheckType, MVT::v4i32,
3699
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3700
1, MVT::v4i32, 2, 0, 1,
3703
OPC_CheckOpcode, ISD::XOR,
3707
OPC_CheckOpcode, ISD::BIT_CONVERT,
3708
OPC_CheckPredicate, 64,
3712
OPC_CheckType, MVT::v4i32,
3713
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3714
1, MVT::v4i32, 2, 1, 0,
3717
OPC_CheckOpcode, ISD::BIT_CONVERT,
3718
OPC_CheckPredicate, 64,
3723
OPC_CheckType, MVT::v4i32,
3724
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
3725
1, MVT::v4i32, 2, 1, 0,
3732
OPC_CheckOpcode, ISD::Constant,
3734
OPC_CheckPredicate, 65,
3736
OPC_CheckType, MVT::i32,
3737
OPC_EmitConvertToTarget, 1,
3738
OPC_EmitNodeXForm, 1, 2,
3739
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDIo), 0,
3740
1, MVT::i32, 2, 0, 3,
3742
OPC_CheckPredicate, 66,
3744
OPC_CheckType, MVT::i32,
3745
OPC_EmitConvertToTarget, 1,
3746
OPC_EmitNodeXForm, 0, 2,
3747
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDISo), 0,
3748
1, MVT::i32, 2, 0, 3,
3750
OPC_CheckPredicate, 65,
3752
OPC_CheckType, MVT::i64,
3753
OPC_EmitConvertToTarget, 1,
3754
OPC_EmitNodeXForm, 1, 2,
3755
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDIo8), 0,
3756
1, MVT::i64, 2, 0, 3,
3758
OPC_CheckPredicate, 66,
3760
OPC_CheckType, MVT::i64,
3761
OPC_EmitConvertToTarget, 1,
3762
OPC_EmitNodeXForm, 0, 2,
3763
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDISo8), 0,
3764
1, MVT::i64, 2, 0, 3,
3767
OPC_CheckType, MVT::i32,
3768
OPC_MorphNodeTo, TARGET_OPCODE(PPC::AND), 0,
3769
1, MVT::i32, 2, 0, 1,
3771
OPC_CheckType, MVT::v4i32,
3772
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAND), 0,
3773
1, MVT::v4i32, 2, 0, 1,
3775
OPC_CheckType, MVT::i64,
3776
OPC_MorphNodeTo, TARGET_OPCODE(PPC::AND8), 0,
3777
1, MVT::i64, 2, 0, 1,
3784
OPC_CheckOpcode, ISD::XOR,
3787
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3790
OPC_SwitchType , 9, MVT::i32,
3791
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC), 0,
3792
1, MVT::i32, 2, 0, 1,
3794
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC8), 0,
3795
1, MVT::i64, 2, 0, 1,
3799
OPC_CheckOpcode, ISD::XOR,
3802
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
3806
OPC_SwitchType , 9, MVT::i32,
3807
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC), 0,
3808
1, MVT::i32, 2, 1, 0,
3810
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC8), 0,
3811
1, MVT::i64, 2, 1, 0,
3818
OPC_CheckOpcode, ISD::Constant,
3820
OPC_CheckPredicate, 65,
3822
OPC_CheckType, MVT::i32,
3823
OPC_EmitConvertToTarget, 1,
3824
OPC_EmitNodeXForm, 1, 2,
3825
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORI), 0,
3826
1, MVT::i32, 2, 0, 3,
3828
OPC_CheckPredicate, 66,
3830
OPC_CheckType, MVT::i32,
3831
OPC_EmitConvertToTarget, 1,
3832
OPC_EmitNodeXForm, 0, 2,
3833
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORIS), 0,
3834
1, MVT::i32, 2, 0, 3,
3836
OPC_CheckPredicate, 65,
3838
OPC_CheckType, MVT::i64,
3839
OPC_EmitConvertToTarget, 1,
3840
OPC_EmitNodeXForm, 1, 2,
3841
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORI8), 0,
3842
1, MVT::i64, 2, 0, 3,
3844
OPC_CheckPredicate, 66,
3846
OPC_CheckType, MVT::i64,
3847
OPC_EmitConvertToTarget, 1,
3848
OPC_EmitNodeXForm, 0, 2,
3849
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORIS8), 0,
3850
1, MVT::i64, 2, 0, 3,
3853
OPC_CheckType, MVT::i32,
3854
OPC_EmitConvertToTarget, 1,
3855
OPC_EmitNodeXForm, 1, 2,
3856
OPC_EmitNode, TARGET_OPCODE(PPC::ORI), 0,
3857
1, MVT::i32, 2, 0, 3,
3858
OPC_EmitConvertToTarget, 1,
3859
OPC_EmitNodeXForm, 0, 5,
3860
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORIS), 0,
3861
1, MVT::i32, 2, 4, 6,
3864
OPC_CheckType, MVT::i32,
3865
OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR), 0,
3866
1, MVT::i32, 2, 0, 1,
3868
OPC_CheckType, MVT::v4i32,
3869
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VOR), 0,
3870
1, MVT::v4i32, 2, 0, 1,
3872
OPC_CheckType, MVT::i64,
3873
OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR8), 0,
3874
1, MVT::i64, 2, 0, 1,
3880
OPC_SwitchOpcode , 28, ISD::TargetGlobalAddress,
3883
OPC_CheckInteger, 0,
3885
OPC_SwitchType , 8, MVT::i32,
3886
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
3889
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
3892
28, ISD::TargetConstantPool,
3895
OPC_CheckInteger, 0,
3897
OPC_SwitchType , 8, MVT::i32,
3898
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
3901
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
3904
28, ISD::TargetJumpTable,
3907
OPC_CheckInteger, 0,
3909
OPC_SwitchType , 8, MVT::i32,
3910
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
3913
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
3916
28, ISD::TargetBlockAddress,
3919
OPC_CheckInteger, 0,
3921
OPC_SwitchType , 8, MVT::i32,
3922
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
3925
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
3932
OPC_SwitchOpcode , 28, ISD::TargetGlobalAddress,
3935
OPC_CheckInteger, 0,
3937
OPC_SwitchType , 8, MVT::i32,
3938
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
3941
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
3944
28, ISD::TargetConstantPool,
3947
OPC_CheckInteger, 0,
3949
OPC_SwitchType , 8, MVT::i32,
3950
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
3953
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
3956
28, ISD::TargetJumpTable,
3959
OPC_CheckInteger, 0,
3961
OPC_SwitchType , 8, MVT::i32,
3962
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
3965
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
3968
28, ISD::TargetBlockAddress,
3971
OPC_CheckInteger, 0,
3973
OPC_SwitchType , 8, MVT::i32,
3974
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
3977
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
3981
25, ISD::CALLSEQ_END,
3983
OPC_CaptureFlagInput,
3986
OPC_CheckOpcode, ISD::TargetConstant,
3990
OPC_CheckOpcode, ISD::TargetConstant,
3992
OPC_EmitMergeInputChains, 1, 0,
3993
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
3995
75|128,1, PPCISD::TC_RETURN,
3997
OPC_CaptureFlagInput,
3999
OPC_Scope, 24|128,1,
4001
OPC_SwitchOpcode , 50, ISD::Constant,
4002
OPC_SwitchType , 22, MVT::i32,
4006
OPC_CheckOpcode, ISD::Constant,
4008
OPC_EmitMergeInputChains, 1, 0,
4009
OPC_EmitConvertToTarget, 1,
4010
OPC_EmitConvertToTarget, 2,
4011
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNai), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4017
OPC_CheckOpcode, ISD::Constant,
4019
OPC_EmitMergeInputChains, 1, 0,
4020
OPC_EmitConvertToTarget, 1,
4021
OPC_EmitConvertToTarget, 2,
4022
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNai8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4025
46, ISD::TargetGlobalAddress,
4026
OPC_SwitchType , 20, MVT::i32,
4030
OPC_CheckOpcode, ISD::Constant,
4032
OPC_EmitMergeInputChains, 1, 0,
4033
OPC_EmitConvertToTarget, 2,
4034
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4040
OPC_CheckOpcode, ISD::Constant,
4042
OPC_EmitMergeInputChains, 1, 0,
4043
OPC_EmitConvertToTarget, 2,
4044
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4047
46, ISD::TargetExternalSymbol,
4048
OPC_SwitchType , 20, MVT::i32,
4052
OPC_CheckOpcode, ISD::Constant,
4054
OPC_EmitMergeInputChains, 1, 0,
4055
OPC_EmitConvertToTarget, 2,
4056
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4062
OPC_CheckOpcode, ISD::Constant,
4064
OPC_EmitMergeInputChains, 1, 0,
4065
OPC_EmitConvertToTarget, 2,
4066
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4071
OPC_CheckChild1Type, MVT::i32,
4074
OPC_CheckOpcode, ISD::Constant,
4076
OPC_EmitMergeInputChains, 1, 0,
4077
OPC_EmitConvertToTarget, 2,
4078
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNri), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4081
OPC_CheckChild1Type, MVT::i64,
4084
OPC_CheckOpcode, ISD::Constant,
4086
OPC_EmitMergeInputChains, 1, 0,
4087
OPC_EmitConvertToTarget, 2,
4088
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNri8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
4091
55|128,1, ISD::FNEG,
4092
OPC_Scope, 27|128,1,
4094
OPC_SwitchOpcode , 82, ISD::FADD,
4097
OPC_CheckOpcode, ISD::FMUL,
4103
OPC_SwitchType , 12, MVT::f64,
4104
OPC_CheckPatternPredicate, 0,
4105
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADD), 0,
4106
1, MVT::f64, 3, 0, 1, 2,
4108
OPC_CheckPatternPredicate, 0,
4109
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADDS), 0,
4110
1, MVT::f32, 3, 0, 1, 2,
4115
OPC_CheckOpcode, ISD::FMUL,
4120
OPC_SwitchType , 12, MVT::f64,
4121
OPC_CheckPatternPredicate, 0,
4122
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADD), 0,
4123
1, MVT::f64, 3, 1, 2, 0,
4125
OPC_CheckPatternPredicate, 0,
4126
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADDS), 0,
4127
1, MVT::f32, 3, 1, 2, 0,
4132
OPC_CheckOpcode, ISD::FMUL,
4138
OPC_SwitchType , 12, MVT::f64,
4139
OPC_CheckPatternPredicate, 0,
4140
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUB), 0,
4141
1, MVT::f64, 3, 0, 1, 2,
4143
OPC_CheckPatternPredicate, 0,
4144
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUBS), 0,
4145
1, MVT::f32, 3, 0, 1, 2,
4150
OPC_SwitchType , 8, MVT::f32,
4151
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNABSS), 0,
4154
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNABSD), 0,
4160
OPC_SwitchType , 8, MVT::f32,
4161
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNEGS), 0,
4164
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNEGD), 0,
4171
OPC_CheckInteger, 0,
4174
OPC_SwitchType , 8, MVT::i32,
4175
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NEG), 0,
4178
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NEG8), 0,
4185
OPC_CheckOpcode, ISD::Constant,
4186
OPC_CheckPredicate, 0,
4189
OPC_CheckType, MVT::i32,
4190
OPC_EmitConvertToTarget, 0,
4191
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFIC), 0,
4192
1, MVT::i32, 2, 1, 2,
4195
OPC_SwitchType , 9, MVT::i32,
4196
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBF), 0,
4197
1, MVT::i32, 2, 1, 0,
4199
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUBM), 0,
4200
1, MVT::v16i8, 2, 0, 1,
4202
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUHM), 0,
4203
1, MVT::v8i16, 2, 0, 1,
4205
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUWM), 0,
4206
1, MVT::v4i32, 2, 0, 1,
4208
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBF8), 0,
4209
1, MVT::i64, 2, 1, 0,
4214
OPC_CaptureFlagInput,
4219
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
4221
OPC_SwitchType , 8, MVT::i32,
4222
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDME), 0|OPFL_FlagInput|OPFL_FlagOutput,
4225
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDME8), 0|OPFL_FlagInput|OPFL_FlagOutput,
4229
OPC_CheckInteger, 0,
4231
OPC_SwitchType , 8, MVT::i32,
4232
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDZE), 0|OPFL_FlagInput|OPFL_FlagOutput,
4235
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDZE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
4241
OPC_SwitchType , 9, MVT::i32,
4242
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDE), 0|OPFL_FlagInput|OPFL_FlagOutput,
4243
1, MVT::i32, 2, 0, 1,
4245
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
4246
1, MVT::i64, 2, 0, 1,
4250
OPC_CaptureFlagInput,
4254
OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1,
4257
OPC_SwitchType , 8, MVT::i32,
4258
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFME), 0|OPFL_FlagInput|OPFL_FlagOutput,
4261
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFME8), 0|OPFL_FlagInput|OPFL_FlagOutput,
4265
OPC_CheckInteger, 0,
4268
OPC_SwitchType , 8, MVT::i32,
4269
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFZE), 0|OPFL_FlagInput|OPFL_FlagOutput,
4272
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFZE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
4279
OPC_SwitchType , 9, MVT::i32,
4280
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFE), 0|OPFL_FlagInput|OPFL_FlagOutput,
4281
1, MVT::i32, 2, 1, 0,
4283
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
4284
1, MVT::i64, 2, 1, 0,
4287
84|128,1, PPCISD::VCMP,
4292
OPC_CheckInteger, 70|128,7,
4294
OPC_CheckType, MVT::v4f32,
4295
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPBFP), 0,
4296
1, MVT::v4f32, 2, 0, 1,
4298
OPC_CheckInteger, 70|128,1,
4300
OPC_CheckType, MVT::v4f32,
4301
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQFP), 0,
4302
1, MVT::v4f32, 2, 0, 1,
4304
OPC_CheckInteger, 70|128,3,
4306
OPC_CheckType, MVT::v4f32,
4307
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGEFP), 0,
4308
1, MVT::v4f32, 2, 0, 1,
4310
OPC_CheckInteger, 70|128,5,
4312
OPC_CheckType, MVT::v4f32,
4313
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTFP), 0,
4314
1, MVT::v4f32, 2, 0, 1,
4316
OPC_CheckInteger, 6,
4318
OPC_CheckType, MVT::v16i8,
4319
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUB), 0,
4320
1, MVT::v16i8, 2, 0, 1,
4322
OPC_CheckInteger, 6|128,6,
4324
OPC_CheckType, MVT::v16i8,
4325
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSB), 0,
4326
1, MVT::v16i8, 2, 0, 1,
4328
OPC_CheckInteger, 6|128,4,
4330
OPC_CheckType, MVT::v16i8,
4331
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUB), 0,
4332
1, MVT::v16i8, 2, 0, 1,
4334
OPC_CheckInteger, 70,
4336
OPC_CheckType, MVT::v8i16,
4337
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUH), 0,
4338
1, MVT::v8i16, 2, 0, 1,
4340
OPC_CheckInteger, 70|128,6,
4342
OPC_CheckType, MVT::v8i16,
4343
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSH), 0,
4344
1, MVT::v8i16, 2, 0, 1,
4346
OPC_CheckInteger, 70|128,4,
4348
OPC_CheckType, MVT::v8i16,
4349
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUH), 0,
4350
1, MVT::v8i16, 2, 0, 1,
4352
OPC_CheckInteger, 6|128,1,
4354
OPC_CheckType, MVT::v4i32,
4355
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUW), 0,
4356
1, MVT::v4i32, 2, 0, 1,
4358
OPC_CheckInteger, 6|128,7,
4360
OPC_CheckType, MVT::v4i32,
4361
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSW), 0,
4362
1, MVT::v4i32, 2, 0, 1,
4364
OPC_CheckInteger, 6|128,5,
4366
OPC_CheckType, MVT::v4i32,
4367
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUW), 0,
4368
1, MVT::v4i32, 2, 0, 1,
4370
84|128,1, PPCISD::VCMPo,
4375
OPC_CheckInteger, 70|128,7,
4377
OPC_CheckType, MVT::v4f32,
4378
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPBFPo), 0|OPFL_FlagOutput,
4379
1, MVT::v4f32, 2, 0, 1,
4381
OPC_CheckInteger, 70|128,1,
4383
OPC_CheckType, MVT::v4f32,
4384
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQFPo), 0|OPFL_FlagOutput,
4385
1, MVT::v4f32, 2, 0, 1,
4387
OPC_CheckInteger, 70|128,3,
4389
OPC_CheckType, MVT::v4f32,
4390
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGEFPo), 0|OPFL_FlagOutput,
4391
1, MVT::v4f32, 2, 0, 1,
4393
OPC_CheckInteger, 70|128,5,
4395
OPC_CheckType, MVT::v4f32,
4396
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTFPo), 0|OPFL_FlagOutput,
4397
1, MVT::v4f32, 2, 0, 1,
4399
OPC_CheckInteger, 6,
4401
OPC_CheckType, MVT::v16i8,
4402
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUBo), 0|OPFL_FlagOutput,
4403
1, MVT::v16i8, 2, 0, 1,
4405
OPC_CheckInteger, 6|128,6,
4407
OPC_CheckType, MVT::v16i8,
4408
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSBo), 0|OPFL_FlagOutput,
4409
1, MVT::v16i8, 2, 0, 1,
4411
OPC_CheckInteger, 6|128,4,
4413
OPC_CheckType, MVT::v16i8,
4414
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUBo), 0|OPFL_FlagOutput,
4415
1, MVT::v16i8, 2, 0, 1,
4417
OPC_CheckInteger, 70,
4419
OPC_CheckType, MVT::v8i16,
4420
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUHo), 0|OPFL_FlagOutput,
4421
1, MVT::v8i16, 2, 0, 1,
4423
OPC_CheckInteger, 70|128,6,
4425
OPC_CheckType, MVT::v8i16,
4426
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSHo), 0|OPFL_FlagOutput,
4427
1, MVT::v8i16, 2, 0, 1,
4429
OPC_CheckInteger, 70|128,4,
4431
OPC_CheckType, MVT::v8i16,
4432
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUHo), 0|OPFL_FlagOutput,
4433
1, MVT::v8i16, 2, 0, 1,
4435
OPC_CheckInteger, 6|128,1,
4437
OPC_CheckType, MVT::v4i32,
4438
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUWo), 0|OPFL_FlagOutput,
4439
1, MVT::v4i32, 2, 0, 1,
4441
OPC_CheckInteger, 6|128,7,
4443
OPC_CheckType, MVT::v4i32,
4444
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSWo), 0|OPFL_FlagOutput,
4445
1, MVT::v4i32, 2, 0, 1,
4447
OPC_CheckInteger, 6|128,5,
4449
OPC_CheckType, MVT::v4i32,
4450
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUWo), 0|OPFL_FlagOutput,
4451
1, MVT::v4i32, 2, 0, 1,
4458
OPC_CheckOpcode, ISD::Constant,
4459
OPC_CheckPredicate, 0,
4461
OPC_SwitchType , 11, MVT::i32,
4462
OPC_EmitConvertToTarget, 1,
4463
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIC), 0|OPFL_FlagOutput,
4464
1, MVT::i32, 2, 0, 2,
4466
OPC_EmitConvertToTarget, 1,
4467
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIC8), 0|OPFL_FlagOutput,
4468
1, MVT::i64, 2, 0, 2,
4471
OPC_CheckType, MVT::i32,
4472
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDC), 0|OPFL_FlagOutput,
4473
1, MVT::i32, 2, 0, 1,
4475
OPC_CheckType, MVT::i64,
4476
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDC8), 0|OPFL_FlagOutput,
4477
1, MVT::i64, 2, 0, 1,
4484
OPC_CheckOpcode, ISD::Constant,
4485
OPC_CheckPredicate, 0,
4487
OPC_CheckType, MVT::i32,
4488
OPC_EmitConvertToTarget, 1,
4489
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULLI), 0,
4490
1, MVT::i32, 2, 0, 2,
4492
OPC_CheckType, MVT::i32,
4493
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULLW), 0,
4494
1, MVT::i32, 2, 0, 1,
4496
OPC_CheckType, MVT::i64,
4497
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULLD), 0,
4498
1, MVT::i64, 2, 0, 1,
4504
OPC_CheckOpcode, ISD::Constant,
4505
OPC_CheckPredicate, 0,
4508
OPC_SwitchType , 11, MVT::i32,
4509
OPC_EmitConvertToTarget, 0,
4510
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFIC), 0|OPFL_FlagOutput,
4511
1, MVT::i32, 2, 1, 2,
4513
OPC_EmitConvertToTarget, 0,
4514
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFIC8), 0|OPFL_FlagOutput,
4515
1, MVT::i64, 2, 1, 2,
4519
OPC_SwitchType , 9, MVT::i32,
4520
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFC), 0|OPFL_FlagOutput,
4521
1, MVT::i32, 2, 1, 0,
4523
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFC8), 0|OPFL_FlagOutput,
4524
1, MVT::i64, 2, 1, 0,
4527
24|128,3, ISD::VECTOR_SHUFFLE,
4531
OPC_CheckPredicate, 68,
4534
OPC_CheckOpcode, ISD::UNDEF,
4536
OPC_CheckType, MVT::v16i8,
4537
OPC_EmitNodeXForm, 5, 0,
4538
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTB), 0,
4539
1, MVT::v16i8, 2, 2, 1,
4541
OPC_CheckPredicate, 69,
4544
OPC_CheckOpcode, ISD::UNDEF,
4546
OPC_CheckType, MVT::v16i8,
4547
OPC_EmitNodeXForm, 6, 0,
4548
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTH), 0,
4549
1, MVT::v16i8, 2, 2, 1,
4551
OPC_CheckPredicate, 70,
4554
OPC_CheckOpcode, ISD::UNDEF,
4556
OPC_CheckType, MVT::v16i8,
4557
OPC_EmitNodeXForm, 7, 0,
4558
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTW), 0,
4559
1, MVT::v16i8, 2, 2, 1,
4561
OPC_CheckPredicate, 71,
4564
OPC_CheckOpcode, ISD::UNDEF,
4566
OPC_CheckType, MVT::v16i8,
4567
OPC_EmitNodeXForm, 8, 0,
4568
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLDOI), 0,
4569
1, MVT::v16i8, 3, 1, 1, 2,
4572
OPC_CheckPredicate, 72,
4575
OPC_CheckOpcode, ISD::UNDEF,
4577
OPC_CheckType, MVT::v16i8,
4578
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUWUM), 0,
4579
1, MVT::v16i8, 2, 0, 0,
4581
OPC_CheckPredicate, 73,
4584
OPC_CheckOpcode, ISD::UNDEF,
4586
OPC_CheckType, MVT::v16i8,
4587
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUHUM), 0,
4588
1, MVT::v16i8, 2, 0, 0,
4590
OPC_CheckPredicate, 74,
4593
OPC_CheckOpcode, ISD::UNDEF,
4595
OPC_CheckType, MVT::v16i8,
4596
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLB), 0,
4597
1, MVT::v16i8, 2, 0, 0,
4599
OPC_CheckPredicate, 75,
4602
OPC_CheckOpcode, ISD::UNDEF,
4604
OPC_CheckType, MVT::v16i8,
4605
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLH), 0,
4606
1, MVT::v16i8, 2, 0, 0,
4608
OPC_CheckPredicate, 76,
4611
OPC_CheckOpcode, ISD::UNDEF,
4613
OPC_CheckType, MVT::v16i8,
4614
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLW), 0,
4615
1, MVT::v16i8, 2, 0, 0,
4617
OPC_CheckPredicate, 77,
4620
OPC_CheckOpcode, ISD::UNDEF,
4622
OPC_CheckType, MVT::v16i8,
4623
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHB), 0,
4624
1, MVT::v16i8, 2, 0, 0,
4626
OPC_CheckPredicate, 78,
4629
OPC_CheckOpcode, ISD::UNDEF,
4631
OPC_CheckType, MVT::v16i8,
4632
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHH), 0,
4633
1, MVT::v16i8, 2, 0, 0,
4635
OPC_CheckPredicate, 79,
4638
OPC_CheckOpcode, ISD::UNDEF,
4640
OPC_CheckType, MVT::v16i8,
4641
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHW), 0,
4642
1, MVT::v16i8, 2, 0, 0,
4645
OPC_CheckPredicate, 80,
4648
OPC_CheckType, MVT::v16i8,
4649
OPC_EmitNodeXForm, 9, 0,
4650
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLDOI), 0,
4651
1, MVT::v16i8, 3, 1, 2, 3,
4653
OPC_CheckPredicate, 81,
4656
OPC_CheckType, MVT::v16i8,
4657
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHB), 0,
4658
1, MVT::v16i8, 2, 0, 1,
4660
OPC_CheckPredicate, 82,
4663
OPC_CheckType, MVT::v16i8,
4664
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHH), 0,
4665
1, MVT::v16i8, 2, 0, 1,
4667
OPC_CheckPredicate, 83,
4670
OPC_CheckType, MVT::v16i8,
4671
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHW), 0,
4672
1, MVT::v16i8, 2, 0, 1,
4674
OPC_CheckPredicate, 84,
4677
OPC_CheckType, MVT::v16i8,
4678
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLB), 0,
4679
1, MVT::v16i8, 2, 0, 1,
4681
OPC_CheckPredicate, 85,
4684
OPC_CheckType, MVT::v16i8,
4685
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLH), 0,
4686
1, MVT::v16i8, 2, 0, 1,
4688
OPC_CheckPredicate, 86,
4691
OPC_CheckType, MVT::v16i8,
4692
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLW), 0,
4693
1, MVT::v16i8, 2, 0, 1,
4695
OPC_CheckPredicate, 87,
4698
OPC_CheckType, MVT::v16i8,
4699
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUHUM), 0,
4700
1, MVT::v16i8, 2, 0, 1,
4702
OPC_CheckPredicate, 88,
4705
OPC_CheckType, MVT::v16i8,
4706
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUWUM), 0,
4707
1, MVT::v16i8, 2, 0, 1,
4709
17, ISD::CALLSEQ_START,
4713
OPC_CheckOpcode, ISD::TargetConstant,
4715
OPC_EmitMergeInputChains, 1, 0,
4716
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_FlagOutput,
4718
101, PPCISD::CALL_Darwin,
4720
OPC_CaptureFlagInput,
4723
OPC_SwitchOpcode , 32, ISD::Constant,
4724
OPC_SwitchType , 13, MVT::i32,
4726
OPC_EmitMergeInputChains, 1, 0,
4727
OPC_EmitConvertToTarget, 1,
4728
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4732
OPC_EmitMergeInputChains, 1, 0,
4733
OPC_EmitConvertToTarget, 1,
4734
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4737
28, ISD::TargetGlobalAddress,
4738
OPC_SwitchType , 11, MVT::i32,
4740
OPC_EmitMergeInputChains, 1, 0,
4741
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4745
OPC_EmitMergeInputChains, 1, 0,
4746
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4749
28, ISD::TargetExternalSymbol,
4750
OPC_SwitchType , 11, MVT::i32,
4752
OPC_EmitMergeInputChains, 1, 0,
4753
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4757
OPC_EmitMergeInputChains, 1, 0,
4758
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4762
101, PPCISD::CALL_SVR4,
4764
OPC_CaptureFlagInput,
4767
OPC_SwitchOpcode , 32, ISD::Constant,
4768
OPC_SwitchType , 13, MVT::i32,
4770
OPC_EmitMergeInputChains, 1, 0,
4771
OPC_EmitConvertToTarget, 1,
4772
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4776
OPC_EmitMergeInputChains, 1, 0,
4777
OPC_EmitConvertToTarget, 1,
4778
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4781
28, ISD::TargetGlobalAddress,
4782
OPC_SwitchType , 11, MVT::i32,
4784
OPC_EmitMergeInputChains, 1, 0,
4785
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4789
OPC_EmitMergeInputChains, 1, 0,
4790
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4793
28, ISD::TargetExternalSymbol,
4794
OPC_SwitchType , 11, MVT::i32,
4796
OPC_EmitMergeInputChains, 1, 0,
4797
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4801
OPC_EmitMergeInputChains, 1, 0,
4802
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
4811
OPC_CheckOpcode, ISD::Constant,
4812
OPC_CheckType, MVT::i32,
4814
OPC_SwitchType , 11, MVT::i32,
4815
OPC_EmitConvertToTarget, 1,
4816
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAWI), 0,
4817
1, MVT::i32, 2, 0, 2,
4819
OPC_EmitConvertToTarget, 1,
4820
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRADI), 0,
4821
1, MVT::i64, 2, 0, 2,
4824
OPC_CheckChild1Type, MVT::i32,
4825
OPC_SwitchType , 9, MVT::i32,
4826
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAW), 0,
4827
1, MVT::i32, 2, 0, 1,
4829
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAD), 0,
4830
1, MVT::i64, 2, 0, 1,
4833
OPC_CheckChild1Type, MVT::v16i8,
4834
OPC_CheckType, MVT::v16i8,
4835
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAB), 0,
4836
1, MVT::v16i8, 2, 0, 1,
4838
OPC_CheckChild1Type, MVT::v8i16,
4839
OPC_CheckType, MVT::v8i16,
4840
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAH), 0,
4841
1, MVT::v8i16, 2, 0, 1,
4843
OPC_CheckChild1Type, MVT::v4i32,
4844
OPC_CheckType, MVT::v4i32,
4845
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAW), 0,
4846
1, MVT::v4i32, 2, 0, 1,
4849
OPC_CaptureFlagInput,
4852
OPC_CheckOpcode, ISD::Constant,
4853
OPC_CheckType, MVT::i32,
4855
OPC_EmitConvertToTarget, 0,
4856
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTFSB0), 0|OPFL_FlagInput|OPFL_FlagOutput,
4859
OPC_CaptureFlagInput,
4862
OPC_CheckOpcode, ISD::Constant,
4863
OPC_CheckType, MVT::i32,
4865
OPC_EmitConvertToTarget, 0,
4866
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTFSB1), 0|OPFL_FlagInput|OPFL_FlagOutput,
4869
OPC_CaptureFlagInput,
4872
OPC_CheckOpcode, ISD::Constant,
4873
OPC_CheckType, MVT::i32,
4877
OPC_EmitConvertToTarget, 0,
4878
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTFSF), 0|OPFL_FlagInput,
4879
1, MVT::f64, 3, 3, 1, 2,
4880
20|128,1, ISD::FADD,
4883
OPC_CheckOpcode, ISD::FMUL,
4888
OPC_SwitchType , 12, MVT::f64,
4889
OPC_CheckPatternPredicate, 0,
4890
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADD), 0,
4891
1, MVT::f64, 3, 0, 1, 2,
4893
OPC_CheckPatternPredicate, 0,
4894
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADDS), 0,
4895
1, MVT::f32, 3, 0, 1, 2,
4897
OPC_CheckPatternPredicate, 0,
4898
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
4899
1, MVT::v4f32, 3, 0, 1, 2,
4905
OPC_CheckOpcode, ISD::FMUL,
4909
OPC_SwitchType , 12, MVT::f64,
4910
OPC_CheckPatternPredicate, 0,
4911
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADD), 0,
4912
1, MVT::f64, 3, 1, 2, 0,
4914
OPC_CheckPatternPredicate, 0,
4915
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADDS), 0,
4916
1, MVT::f32, 3, 1, 2, 0,
4918
OPC_CheckPatternPredicate, 0,
4919
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
4920
1, MVT::v4f32, 3, 1, 2, 0,
4924
OPC_SwitchType , 9, MVT::f64,
4925
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FADD), 0,
4926
1, MVT::f64, 2, 0, 1,
4928
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FADDS), 0,
4929
1, MVT::f32, 2, 0, 1,
4931
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDFP), 0,
4932
1, MVT::v4f32, 2, 0, 1,
4941
OPC_CheckOpcode, ISD::Constant,
4942
OPC_CheckType, MVT::i32,
4944
OPC_SwitchType , 21, MVT::i32,
4945
OPC_EmitConvertToTarget, 1,
4946
OPC_EmitInteger, MVT::i32, 0,
4947
OPC_EmitConvertToTarget, 1,
4948
OPC_EmitNodeXForm, 10, 4,
4949
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWINM), 0,
4950
1, MVT::i32, 4, 0, 2, 3, 5,
4952
OPC_EmitConvertToTarget, 1,
4953
OPC_EmitConvertToTarget, 1,
4954
OPC_EmitNodeXForm, 11, 3,
4955
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICR), 0,
4956
1, MVT::i64, 3, 0, 2, 4,
4959
OPC_CheckChild1Type, MVT::i32,
4960
OPC_SwitchType , 9, MVT::i32,
4961
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLW), 0,
4962
1, MVT::i32, 2, 0, 1,
4964
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLD), 0,
4965
1, MVT::i64, 2, 0, 1,
4968
OPC_CheckChild1Type, MVT::v16i8,
4969
OPC_CheckType, MVT::v16i8,
4970
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLB), 0,
4971
1, MVT::v16i8, 2, 0, 1,
4973
OPC_CheckChild1Type, MVT::v8i16,
4974
OPC_CheckType, MVT::v8i16,
4975
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLH), 0,
4976
1, MVT::v8i16, 2, 0, 1,
4978
OPC_CheckChild1Type, MVT::v4i32,
4979
OPC_CheckType, MVT::v4i32,
4980
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLW), 0,
4981
1, MVT::v4i32, 2, 0, 1,
4988
OPC_CheckOpcode, ISD::Constant,
4989
OPC_CheckType, MVT::i32,
4991
OPC_SwitchType , 21, MVT::i32,
4992
OPC_EmitConvertToTarget, 1,
4993
OPC_EmitNodeXForm, 12, 2,
4994
OPC_EmitConvertToTarget, 1,
4995
OPC_EmitInteger, MVT::i32, 31,
4996
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWINM), 0,
4997
1, MVT::i32, 4, 0, 3, 4, 5,
4999
OPC_EmitConvertToTarget, 1,
5000
OPC_EmitNodeXForm, 13, 2,
5001
OPC_EmitConvertToTarget, 1,
5002
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICL), 0,
5003
1, MVT::i64, 3, 0, 3, 4,
5006
OPC_CheckChild1Type, MVT::i32,
5007
OPC_SwitchType , 9, MVT::i32,
5008
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRW), 0,
5009
1, MVT::i32, 2, 0, 1,
5011
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRD), 0,
5012
1, MVT::i64, 2, 0, 1,
5015
OPC_CheckChild1Type, MVT::v16i8,
5016
OPC_CheckType, MVT::v16i8,
5017
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRB), 0,
5018
1, MVT::v16i8, 2, 0, 1,
5020
OPC_CheckChild1Type, MVT::v8i16,
5021
OPC_CheckType, MVT::v8i16,
5022
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRH), 0,
5023
1, MVT::v8i16, 2, 0, 1,
5025
OPC_CheckChild1Type, MVT::v4i32,
5026
OPC_CheckType, MVT::v4i32,
5027
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRW), 0,
5028
1, MVT::v4i32, 2, 0, 1,
5035
OPC_CheckOpcode, ISD::Constant,
5036
OPC_CheckType, MVT::i32,
5038
OPC_SwitchType , 19, MVT::i32,
5039
OPC_EmitConvertToTarget, 1,
5040
OPC_EmitInteger, MVT::i32, 0,
5041
OPC_EmitInteger, MVT::i32, 31,
5042
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWINM), 0,
5043
1, MVT::i32, 4, 0, 2, 3, 4,
5045
OPC_EmitConvertToTarget, 1,
5046
OPC_EmitInteger, MVT::i32, 0,
5047
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICL), 0,
5048
1, MVT::i64, 3, 0, 2, 3,
5051
OPC_CheckChild1Type, MVT::i32,
5052
OPC_SwitchType , 17, MVT::i32,
5053
OPC_EmitInteger, MVT::i32, 0,
5054
OPC_EmitInteger, MVT::i32, 31,
5055
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWNM), 0,
5056
1, MVT::i32, 4, 0, 1, 2, 3,
5058
OPC_EmitInteger, MVT::i32, 0,
5059
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDCL), 0,
5060
1, MVT::i64, 3, 0, 1, 2,
5063
18, PPCISD::TOC_ENTRY,
5066
OPC_CheckOpcode, ISD::TargetGlobalAddress,
5069
OPC_CheckType, MVT::i64,
5070
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDtoc), 0,
5071
1, MVT::i64, 2, 0, 1,
5075
OPC_CheckPredicate, 0,
5076
OPC_CheckType, MVT::i32,
5077
OPC_EmitConvertToTarget, 0,
5078
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
5081
OPC_CheckPredicate, 1,
5082
OPC_CheckType, MVT::i32,
5083
OPC_EmitConvertToTarget, 0,
5084
OPC_EmitNodeXForm, 0, 1,
5085
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
5088
OPC_CheckPredicate, 0,
5089
OPC_CheckType, MVT::i64,
5090
OPC_EmitConvertToTarget, 0,
5091
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
5094
OPC_CheckPredicate, 1,
5095
OPC_CheckType, MVT::i64,
5096
OPC_EmitConvertToTarget, 0,
5097
OPC_EmitNodeXForm, 0, 1,
5098
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
5101
OPC_CheckType, MVT::i32,
5102
OPC_EmitConvertToTarget, 0,
5103
OPC_EmitNodeXForm, 0, 1,
5104
OPC_EmitNode, TARGET_OPCODE(PPC::LIS), 0,
5106
OPC_EmitConvertToTarget, 0,
5107
OPC_EmitNodeXForm, 1, 4,
5108
OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORI), 0,
5109
1, MVT::i32, 2, 3, 5,
5111
66, ISD::BUILD_VECTOR,
5115
OPC_CheckPredicate, 89,
5116
OPC_CheckType, MVT::v16i8,
5117
OPC_EmitNodeXForm, 14, 0,
5118
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTISB), 0,
5119
1, MVT::v16i8, 1, 1,
5121
OPC_CheckPredicate, 90,
5122
OPC_CheckType, MVT::v8i16,
5123
OPC_EmitNodeXForm, 15, 0,
5124
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTISH), 0,
5125
1, MVT::v8i16, 1, 1,
5127
OPC_CheckPredicate, 91,
5128
OPC_CheckType, MVT::v4i32,
5129
OPC_EmitNodeXForm, 16, 0,
5130
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTISW), 0,
5131
1, MVT::v4i32, 1, 1,
5134
OPC_CheckPredicate, 92,
5135
OPC_CheckType, MVT::v4i32,
5136
OPC_MorphNodeTo, TARGET_OPCODE(PPC::V_SET0), 0,
5139
83, ISD::BIT_CONVERT,
5142
OPC_CheckChild0Type, MVT::v8i16,
5143
OPC_SwitchType , 3, MVT::v16i8,
5144
OPC_CompleteMatch, 1, 0,
5147
OPC_CompleteMatch, 1, 0,
5150
OPC_CompleteMatch, 1, 0,
5154
OPC_CheckChild0Type, MVT::v4i32,
5155
OPC_SwitchType , 3, MVT::v16i8,
5156
OPC_CompleteMatch, 1, 0,
5159
OPC_CompleteMatch, 1, 0,
5162
OPC_CompleteMatch, 1, 0,
5166
OPC_CheckChild0Type, MVT::v4f32,
5167
OPC_SwitchType , 3, MVT::v16i8,
5168
OPC_CompleteMatch, 1, 0,
5171
OPC_CompleteMatch, 1, 0,
5174
OPC_CompleteMatch, 1, 0,
5178
OPC_CheckChild0Type, MVT::v16i8,
5179
OPC_SwitchType , 3, MVT::v8i16,
5180
OPC_CompleteMatch, 1, 0,
5183
OPC_CompleteMatch, 1, 0,
5186
OPC_CompleteMatch, 1, 0,
5190
19, PPCISD::RET_FLAG,
5192
OPC_CaptureFlagInput,
5193
OPC_EmitMergeInputChains, 1, 0,
5194
OPC_EmitInteger, MVT::i32, 20,
5195
OPC_EmitRegister, MVT::i32, 0 ,
5196
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLR), 0|OPFL_Chain|OPFL_FlagInput,
5202
OPC_CheckOpcode, ISD::BasicBlock,
5204
OPC_EmitMergeInputChains, 1, 0,
5205
OPC_MorphNodeTo, TARGET_OPCODE(PPC::B), 0|OPFL_Chain,
5207
28, PPCISD::BCTRL_Darwin,
5209
OPC_CaptureFlagInput,
5211
OPC_CheckPatternPredicate, 1,
5212
OPC_EmitMergeInputChains, 1, 0,
5213
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
5216
OPC_CheckPatternPredicate, 2,
5217
OPC_EmitMergeInputChains, 1, 0,
5218
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
5221
28, PPCISD::BCTRL_SVR4,
5223
OPC_CaptureFlagInput,
5225
OPC_CheckPatternPredicate, 1,
5226
OPC_EmitMergeInputChains, 1, 0,
5227
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
5230
OPC_CheckPatternPredicate, 2,
5231
OPC_EmitMergeInputChains, 1, 0,
5232
OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
5237
OPC_EmitMergeInputChains, 1, 0,
5238
OPC_MorphNodeTo, TARGET_OPCODE(PPC::TRAP), 0|OPFL_Chain,
5243
OPC_CheckChild1Type, MVT::i32,
5244
OPC_SwitchType , 9, MVT::i32,
5245
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLW), 0,
5246
1, MVT::i32, 2, 0, 1,
5248
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLD), 0,
5249
1, MVT::i64, 2, 0, 1,
5254
OPC_CheckChild1Type, MVT::i32,
5255
OPC_SwitchType , 9, MVT::i32,
5256
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRW), 0,
5257
1, MVT::i32, 2, 0, 1,
5259
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRD), 0,
5260
1, MVT::i64, 2, 0, 1,
5265
OPC_CheckChild1Type, MVT::i32,
5266
OPC_SwitchType , 9, MVT::i32,
5267
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAW), 0,
5268
1, MVT::i32, 2, 0, 1,
5270
OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAD), 0,
5271
1, MVT::i64, 2, 0, 1,
5275
OPC_SwitchType , 8, MVT::i32,
5276
OPC_MorphNodeTo, TARGET_OPCODE(PPC::CNTLZW), 0,
5279
OPC_MorphNodeTo, TARGET_OPCODE(PPC::CNTLZD), 0,
5282
75, ISD::SIGN_EXTEND_INREG,
5286
OPC_CheckValueType, MVT::i8,
5288
OPC_CheckType, MVT::i32,
5289
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSB), 0,
5292
OPC_CheckValueType, MVT::i16,
5294
OPC_CheckType, MVT::i32,
5295
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSH), 0,
5298
OPC_CheckValueType, MVT::i8,
5300
OPC_CheckType, MVT::i64,
5301
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSB8), 0,
5304
OPC_CheckValueType, MVT::i16,
5306
OPC_CheckType, MVT::i64,
5307
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSH8), 0,
5310
OPC_CheckValueType, MVT::i32,
5312
OPC_CheckType, MVT::i64,
5313
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSW), 0,
5318
OPC_CheckType, MVT::f64,
5319
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FCTIWZ), 0,
5323
OPC_CheckChild0Type, MVT::f64,
5324
OPC_CheckType, MVT::f32,
5325
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FRSP), 0,
5329
OPC_SwitchType , 8, MVT::f64,
5330
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSQRT), 0,
5333
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSQRTS), 0,
5338
OPC_CheckChild0Type, MVT::f32,
5339
OPC_CheckType, MVT::f64,
5340
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMRSD), 0,
5344
OPC_SwitchType , 8, MVT::f32,
5345
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FABSS), 0,
5348
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FABSD), 0,
5353
OPC_CaptureFlagInput,
5356
OPC_CheckChild1Type, MVT::i32,
5357
OPC_EmitMergeInputChains, 1, 0,
5358
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTCTR), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
5361
OPC_CheckChild1Type, MVT::i64,
5362
OPC_EmitMergeInputChains, 1, 0,
5363
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTCTR8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
5367
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MFFS), 0|OPFL_FlagOutput,
5369
14, PPCISD::FADDRTZ,
5370
OPC_CaptureFlagInput,
5373
OPC_CheckType, MVT::f64,
5374
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FADDrtz), 0|OPFL_FlagInput|OPFL_FlagOutput,
5375
1, MVT::f64, 2, 0, 1,
5379
OPC_SwitchType , 9, MVT::i32,
5380
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVW), 0,
5381
1, MVT::i32, 2, 0, 1,
5383
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVD), 0,
5384
1, MVT::i64, 2, 0, 1,
5389
OPC_SwitchType , 9, MVT::i32,
5390
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVWU), 0,
5391
1, MVT::i32, 2, 0, 1,
5393
OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVDU), 0,
5394
1, MVT::i64, 2, 0, 1,
5399
OPC_SwitchType , 9, MVT::i32,
5400
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHW), 0,
5401
1, MVT::i32, 2, 0, 1,
5403
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHD), 0,
5404
1, MVT::i64, 2, 0, 1,
5409
OPC_SwitchType , 9, MVT::i32,
5410
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHWU), 0,
5411
1, MVT::i32, 2, 0, 1,
5413
OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHDU), 0,
5414
1, MVT::i64, 2, 0, 1,
5420
OPC_SwitchType , 10, MVT::f64,
5421
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSELD), 0,
5422
1, MVT::f64, 3, 0, 1, 2,
5424
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSELS), 0,
5425
1, MVT::f32, 3, 0, 1, 2,
5430
OPC_SwitchType , 9, MVT::f64,
5431
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FDIV), 0,
5432
1, MVT::f64, 2, 0, 1,
5434
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FDIVS), 0,
5435
1, MVT::f32, 2, 0, 1,
5440
OPC_SwitchType , 9, MVT::f64,
5441
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMUL), 0,
5442
1, MVT::f64, 2, 0, 1,
5444
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMULS), 0,
5445
1, MVT::f32, 2, 0, 1,
5447
OPC_EmitNode, TARGET_OPCODE(PPC::V_SET0), 0,
5449
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
5450
1, MVT::v4f32, 3, 0, 1, 2,
5452
15, PPCISD::VMADDFP,
5456
OPC_CheckType, MVT::v4f32,
5457
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
5458
1, MVT::v4f32, 3, 0, 1, 2,
5459
15, PPCISD::VNMSUBFP,
5463
OPC_CheckType, MVT::v4f32,
5464
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNMSUBFP), 0,
5465
1, MVT::v4f32, 3, 0, 1, 2,
5470
OPC_CheckType, MVT::v16i8,
5471
OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPERM), 0,
5472
1, MVT::v16i8, 3, 0, 1, 2,
5474
OPC_CaptureFlagInput,
5475
OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOP), 0|OPFL_FlagInput|OPFL_FlagOutput,
5477
11, PPCISD::EXTSW_32,
5479
OPC_CheckType, MVT::i32,
5480
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSW_32), 0,
5482
13, ISD::SIGN_EXTEND,
5484
OPC_CheckChild0Type, MVT::i32,
5485
OPC_CheckType, MVT::i64,
5486
OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSW_32_64), 0,
5488
15, PPCISD::LOAD_TOC,
5490
OPC_CaptureFlagInput,
5492
OPC_CheckChild1Type, MVT::i64,
5493
OPC_EmitMergeInputChains, 1, 0,
5494
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDinto_toc), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
5496
11, PPCISD::TOC_RESTORE,
5498
OPC_CaptureFlagInput,
5499
OPC_EmitMergeInputChains, 1, 0,
5500
OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDtoc_restore), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
5504
OPC_CheckType, MVT::f64,
5505
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FCFID), 0,
5509
OPC_CheckType, MVT::f64,
5510
OPC_MorphNodeTo, TARGET_OPCODE(PPC::FCTIDZ), 0,
5512
14, ISD::ANY_EXTEND,
5514
OPC_CheckChild0Type, MVT::i32,
5515
OPC_CheckType, MVT::i64,
5516
OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR4To8), 0,
5517
1, MVT::i64, 2, 0, 0,
5520
OPC_CheckChild0Type, MVT::i64,
5521
OPC_CheckType, MVT::i32,
5522
OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR8To4), 0,
5523
1, MVT::i32, 2, 0, 0,
5524
30, ISD::ZERO_EXTEND,
5526
OPC_CheckChild0Type, MVT::i32,
5527
OPC_CheckType, MVT::i64,
5528
OPC_EmitNode, TARGET_OPCODE(PPC::OR4To8), 0,
5529
1, MVT::i64, 2, 0, 0,
5530
OPC_EmitInteger, MVT::i32, 0,
5531
OPC_EmitInteger, MVT::i32, 32,
5532
OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICL), 0,
5533
1, MVT::i64, 3, 1, 2, 3,
5536
}; // Total Array size is 11495 bytes
5538
#undef TARGET_OPCODE
5539
return SelectCodeCommon(N, MatcherTable,sizeof(MatcherTable));
5542
bool CheckPatternPredicate(unsigned PredNo) const {
5544
default: assert(0 && "Invalid predicate in table?");
5545
case 0: return (!NoExcessFPPrecision);
5546
case 1: return (!PPCSubTarget.isPPC64());
5547
case 2: return (PPCSubTarget.isPPC64());
5551
bool CheckNodePredicate(SDNode *Node, unsigned PredNo) const {
5553
default: assert(0 && "Invalid predicate in table?");
5554
case 0: { // Predicate_immSExt16
5555
ConstantSDNode*N = cast<ConstantSDNode>(Node);
5557
// immSExt16 predicate - True if the immediate fits in a 16-bit sign extended
5558
// field. Used by instructions like 'addi'.
5559
if (N->getValueType(0) == MVT::i32)
5560
return (int32_t)N->getZExtValue() == (short)N->getZExtValue();
5562
return (int64_t)N->getZExtValue() == (short)N->getZExtValue();
5565
case 1: { // Predicate_imm16ShiftedSExt
5566
ConstantSDNode*N = cast<ConstantSDNode>(Node);
5568
// imm16ShiftedSExt predicate - True if only bits in the top 16-bits of the
5569
// immediate are set. Used by instructions like 'addis'. Identical to
5570
// imm16ShiftedZExt in 32-bit mode.
5571
if (N->getZExtValue() & 0xFFFF) return false;
5572
if (N->getValueType(0) == MVT::i32)
5574
// For 64-bit, make sure it is sext right.
5575
return N->getZExtValue() == (uint64_t)(int)N->getZExtValue();
5578
case 2: { // Predicate_unindexedload
5581
return cast<LoadSDNode>(N)->getAddressingMode() == ISD::UNINDEXED;
5584
case 3: { // Predicate_zextload
5587
return cast<LoadSDNode>(N)->getExtensionType() == ISD::ZEXTLOAD;
5590
case 4: { // Predicate_zextloadi8
5593
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i8;
5596
case 5: { // Predicate_sextload
5599
return cast<LoadSDNode>(N)->getExtensionType() == ISD::SEXTLOAD;
5602
case 6: { // Predicate_sextloadi16
5605
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
5608
case 7: { // Predicate_zextloadi16
5611
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
5614
case 8: { // Predicate_load
5617
return cast<LoadSDNode>(N)->getExtensionType() == ISD::NON_EXTLOAD;
5620
case 9: { // Predicate_zextloadi1
5623
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i1;
5626
case 10: { // Predicate_extload
5629
return cast<LoadSDNode>(N)->getExtensionType() == ISD::EXTLOAD;
5632
case 11: { // Predicate_extloadi1
5635
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i1;
5638
case 12: { // Predicate_extloadi8
5641
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i8;
5644
case 13: { // Predicate_extloadi16
5647
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
5650
case 14: { // Predicate_sextloadi32
5653
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
5656
case 15: { // Predicate_zextloadi32
5659
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
5662
case 16: { // Predicate_extloadi32
5665
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
5668
case 17: { // Predicate_extloadf32
5671
return cast<LoadSDNode>(N)->getMemoryVT() == MVT::f32;
5674
case 18: { // Predicate_unindexedstore
5677
return cast<StoreSDNode>(N)->getAddressingMode() == ISD::UNINDEXED;
5680
case 19: { // Predicate_truncstore
5683
return cast<StoreSDNode>(N)->isTruncatingStore();
5686
case 20: { // Predicate_truncstorei8
5689
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i8;
5692
case 21: { // Predicate_truncstorei16
5695
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i16;
5698
case 22: { // Predicate_store
5701
return !cast<StoreSDNode>(N)->isTruncatingStore();
5704
case 23: { // Predicate_truncstorei32
5707
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i32;
5710
case 24: { // Predicate_itruncstore
5713
return cast<StoreSDNode>(N)->isTruncatingStore();
5716
case 25: { // Predicate_pre_truncst
5719
ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
5720
return AM == ISD::PRE_INC || AM == ISD::PRE_DEC;
5723
case 26: { // Predicate_pre_truncsti8
5726
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i8;
5729
case 27: { // Predicate_pre_truncsti16
5732
return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i16;
5735
case 28: { // Predicate_istore
5738
return !cast<StoreSDNode>(N)->isTruncatingStore();
5741
case 29: { // Predicate_pre_store
5744
ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
5745
return AM == ISD::PRE_INC || AM == ISD::PRE_DEC;
5748
case 30: { // Predicate_V_immneg0
5751
return PPC::isAllNegativeZeroVector(N);
5754
case 31: { // Predicate_atomic_load_add_8
5757
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5760
case 32: { // Predicate_atomic_load_add_16
5763
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5766
case 33: { // Predicate_atomic_load_add_32
5769
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5772
case 34: { // Predicate_atomic_load_add_64
5775
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5778
case 35: { // Predicate_atomic_load_sub_8
5781
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5784
case 36: { // Predicate_atomic_load_sub_16
5787
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5790
case 37: { // Predicate_atomic_load_sub_32
5793
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5796
case 38: { // Predicate_atomic_load_sub_64
5799
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5802
case 39: { // Predicate_atomic_load_and_8
5805
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5808
case 40: { // Predicate_atomic_load_and_16
5811
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5814
case 41: { // Predicate_atomic_load_and_32
5817
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5820
case 42: { // Predicate_atomic_load_and_64
5823
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5826
case 43: { // Predicate_atomic_load_or_8
5829
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5832
case 44: { // Predicate_atomic_load_or_16
5835
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5838
case 45: { // Predicate_atomic_load_or_32
5841
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5844
case 46: { // Predicate_atomic_load_or_64
5847
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5850
case 47: { // Predicate_atomic_load_xor_8
5853
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5856
case 48: { // Predicate_atomic_load_xor_16
5859
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5862
case 49: { // Predicate_atomic_load_xor_32
5865
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5868
case 50: { // Predicate_atomic_load_xor_64
5871
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5874
case 51: { // Predicate_atomic_load_nand_8
5877
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5880
case 52: { // Predicate_atomic_load_nand_16
5883
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5886
case 53: { // Predicate_atomic_load_nand_32
5889
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5892
case 54: { // Predicate_atomic_load_nand_64
5895
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5898
case 55: { // Predicate_atomic_cmp_swap_8
5901
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5904
case 56: { // Predicate_atomic_cmp_swap_16
5907
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5910
case 57: { // Predicate_atomic_cmp_swap_32
5913
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5916
case 58: { // Predicate_atomic_cmp_swap_64
5919
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5922
case 59: { // Predicate_atomic_swap_8
5925
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
5928
case 60: { // Predicate_atomic_swap_16
5931
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
5934
case 61: { // Predicate_atomic_swap_32
5937
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
5940
case 62: { // Predicate_atomic_swap_64
5943
return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
5946
case 63: { // Predicate_immAllOnesV
5949
return ISD::isBuildVectorAllOnes(N);
5952
case 64: { // Predicate_immAllOnesV_bc
5955
return ISD::isBuildVectorAllOnes(N);
5958
case 65: { // Predicate_immZExt16
5959
ConstantSDNode*N = cast<ConstantSDNode>(Node);
5961
// immZExt16 predicate - True if the immediate fits in a 16-bit zero extended
5962
// field. Used by instructions like 'ori'.
5963
return (uint64_t)N->getZExtValue() == (unsigned short)N->getZExtValue();
5966
case 66: { // Predicate_imm16ShiftedZExt
5967
ConstantSDNode*N = cast<ConstantSDNode>(Node);
5969
// imm16ShiftedZExt predicate - True if only bits in the top 16-bits of the
5970
// immediate are set. Used by instructions like 'xoris'.
5971
return (N->getZExtValue() & ~uint64_t(0xFFFF0000)) == 0;
5974
case 67: { // Predicate_maskimm32
5975
ConstantSDNode*N = cast<ConstantSDNode>(Node);
5977
// maskImm predicate - True if immediate is a run of ones.
5979
if (N->getValueType(0) == MVT::i32)
5980
return isRunOfOnes((unsigned)N->getZExtValue(), mb, me);
5985
case 68: { // Predicate_vspltb_shuffle
5988
return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 1);
5991
case 69: { // Predicate_vsplth_shuffle
5994
return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 2);
5997
case 70: { // Predicate_vspltw_shuffle
6000
return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 4);
6003
case 71: { // Predicate_vsldoi_unary_shuffle
6006
return PPC::isVSLDOIShuffleMask(N, true) != -1;
6009
case 72: { // Predicate_vpkuwum_unary_shuffle
6012
return PPC::isVPKUWUMShuffleMask(cast<ShuffleVectorSDNode>(N), true);
6015
case 73: { // Predicate_vpkuhum_unary_shuffle
6018
return PPC::isVPKUHUMShuffleMask(cast<ShuffleVectorSDNode>(N), true);
6021
case 74: { // Predicate_vmrglb_unary_shuffle
6024
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 1, true);
6027
case 75: { // Predicate_vmrglh_unary_shuffle
6030
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 2, true);
6033
case 76: { // Predicate_vmrglw_unary_shuffle
6036
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 4, true);
6039
case 77: { // Predicate_vmrghb_unary_shuffle
6042
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 1, true);
6045
case 78: { // Predicate_vmrghh_unary_shuffle
6048
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 2, true);
6051
case 79: { // Predicate_vmrghw_unary_shuffle
6054
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 4, true);
6057
case 80: { // Predicate_vsldoi_shuffle
6060
return PPC::isVSLDOIShuffleMask(N, false) != -1;
6063
case 81: { // Predicate_vmrghb_shuffle
6066
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 1, false);
6069
case 82: { // Predicate_vmrghh_shuffle
6072
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 2, false);
6075
case 83: { // Predicate_vmrghw_shuffle
6078
return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 4, false);
6081
case 84: { // Predicate_vmrglb_shuffle
6084
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 1, false);
6087
case 85: { // Predicate_vmrglh_shuffle
6090
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 2, false);
6093
case 86: { // Predicate_vmrglw_shuffle
6096
return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 4, false);
6099
case 87: { // Predicate_vpkuhum_shuffle
6102
return PPC::isVPKUHUMShuffleMask(cast<ShuffleVectorSDNode>(N), false);
6105
case 88: { // Predicate_vpkuwum_shuffle
6108
return PPC::isVPKUWUMShuffleMask(cast<ShuffleVectorSDNode>(N), false);
6111
case 89: { // Predicate_vecspltisb
6114
return PPC::get_VSPLTI_elt(N, 1, *CurDAG).getNode() != 0;
6117
case 90: { // Predicate_vecspltish
6120
return PPC::get_VSPLTI_elt(N, 2, *CurDAG).getNode() != 0;
6123
case 91: { // Predicate_vecspltisw
6126
return PPC::get_VSPLTI_elt(N, 4, *CurDAG).getNode() != 0;
6129
case 92: { // Predicate_immAllZerosV
6132
return ISD::isBuildVectorAllZeros(N);
6138
bool CheckComplexPattern(SDNode *Root, SDValue N,
6139
unsigned PatternNo, SmallVectorImpl<SDValue> &Result) {
6140
switch (PatternNo) {
6141
default: assert(0 && "Invalid pattern # in table?");
6143
Result.resize(Result.size()+2);
6144
return SelectAddrIdxOnly(Root, N, Result[Result.size()-2], Result[Result.size()-1]);
6146
Result.resize(Result.size()+2);
6147
return SelectAddrImm(Root, N, Result[Result.size()-2], Result[Result.size()-1]);
6149
Result.resize(Result.size()+2);
6150
return SelectAddrIdx(Root, N, Result[Result.size()-2], Result[Result.size()-1]);
6152
Result.resize(Result.size()+2);
6153
return SelectAddrImmShift(Root, N, Result[Result.size()-2], Result[Result.size()-1]);
6155
Result.resize(Result.size()+1);
6156
return SelectAddrImmOffs(Root, N, Result[Result.size()-1]);
6160
SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) {
6162
default: assert(0 && "Invalid xform # in table?");
6164
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6166
// Transformation function: shift the immediate value down into the low bits.
6167
return getI32Imm((unsigned)N->getZExtValue() >> 16);
6171
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6173
// Transformation function: get the low 16 bits.
6174
return getI32Imm((unsigned short)N->getZExtValue());
6178
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6180
// Transformation function: shift the immediate value down into the low bits.
6181
signed int Val = N->getZExtValue();
6182
return getI32Imm((Val - (signed short)Val) >> 16);
6186
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6188
// Transformation function: get the start bit of a mask
6189
unsigned mb = 0, me;
6190
(void)isRunOfOnes((unsigned)N->getZExtValue(), mb, me);
6191
return getI32Imm(mb);
6195
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6197
// Transformation function: get the end bit of a mask
6198
unsigned mb, me = 0;
6199
(void)isRunOfOnes((unsigned)N->getZExtValue(), mb, me);
6200
return getI32Imm(me);
6204
SDNode *N = V.getNode();
6206
return getI32Imm(PPC::getVSPLTImmediate(N, 1));
6210
SDNode *N = V.getNode();
6212
return getI32Imm(PPC::getVSPLTImmediate(N, 2));
6216
SDNode *N = V.getNode();
6218
return getI32Imm(PPC::getVSPLTImmediate(N, 4));
6222
SDNode *N = V.getNode();
6224
return getI32Imm(PPC::isVSLDOIShuffleMask(N, true));
6228
SDNode *N = V.getNode();
6230
return getI32Imm(PPC::isVSLDOIShuffleMask(N, false));
6234
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6236
// Transformation function: 31 - imm
6237
return getI32Imm(31 - N->getZExtValue());
6241
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6243
// Transformation function: 63 - imm
6244
return getI32Imm(63 - N->getZExtValue());
6248
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6250
// Transformation function: 32 - imm
6251
return N->getZExtValue() ? getI32Imm(32 - N->getZExtValue()) : getI32Imm(0);
6255
ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
6257
// Transformation function: 64 - imm
6258
return N->getZExtValue() ? getI32Imm(64 - N->getZExtValue()) : getI32Imm(0);
6262
SDNode *N = V.getNode();
6264
return PPC::get_VSPLTI_elt(N, 1, *CurDAG);
6268
SDNode *N = V.getNode();
6270
return PPC::get_VSPLTI_elt(N, 2, *CurDAG);
6274
SDNode *N = V.getNode();
6276
return PPC::get_VSPLTI_elt(N, 4, *CurDAG);