Mercurial > hg > CbC > CbC_llvm
comparison llvm/test/TableGen/DAGDefaultOps.td @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 1d019706d866 |
children |
comparison
equal
deleted
inserted
replaced
173:0572611fdcc8 | 207:2e18cbf3894f |
---|---|
14 class TestEncoding : Instruction { | 14 class TestEncoding : Instruction { |
15 field bits<32> Inst; | 15 field bits<32> Inst; |
16 } | 16 } |
17 | 17 |
18 class TestReg<int index> : Register<"R"#index, []> { | 18 class TestReg<int index> : Register<"R"#index, []> { |
19 let HWEncoding{15-4} = 0; | 19 let HWEncoding{15...4} = 0; |
20 let HWEncoding{3-0} = !cast<bits<4>>(index); | 20 let HWEncoding{3...0} = !cast<bits<4>>(index); |
21 } | 21 } |
22 foreach i = 0-15 in | 22 foreach i = 0...15 in |
23 def "R"#i : TestReg<i>; | 23 def "R"#i : TestReg<i>; |
24 | 24 |
25 def Reg : RegisterClass<"TestTarget", [i32], 32, (sequence "R%d", 0, 15)>; | 25 def Reg : RegisterClass<"TestTarget", [i32], 32, (sequence "R%d", 0, 15)>; |
26 | 26 |
27 def IntOperand: Operand<i32>; | 27 def IntOperand: Operand<i32>; |
34 string AsmVariantName = ""; | 34 string AsmVariantName = ""; |
35 field bits<4> dest; | 35 field bits<4> dest; |
36 field bits<4> src1; | 36 field bits<4> src1; |
37 field bits<4> src2; | 37 field bits<4> src2; |
38 field bits<16> imm; | 38 field bits<16> imm; |
39 let Inst{31-28} = Opcode; | 39 let Inst{31...28} = Opcode; |
40 let Inst{27-24} = dest; | 40 let Inst{27...24} = dest; |
41 let Inst{23-20} = src1; | 41 let Inst{23...20} = src1; |
42 let Inst{19-16} = src2; | 42 let Inst{19...16} = src2; |
43 let Inst{15-0} = imm; | 43 let Inst{15...0} = imm; |
44 } | 44 } |
45 | 45 |
46 def AddRRI : RRI<"add", 0b0001>; | 46 def AddRRI : RRI<"add", 0b0001>; |
47 | 47 |
48 // I define one of these intrinsics with IntrNoMem and the other | 48 // I define one of these intrinsics with IntrNoMem and the other |
81 | 81 |
82 // ADDINT: SwitchOpcode{{.*}}TARGET_VAL(ISD::INTRINSIC_WO_CHAIN) | 82 // ADDINT: SwitchOpcode{{.*}}TARGET_VAL(ISD::INTRINSIC_WO_CHAIN) |
83 // ADDINT-NEXT: OPC_CheckChild0Integer | 83 // ADDINT-NEXT: OPC_CheckChild0Integer |
84 // ADDINT-NEXT: OPC_RecordChild1 | 84 // ADDINT-NEXT: OPC_RecordChild1 |
85 // ADDINT-NEXT: OPC_RecordChild2 | 85 // ADDINT-NEXT: OPC_RecordChild2 |
86 // ADDINT-NEXT: OPC_EmitInteger, MVT::i32, 1 | 86 // ADDINT-NEXT: OPC_EmitInteger, MVT::i32, 2 |
87 // ADDINT-NEXT: OPC_MorphNodeTo1, TARGET_VAL(::AddRRI) | 87 // ADDINT-NEXT: OPC_MorphNodeTo1, TARGET_VAL(::AddRRI) |
88 | 88 |
89 // SUB: SwitchOpcode{{.*}}TARGET_VAL(ISD::SUB) | 89 // SUB: SwitchOpcode{{.*}}TARGET_VAL(ISD::SUB) |
90 // SUB-NEXT: OPC_RecordChild0 | 90 // SUB-NEXT: OPC_RecordChild0 |
91 // SUB-NEXT: OPC_RecordChild1 | 91 // SUB-NEXT: OPC_RecordChild1 |