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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
bits 64
default rel
%use altreg
section .text
bar equ 0xcc
;; Each instruction group separated by blank should encode identially
;; k_mov kreg size_suffix size_name gpr big_gpr
%macro k_mov 5
kmov%2 %1,[foo]
kmov %1,%3 [foo]
kmov %3 [foo],%1
kmov%2 [foo],%1
kmov %3 [foo],%1
kmov [foo],%3 %1
kmov %3 [foo],%1
kmov%2 %1,%1
kmov %3 %1,%1
kmov %1,%3 %1
kmov%2 %1,%4
kmov%2 %1,%5
kmov %1,%4
kmov %3 %1,%4
kmov %3 %1,%5
kmov %1,%3 %4
%ifidni %4,%5
kmov %1,%5
%endif
kmov%2 %5,%1
%ifidni %4,%5
kmov %5,%1
%endif
kmov %5,%3 %1
%endmacro
;%pragma list options +bempf
;; k_rr op kreg size_suffix size_name
%macro k_rr 4
%1%3 %2,%2
%1 %4 %2,%2
%1 %2,%4 %2
%endmacro
;; k_rri op kreg size_suffix size_name
%macro k_rrr 4
%1%3 %2,%2,%2
%1 %4 %2,%2,%2
%1 %2,%4 %2,%2
%1 %2,%2,%4 %2
%endmacro
;; k_rri op kreg size_suffix size_name
%macro k_rri 4
%1%3 %2,%2,bar
%1 %4 %2,%2,bar
%1 %2,%4 %2,bar
%endmacro
%define size_b byte
%define size_w word
%define size_d dword
%define size_q qword
%define gpr_b b
%define gpr_w w
%define gpr_d d
%define gpr_q
%define bgpr_b d
%define bgpr_w d
%define bgpr_d d
%define bgpr_q
;; k_test size_suffix regno
%macro k_test 2
k_mov k%2,%1,size_%1,%[r %+ %2 %+ gpr_%1],%[r %+ %2 %+ bgpr_%1]
k_rrr kadd,k%2,%1,size_%1
k_rrr kand,k%2,%1,size_%1
k_rrr kandn,k%2,%1,size_%1
k_rrr kand,k%2,%1,size_%1
k_rr knot,k%2,%1,size_%1
k_rrr kor,k%2,%1,size_%1
k_rr kortest,k%2,%1,size_%1
k_rri kshiftl,k%2,%1,size_%1
k_rri kshiftr,k%2,%1,size_%1
k_rr ktest,k%2,%1,size_%1
k_rrr kxnor,k%2,%1,size_%1
k_rrr kxor,k%2,%1,size_%1
%endmacro
%assign nreg 0
%define kreg k %+ nreg
%rep 8
k_test b,nreg
k_test w,nreg
k_test d,nreg
k_test q,nreg
kunpckbw kreg,kreg,kreg
kunpck word kreg,kreg,kreg
kunpck kreg,byte kreg,kreg
kunpck kreg,kreg,byte kreg
kunpck word kreg,byte kreg,kreg
kunpck word kreg,kreg,byte kreg
kunpckwd kreg,kreg,kreg
kunpck dword kreg,kreg,kreg
kunpck kreg,word kreg,kreg
kunpck kreg,kreg,word kreg
kunpck dword kreg,word kreg,kreg
kunpck dword kreg,kreg,word kreg
kunpckdq kreg,kreg,kreg
kunpck qword kreg,kreg,kreg
kunpck kreg,dword kreg,kreg
kunpck kreg,kreg,dword kreg
kunpck qword kreg,dword kreg,kreg
kunpck qword kreg,kreg,dword kreg
%assign nreg nreg+1
%endrep
section .bss
foo resq 1
|