@@ -363,23 +363,29 @@ bool NVPTXDAGToDAGISel::tryIntrinsicChain(SDNode *N) {
363363
364364// Map ISD:CONDCODE value to appropriate CmpMode expected by
365365// NVPTXInstPrinter::printCmpMode()
366- static unsigned getPTXCmpMode (const CondCodeSDNode &CondCode, bool FTZ ) {
366+ SDValue NVPTXDAGToDAGISel:: getPTXCmpMode (const CondCodeSDNode &CondCode) {
367367 using NVPTX::PTXCmpMode::CmpMode;
368- unsigned PTXCmpMode = [](ISD::CondCode CC) {
368+ const unsigned PTXCmpMode = [](ISD::CondCode CC) {
369369 switch (CC) {
370370 default :
371371 llvm_unreachable (" Unexpected condition code." );
372372 case ISD::SETOEQ:
373+ case ISD::SETEQ:
373374 return CmpMode::EQ;
374375 case ISD::SETOGT:
376+ case ISD::SETGT:
375377 return CmpMode::GT;
376378 case ISD::SETOGE:
379+ case ISD::SETGE:
377380 return CmpMode::GE;
378381 case ISD::SETOLT:
382+ case ISD::SETLT:
379383 return CmpMode::LT;
380384 case ISD::SETOLE:
385+ case ISD::SETLE:
381386 return CmpMode::LE;
382387 case ISD::SETONE:
388+ case ISD::SETNE:
383389 return CmpMode::NE;
384390 case ISD::SETO:
385391 return CmpMode::NUM;
@@ -397,45 +403,29 @@ static unsigned getPTXCmpMode(const CondCodeSDNode &CondCode, bool FTZ) {
397403 return CmpMode::LEU;
398404 case ISD::SETUNE:
399405 return CmpMode::NEU;
400- case ISD::SETEQ:
401- return CmpMode::EQ;
402- case ISD::SETGT:
403- return CmpMode::GT;
404- case ISD::SETGE:
405- return CmpMode::GE;
406- case ISD::SETLT:
407- return CmpMode::LT;
408- case ISD::SETLE:
409- return CmpMode::LE;
410- case ISD::SETNE:
411- return CmpMode::NE;
412406 }
413407 }(CondCode.get ());
414-
415- if (FTZ)
416- PTXCmpMode |= NVPTX::PTXCmpMode::FTZ_FLAG;
417-
418- return PTXCmpMode;
408+ return CurDAG->getTargetConstant (PTXCmpMode, SDLoc (), MVT::i32 );
419409}
420410
421411bool NVPTXDAGToDAGISel::SelectSETP_F16X2 (SDNode *N) {
422- unsigned PTXCmpMode =
423- getPTXCmpMode (*cast<CondCodeSDNode>(N->getOperand (2 )), useF32FTZ ());
412+ SDValue PTXCmpMode = getPTXCmpMode (*cast<CondCodeSDNode>(N->getOperand (2 )));
424413 SDLoc DL (N);
425414 SDNode *SetP = CurDAG->getMachineNode (
426- NVPTX::SETP_f16x2rr, DL, MVT::i1, MVT::i1, N->getOperand (0 ),
427- N->getOperand (1 ), CurDAG->getTargetConstant (PTXCmpMode, DL, MVT::i32 ));
415+ NVPTX::SETP_f16x2rr, DL, MVT::i1, MVT::i1,
416+ {N->getOperand (0 ), N->getOperand (1 ), PTXCmpMode,
417+ CurDAG->getTargetConstant (useF32FTZ () ? 1 : 0 , DL, MVT::i1)});
428418 ReplaceNode (N, SetP);
429419 return true ;
430420}
431421
432422bool NVPTXDAGToDAGISel::SelectSETP_BF16X2 (SDNode *N) {
433- unsigned PTXCmpMode =
434- getPTXCmpMode (*cast<CondCodeSDNode>(N->getOperand (2 )), useF32FTZ ());
423+ SDValue PTXCmpMode = getPTXCmpMode (*cast<CondCodeSDNode>(N->getOperand (2 )));
435424 SDLoc DL (N);
436425 SDNode *SetP = CurDAG->getMachineNode (
437- NVPTX::SETP_bf16x2rr, DL, MVT::i1, MVT::i1, N->getOperand (0 ),
438- N->getOperand (1 ), CurDAG->getTargetConstant (PTXCmpMode, DL, MVT::i32 ));
426+ NVPTX::SETP_bf16x2rr, DL, MVT::i1, MVT::i1,
427+ {N->getOperand (0 ), N->getOperand (1 ), PTXCmpMode,
428+ CurDAG->getTargetConstant (useF32FTZ () ? 1 : 0 , DL, MVT::i1)});
439429 ReplaceNode (N, SetP);
440430 return true ;
441431}
@@ -1953,7 +1943,7 @@ bool NVPTXDAGToDAGISel::tryBF16ArithToFMA(SDNode *N) {
19531943 llvm_unreachable (" Unexpected opcode" );
19541944 };
19551945
1956- int Opcode = IsVec ? NVPTX::BFMA16x2rrr : NVPTX::BFMA16rrr ;
1946+ int Opcode = IsVec ? NVPTX::FMA_BF16x2rrr : NVPTX::FMA_BF16rrr ;
19571947 MachineSDNode *FMA = CurDAG->getMachineNode (Opcode, DL, VT, Operands);
19581948 ReplaceNode (N, FMA);
19591949 return true ;
0 commit comments