Lines Matching refs:IROp
275 static IRExpr* unop ( IROp op, IRExpr* a )
280 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
285 static IRExpr* triop ( IROp op, IRExpr* a1, IRExpr* a2, IRExpr* a3 )
456 static IROp mkAND ( IRType ty ) {
464 static IROp mkOR ( IRType ty ) {
472 static IROp mkXOR ( IRType ty ) {
480 static IROp mkSHL ( IRType ty ) {
488 static IROp mkSHR ( IRType ty ) {
496 static IROp mkSAR ( IRType ty ) {
504 static IROp mkNOT ( IRType ty ) {
512 static IROp mkADD ( IRType ty ) {
520 static IROp mkSUB ( IRType ty ) {
528 static IROp mkADDF ( IRType ty ) {
536 static IROp mkSUBF ( IRType ty ) {
544 static IROp mkMULF ( IRType ty ) {
552 static IROp mkDIVF ( IRType ty ) {
560 static IROp mkNEGF ( IRType ty ) {
568 static IROp mkABSF ( IRType ty ) {
576 static IROp mkSQRTF ( IRType ty ) {
584 static IROp mkVecADD ( UInt size ) {
585 const IROp ops[4]
591 static IROp mkVecQADDU ( UInt size ) {
592 const IROp ops[4]
598 static IROp mkVecQADDS ( UInt size ) {
599 const IROp ops[4]
605 static IROp mkVecQADDEXTSUSATUU ( UInt size ) {
606 const IROp ops[4]
613 static IROp mkVecQADDEXTUSSATSS ( UInt size ) {
614 const IROp ops[4]
621 static IROp mkVecSUB ( UInt size ) {
622 const IROp ops[4]
628 static IROp mkVecQSUBU ( UInt size ) {
629 const IROp ops[4]
635 static IROp mkVecQSUBS ( UInt size ) {
636 const IROp ops[4]
642 static IROp mkVecSARN ( UInt size ) {
643 const IROp ops[4]
649 static IROp mkVecSHRN ( UInt size ) {
650 const IROp ops[4]
656 static IROp mkVecSHLN ( UInt size ) {
657 const IROp ops[4]
663 static IROp mkVecCATEVENLANES ( UInt size ) {
664 const IROp ops[4]
671 static IROp mkVecCATODDLANES ( UInt size ) {
672 const IROp ops[4]
679 static IROp mkVecINTERLEAVELO ( UInt size ) {
680 const IROp ops[4]
687 static IROp mkVecINTERLEAVEHI ( UInt size ) {
688 const IROp ops[4]
695 static IROp mkVecMAXU ( UInt size ) {
696 const IROp ops[4]
702 static IROp mkVecMAXS ( UInt size ) {
703 const IROp ops[4]
709 static IROp mkVecMINU ( UInt size ) {
710 const IROp ops[4]
716 static IROp mkVecMINS ( UInt size ) {
717 const IROp ops[4]
723 static IROp mkVecMUL ( UInt size ) {
724 const IROp ops[4]
730 static IROp mkVecMULLU ( UInt sizeNarrow ) {
731 const IROp ops[4]
737 static IROp mkVecMULLS ( UInt sizeNarrow ) {
738 const IROp ops[4]
744 static IROp mkVecQDMULLS ( UInt sizeNarrow ) {
745 const IROp ops[4]
751 static IROp mkVecCMPEQ ( UInt size ) {
752 const IROp ops[4]
758 static IROp mkVecCMPGTU ( UInt size ) {
759 const IROp ops[4]
765 static IROp mkVecCMPGTS ( UInt size ) {
766 const IROp ops[4]
772 static IROp mkVecABS ( UInt size ) {
773 const IROp ops[4]
779 static IROp mkVecZEROHIxxOFV128 ( UInt size ) {
780 const IROp ops[4]
795 static IROp mkVecQDMULHIS ( UInt size ) {
796 const IROp ops[4]
802 static IROp mkVecQRDMULHIS ( UInt size ) {
803 const IROp ops[4]
809 static IROp mkVecQANDUQSH ( UInt size ) {
810 const IROp ops[4]
817 static IROp mkVecQANDSQSH ( UInt size ) {
818 const IROp ops[4]
825 static IROp mkVecQANDUQRSH ( UInt size ) {
826 const IROp ops[4]
833 static IROp mkVecQANDSQRSH ( UInt size ) {
834 const IROp ops[4]
841 static IROp mkVecSHU ( UInt size ) {
842 const IROp ops[4]
848 static IROp mkVecSHS ( UInt size ) {
849 const IROp ops[4]
855 static IROp mkVecRSHU ( UInt size ) {
856 const IROp ops[4]
862 static IROp mkVecRSHS ( UInt size ) {
863 const IROp ops[4]
869 static IROp mkVecNARROWUN ( UInt sizeNarrow ) {
870 const IROp ops[4]
877 static IROp mkVecQNARROWUNSU ( UInt sizeNarrow ) {
878 const IROp ops[4]
885 static IROp mkVecQNARROWUNSS ( UInt sizeNarrow ) {
886 const IROp ops[4]
893 static IROp mkVecQNARROWUNUU ( UInt sizeNarrow ) {
894 const IROp ops[4]
901 static IROp mkVecQANDqshrNNARROWUU ( UInt sizeNarrow ) {
902 const IROp ops[4]
909 static IROp mkVecQANDqsarNNARROWSS ( UInt sizeNarrow ) {
910 const IROp ops[4]
917 static IROp mkVecQANDqsarNNARROWSU ( UInt sizeNarrow ) {
918 const IROp ops[4]
925 static IROp mkVecQANDqrshrNNARROWUU ( UInt sizeNarrow ) {
926 const IROp ops[4]
933 static IROp mkVecQANDqrsarNNARROWSS ( UInt sizeNarrow ) {
934 const IROp ops[4]
941 static IROp mkVecQANDqrsarNNARROWSU ( UInt sizeNarrow ) {
942 const IROp ops[4]
949 static IROp mkVecQSHLNSATUU ( UInt size ) {
950 const IROp ops[4]
957 static IROp mkVecQSHLNSATSS ( UInt size ) {
958 const IROp ops[4]
965 static IROp mkVecQSHLNSATSU ( UInt size ) {
966 const IROp ops[4]
973 static IROp mkVecADDF ( UInt size ) {
974 const IROp ops[4]
980 static IROp mkVecMAXF ( UInt size ) {
981 const IROp ops[4]
987 static IROp mkVecMINF ( UInt size ) {
988 const IROp ops[4]
2504 const IROp ops64[4] = { Iop_And64, Iop_Or64, Iop_Xor64, Iop_And64 };
2505 const IROp ops32[4] = { Iop_And32, Iop_Or32, Iop_Xor32, Iop_And32 };
2825 IROp op = isSUB ? mkSUB(ty) : mkADD(ty);
2873 IROp op = isSUB ? mkSUB(ty) : mkADD(ty);
2877 IROp xorOp = is64 ? Iop_Xor64 : Iop_Xor32;
2932 IROp op = Iop_INVALID;
3396 IROp iop = Iop_INVALID;
3412 IROp opSHL = mkSHL(ty);
3413 IROp opSHR = mkSHR(ty);
3414 IROp opOR = mkOR(ty);
4179 void math_get_doubler_and_halver ( /*OUT*/IROp* doubler,
4180 /*OUT*/IROp* halver,
4220 IROp doubler = Iop_INVALID, halver = Iop_INVALID;
4251 IROp doubler = Iop_INVALID, halver = Iop_INVALID;
4287 IROp doubler = Iop_INVALID, halver = Iop_INVALID;
4333 IROp doubler = Iop_INVALID, halver = Iop_INVALID;
4365 IROp doubler = Iop_INVALID, halver = Iop_INVALID;
4401 IROp
7174 static IRTemp math_FOLDV ( IRTemp src, IROp op )
7473 IRTemp math_BINARY_WIDENING_V128 ( Bool is2, IROp opI64x2toV128,
7477 IROp slice = is2 ? Iop_V128HIto64 : Iop_V128to64;
7563 IROp opSAR = mkVecSARN(sizeNarrow+1);
7564 IROp opSHR = mkVecSHRN(sizeNarrow+1);
7565 IROp opSHL = mkVecSHLN(sizeNarrow+1);
7566 IROp opSxR = zWiden ? opSHR : opSAR;
7610 IROp ops[4] = { Iop_INVALID, Iop_INVALID, Iop_INVALID, Iop_INVALID };
7820 IROp mulOp = isU ? mkVecMULLU(size) : mkVecMULLS(size);
7821 IROp accOp = (mas == 'a') ? mkVecADD(size+1)
7904 IROp opMulls = mkVecMULLS(sizeNarrow);
7971 IROp qop = mkVecQSHLNSATUU(size);
7991 IROp qop = mkVecQSHLNSATSS(size);
8019 IROp qop = mkVecQSHLNSATSU(size);
8050 IROp opSHR = isU ? mkVecSHRN(size) : mkVecSARN(size);
8051 IROp opADD = mkVecADD(size);
8096 void updateQCFLAGwithDifferenceZHI ( IRTemp qres, IRTemp nres, IROp opZHI )
8343 IROp op = isUZP1 ? mkVecCATEVENLANES(size)
8370 IROp op1 = isTRN1 ? mkVecCATEVENLANES(size)
8372 IROp op2 = mkVecINTERLEAVEHI(size);
8393 IROp op = isZIP1 ? mkVecINTERLEAVELO(size)
8495 const IROp opMAXS[3]
8497 const IROp opMAXU[3]
8499 const IROp opMINS[3]
8501 const IROp opMINU[3]
8503 const IROp opADD[3]
8506 IROp op = Iop_INVALID;
8552 IROp opMXX = (isMIN ? mkVecMINF : mkVecMAXF)(2);
9111 IROp opZHI = mkVecZEROHIxxOFV128(isD ? 3 : 2);
9112 IROp opADD = mkVecADDF(isD ? 3 : 2);
9137 IROp opZHI = mkVecZEROHIxxOFV128(isD ? 3 : 2);
9138 IROp opMXX = (isMIN ? mkVecMINF : mkVecMAXF)(isD ? 3 : 2);
9189 IROp op = isU ? Iop_ShrN64x2 : Iop_SarN64x2;
9222 IROp op = isU ? Iop_Rsh64Ux2 : Iop_Rsh64Sx2;
9343 IROp op = Iop_INVALID;
9401 IROp opMUL = isD ? Iop_MulF64 : Iop_MulF32;
9402 IROp opCVT = isU ? (isD ? Iop_I64UtoF64 : Iop_I32UtoF32)
9439 IROp opMUL = isD ? Iop_MulF64 : Iop_MulF32;
9440 IROp opCVT = isU ? (isD ? Iop_F64toI64U : Iop_F32toI32U)
9516 IROp opZHI = mkVecZEROHIxxOFV128(size+1);
9566 IROp qop = Iop_INVALID;
9567 IROp nop = Iop_INVALID;
9636 IROp op = isR ? (isU ? mkVecRSHU(size) : mkVecRSHS(size))
9656 IROp op = isR ? (isU ? mkVecQANDUQRSH(size) : mkVecQANDSQRSH(size))
9777 IROp opCMP = isGE ? (isD ? Iop_CmpLE64Fx2 : Iop_CmpLE32Fx4)
9793 IROp opCMP = isD ? Iop_CmpLT64Fx2 : Iop_CmpLT32Fx4;
9809 IROp opCMP = isGT ? (isD ? Iop_CmpLT64Fx2 : Iop_CmpLT32Fx4)
9811 IROp opABS = isD ? Iop_Abs64Fx2 : Iop_Abs32Fx4;
9827 IROp op = isSQRT ? (isD ? Iop_RSqrtStep64Fx2 : Iop_RSqrtStep32Fx4)
9872 IROp qop = isUSQADD ? mkVecQADDEXTSUSATUU(size)
9874 IROp nop = mkVecADD(size);
9977 IROp opCmpEQ = isD ? Iop_CmpEQ64Fx2 : Iop_CmpEQ32Fx4;
9978 IROp opCmpLE = isD ? Iop_CmpLE64Fx2 : Iop_CmpLE32Fx4;
9979 IROp opCmpLT = isD ? Iop_CmpLT64Fx2 : Iop_CmpLT32Fx4;
9980 IROp opCmp = Iop_INVALID;
10009 IROp opN = Iop_INVALID;
10083 IROp cvt = Iop_INVALID;
10110 IROp iop = isU ? (isD ? Iop_I64UtoF64 : Iop_I32UtoF32)
10128 IROp op = isSQRT ? (isD ? Iop_RSqrtEst64Fx2 : Iop_RSqrtEst32Fx4)
10143 IROp op = isD ? Iop_RecpExpF64 : Iop_RecpExpF32;
10201 IROp opADD = isD ? Iop_Add64Fx2 : Iop_Add32Fx4;
10202 IROp opSUB = isD ? Iop_Sub64Fx2 : Iop_Sub32Fx4;
10203 IROp opMUL = isD ? Iop_Mul64Fx2 : Iop_Mul32Fx4;
10235 IROp opMUL = isD ? Iop_Mul64Fx2 : Iop_Mul32Fx4;
10288 IROp opZHI = mkVecZEROHIxxOFV128(size+1);
10329 IROp opZHI = mkVecZEROHIxxOFV128(size);
10385 IROp op = isU ? mkVecSHRN(size) : mkVecSARN(size);
10434 IROp op = isU ? mkVecRSHU(size) : mkVecRSHS(size);
10517 IROp op = mkVecSHLN(size);
10626 IROp op = Iop_INVALID;
10758 IROp opMUL = isD ? Iop_MulF64 : Iop_MulF32;
10759 IROp opCVT = isU ? (isD ? Iop_I64UtoF64 : Iop_I32UtoF32)
10804 IROp opMUL = isD ? Iop_MulF64 : Iop_MulF32;
10805 IROp opCVT = isU ? (isD ? Iop_F64toI64U : Iop_F32toI32U)
11127 IROp opADDSUB = isADD ? mkVecADD(size+1) : mkVecSUB(size+1);
11128 IROp opSxR = isU ? mkVecSHRN(size+1) : mkVecSARN(size+1);
11170 IROp qop = Iop_INVALID;
11171 IROp nop = Iop_INVALID;
11230 const IROp opXOR = Iop_XorV128;
11231 const IROp opAND = Iop_AndV128;
11232 const IROp opNOT = Iop_NotV128;
11313 IROp op = isR ? (isU ? mkVecRSHU(size) : mkVecRSHS(size))
11334 IROp op = isR ? (isU ? mkVecQANDUQRSH(size) : mkVecQANDSQRSH(size))
11371 IROp op = isMAX ? (isU ? mkVecMAXU(size) : mkVecMAXS(size))
11411 IROp op = isSUB ? mkVecSUB(size) : mkVecADD(size);
11448 IROp opMUL = mkVecMUL(size);
11449 IROp opADDSUB = isMLS ? mkVecSUB(size) : mkVecADD(size);
11469 const IROp opsPMUL[4]
11471 IROp opMUL = isPMUL ? opsPMUL[size] : mkVecMUL(size);
11494 IROp op = isMAX ? (isU ? mkVecMAXU(size) : mkVecMAXS(size))
11531 IROp opZHI = bitQ == 0 ? Iop_ZeroHI64ofV128 : Iop_INVALID;
11577 IROp opMXX = (isMIN ? mkVecMINF : mkVecMAXF)(isD ? X11 : X10);
11594 IROp opADD = isD ? Iop_Add64Fx2 : Iop_Add32Fx4;
11595 IROp opSUB = isD ? Iop_Sub64Fx2 : Iop_Sub32Fx4;
11596 IROp opMUL = isD ? Iop_Mul64Fx2 : Iop_Mul32Fx4;
11618 const IROp ops[4]
11620 IROp op = ops[size];
11637 IROp opSUB = isD ? Iop_Sub64Fx2 : Iop_Sub32Fx4;
11638 IROp opABS = isD ? Iop_Abs64Fx2 : Iop_Abs32Fx4;
11676 IROp opCMP = isGE ? (isD ? Iop_CmpLE64Fx2 : Iop_CmpLE32Fx4)
11692 IROp opCMP = isD ? Iop_CmpLT64Fx2 : Iop_CmpLT32Fx4;
11708 IROp opCMP = isGT ? (isD ? Iop_CmpLT64Fx2 : Iop_CmpLT32Fx4)
11710 IROp opABS = isD ? Iop_Abs64Fx2 : Iop_Abs32Fx4;
11732 IROp opMXX = (isMIN ? mkVecMINF : mkVecMAXF)(isD ? 3 : 2);
11781 const IROp ops[2] = { Iop_Div32Fx4, Iop_Div64Fx2 };
11782 IROp op = ops[size];
11801 IROp op = isSQRT ? (isD ? Iop_RSqrtStep64Fx2 : Iop_RSqrtStep32Fx4)
11843 const IROp iops[3] = { Iop_Reverse8sIn64_x2,
11860 IROp iop = isH ? Iop_Reverse16sIn32_x4 : Iop_Reverse8sIn32_x4;
11919 IROp qop = isUSQADD ? mkVecQADDEXTSUSATUU(size)
11921 IROp nop = mkVecADD(size);
11947 const IROp opsCLS[3] = { Iop_Cls8x16, Iop_Cls16x8, Iop_Cls32x4 };
11948 const IROp opsCLZ[3] = { Iop_Clz8x16, Iop_Clz16x8, Iop_Clz32x4 };
12010 IROp opGTS = mkVecCMPGTS(size);
12091 IROp opCmpEQ = isD ? Iop_CmpEQ64Fx2 : Iop_CmpEQ32Fx4;
12092 IROp opCmpLE = isD ? Iop_CmpLE64Fx2 : Iop_CmpLE32Fx4;
12093 IROp opCmpLT = isD ? Iop_CmpLT64Fx2 : Iop_CmpLT32Fx4;
12094 IROp opCmp = Iop_INVALID;
12121 IROp op = isFNEG ? (size == X10 ? Iop_Neg32Fx4 : Iop_Neg64Fx2)
12137 IROp opN = mkVecNARROWUN(size);
12157 IROp opN = Iop_INVALID;
12190 IROp opINT = is2 ? mkVecINTERLEAVEHI(size) : mkVecINTERLEAVELO(size);
12191 IROp opSHL = mkVecSHLN(size+1);
12209 IROp opCvt = size == X00 ? Iop_F32toF16 : Iop_F64toF32;
12235 IROp opCvt = Iop_F64toF32;
12259 IROp opCvt = size == X00 ? Iop_F16toF32 : Iop_F32toF64;
12321 IROp opRND = isD ? Iop_RoundF64toInt : Iop_RoundF32toInt;
12373 IROp cvt = Iop_INVALID;
12403 IROp op = isREC ? Iop_RecipEst32Ux4 : Iop_RSqrtEst32Ux4;
12433 IROp iop = isU ? (isF64 ? Iop_I64UtoF64 : Iop_I32UtoF32)
12457 IROp op = isSQRT ? (isD ? Iop_RSqrtEst64Fx2 : Iop_RSqrtEst32Fx4)
12472 IROp op = isD ? Iop_Sqrt64Fx2 : Iop_Sqrt32Fx4;
12533 IROp opADD = isD ? Iop_Add64Fx2 : Iop_Add32Fx4;
12534 IROp opSUB = isD ? Iop_Sub64Fx2 : Iop_Sub32Fx4;
12535 IROp opMUL = isD ? Iop_Mul64Fx2 : Iop_Mul32Fx4;
12602 IROp opMUL = mkVecMUL(size);
12603 IROp opADD = mkVecADD(size);
12604 IROp opSUB = mkVecSUB(size);
12765 IROp opZHI = bitQ == 0 ? Iop_ZeroHI64ofV128 : Iop_INVALID;
13212 IROp iop = Iop_INVALID;
13244 IROp iop = mkMULF(ity);
13245 IROp iopn = mkNEGF(ity);
13307 IROp opADD = mkADDF(ity);
13308 IROp opSUB = mkSUBF(ity);
13309 IROp opMUL = mkMULF(ity);
13310 IROp opNEG = mkNEGF(ity);
13421 IROp opMUL = isF64 ? Iop_MulF64 : Iop_MulF32;
13423 const IROp ops[8]
13472 IROp opMUL = isF64 ? Iop_MulF64 : Iop_MulF32;
13474 const IROp ops[8]
13573 const IROp iops[8]
13576 IROp iop = iops[ix];
13656 const IROp ops[8]
13923 // Invalidate the current insn. The reason is that the IRop we're