forked from OSchip/llvm-project
				
			Add an operator for vmull_lane so it can be implemented without a clang builtin.
llvm-svn: 121187
This commit is contained in:
		
							parent
							
								
									49bcd6ff85
								
							
						
					
					
						commit
						17a233c0e5
					
				| 
						 | 
					@ -601,6 +601,11 @@ static std::string GenOpString(OpKind op, const std::string &proto,
 | 
				
			||||||
      Extend(proto, typestr,
 | 
					      Extend(proto, typestr,
 | 
				
			||||||
             Duplicate(nElts << (int)quad, typestr, "__b")) + ";";
 | 
					             Duplicate(nElts << (int)quad, typestr, "__b")) + ";";
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
 | 
					  case OpMullLane:
 | 
				
			||||||
 | 
					    s += Extend(proto, typestr, "__a") + " * " +
 | 
				
			||||||
 | 
					      Extend(proto, typestr,
 | 
				
			||||||
 | 
					             SplatLane(nElts, "__b", "__c")) + ";";
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
  case OpMull:
 | 
					  case OpMull:
 | 
				
			||||||
    s += Extend(proto, typestr, "__a") + " * " +
 | 
					    s += Extend(proto, typestr, "__a") + " * " +
 | 
				
			||||||
      Extend(proto, typestr, "__b") + ";";
 | 
					      Extend(proto, typestr, "__b") + ";";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@ enum OpKind {
 | 
				
			||||||
  OpMlaN,
 | 
					  OpMlaN,
 | 
				
			||||||
  OpMlsN,
 | 
					  OpMlsN,
 | 
				
			||||||
  OpMulLane,
 | 
					  OpMulLane,
 | 
				
			||||||
 | 
					  OpMullLane,
 | 
				
			||||||
  OpMlaLane,
 | 
					  OpMlaLane,
 | 
				
			||||||
  OpMlsLane,
 | 
					  OpMlsLane,
 | 
				
			||||||
  OpEq,
 | 
					  OpEq,
 | 
				
			||||||
| 
						 | 
					@ -89,6 +90,7 @@ namespace llvm {
 | 
				
			||||||
      OpMap["OP_MLA_N"] = OpMlaN;
 | 
					      OpMap["OP_MLA_N"] = OpMlaN;
 | 
				
			||||||
      OpMap["OP_MLS_N"] = OpMlsN;
 | 
					      OpMap["OP_MLS_N"] = OpMlsN;
 | 
				
			||||||
      OpMap["OP_MUL_LN"]= OpMulLane;
 | 
					      OpMap["OP_MUL_LN"]= OpMulLane;
 | 
				
			||||||
 | 
					      OpMap["OP_MULL_LN"] = OpMullLane;
 | 
				
			||||||
      OpMap["OP_MLA_LN"]= OpMlaLane;
 | 
					      OpMap["OP_MLA_LN"]= OpMlaLane;
 | 
				
			||||||
      OpMap["OP_MLS_LN"]= OpMlsLane;
 | 
					      OpMap["OP_MLS_LN"]= OpMlsLane;
 | 
				
			||||||
      OpMap["OP_EQ"]    = OpEq;
 | 
					      OpMap["OP_EQ"]    = OpEq;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue