input_desc = [ "v128:data", "v128:prev", "u32:offset", "u32:dummy", ] output_desc = [ "v128:lbv_e0", "v128:lbv_e1", "v128:lbv_e2", "v128:lbv_e3", "v128:lbv_e4", "v128:lbv_e5", "v128:lbv_e6", "v128:lbv_e7", "v128:lbv_e8", "v128:lbv_e9", "v128:lbv_e10", "v128:lbv_e11", "v128:lbv_e12", "v128:lbv_e13", "v128:lbv_e14", "v128:lbv_e15", "v128:sbv_e0", "v128:sbv_e1", "v128:sbv_e2", "v128:sbv_e3", "v128:sbv_e4", "v128:sbv_e5", "v128:sbv_e6", "v128:sbv_e7", "v128:sbv_e8", "v128:sbv_e9", "v128:sbv_e10", "v128:sbv_e11", "v128:sbv_e12", "v128:sbv_e13", "v128:sbv_e14", "v128:sbv_e15", ] rsp_code = """ li a0,$0 li a1,$800 lqv v0[e0],$10(a0) // input: prev lqv v1[e0],$10(a0) // input: prev lqv v2[e0],$10(a0) // input: prev lqv v3[e0],$10(a0) // input: prev lqv v4[e0],$10(a0) // input: prev lqv v5[e0],$10(a0) // input: prev lqv v6[e0],$10(a0) // input: prev lqv v7[e0],$10(a0) // input: prev lqv v8[e0],$10(a0) // input: prev lqv v9[e0],$10(a0) // input: prev lqv v10[e0],$10(a0) // input: prev lqv v11[e0],$10(a0) // input: prev lqv v12[e0],$10(a0) // input: prev lqv v13[e0],$10(a0) // input: prev lqv v14[e0],$10(a0) // input: prev lqv v15[e0],$10(a0) // input: prev lw t4,$20(a0) // input: offset // This test is very sensitive to possible read/write mistakes to memory // and we want to make sure that writes actually happen. vxor v31,v31 add a2,a1,0 addi a2,$1F0 ClearLoop: sqv v31[e0],$00(a2) bne a1,a2,ClearLoop subi a2,$10 add a0,t4 // add offset to disalign lbv v0[e0],$00(a0) lbv v1[e1],$00(a0) lbv v2[e2],$00(a0) lbv v3[e3],$00(a0) lbv v4[e4],$00(a0) lbv v5[e5],$00(a0) lbv v6[e6],$00(a0) lbv v7[e7],$00(a0) lbv v8[e8],$00(a0) lbv v9[e9],$00(a0) lbv v10[e10],$00(a0) lbv v11[e11],$00(a0) lbv v12[e12],$00(a0) lbv v13[e13],$00(a0) lbv v14[e14],$00(a0) lbv v15[e15],$00(a0) sqv v0[e0],$00(a1) sqv v1[e0],$10(a1) sqv v2[e0],$20(a1) sqv v3[e0],$30(a1) sqv v4[e0],$40(a1) sqv v5[e0],$50(a1) sqv v6[e0],$60(a1) sqv v7[e0],$70(a1) sqv v8[e0],$80(a1) sqv v9[e0],$90(a1) sqv v10[e0],$A0(a1) sqv v11[e0],$B0(a1) sqv v12[e0],$C0(a1) sqv v13[e0],$D0(a1) sqv v14[e0],$E0(a1) sqv v15[e0],$F0(a1) li a0,$0 lqv v0[e0],$00(a0) // input: v0 add a1,t4 // add offset to disalign addi a2,a1,$1F0 sbv v0[e15],$00(a2) addi a2,a1,$1E0 sbv v0[e14],$00(a2) addi a2,a1,$1D0 sbv v0[e13],$00(a2) addi a2,a1,$1C0 sbv v0[e12],$00(a2) addi a2,a1,$1B0 sbv v0[e11],$00(a2) addi a2,a1,$1A0 sbv v0[e10],$00(a2) addi a2,a1,$190 sbv v0[e9],$00(a2) addi a2,a1,$180 sbv v0[e8],$00(a2) addi a2,a1,$170 sbv v0[e7],$00(a2) addi a2,a1,$160 sbv v0[e6],$00(a2) addi a2,a1,$150 sbv v0[e5],$00(a2) addi a2,a1,$140 sbv v0[e4],$00(a2) addi a2,a1,$130 sbv v0[e3],$00(a2) addi a2,a1,$120 sbv v0[e2],$00(a2) addi a2,a1,$110 sbv v0[e1],$00(a2) addi a2,a1,$100 sbv v0[e0],$00(a2) break """ [[test]] name = "offset0" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 0, # offset 0, # dummy ] [[test]] name = "offset1" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 1, # offset 0, # dummy ] [[test]] name = "offset2" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 2, # offset 0, # dummy ] [[test]] name = "offset3" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 3, # offset 0, # dummy ] [[test]] name = "offset4" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 4, # offset 0, # dummy ] [[test]] name = "offset5" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 5, # offset 0, # dummy ] [[test]] name = "offset6" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 6, # offset 0, # dummy ] [[test]] name = "offset7" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 7, # offset 0, # dummy ] [[test]] name = "offset8" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 8, # offset 0, # dummy ] [[test]] name = "offset9" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 9, # offset 0, # dummy ] [[test]] name = "offset10" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 10, # offset 0, # dummy ] [[test]] name = "offset11" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 11, # offset 0, # dummy ] [[test]] name = "offset12" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 12, # offset 0, # dummy ] [[test]] name = "offset13" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 13, # offset 0, # dummy ] [[test]] name = "offset14" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 14, # offset 0, # dummy ] [[test]] name = "offset15" input = [ 0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0 0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev 15, # offset 0, # dummy ]