Форум программистов, компьютерный форум, киберфорум
K_ILYA_V
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 1.

Макрос генерирующий макрос

Запись от K_ILYA_V размещена 17.02.2020 в 21:46

Сейчас я увлечен разработкой своего расширения AVX2 которое позволит мне более эффективно манипулировать матрицами, для чего я написал несколько макросов, которые генерируют макросы, вот такая рекурсия.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
; Дополнительный исходный файл
 
;------------------------------
YmmMatInsRegReg macro OldIns,reg1,reg2
    irpc i,<012>
        OldIns @CatStr(ymm,%((@SubStr(reg1,4) + i) - (@SubStr(reg1,4) + i)/16*16)),\
               @CatStr(ymm,%((@SubStr(reg2,4) + i) - (@SubStr(reg2,4) + i)/16*16))
    endm
endm
 
YmmMatInsRegMem macro OldIns,reg1,mem2
    irpc i,<012>
        OldIns @CatStr(ymm,%((@SubStr(reg1,4) + i) - (@SubStr(reg1,4) + i)/16*16)),\
                ymmword ptr (mem2 + i * 20h)
    endm    
endm
 
NewMatrixIns2opr macro OldIns,NewIns
    NewIns macro reg1,regmem2
        irp XX,<0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,mem2>
            ifidni <ymm&XX&>,<regmem2>
                YmmMatInsRegReg OldIns,reg1,regmem2
                exitm
            endif
            ifidni <&XX&>,<mem2>
                YmmMatInsRegMem OldIns,reg1,regmem2         
            endif
        endm
    endm
endm
 
NewMatrixIns2opr vmovapd,vmovapdmx
 
;-------------------------------------
YmmMatInsRegRegReg macro OldIns,reg1,reg2,reg3
    irpc i,<012>
        OldIns  @CatStr(ymm,%((@SubStr(reg1,4) + i) - (@SubStr(reg1,4) + i)/16*16)),\
                @CatStr(ymm,%((@SubStr(reg2,4) + i) - (@SubStr(reg2,4) + i)/16*16)),\
                @CatStr(ymm,%((@SubStr(reg3,4) + i) - (@SubStr(reg3,4) + i)/16*16))
    endm
endm
 
YmmMatInsRegRegMem macro OldIns,reg1,reg2,mem3
    irpc i,<012>
        OldIns  @CatStr(ymm,%((@SubStr(reg1,4) + i) - (@SubStr(reg1,4) + i)/16*16)),\
                @CatStr(ymm,%((@SubStr(reg2,4) + i) - (@SubStr(reg2,4) + i)/16*16)),\
                ymmword ptr (mem3 + i * 20h)
    endm
endm
 
NewMatrixIns3opr macro OldIns,NewIns
    NewIns macro reg1,reg2,regmem3
        irp XX,<0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,mem3>
            ifidni <ymm&XX&>,<regmem3>
                YmmMatInsRegRegReg OldIns,reg1,reg2,regmem3
                exitm
            endif
            ifidni <&XX&>,<mem3>
                YmmMatInsRegRegMem OldIns,reg1,rem2,regmem3
            endif
        endm
    endm
endm
 
NewMatrixIns3opr vsubpd,vsubpdmx
NewMatrixIns3opr vaddpd,vaddpdmx
Размещено в Без категории
Просмотров 208 Комментарии 3
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Аватар для XLAT
    AVX2 есть только у не бюджетных процессоров Intel, начиная с ядра Haswell, т.е. с 2013 года, а у AMD они появились в процессорах Ryzen, выпущенных в 2017 году.

    Но дело даже не в этом:
    а в неочевидном профите фокуса оптимизации на цпу, а не на гпу.

    Может у вас есть ответ на вопрос:
    почему разрабы Children of a Dead Earth сделали упор на софтварный рендер,
    а не на вычислительную мощь графических адептов, которые есть даже у телефонов?

    И как результат такого выбора:
    Код:
    "-Визуальная бедность"
        (цитата из отзыва на игру)
    Запись от XLAT размещена 18.02.2020 в 09:26 XLAT вне форума
    Обновил(-а) XLAT 18.02.2020 в 09:43
  2. Старый комментарий
    Аватар для K_ILYA_V
    первое:
    на текущий момент я не в силах написать игру даже на цпу и как следствие не вижу даже смысла предпринимать попытку пытаться чтото сделать на гпу.

    второе:
    своей главной целью на текущий момент я ставлю создание некой демки которую я мог бы продемонстрировать другим людям с целью привлечения их проект. мне видится что людей надо завлекать чемто большим чем фразой "парни я тут такую игру придумал! давайте замутим!"

    третье:
    графическая составляющая. красочность, в данный момент меня не интересует вообще, гораздо больший отклик во мне вызывает возможность реализовать различные орбитальные маневры мало известные широкой публике но как мне представляется способные создать крайне необычные но интересные правила игры.
    Запись от K_ILYA_V размещена 18.02.2020 в 11:35 K_ILYA_V вне форума
  3. Старый комментарий
    Аватар для XLAT
    Цитата:
    Сообщение от K_ILYA_V
    первое:
    ...
    не дай год!
    есть такое мнение:
    "начать делать свой граф движок == сразу убить свой проект."

    Цитата:
    Сообщение от K_ILYA_V
    второе:
    ...
    отличный план!

    Цитата:
    Сообщение от K_ILYA_V
    третье:
    графическая составляющая. красочность, в данный момент меня не интересует вообще, .
    про "красочность" это удел моделеров, художников, музыкантов и т.п..

    Цитата:
    Сообщение от K_ILYA_V
    третье:
    гораздо больший отклик во мне вызывает возможность реализовать различные орбитальные маневры мало известные широкой публике но как мне представляется способные создать крайне необычные но интересные правила игры.
    а это про про скриптинг.
    Запись от XLAT размещена 18.02.2020 в 12:03 XLAT вне форума
    Обновил(-а) XLAT 18.02.2020 в 12:05
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.