altivec-vec-merge.c
来自「用于进行gcc测试」· C语言 代码 · 共 607 行 · 第 1/2 页
C
607 行
intra[3] = 3; intra[4] = 2; intra[5] = 2; intra[6] = 2; intra[7] = 1; intra[8] = 1; intra[9] = 5; intra[10] = 5; intra[11] = 5; intra[13] = 0; intra[14] = 0; intra[15] = 0; idx0 = vec_ld (0, (signed short *) intra); v_c1 = (vector unsigned char) {'1','2','3','4','5','6','7','8','1','2','3','4','5','6','7','8'}; if (field_MBAFF){ v8 = (vector signed short) vec_and ((vector unsigned char) idx0, v_c1); idx0 = (vector signed short) vec_sra ((vector unsigned char) idx0, v_c1); v9 = vec_sld (v8, v8, 15); v9 = (vector signed short) vec_pack (v9, v8); v10 = vec_sld (v9, v9, 2); v11 = vec_sld (v9, v9, 10); v8 = (vector signed short) vec_cmpeq ((vector signed char) v9, (vector signed char) v10); v9 = (vector signed short) vec_cmpeq ((vector signed char) v9, (vector signed char) v11); v10 = (vector signed short) vec_cmpeq ((vector signed char) v10, (vector signed char) v11); } else { v8 = v9 = v10 = (vector signed short) vec_nor (v_zero, v_zero); } tmp1 = (vector signed short) vec_sl ((vector unsigned char) idx0, v_c1); if (1){ int m; unsigned char toto2[16] __attribute__((aligned(16))); printf("vc1\n"); vec_st(v_c1, 0, (unsigned char *) toto2); for (m=0; m<16;m++) {printf("%c ", toto2[m]);} printf("\nv_zero\n"); vec_st (v_zero, 0, (unsigned char *) toto2); for (m=0; m< 16; m++) {printf("%c ", toto2[m]);} printf("\n");} v_c1 = vec_mergeh ((vector unsigned char) v_zero, v_c1); tmp1 = (vector signed short) vec_add (tmp1, (vector signed short) v_c1); if (1){ vector unsigned char vres = (vector unsigned char){'a','1','b','2','c','3','d','4','e','5','f','6','g','7','h','8'}; unsigned char toto2[16] __attribute__((aligned(16))); int m; printf("vc1\n"); vec_st(v_c1, 0, (unsigned char *) toto2); for (m=0; m<16;m++) {printf("%c ", toto2[m]);} printf("\n"); if (!vec_all_eq (vres, v_c1)) abort();} v_pocl = vec_ld (32, (vector unsigned char *) mv_const); v_poch = vec_ld (48, (vector unsigned char *) mv_const); tmp2 = (vector signed short) vec_perm (v_pocl, v_poch, (vector unsigned char) tmp1); v_pocl = vec_ld (0, (vector unsigned char *) mv_const); v_poch = vec_ld (16, (vector unsigned char *) mv_const); tmp1 = (vector signed short) vec_perm (v_pocl, v_poch, (vector unsigned char) tmp1); tmp1 = vec_sel (tmp1, tmp2, (vector unsigned short) {0xffff,0xffff,0,0,0,0,0,0}); tmp3 = (vector signed short) vec_splat ((vector unsigned char) idx0, 12); v_c1 = (vector unsigned char) vec_nor (v_zero, v_zero); tmp0 = (vector signed short) vec_cmpeq ((vector signed char) idx0, (vector signed char) v_c1); tmp1 = vec_sel (tmp1, (vector signed short) tmp3, (vector unsigned short) tmp0); tmp2 = vec_sld (tmp1, tmp1, 15); tmp1 = (vector signed short) vec_pack (tmp2, tmp1); tmp2 = vec_sld (tmp1, tmp1, 2); tmp3 = vec_sld (tmp1, tmp1, 10); tmp0 = (vector signed short) vec_cmpeq ((vector signed char) tmp1, (vector signed char) tmp2); tmp4 = (vector signed short) vec_cmpeq ((vector signed char) tmp1, (vector signed char) tmp3); tmp1 = (vector signed short) vec_cmpeq ((vector signed char) tmp2, (vector signed char) tmp3); tmp0 = vec_and (tmp0, v8); tmp4 = vec_and (tmp4, v9); tmp1 = vec_and (tmp1, v10); tmp2 = vec_sld ((vector signed short) tmp0, (vector signed short) tmp0, 8); tmp3 = vec_sld ((vector signed short) tmp4, (vector signed short) tmp4, 8); tmp5 = vec_sld ((vector signed short) tmp1, (vector signed short) tmp1, 8); tmp0 = vec_and (tmp0, tmp2); tmp4 = vec_and (tmp4, tmp3); tmp1 = vec_and (tmp1, tmp5); v_ref_mask00 = vec_mergeh ((vector signed short) tmp0, (vector signed short) v_c1); v_ref_mask01 = vec_mergeh ((vector signed short) tmp4, (vector signed short) tmp1); v_ref_mask00 = (vector signed short) vec_mergeh ((vector unsigned char) v_ref_mask00, (vector unsigned char) v_ref_mask00); v_ref_mask01 = (vector signed short) vec_mergeh ((vector unsigned char) v_ref_mask01, (vector unsigned char) v_ref_mask01); v_permv= vec_ld (0, (vector unsigned char *) mv_const); v8 = vec_ld (0, (vector signed short *) mv_const); v9 = vec_ld (16, (vector signed short *) mv_const); tmp2 = vec_perm (v0, v0, v_permv); tmp3 = vec_sub (vec_max (v8, v0), vec_min (v8, v0)); tmp4 = vec_sub (vec_max (v8, tmp2), vec_min (v8, tmp2)); tmp3 = (vector signed short) vec_cmpgt (tmp3, v_three); tmp4 = (vector signed short) vec_cmpgt (tmp4, v_three); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp2 = vec_perm (v2, v2, v_permv); tmp5 = vec_sub (vec_max (v9, v2), vec_min (v9, v2)); tmp6 = vec_sub (vec_max (v9, tmp2), vec_min (v9, tmp2)); tmp5 = (vector signed short) vec_cmpgt (tmp5, v_three); tmp6 = (vector signed short) vec_cmpgt (tmp6, v_three); tmp0 = vec_sld (tmp5, tmp5, 14); tmp1 = vec_sld (tmp6, tmp6, 14); tmp5 = vec_or (tmp0, tmp5); tmp6 = vec_or (tmp1, tmp6); tmp3 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp5); tmp4 = (vector signed short) vec_pack ((vector unsigned int) tmp4, (vector unsigned int) tmp6); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp00 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp4); tmp2 = vec_perm (v1, v1, v_permv); tmp3 = vec_sub (vec_max (v0, v1), vec_min (v0, v1)); tmp4 = vec_sub (vec_max (v0, tmp2), vec_min (v0, tmp2)); tmp3 = (vector signed short) vec_cmpgt (tmp3, v_three); tmp4 = (vector signed short) vec_cmpgt (tmp4, v_three); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp2 = vec_perm (v3, v3, v_permv); tmp5 = vec_sub (vec_max (v2, v3), vec_min (v2, v3)); tmp6 = vec_sub (vec_max (v2, tmp2), vec_min (v2, tmp2)); tmp5 = (vector signed short) vec_cmpgt (tmp5, v_three); tmp6 = (vector signed short) vec_cmpgt (tmp6, v_three); tmp0 = vec_sld (tmp5, tmp5, 14); tmp1 = vec_sld (tmp6, tmp6, 14); tmp5 = vec_or (tmp0, tmp5); tmp6 = vec_or (tmp1, tmp6); tmp3 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp5); tmp4 = (vector signed short) vec_pack ((vector unsigned int) tmp4, (vector unsigned int) tmp6); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp01 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp4); tmp2 = vec_perm (v4, v4, v_permv); tmp3 = vec_sub (vec_max (v1, v4), vec_min (v1, v4)); tmp4 = vec_sub (vec_max (v1, tmp2), vec_min (v1, tmp2)); tmp3 = (vector signed short) vec_cmpgt (tmp3, v_three); tmp4 = (vector signed short) vec_cmpgt (tmp4, v_three); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp2 = vec_perm (v6, v6, v_permv); tmp5 = vec_sub (vec_max (v3, v6), vec_min (v3, v6)); tmp6 = vec_sub (vec_max (v3, tmp2), vec_min (v3, tmp2)); tmp5 = (vector signed short) vec_cmpgt (tmp5, v_three); tmp6 = (vector signed short) vec_cmpgt (tmp6, v_three); tmp0 = vec_sld (tmp5, tmp5, 14); tmp1 = vec_sld (tmp6, tmp6, 14); tmp5 = vec_or (tmp0, tmp5); tmp6 = vec_or (tmp1, tmp6); tmp3 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp5); tmp4 = (vector signed short) vec_pack ((vector unsigned int) tmp4, (vector unsigned int) tmp6); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp02 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp4); tmp2 = vec_perm (v5, v5, v_permv); tmp3 = vec_sub (vec_max (v4, v5), vec_min (v4, v5)); tmp4 = vec_sub (vec_max (v4, tmp2), vec_min (v4, tmp2)); tmp3 = (vector signed short) vec_cmpgt (tmp3, v_three); tmp4 = (vector signed short) vec_cmpgt (tmp4, v_three); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp2 = vec_perm (v7, v7, v_permv); tmp5 = vec_sub (vec_max (v6, v7), vec_min (v6, v7)); tmp6 = vec_sub (vec_max (v6, tmp2), vec_min (v6, tmp2)); tmp5 = (vector signed short) vec_cmpgt (tmp5, v_three); tmp6 = (vector signed short) vec_cmpgt (tmp6, v_three); tmp0 = vec_sld (tmp5, tmp5, 14); tmp1 = vec_sld (tmp6, tmp6, 14); tmp5 = vec_or (tmp0, tmp5); tmp6 = vec_or (tmp1, tmp6); tmp3 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp5); tmp4 = (vector signed short) vec_pack ((vector unsigned int) tmp4, (vector unsigned int) tmp6); tmp5 = vec_sld (tmp3, tmp3, 14); tmp6 = vec_sld (tmp4, tmp4, 14); tmp3 = vec_or (tmp3, tmp5); tmp4 = vec_or (tmp4, tmp6); tmp03 = (vector signed short) vec_pack ((vector unsigned int) tmp3, (vector unsigned int) tmp4); tmp0 = (vector signed short) vec_pack ((vector unsigned short) tmp00, (vector unsigned short) tmp01); tmp1 = (vector signed short) vec_pack ((vector unsigned short) tmp02, (vector unsigned short) tmp03); tmp2 = (vector signed short) vec_mergeh ((vector signed int) tmp0, (vector signed int) tmp1); tmp3 = (vector signed short) vec_mergel ((vector signed int) tmp0, (vector signed int) tmp1); tmp4 = (vector signed short) vec_mergeh ((vector signed int) tmp2, (vector signed int) tmp3); tmp5 = (vector signed short) vec_mergel ((vector signed int) tmp2, (vector signed int) tmp3); tmp4 = vec_and (v_ref_mask00, tmp4); tmp5 = vec_and (v_ref_mask01, tmp5); tmp0 = vec_nor (v_ref_mask00, v_ref_mask01); tmp1 = vec_and (v_ref_mask00, v_ref_mask01); tmp2 = vec_and (tmp4, tmp5); tmp2 = vec_and (tmp2, tmp1); tmp3 = vec_nor (tmp4, tmp5); tmp3 = vec_nor (tmp3, tmp1); v_vec_maskh = vec_or (tmp0, tmp2); v_vec_maskh = vec_or (v_vec_maskh, tmp3); v_intra_maskvn = vec_nor (v_intra_maskv, v_intra_maskv); v_intra_maskhn = vec_nor (v_intra_maskh, v_intra_maskh); v_cbp_maskvn = (vector unsigned char) vec_cmpeq ((vector unsigned char) v_cbp_maskv, (vector unsigned char) v_zero); v_cbp_maskhn = (vector unsigned char) vec_cmpeq ((vector unsigned char) v_cbp_maskh, (vector unsigned char) v_zero); v_cbp_maskv = vec_and (v_cbp_maskv, v_intra_maskvn); v_cbp_maskh = vec_and (v_cbp_maskh, v_intra_maskhn); v_vec_maskv = vec_and (v_vec_maskv, (vector signed short) v_intra_maskvn); v_vec_maskv = vec_and (v_vec_maskv, (vector signed short) v_cbp_maskvn); v_vec_maskh = vec_and (v_vec_maskh, (vector signed short) v_intra_maskhn); v_vec_maskh = vec_and (v_vec_maskh, (vector signed short) v_cbp_maskhn); tmp9 = vec_splat_u8(2); tmp8 = vec_splat_u8(1); v_bS = vec_ld (0, (vector unsigned char *) mv_const); v_bSv = vec_and ((vector unsigned char) v_bS, (vector unsigned char)v_intra_maskv); tmp7 = vec_and ((vector unsigned char)tmp9, (vector unsigned char)v_cbp_maskv); tmp6 = (vector signed short) vec_and ((vector unsigned char)tmp8, (vector unsigned char)v_vec_maskv); tmp7 = vec_or ((vector unsigned char)tmp7, (vector unsigned char)tmp6); v_bSv = vec_or ((vector unsigned char)tmp7, (vector unsigned char)v_bSv); v_bS = vec_ld (0, (vector unsigned char *) mv_const); v_bSh = vec_and ((vector unsigned char) v_bS, (vector unsigned char)v_intra_maskh); tmp7 = vec_and ((vector unsigned char)tmp9, (vector unsigned char)v_cbp_maskh); tmp6 = (vector signed short) vec_and ((vector unsigned char)tmp8, (vector unsigned char)v_vec_maskh); tmp7 = vec_or ((vector unsigned char)tmp7, (vector unsigned char)tmp6); v_bSh = vec_or ((vector unsigned char)tmp7, (vector unsigned char)v_bSh); v_permh = (vector unsigned char) vec_ld (0 , (vector unsigned char *) mv_const); v_permv = (vector unsigned char) vec_ld (0, (vector unsigned char *) mv_const); v_bSv = vec_and (v_bSv, v_permv); v_bSh = vec_and (v_bSh, v_permh); vec_st (v_bSv, 0, (unsigned char *) mv_const); vec_st (v_bSh, 0, (unsigned char *) mv_const); v_bSv = vec_mergeh (v_bSv, v_bSv); v_bSv = vec_mergeh (v_bSv, v_bSv); v_bSh = vec_mergeh (v_bSh, v_bSh); v_bSh = vec_mergeh (v_bSh, v_bSh); vec_st (v_bSv, 0, (vector unsigned char *) mv_const); vec_st (v_bSh, 0,(vector unsigned char *) mv_const);}int main(int argc, char **argv){ char toto[32] __attribute__((aligned(16))); altivec_check (); /* Exit if hardware doesn't support AltiVec. */ foo(toto, toto, 0, 0); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?