input_desc = [ "v128:data", "v128:prev", "u32:offset", "u32:dummy", ] output_desc = [ "v128:llv_e0", "v128:llv_e1", "v128:llv_e2", "v128:llv_e3", "v128:llv_e4", "v128:llv_e5", "v128:llv_e6", "v128:llv_e7", "v128:llv_e8", "v128:llv_e9", "v128:llv_e10", "v128:llv_e11", "v128:llv_e12", "v128:llv_e13", "v128:llv_e14", "v128:llv_e15", "v128:slv_e0", "v128:slv_e1", "v128:slv_e2", "v128:slv_e3", "v128:slv_e4", "v128:slv_e5", "v128:slv_e6", "v128:slv_e7", "v128:slv_e8", "v128:slv_e9", "v128:slv_e10", "v128:slv_e11", "v128:slv_e12", "v128:slv_e13", "v128:slv_e14", "v128:slv_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 llv v0[e0],$00(a0) llv v1[e1],$00(a0) llv v2[e2],$00(a0) llv v3[e3],$00(a0) llv v4[e4],$00(a0) llv v5[e5],$00(a0) llv v6[e6],$00(a0) llv v7[e7],$00(a0) llv v8[e8],$00(a0) llv v9[e9],$00(a0) llv v10[e10],$00(a0) llv v11[e11],$00(a0) llv v12[e12],$00(a0) llv v13[e13],$00(a0) llv v14[e14],$00(a0) llv 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 a1,$100 slv v0[e15],$F0(a1) slv v0[e14],$E0(a1) slv v0[e13],$D0(a1) slv v0[e12],$C0(a1) slv v0[e11],$B0(a1) slv v0[e10],$A0(a1) slv v0[e9],$90(a1) slv v0[e8],$80(a1) slv v0[e7],$70(a1) slv v0[e6],$60(a1) slv v0[e5],$50(a1) slv v0[e4],$40(a1) slv v0[e3],$30(a1) slv v0[e2],$20(a1) slv v0[e1],$10(a1) slv v0[e0],$00(a1) 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 ]