github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/core/util/packed/bulkOperation20.go (about)

     1  // This file has been automatically generated, DO NOT EDIT
     2  
     3  		package packed
     4  
     5  		// Efficient sequential read/write of packed integers.
     6  type BulkOperationPacked20 struct {
     7  	*BulkOperationPacked
     8  }
     9  
    10  func newBulkOperationPacked20() BulkOperation {
    11  	return &BulkOperationPacked20{newBulkOperationPacked(20)}
    12  }
    13  
    14  func (op *BulkOperationPacked20) decodeLongToInt(blocks []int64, values []int32, iterations int) {
    15  	blocksOffset, valuesOffset := 0, 0
    16  	for i := 0; i < iterations; i ++ {
    17  		block0 := blocks[blocksOffset]; blocksOffset++
    18  		values[valuesOffset] = int32(int64(uint64(block0) >> 44)); valuesOffset++
    19  		values[valuesOffset] = int32(int64(uint64(block0) >> 24) & 1048575); valuesOffset++
    20  		values[valuesOffset] = int32(int64(uint64(block0) >> 4) & 1048575); valuesOffset++
    21  		block1 := blocks[blocksOffset]; blocksOffset++
    22  		values[valuesOffset] = int32(((block0 & 15) << 16) | (int64(uint64(block1) >> 48))); valuesOffset++
    23  		values[valuesOffset] = int32(int64(uint64(block1) >> 28) & 1048575); valuesOffset++
    24  		values[valuesOffset] = int32(int64(uint64(block1) >> 8) & 1048575); valuesOffset++
    25  		block2 := blocks[blocksOffset]; blocksOffset++
    26  		values[valuesOffset] = int32(((block1 & 255) << 12) | (int64(uint64(block2) >> 52))); valuesOffset++
    27  		values[valuesOffset] = int32(int64(uint64(block2) >> 32) & 1048575); valuesOffset++
    28  		values[valuesOffset] = int32(int64(uint64(block2) >> 12) & 1048575); valuesOffset++
    29  		block3 := blocks[blocksOffset]; blocksOffset++
    30  		values[valuesOffset] = int32(((block2 & 4095) << 8) | (int64(uint64(block3) >> 56))); valuesOffset++
    31  		values[valuesOffset] = int32(int64(uint64(block3) >> 36) & 1048575); valuesOffset++
    32  		values[valuesOffset] = int32(int64(uint64(block3) >> 16) & 1048575); valuesOffset++
    33  		block4 := blocks[blocksOffset]; blocksOffset++
    34  		values[valuesOffset] = int32(((block3 & 65535) << 4) | (int64(uint64(block4) >> 60))); valuesOffset++
    35  		values[valuesOffset] = int32(int64(uint64(block4) >> 40) & 1048575); valuesOffset++
    36  		values[valuesOffset] = int32(int64(uint64(block4) >> 20) & 1048575); valuesOffset++
    37  		values[valuesOffset] = int32(block4 & 1048575); valuesOffset++
    38  	}
    39  }
    40  
    41  func (op *BulkOperationPacked20) decodeByteToInt(blocks []byte, values []int32, iterations int) {
    42  	blocksOffset, valuesOffset := 0, 0
    43  	for i := 0; i < iterations; i ++ {
    44  		byte0 := blocks[blocksOffset]
    45  		blocksOffset++
    46  		byte1 := blocks[blocksOffset]
    47  		blocksOffset++
    48  		byte2 := blocks[blocksOffset]
    49  		blocksOffset++
    50  		values[valuesOffset] = int32((int64(byte0) << 12) | (int64(byte1) << 4) | int64(uint8(byte2) >> 4))
    51  		valuesOffset++
    52  		byte3 := blocks[blocksOffset]
    53  		blocksOffset++
    54  		byte4 := blocks[blocksOffset]
    55  		blocksOffset++
    56  		values[valuesOffset] = int32((int64(byte2 & 15) << 16) | (int64(byte3) << 8) | int64(byte4))
    57  		valuesOffset++
    58  	}
    59  }
    60  func (op *BulkOperationPacked20) decodeLongToLong(blocks []int64, values []int64, iterations int) {
    61  	blocksOffset, valuesOffset := 0, 0
    62  	for i := 0; i < iterations; i ++ {
    63  		block0 := blocks[blocksOffset]; blocksOffset++
    64  		values[valuesOffset] = int64(uint64(block0) >> 44); valuesOffset++
    65  		values[valuesOffset] = int64(uint64(block0) >> 24) & 1048575; valuesOffset++
    66  		values[valuesOffset] = int64(uint64(block0) >> 4) & 1048575; valuesOffset++
    67  		block1 := blocks[blocksOffset]; blocksOffset++
    68  		values[valuesOffset] = ((block0 & 15) << 16) | (int64(uint64(block1) >> 48)); valuesOffset++
    69  		values[valuesOffset] = int64(uint64(block1) >> 28) & 1048575; valuesOffset++
    70  		values[valuesOffset] = int64(uint64(block1) >> 8) & 1048575; valuesOffset++
    71  		block2 := blocks[blocksOffset]; blocksOffset++
    72  		values[valuesOffset] = ((block1 & 255) << 12) | (int64(uint64(block2) >> 52)); valuesOffset++
    73  		values[valuesOffset] = int64(uint64(block2) >> 32) & 1048575; valuesOffset++
    74  		values[valuesOffset] = int64(uint64(block2) >> 12) & 1048575; valuesOffset++
    75  		block3 := blocks[blocksOffset]; blocksOffset++
    76  		values[valuesOffset] = ((block2 & 4095) << 8) | (int64(uint64(block3) >> 56)); valuesOffset++
    77  		values[valuesOffset] = int64(uint64(block3) >> 36) & 1048575; valuesOffset++
    78  		values[valuesOffset] = int64(uint64(block3) >> 16) & 1048575; valuesOffset++
    79  		block4 := blocks[blocksOffset]; blocksOffset++
    80  		values[valuesOffset] = ((block3 & 65535) << 4) | (int64(uint64(block4) >> 60)); valuesOffset++
    81  		values[valuesOffset] = int64(uint64(block4) >> 40) & 1048575; valuesOffset++
    82  		values[valuesOffset] = int64(uint64(block4) >> 20) & 1048575; valuesOffset++
    83  		values[valuesOffset] = block4 & 1048575; valuesOffset++
    84  	}
    85  }
    86  
    87  func (op *BulkOperationPacked20) decodeByteToLong(blocks []byte, values []int64, iterations int) {
    88  	blocksOffset, valuesOffset := 0, 0
    89  	for i := 0; i < iterations; i ++ {
    90  		byte0 := blocks[blocksOffset]
    91  		blocksOffset++
    92  		byte1 := blocks[blocksOffset]
    93  		blocksOffset++
    94  		byte2 := blocks[blocksOffset]
    95  		blocksOffset++
    96  		values[valuesOffset] = int64((int64(byte0) << 12) | (int64(byte1) << 4) | int64(uint8(byte2) >> 4))
    97  		valuesOffset++
    98  		byte3 := blocks[blocksOffset]
    99  		blocksOffset++
   100  		byte4 := blocks[blocksOffset]
   101  		blocksOffset++
   102  		values[valuesOffset] = int64((int64(byte2 & 15) << 16) | (int64(byte3) << 8) | int64(byte4))
   103  		valuesOffset++
   104  	}
   105  }