MCPcopy Create free account
hub / github.com/argotorg/solidity / shiftLeftFunction

Method shiftLeftFunction

libsolidity/codegen/YulUtilFunctions.cpp:430–453  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

428}
429
430std::string YulUtilFunctions::shiftLeftFunction(size_t _numBits)
431{
432 solAssert(_numBits < 256, "");
433
434 std::string functionName = "shift_left_" + std::to_string(_numBits);
435 return m_functionCollector.createFunction(functionName, [&]() {
436 return
437 Whiskers(R"(
438 function <functionName>(value) -> newValue {
439 newValue :=
440 <?hasShifts>
441 shl(<numBits>, value)
442 <!hasShifts>
443 mul(value, <multiplier>)
444 </hasShifts>
445 }
446 )")
447 ("functionName", functionName)
448 ("numBits", std::to_string(_numBits))
449 ("hasShifts", m_evmVersion.hasBitwiseShifting())
450 ("multiplier", toCompactHexWithPrefix(u256(1) << _numBits))
451 .render();
452 });
453}
454
455std::string YulUtilFunctions::shiftLeftFunctionDynamic()
456{

Callers 2

endVisitMethod · 0.80

Calls 6

WhiskersClass · 0.85
toCompactHexWithPrefixFunction · 0.85
renderMethod · 0.80
hasBitwiseShiftingMethod · 0.80
to_stringFunction · 0.50
createFunctionMethod · 0.45

Tested by

no test coverage detected