Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright © <2010>, Intel Corporation.
  3.  *
  4.  * This program is licensed under the terms and conditions of the
  5.  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at
  6.  * http://www.opensource.org/licenses/eclipse-1.0.php.
  7.  *
  8.  */
  9. //////////////////////////////////////////////////////////////////////////////////////////
  10. //      Module name: Transpose_Y_16x16.asm
  11. //     
  12. //      Transpose Y 16x16 block.
  13. //
  14. //----------------------------------------------------------------------------------------
  15. //  Symbols need to be defined before including this module
  16. //
  17. //      Source region is :ub
  18. //      SRC_YB:                 SRC_YB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub    // 8 GRFs
  19. //
  20. //  Temp buffer:
  21. //      CUR_TEMP_B:             BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub             // 8 GRFs
  22. //
  23. //////////////////////////////////////////////////////////////////////////////////////////
  24.  
  25. #if defined(_DEBUG)
  26.         mov             (1)             EntrySignatureC:w                       0xDDDA:w
  27. #endif
  28.  
  29.  
  30. // Transpose Y (16x16 bytes)
  31.  
  32. // The first step
  33. mov (16)        CUR_TEMP_B(0,0)<1>              SRC_YB(0,0)<16;4,1>             { NoDDClr }
  34. mov (16)        CUR_TEMP_B(0,16)<1>             SRC_YB(2,0)<16;4,1>             { NoDDChk }
  35. mov (16)        CUR_TEMP_B(1,0)<1>              SRC_YB(4,0)<16;4,1>             { NoDDClr }
  36. mov (16)        CUR_TEMP_B(1,16)<1>             SRC_YB(6,0)<16;4,1>             { NoDDChk }
  37.  
  38. mov (16)        CUR_TEMP_B(2,0)<1>              SRC_YB(0,4)<16;4,1>             { NoDDClr }
  39. mov (16)        CUR_TEMP_B(2,16)<1>             SRC_YB(2,4)<16;4,1>             { NoDDChk }
  40. mov (16)        CUR_TEMP_B(3,0)<1>              SRC_YB(4,4)<16;4,1>             { NoDDClr }
  41. mov (16)        CUR_TEMP_B(3,16)<1>             SRC_YB(6,4)<16;4,1>             { NoDDChk }
  42.  
  43. mov (16)        CUR_TEMP_B(4,0)<1>              SRC_YB(0,8)<16;4,1>             { NoDDClr }
  44. mov (16)        CUR_TEMP_B(4,16)<1>             SRC_YB(2,8)<16;4,1>             { NoDDChk }
  45. mov (16)        CUR_TEMP_B(5,0)<1>              SRC_YB(4,8)<16;4,1>             { NoDDClr }
  46. mov (16)        CUR_TEMP_B(5,16)<1>             SRC_YB(6,8)<16;4,1>             { NoDDChk }
  47.  
  48. mov (16)        CUR_TEMP_B(6,0)<1>              SRC_YB(0,12)<16;4,1>    { NoDDClr }
  49. mov (16)        CUR_TEMP_B(6,16)<1>             SRC_YB(2,12)<16;4,1>    { NoDDChk }
  50. mov (16)        CUR_TEMP_B(7,0)<1>              SRC_YB(4,12)<16;4,1>    { NoDDClr }
  51. mov (16)        CUR_TEMP_B(7,16)<1>             SRC_YB(6,12)<16;4,1>    { NoDDChk }
  52.  
  53. // The second step
  54. mov (16)        SRC_YB(0,0)<1>          CUR_TEMP_B(0,0)<32;8,4>         { NoDDClr }
  55. mov (16)        SRC_YB(0,16)<1>         CUR_TEMP_B(0,1)<32;8,4>         { NoDDChk }
  56. mov (16)        SRC_YB(1,0)<1>          CUR_TEMP_B(0,2)<32;8,4>         { NoDDClr }
  57. mov (16)        SRC_YB(1,16)<1>         CUR_TEMP_B(0,3)<32;8,4>         { NoDDChk }
  58.  
  59. mov (16)        SRC_YB(2,0)<1>          CUR_TEMP_B(2,0)<32;8,4>         { NoDDClr }
  60. mov (16)        SRC_YB(2,16)<1>         CUR_TEMP_B(2,1)<32;8,4>         { NoDDChk }
  61. mov (16)        SRC_YB(3,0)<1>          CUR_TEMP_B(2,2)<32;8,4>         { NoDDClr }
  62. mov (16)        SRC_YB(3,16)<1>         CUR_TEMP_B(2,3)<32;8,4>         { NoDDChk }
  63.  
  64. mov (16)        SRC_YB(4,0)<1>          CUR_TEMP_B(4,0)<32;8,4>         { NoDDClr }
  65. mov (16)        SRC_YB(4,16)<1>         CUR_TEMP_B(4,1)<32;8,4>         { NoDDChk }
  66. mov (16)        SRC_YB(5,0)<1>          CUR_TEMP_B(4,2)<32;8,4>         { NoDDClr }
  67. mov (16)        SRC_YB(5,16)<1>         CUR_TEMP_B(4,3)<32;8,4>         { NoDDChk }
  68.  
  69. mov (16)        SRC_YB(6,0)<1>          CUR_TEMP_B(6,0)<32;8,4>         { NoDDClr }
  70. mov (16)        SRC_YB(6,16)<1>         CUR_TEMP_B(6,1)<32;8,4>         { NoDDChk }
  71. mov (16)        SRC_YB(7,0)<1>          CUR_TEMP_B(6,2)<32;8,4>         { NoDDClr }
  72. mov (16)        SRC_YB(7,16)<1>         CUR_TEMP_B(6,3)<32;8,4>         { NoDDChk }
  73.  
  74. // Y is transposed.
  75.