MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / Replicate

Function Replicate

arch/arm64/disassembler/pcode.c:533–570  ·  view source on GitHub ↗

Mozilla MPL TODO: evaluate license, possibly rewrite https://github.com/Siguza/iometa/blob/master/src/a64.c */

Source from the content-addressed store, hash-verified

531 TODO: evaluate license, possibly rewrite
532 https://github.com/Siguza/iometa/blob/master/src/a64.c */
533uint64_t Replicate(uint64_t val, uint8_t times, uint64_t width)
534{
535 // Fast path
536 switch (times)
537 {
538 case 64:
539 val |= val << width;
540 width <<= 1;
541 case 32:
542 val |= val << width;
543 width <<= 1;
544 case 16:
545 val |= val << width;
546 width <<= 1;
547 case 8:
548 val |= val << width;
549 width <<= 1;
550 case 4:
551 val |= val << width;
552 width <<= 1;
553 case 2:
554 val |= val << width;
555 case 1:
556 return val;
557 case 0:
558 return 0;
559 default:
560 break;
561 }
562 // Slow path
563 uint64_t orig = val;
564 for (size_t i = 0; i < times; ++i)
565 {
566 val <<= width;
567 val |= orig;
568 }
569 return val;
570}
571
572/* Mozilla MPL
573 TODO: evaluate license, possibly rewrite

Callers 6

AdvSIMDExpandImmFunction · 0.85
BIC_advsimd_immFunction · 0.85
FMOV_advsimdFunction · 0.85
MOVI_advsimdFunction · 0.85
MVNI_advsimdFunction · 0.85
ORR_advsimd_immFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected