void av1_fdct4x4_1_sse2(const int16_t *input, tran_low_t *output, int stride) { __m128i in0, in1; __m128i tmp; const __m128i zero = _mm_setzero_si128(); in0 = _mm_loadl_epi64((const __m128i *)(input + 0 * stride)); in1 = _mm_loadl_epi64((const __m128i *)(input + 1 * stride)); in1 = _mm_unpacklo_epi64( in1, _mm_loadl_epi64((const __m128i *)(input + 2 * stride))); in0 = _mm_unpacklo_epi64( in0, _mm_loadl_epi64((const __m128i *)(input + 3 * stride))); tmp = _mm_add_epi16(in0, in1); in0 = _mm_unpacklo_epi16(zero, tmp); in1 = _mm_unpackhi_epi16(zero, tmp); in0 = _mm_srai_epi32(in0, 16); in1 = _mm_srai_epi32(in1, 16); tmp = _mm_add_epi32(in0, in1); in0 = _mm_unpacklo_epi32(tmp, zero); in1 = _mm_unpackhi_epi32(tmp, zero); tmp = _mm_add_epi32(in0, in1); in0 = _mm_srli_si128(tmp, 8); in1 = _mm_add_epi32(tmp, in0); in0 = _mm_slli_epi32(in1, 1); store_output(&in0, output); }
int do_list(t_cinfo *client_info, int *treated) { char *msg; char *msglen; int done; done = 0; *treated = 1; msg = NULL; if (!(msg = store_output(msg, client_info->sock, &done))) return (-1); if (!(msglen = malloc(sizeof(char) * 25))) return (-1); msglen = itoa_like(strlen(msg), msglen, 10); if (!(msglen = twenty_digits(msglen))) return (-1); write(client_info->sock, msglen, 20); write(client_info->sock, msg, strlen(msg)); write(client_info->sock, "226 Closing data connection.\nRequested file", 43); write(client_info->sock, "action successful (for example, file", 36); write(client_info->sock, "transfert or file abort).\r\n", 27); if (!done) write(client_info->sock, "\n", 1); return (0); }
void av1_fdct8x8_1_sse2(const int16_t *input, tran_low_t *output, int stride) { __m128i in0 = _mm_load_si128((const __m128i *)(input + 0 * stride)); __m128i in1 = _mm_load_si128((const __m128i *)(input + 1 * stride)); __m128i in2 = _mm_load_si128((const __m128i *)(input + 2 * stride)); __m128i in3 = _mm_load_si128((const __m128i *)(input + 3 * stride)); __m128i u0, u1, sum; u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); in0 = _mm_load_si128((const __m128i *)(input + 4 * stride)); in1 = _mm_load_si128((const __m128i *)(input + 5 * stride)); in2 = _mm_load_si128((const __m128i *)(input + 6 * stride)); in3 = _mm_load_si128((const __m128i *)(input + 7 * stride)); sum = _mm_add_epi16(u0, u1); in0 = _mm_add_epi16(in0, in1); in2 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, in0); u0 = _mm_setzero_si128(); sum = _mm_add_epi16(sum, in2); in0 = _mm_unpacklo_epi16(u0, sum); in1 = _mm_unpackhi_epi16(u0, sum); in0 = _mm_srai_epi32(in0, 16); in1 = _mm_srai_epi32(in1, 16); sum = _mm_add_epi32(in0, in1); in0 = _mm_unpacklo_epi32(sum, u0); in1 = _mm_unpackhi_epi32(sum, u0); sum = _mm_add_epi32(in0, in1); in0 = _mm_srli_si128(sum, 8); in1 = _mm_add_epi32(sum, in0); store_output(&in1, output); }
void mgr_on_check(int fd, const void* buf, size_t ret, event_manager* ev_mgr) { if (internal_threads(ev_mgr->excluded_threads, pthread_self())) return; if (ev_mgr->check_output) { int store_output_rc = 0; store_output_rc = store_output(fd, buf, ret); // if store_output() returns 0 or -1, return directly if (store_output_rc <= 0){ return; } uint32_t leader_id = get_leader_id(ev_mgr->con_node); if (leader_id == ev_mgr->node_id) { long hash_index = determine_output(fd); if (-1 != hash_index){ // do output proposal with hash value at this hash_index leader_tcp_pair* socket_pair = NULL; HASH_FIND_INT(ev_mgr->leader_tcp_map, &fd, socket_pair); dare_log_entry_t *log_entry_ptr = rsm_op(ev_mgr->con_node, sizeof(long), &hash_index, P_OUTPUT, &socket_pair->vs); uint32_t group_size = get_group_size(ev_mgr->con_node); output_peer_t* peer_array = prepare_peer_array(fd, log_entry_ptr, leader_id, hash_index, group_size); // make decision about who needs to be restored based on the hash value. do_decision(peer_array, group_size); free(peer_array); } } } }
void av1_fdct16x16_1_sse2(const int16_t *input, tran_low_t *output, int stride) { __m128i in0, in1, in2, in3; __m128i u0, u1; __m128i sum = _mm_setzero_si128(); int i; for (i = 0; i < 2; ++i) { input += 8 * i; in0 = _mm_load_si128((const __m128i *)(input + 0 * stride)); in1 = _mm_load_si128((const __m128i *)(input + 1 * stride)); in2 = _mm_load_si128((const __m128i *)(input + 2 * stride)); in3 = _mm_load_si128((const __m128i *)(input + 3 * stride)); u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); in0 = _mm_load_si128((const __m128i *)(input + 4 * stride)); in1 = _mm_load_si128((const __m128i *)(input + 5 * stride)); in2 = _mm_load_si128((const __m128i *)(input + 6 * stride)); in3 = _mm_load_si128((const __m128i *)(input + 7 * stride)); sum = _mm_add_epi16(sum, u1); u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); in0 = _mm_load_si128((const __m128i *)(input + 8 * stride)); in1 = _mm_load_si128((const __m128i *)(input + 9 * stride)); in2 = _mm_load_si128((const __m128i *)(input + 10 * stride)); in3 = _mm_load_si128((const __m128i *)(input + 11 * stride)); sum = _mm_add_epi16(sum, u1); u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); in0 = _mm_load_si128((const __m128i *)(input + 12 * stride)); in1 = _mm_load_si128((const __m128i *)(input + 13 * stride)); in2 = _mm_load_si128((const __m128i *)(input + 14 * stride)); in3 = _mm_load_si128((const __m128i *)(input + 15 * stride)); sum = _mm_add_epi16(sum, u1); u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); sum = _mm_add_epi16(sum, u1); } u0 = _mm_setzero_si128(); in0 = _mm_unpacklo_epi16(u0, sum); in1 = _mm_unpackhi_epi16(u0, sum); in0 = _mm_srai_epi32(in0, 16); in1 = _mm_srai_epi32(in1, 16); sum = _mm_add_epi32(in0, in1); in0 = _mm_unpacklo_epi32(sum, u0); in1 = _mm_unpackhi_epi32(sum, u0); sum = _mm_add_epi32(in0, in1); in0 = _mm_srli_si128(sum, 8); in1 = _mm_add_epi32(sum, in0); in1 = _mm_srai_epi32(in1, 1); store_output(&in1, output); }
void av1_fdct32x32_1_sse2(const int16_t *input, tran_low_t *output, int stride) { __m128i in0, in1, in2, in3; __m128i u0, u1; __m128i sum = _mm_setzero_si128(); int i; for (i = 0; i < 8; ++i) { in0 = _mm_load_si128((const __m128i *)(input + 0)); in1 = _mm_load_si128((const __m128i *)(input + 8)); in2 = _mm_load_si128((const __m128i *)(input + 16)); in3 = _mm_load_si128((const __m128i *)(input + 24)); input += stride; u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); in0 = _mm_load_si128((const __m128i *)(input + 0)); in1 = _mm_load_si128((const __m128i *)(input + 8)); in2 = _mm_load_si128((const __m128i *)(input + 16)); in3 = _mm_load_si128((const __m128i *)(input + 24)); input += stride; sum = _mm_add_epi16(sum, u1); u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); in0 = _mm_load_si128((const __m128i *)(input + 0)); in1 = _mm_load_si128((const __m128i *)(input + 8)); in2 = _mm_load_si128((const __m128i *)(input + 16)); in3 = _mm_load_si128((const __m128i *)(input + 24)); input += stride; sum = _mm_add_epi16(sum, u1); u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); in0 = _mm_load_si128((const __m128i *)(input + 0)); in1 = _mm_load_si128((const __m128i *)(input + 8)); in2 = _mm_load_si128((const __m128i *)(input + 16)); in3 = _mm_load_si128((const __m128i *)(input + 24)); input += stride; sum = _mm_add_epi16(sum, u1); u0 = _mm_add_epi16(in0, in1); u1 = _mm_add_epi16(in2, in3); sum = _mm_add_epi16(sum, u0); sum = _mm_add_epi16(sum, u1); } u0 = _mm_setzero_si128(); in0 = _mm_unpacklo_epi16(u0, sum); in1 = _mm_unpackhi_epi16(u0, sum); in0 = _mm_srai_epi32(in0, 16); in1 = _mm_srai_epi32(in1, 16); sum = _mm_add_epi32(in0, in1); in0 = _mm_unpacklo_epi32(sum, u0); in1 = _mm_unpackhi_epi32(sum, u0); sum = _mm_add_epi32(in0, in1); in0 = _mm_srli_si128(sum, 8); in1 = _mm_add_epi32(sum, in0); in1 = _mm_srai_epi32(in1, 3); store_output(&in1, output); }