Simon de Vegt via llvm-dev
2021-Feb-08 11:30 UTC
[llvm-dev] Issues matching branch instruction using TableGen pattern
Hello everybody, I am working on an out of tree backend for my master thesis. However I am currently stuck with the following issue: I have this branch instruction which I tried to match with a pattern, however it somehow fails, I tried to expand the patterns to include everything I could think of, both matching the register classes used (which are all f32) and fpconstants as well. I think somehow the operands are screwed as it fails on child2 which is, if numbered from 0 the jump address. But I have no idea what is going wrong or how to debug this further. Thanks for taking the time to read this and possibly have a look. //////////// Relevant SOURCE & OUTPUT ////////////// The relevant tablegen looks like this: def SDT_PDCPUFBGT2 : SDTypeProfile<0, 3, []>; def PDFBGT : SDNode<"PDCPUISD::FBGT", SDT_PDCPUFBGT2, [SDNPHasChain]>; // Control let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isBranch = 1, isTerminator = 1 in def FBGT : PDInstR<OPC_FBGT.Value, (outs), (ins GPR:$op1, GPR:$op2, jmptarget:$addr), "fbgt", "$op1, $op2, $addr"> { let res = -1; } // GPR def : Pat<(PDFBGT GPR:$op1, GPR:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, GPR:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT GPR:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; // GPRS def : Pat<(PDFBGT GPRS:$op1, GPRS:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, GPRS:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT GPRS:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; // GPRI def : Pat<(PDFBGT GPRI:$op1, GPRI:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, GPRI:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT GPRI:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; // GPRC def : Pat<(PDFBGT GPRC:$op1, GPRC:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, GPRC:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT GPRC:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; The failing match is described below, note all the places where a match failed because of the added statements. ISEL: Starting selection on root node: t26: ch,glue = PDCPUISD::FBGT [ORD=4] [ID=7] # D:0 t7, ConstantFP:f32<0.000000e+00> [ID=2], BasicBlock:ch<if.end245 0x557a41f51c80> [ID=3] # D:0, ./XXX/CurrentController.c:68:7 ISEL: Starting pattern match Initial Opcode index to 99 Match failed at index 112 Continuing at 131 Match failed at index 132 Continuing at 149 Continuing at 150 Match failed at index 155 Continuing at 174 Match failed at index 181 Continuing at 198 Match failed at index 203 Continuing at 222 Match failed at index 229 Continuing at 246 Match failed at index 251 Continuing at 270 Match failed at index 277 Continuing at 294 Match failed at index 301 Continuing at 320 Match failed at index 321 Continuing at 338 Continuing at 339 LLVM ERROR: Cannot select: t26: ch,glue = PDCPUISD::FBGT [ORD=4] [ID=7] # D:0 t7, ConstantFP:f32<0.000000e+00> [ID=2], BasicBlock:ch<if.end245 0x557a41f51c80> [ID=3] # D:0, ./XXX/CurrentController.c:68:7 t7: f32,ch = load<(dereferenceable load 4 from `float* getelementptr inbounds (%struct.tag_RTM_CurrentController_T, %struct.tag_RTM_CurrentController_T* @CurrentController_M_, i64 0, i32 1, i32 0, i32 0, i64 1)`, align 8, !tbaa !127)> [ORD=2] [ID=6] # D:0 t0, TargetGlobalAddress:i32<%struct.tag_RTM_CurrentController_T* @CurrentController_M_> + 8 [ID=5] # D:0, undef:i32 [ID=1] # D:0, ./XXX/CurrentController.c:68:7 t27: i32 = TargetGlobalAddress<%struct.tag_RTM_CurrentController_T* @CurrentController_M_> + 8 [ID=5] # D:0 t6: i32 = undef [ID=1] # D:0 t10: f32 = ConstantFP<0.000000e+00> [ID=2] In function: CurrentController_step /* 99*/ OPC_RecordNode, // #0 = 'PDFBGT' chained node /* 100*/ OPC_RecordChild1, // #1 = $op1 /* 101*/ OPC_Scope, 47, /*->150*/ // 8 children in Scope /* 103*/ OPC_MoveChild1, /* 104*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 107*/ OPC_MoveParent, /* 108*/ OPC_RecordChild2, // #2 = $op2 /* 109*/ OPC_Scope, 20, /*->131*/ // 2 children in Scope /* 111*/ OPC_MoveChild2, /* 112*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 115*/ OPC_MoveParent, /* 116*/ OPC_RecordChild3, // #3 = $dest /* 117*/ OPC_MoveChild3, /* 118*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 121*/ OPC_MoveParent, /* 122*/ OPC_EmitMergeInputChains1_0, /* 123*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 9 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 131*/ /*Scope*/ 17, /*->149*/ /* 132*/ OPC_CheckChild2Type, MVT::f32, /* 134*/ OPC_RecordChild3, // #3 = $dest /* 135*/ OPC_MoveChild3, /* 136*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 139*/ OPC_MoveParent, /* 140*/ OPC_EmitMergeInputChains1_0, /* 141*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPR:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 149*/ 0, /*End of Scope*/ /* 150*/ /*Scope*/ 23, /*->174*/ /* 151*/ OPC_CheckChild1Type, MVT::f32, /* 153*/ OPC_RecordChild2, // #2 = $op2 /* 154*/ OPC_MoveChild2, /* 155*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 158*/ OPC_MoveParent, /* 159*/ OPC_RecordChild3, // #3 = $dest /* 160*/ OPC_MoveChild3, /* 161*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 164*/ OPC_MoveParent, /* 165*/ OPC_EmitMergeInputChains1_0, /* 166*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT GPR:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 174*/ /*Scope*/ 23, /*->198*/ /* 175*/ OPC_MoveChild1, /* 176*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 179*/ OPC_MoveParent, /* 180*/ OPC_RecordChild2, // #2 = $op2 /* 181*/ OPC_CheckChild2Type, MVT::f32, /* 183*/ OPC_RecordChild3, // #3 = $dest /* 184*/ OPC_MoveChild3, /* 185*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 188*/ OPC_MoveParent, /* 189*/ OPC_EmitMergeInputChains1_0, /* 190*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPRS:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 198*/ /*Scope*/ 23, /*->222*/ /* 199*/ OPC_CheckChild1Type, MVT::f32, /* 201*/ OPC_RecordChild2, // #2 = $op2 /* 202*/ OPC_MoveChild2, /* 203*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 206*/ OPC_MoveParent, /* 207*/ OPC_RecordChild3, // #3 = $dest /* 208*/ OPC_MoveChild3, /* 209*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 212*/ OPC_MoveParent, /* 213*/ OPC_EmitMergeInputChains1_0, /* 214*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT GPRS:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 222*/ /*Scope*/ 23, /*->246*/ /* 223*/ OPC_MoveChild1, /* 224*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 227*/ OPC_MoveParent, /* 228*/ OPC_RecordChild2, // #2 = $op2 /* 229*/ OPC_CheckChild2Type, MVT::f32, /* 231*/ OPC_RecordChild3, // #3 = $dest /* 232*/ OPC_MoveChild3, /* 233*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 236*/ OPC_MoveParent, /* 237*/ OPC_EmitMergeInputChains1_0, /* 238*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPRI:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 246*/ /*Scope*/ 23, /*->270*/ /* 247*/ OPC_CheckChild1Type, MVT::f32, /* 249*/ OPC_RecordChild2, // #2 = $op2 /* 250*/ OPC_MoveChild2, /* 251*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 254*/ OPC_MoveParent, /* 255*/ OPC_RecordChild3, // #3 = $dest /* 256*/ OPC_MoveChild3, /* 257*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 260*/ OPC_MoveParent, /* 261*/ OPC_EmitMergeInputChains1_0, /* 262*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT GPRI:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 270*/ /*Scope*/ 23, /*->294*/ /* 271*/ OPC_MoveChild1, /* 272*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 275*/ OPC_MoveParent, /* 276*/ OPC_RecordChild2, // #2 = $op2 /* 277*/ OPC_CheckChild2Type, MVT::f32, /* 279*/ OPC_RecordChild3, // #3 = $dest /* 280*/ OPC_MoveChild3, /* 281*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 284*/ OPC_MoveParent, /* 285*/ OPC_EmitMergeInputChains1_0, /* 286*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPRC:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 294*/ /*Scope*/ 44, /*->339*/ /* 295*/ OPC_CheckChild1Type, MVT::f32, /* 297*/ OPC_RecordChild2, // #2 = $op2 /* 298*/ OPC_Scope, 20, /*->320*/ // 2 children in Scope /* 300*/ OPC_MoveChild2, /* 301*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), /* 304*/ OPC_MoveParent, /* 305*/ OPC_RecordChild3, // #3 = $dest /* 306*/ OPC_MoveChild3, /* 307*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 310*/ OPC_MoveParent, /* 311*/ OPC_EmitMergeInputChains1_0, /* 312*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT GPRC:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 320*/ /*Scope*/ 17, /*->338*/ /* 321*/ OPC_CheckChild2Type, MVT::f32, /* 323*/ OPC_RecordChild3, // #3 = $dest /* 324*/ OPC_MoveChild3, /* 325*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), /* 328*/ OPC_MoveParent, /* 329*/ OPC_EmitMergeInputChains1_0, /* 330*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, 3/*#Ops*/, 1, 2, 3, // Src: (PDFBGT GPR:{ *:[f32] }:$op1, GPR:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 3 // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) /* 338*/ 0, /*End of Scope*/ /* 339*/ 0, /*End of Scope*/ Met vriendelijke groet / Kind regards, Simon de Vegt Designer [cid:image001.png at 01D6FE16.3031E440]<http://www.prodrive-technologies.com> Mobile +31 63 17 76 164 Phone +31 40 26 76 200 Address Science Park Eindhoven 5501 5692 EM SON, The Netherlands www.prodrive-technologies.com<http://www.prodrive-technologies.com> Disclaimer: The content of this e-mail is intended solely for the use of the Individual or entity to whom it is addressed. If you have received this communication in error, be aware that forwarding it, copying it, or in any way disclosing its content to any other person, is strictly prohibited. If you have received this communication in error, please notify the author by replying to this e-mail immediately. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210208/0ab00da0/attachment-0001.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 12240 bytes Desc: image001.png URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210208/0ab00da0/attachment-0001.png>
Craig Topper via llvm-dev
2021-Feb-08 17:26 UTC
[llvm-dev] Issues matching branch instruction using TableGen pattern
The SNPHasChain increased all the child numbers. A node with a chain should have a MVT::Other chain value as the first operand. Is that operand missing when you called getNode? On Mon, Feb 8, 2021 at 3:30 AM Simon de Vegt via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hello everybody, > > > > I am working on an out of tree backend for my master thesis. However I am > currently stuck with the following issue: > > I have this branch instruction which I tried to match with a pattern, > however it somehow fails, I tried to expand the patterns to include > everything I could think of, both matching the register classes used (which > are all f32) and fpconstants as well. I think somehow the operands are > screwed as it fails on child2 which is, if numbered from 0 the jump > address. But I have no idea what is going wrong or how to debug this > further. > > > > Thanks for taking the time to read this and possibly have a look. > > > > //////////// Relevant SOURCE & OUTPUT ////////////// > > > > The relevant tablegen looks like this: > > def SDT_PDCPUFBGT2 : SDTypeProfile<0, 3, []>; > > def PDFBGT : SDNode<"PDCPUISD::FBGT", SDT_PDCPUFBGT2, [SDNPHasChain]>; > > // Control > > let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isBranch = 1, isTerminator = 1 in > > def FBGT : PDInstR<OPC_FBGT.Value, (outs), (ins GPR:$op1, GPR:$op2, jmptarget:$addr), > > "fbgt", "$op1, $op2, $addr"> { > > let res = -1; > > } > > // GPR > > def : Pat<(PDFBGT GPR:$op1, GPR:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, GPR:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT GPR:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > > > // GPRS > > def : Pat<(PDFBGT GPRS:$op1, GPRS:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, GPRS:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT GPRS:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > > > // GPRI > > def : Pat<(PDFBGT GPRI:$op1, GPRI:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, GPRI:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT GPRI:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > > > // GPRC > > def : Pat<(PDFBGT GPRC:$op1, GPRC:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, GPRC:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT GPRC:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > def : Pat<(PDFBGT fpimm:$op1, fpimm:$op2, bb:$dest), (FBGT $op1, $op2, $dest)>; > > > > The failing match is described below, note all the places where a match failed because of the added statements. > > ISEL: Starting selection on root node: t26: ch,glue = PDCPUISD::FBGT [ORD=4] [ID=7] # D:0 t7, ConstantFP:f32<0.000000e+00> [ID=2], BasicBlock:ch<if.end245 0x557a41f51c80> [ID=3] # D:0, ./XXX/CurrentController.c:68:7 > > ISEL: Starting pattern match > > Initial Opcode index to 99 > > Match failed at index 112 > > Continuing at 131 > > Match failed at index 132 > > Continuing at 149 > > Continuing at 150 > > Match failed at index 155 > > Continuing at 174 > > Match failed at index 181 > > Continuing at 198 > > Match failed at index 203 > > Continuing at 222 > > Match failed at index 229 > > Continuing at 246 > > Match failed at index 251 > > Continuing at 270 > > Match failed at index 277 > > Continuing at 294 > > Match failed at index 301 > > Continuing at 320 > > Match failed at index 321 > > Continuing at 338 > > Continuing at 339 > > LLVM ERROR: Cannot select: t26: ch,glue = PDCPUISD::FBGT [ORD=4] [ID=7] # D:0 t7, ConstantFP:f32<0.000000e+00> [ID=2], BasicBlock:ch<if.end245 0x557a41f51c80> [ID=3] # D:0, ./XXX/CurrentController.c:68:7 > > t7: f32,ch = load<(dereferenceable load 4 from `float* getelementptr inbounds (%struct.tag_RTM_CurrentController_T, %struct.tag_RTM_CurrentController_T* @CurrentController_M_, i64 0, i32 1, i32 0, i32 0, i64 1)`, align 8, !tbaa !127)> [ORD=2] [ID=6] # D:0 t0, TargetGlobalAddress:i32<%struct.tag_RTM_CurrentController_T* @CurrentController_M_> + 8 [ID=5] # D:0, undef:i32 [ID=1] # D:0, ./XXX/CurrentController.c:68:7 > > t27: i32 = TargetGlobalAddress<%struct.tag_RTM_CurrentController_T* @CurrentController_M_> + 8 [ID=5] # D:0 > > t6: i32 = undef [ID=1] # D:0 > > t10: f32 = ConstantFP<0.000000e+00> [ID=2] > > In function: CurrentController_step > > > > > > /* 99*/ OPC_RecordNode, // #0 = 'PDFBGT' chained node > > /* 100*/ OPC_RecordChild1, // #1 = $op1 > > /* 101*/ OPC_Scope, 47, /*->150*/ // 8 children in Scope > > /* 103*/ OPC_MoveChild1, > > /* 104*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), > > /* 107*/ OPC_MoveParent, > > /* 108*/ OPC_RecordChild2, // #2 = $op2 > > /* 109*/ OPC_Scope, 20, /*->131*/ // 2 children in Scope > > /* 111*/ OPC_MoveChild2, > > */* 112*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP),* > > /* 115*/ OPC_MoveParent, > > /* 116*/ OPC_RecordChild3, // #3 = $dest > > /* 117*/ OPC_MoveChild3, > > /* 118*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 121*/ OPC_MoveParent, > > /* 122*/ OPC_EmitMergeInputChains1_0, > > /* 123*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 9 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 131*/ /*Scope*/ 17, /*->149*/ > > /* 132*/ OPC_CheckChild2Type, MVT::f32, > > /* 134*/ OPC_RecordChild3, // #3 = $dest > > /* 135*/ OPC_MoveChild3, > > /* 136*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 139*/ OPC_MoveParent, > > /* 140*/ OPC_EmitMergeInputChains1_0, > > /* 141*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPR:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 149*/ 0, /*End of Scope*/ > > /* 150*/ /*Scope*/ 23, /*->174*/ > > /* 151*/ OPC_CheckChild1Type, MVT::f32, > > /* 153*/ OPC_RecordChild2, // #2 = $op2 > > /* 154*/ OPC_MoveChild2, > > */* 155*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP),* > > /* 158*/ OPC_MoveParent, > > /* 159*/ OPC_RecordChild3, // #3 = $dest > > /* 160*/ OPC_MoveChild3, > > /* 161*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 164*/ OPC_MoveParent, > > /* 165*/ OPC_EmitMergeInputChains1_0, > > /* 166*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT GPR:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 174*/ /*Scope*/ 23, /*->198*/ > > /* 175*/ OPC_MoveChild1, > > /* 176*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), > > /* 179*/ OPC_MoveParent, > > /* 180*/ OPC_RecordChild2, // #2 = $op2 > > */* 181*/ OPC_CheckChild2Type, MVT::f32,* > > /* 183*/ OPC_RecordChild3, // #3 = $dest > > /* 184*/ OPC_MoveChild3, > > /* 185*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 188*/ OPC_MoveParent, > > /* 189*/ OPC_EmitMergeInputChains1_0, > > /* 190*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPRS:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 198*/ /*Scope*/ 23, /*->222*/ > > /* 199*/ OPC_CheckChild1Type, MVT::f32, > > /* 201*/ OPC_RecordChild2, // #2 = $op2 > > /* 202*/ OPC_MoveChild2, > > */* 203*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP),* > > /* 206*/ OPC_MoveParent, > > /* 207*/ OPC_RecordChild3, // #3 = $dest > > /* 208*/ OPC_MoveChild3, > > /* 209*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 212*/ OPC_MoveParent, > > /* 213*/ OPC_EmitMergeInputChains1_0, > > /* 214*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT GPRS:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 222*/ /*Scope*/ 23, /*->246*/ > > /* 223*/ OPC_MoveChild1, > > /* 224*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), > > /* 227*/ OPC_MoveParent, > > /* 228*/ OPC_RecordChild2, // #2 = $op2 > > */* 229*/ OPC_CheckChild2Type, MVT::f32,* > > /* 231*/ OPC_RecordChild3, // #3 = $dest > > /* 232*/ OPC_MoveChild3, > > /* 233*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 236*/ OPC_MoveParent, > > /* 237*/ OPC_EmitMergeInputChains1_0, > > /* 238*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPRI:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 246*/ /*Scope*/ 23, /*->270*/ > > /* 247*/ OPC_CheckChild1Type, MVT::f32, > > /* 249*/ OPC_RecordChild2, // #2 = $op2 > > /* 250*/ OPC_MoveChild2, > > */* 251*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP),* > > /* 254*/ OPC_MoveParent, > > /* 255*/ OPC_RecordChild3, // #3 = $dest > > /* 256*/ OPC_MoveChild3, > > /* 257*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 260*/ OPC_MoveParent, > > /* 261*/ OPC_EmitMergeInputChains1_0, > > /* 262*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT GPRI:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 270*/ /*Scope*/ 23, /*->294*/ > > /* 271*/ OPC_MoveChild1, > > /* 272*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP), > > /* 275*/ OPC_MoveParent, > > /* 276*/ OPC_RecordChild2, // #2 = $op2 > > */* 277*/ OPC_CheckChild2Type, MVT::f32,* > > /* 279*/ OPC_RecordChild3, // #3 = $dest > > /* 280*/ OPC_MoveChild3, > > /* 281*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 284*/ OPC_MoveParent, > > /* 285*/ OPC_EmitMergeInputChains1_0, > > /* 286*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT (fpimm:{ *:[f32] }):$op1, GPRC:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 294*/ /*Scope*/ 44, /*->339*/ > > /* 295*/ OPC_CheckChild1Type, MVT::f32, > > /* 297*/ OPC_RecordChild2, // #2 = $op2 > > /* 298*/ OPC_Scope, 20, /*->320*/ // 2 children in Scope > > /* 300*/ OPC_MoveChild2, > > */* 301*/ OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP),* > > /* 304*/ OPC_MoveParent, > > /* 305*/ OPC_RecordChild3, // #3 = $dest > > /* 306*/ OPC_MoveChild3, > > /* 307*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 310*/ OPC_MoveParent, > > /* 311*/ OPC_EmitMergeInputChains1_0, > > /* 312*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT GPRC:{ *:[f32] }:$op1, (fpimm:{ *:[f32] }):$op2, (bb:{ *:[Other] }):$dest) - Complexity = 6 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 320*/ /*Scope*/ 17, /*->338*/ > > */* 321*/ OPC_CheckChild2Type, MVT::f32,* > > /* 323*/ OPC_RecordChild3, // #3 = $dest > > /* 324*/ OPC_MoveChild3, > > /* 325*/ OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock), > > /* 328*/ OPC_MoveParent, > > /* 329*/ OPC_EmitMergeInputChains1_0, > > /* 330*/ OPC_MorphNodeTo0, TARGET_VAL(PDCPU::FBGT), 0|OPFL_Chain, > > 3/*#Ops*/, 1, 2, 3, > > // Src: (PDFBGT GPR:{ *:[f32] }:$op1, GPR:{ *:[f32] }:$op2, (bb:{ *:[Other] }):$dest) - Complexity = 3 > > // Dst: (FBGT ?:{ *:[f32] }:$op1, ?:{ *:[f32] }:$op2, ?:{ *:[Other] }:$dest) > > /* 338*/ 0, /*End of Scope*/ > > /* 339*/ 0, /*End of Scope*/ > > > > Met vriendelijke groet / Kind regards, > > *Simon de Vegt* > *Designer * > > > <http://www.prodrive-technologies.com> > > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > > Mobile > > +31 63 17 76 164 > > Phone > > +31 40 26 76 200 > > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > > Address > > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > > Science Park Eindhoven 5501 > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > > 5692 EM > <https://www.google.com/maps/search/Science+Park+Eindhoven+5501+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+%0D%0A+5692+EM?entry=gmail&source=g> > SON, The Netherlands > > > *www.prodrive-technologies.com* <http://www.prodrive-technologies.com> > > > Disclaimer: The content of this e-mail is intended solely for the use of > the Individual or entity to whom it is addressed. If you have received this > communication in error, be aware that forwarding it, copying it, or in any > way disclosing its content to any other person, is strictly prohibited. If > you have received this communication in error, please notify the author by > replying to this e-mail immediately. > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-- ~Craig -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210208/53823754/attachment-0001.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.png Type: image/png Size: 12240 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210208/53823754/attachment-0001.png>