1 ################################################################################
3 ################################################################################
5 # Hint: use only one space between opcode and operands (and also between them)
7 # Rotation and Translation of one line
9 # for (x = 0; x < td->fiDest.width; x++) {
10 # int32_t x_d1 = (xs[x] - c_d_x);
11 # x_ss[x] = zcos_a * x_d1 + zsin_a * y_d1 + c_tx;
12 # y_ss[x] = -zsin_a * x_d1 + zcos_a * y_d1 + c_ty;
16 .function transform_one_line_optimized
17 .dest 4 x_ss int32_t # fp16
18 .dest 4 y_ss int32_t # fp16
21 .param 4 c_d_x int32_t
22 .param 4 c_tx int32_t # fp16
23 .param 4 c_ty int32_t # fp16
24 .param 4 zcos_a int32_t # fp16
25 .param 4 zsin_a int32_t # fp16
31 mulll tmp1 zcos_a x_d1
32 mulll tmp2 zsin_a y_d1
35 mulll tmp1 zcos_a y_d1
36 mulll tmp2 zsin_a x_d1
41 .function transform_one_line_optimized1
42 .dest 4 x_ss int32_t # fp16
45 .param 4 c_d_x int32_t
46 .param 4 c_tx int32_t # fp16
47 .param 4 c_ty int32_t # fp16
48 .param 4 zcos_a int32_t # fp16
49 .param 4 zsin_a int32_t # fp16
50 .param 4 sin_y int32_t # fp16
51 .param 4 cos_y int32_t # fp16
56 mulll tmp1, x_d1, zcos_a
57 addl tmp1, tmp1, sin_y
59 mulll tmp1, x_d1, zsin_a
61 addl tmp2, tmp1, cos_y
62 # addl y_ss, tmp1, c_ty