mirror of
https://github.com/NishiOwO/JWasm.git
synced 2025-04-21 16:54:39 +00:00
Move regression tests out
This commit is contained in:
parent
4cf3526562
commit
9e74caf15d
@ -1,56 +0,0 @@
|
||||
|
||||
;--- invalid operator arguments
|
||||
|
||||
.286
|
||||
.model small
|
||||
|
||||
.code
|
||||
|
||||
v1 db 0
|
||||
|
||||
mov ax, type 0 ;ok
|
||||
|
||||
mov ax, seg 0
|
||||
mov ax, offset 0;ok
|
||||
|
||||
mov ax, length 0
|
||||
mov ax, size 0
|
||||
mov ax, lengthof 0
|
||||
mov ax, sizeof 0
|
||||
|
||||
mov ax, seg bx
|
||||
mov ax, offset bx
|
||||
mov ax, length bx
|
||||
mov ax, size bx
|
||||
mov ax, lengthof bx
|
||||
mov ax, sizeof bx
|
||||
mov al, HIGH bx
|
||||
mov al, LOW bx]
|
||||
mov ax, HIGHWORD bx
|
||||
mov ax, LOWWORD bx
|
||||
|
||||
mov ax, seg [bx]
|
||||
mov ax, offset [bx]
|
||||
mov ax, length [bx]
|
||||
mov ax, size [bx]
|
||||
mov ax, lengthof [bx]
|
||||
mov ax, sizeof [bx]
|
||||
mov al, HIGH [bx]
|
||||
mov al, LOW [bx]
|
||||
mov ax, HIGHWORD [bx]
|
||||
mov ax, LOWWORD [bx]
|
||||
|
||||
mov ax, seg _TEXT ;ok
|
||||
mov ax, offset _TEXT ;ok
|
||||
mov ax, length _TEXT ;expected data label
|
||||
mov ax, size _TEXT ;expected data label
|
||||
mov ax, lengthof _TEXT ;expected data label
|
||||
mov ax, sizeof _TEXT ;expected data label
|
||||
mov al, HIGH _TEXT ;should be an error
|
||||
mov al, LOW _TEXT ;should be an error
|
||||
mov ax, HIGHWORD _TEXT
|
||||
mov ax, LOWWORD _TEXT ;should be an error
|
||||
|
||||
mov ax, length (v1+1) ;should be an error, but is currently accepted
|
||||
|
||||
end
|
@ -1,30 +0,0 @@
|
||||
ABS1.ASO(13) : Error A2228: Invalid operand for SEG: 0
|
||||
ABS1.ASO(16) : Error A2228: Invalid operand for LENGTH: 0
|
||||
ABS1.ASO(17) : Error A2228: Invalid operand for SIZE: 0
|
||||
ABS1.ASO(18) : Error A2228: Invalid operand for LENGTHOF: 0
|
||||
ABS1.ASO(19) : Error A2228: Invalid operand for SIZEOF: 0
|
||||
ABS1.ASO(21) : Error A2228: Invalid operand for SEG: bx
|
||||
ABS1.ASO(22) : Error A2228: Invalid operand for OFFSET: bx
|
||||
ABS1.ASO(23) : Error A2228: Invalid operand for LENGTH: bx
|
||||
ABS1.ASO(24) : Error A2228: Invalid operand for SIZE: bx
|
||||
ABS1.ASO(25) : Error A2228: Invalid operand for LENGTHOF: bx
|
||||
ABS1.ASO(26) : Error A2228: Invalid operand for SIZEOF: bx
|
||||
ABS1.ASO(27) : Error A2228: Invalid operand for HIGH: bx
|
||||
ABS1.ASO(28) : Error A2228: Invalid operand for LOW: bx
|
||||
ABS1.ASO(29) : Error A2228: Invalid operand for HIGHWORD: bx
|
||||
ABS1.ASO(30) : Error A2228: Invalid operand for LOWWORD: bx
|
||||
ABS1.ASO(32) : Error A2228: Invalid operand for SEG: [bx]
|
||||
ABS1.ASO(33) : Error A2228: Invalid operand for OFFSET: [bx]
|
||||
ABS1.ASO(34) : Error A2228: Invalid operand for LENGTH: [bx]
|
||||
ABS1.ASO(35) : Error A2228: Invalid operand for SIZE: [bx]
|
||||
ABS1.ASO(36) : Error A2228: Invalid operand for LENGTHOF: [bx]
|
||||
ABS1.ASO(37) : Error A2228: Invalid operand for SIZEOF: [bx]
|
||||
ABS1.ASO(38) : Error A2228: Invalid operand for HIGH: [bx]
|
||||
ABS1.ASO(39) : Error A2228: Invalid operand for LOW: [bx]
|
||||
ABS1.ASO(40) : Error A2228: Invalid operand for HIGHWORD: [bx]
|
||||
ABS1.ASO(41) : Error A2228: Invalid operand for LOWWORD: [bx]
|
||||
ABS1.ASO(45) : Error A2232: Expected data label
|
||||
ABS1.ASO(46) : Error A2232: Expected data label
|
||||
ABS1.ASO(47) : Error A2232: Expected data label
|
||||
ABS1.ASO(48) : Error A2232: Expected data label
|
||||
ABS1.ASO(51) : Error A2228: Invalid operand for HIGHWORD: _TEXT
|
@ -1,26 +0,0 @@
|
||||
|
||||
;--- "absolute" externals
|
||||
|
||||
.286
|
||||
.model small
|
||||
|
||||
externdef E1:abs
|
||||
|
||||
.code
|
||||
|
||||
mov ax, seg E1 ;is to fail
|
||||
mov ax, offset E1
|
||||
mov ax, low E1
|
||||
mov ax, high E1
|
||||
mov ax, lowword E1
|
||||
mov ax, highword E1 ;is to fail
|
||||
mov ax, type E1
|
||||
mov ax, opattr E1
|
||||
mov ax, .type E1
|
||||
|
||||
mov ax, length E1
|
||||
mov ax, size E1
|
||||
mov ax, lengthof E1 ;jwasm rejects
|
||||
mov ax, sizeof E1 ;jwasm rejects
|
||||
|
||||
end
|
@ -1,4 +0,0 @@
|
||||
ABSEXT.ASO(11) : Error A2188: Operand must be relocatable
|
||||
ABSEXT.ASO(16) : Error A2228: Invalid operand for HIGHWORD: E1
|
||||
ABSEXT.ASO(23) : Error A2232: Expected data label
|
||||
ABSEXT.ASO(24) : Error A2232: Expected data label
|
@ -1,31 +0,0 @@
|
||||
|
||||
;--- absolute segments
|
||||
|
||||
.286
|
||||
|
||||
ABSSEG segment 'CODE' at 50h
|
||||
label1 label far
|
||||
dd ?
|
||||
label2 label far
|
||||
ABSSEG ends
|
||||
|
||||
_TEXT segment word public 'CODE'
|
||||
|
||||
start:
|
||||
mov ah,4ch
|
||||
int 21h
|
||||
|
||||
mov ax, ABSSEG
|
||||
jmp label1
|
||||
jmp label2
|
||||
dw ABSSEG
|
||||
dd label1
|
||||
dd label2
|
||||
|
||||
_TEXT ends
|
||||
|
||||
STACK segment stack 'STACK'
|
||||
db 100h dup (?)
|
||||
STACK ends
|
||||
|
||||
End start
|
Binary file not shown.
@ -1,18 +0,0 @@
|
||||
|
||||
;--- absolute segments with -bin
|
||||
;--- didn't fully work prior to v2.10
|
||||
|
||||
.286
|
||||
|
||||
_07C0 segment at 07C0h
|
||||
org 100h
|
||||
l100:
|
||||
_07C0 ends
|
||||
|
||||
_TEXT segment 'CODE'
|
||||
|
||||
jmp _07C0:l100
|
||||
|
||||
_TEXT ends
|
||||
|
||||
end
|
Binary file not shown.
@ -1,18 +0,0 @@
|
||||
|
||||
;--- absolute segments with -bin
|
||||
;--- didn't fully work prior to v2.10
|
||||
|
||||
.386
|
||||
|
||||
_0010 segment at 0010h
|
||||
org 87654321h
|
||||
l87654321:
|
||||
_0010 ends
|
||||
|
||||
_TEXT segment 'CODE'
|
||||
|
||||
jmp _0010:l87654321
|
||||
|
||||
_TEXT ends
|
||||
|
||||
end
|
Binary file not shown.
@ -1,25 +0,0 @@
|
||||
|
||||
;--- test ALIAS (OMF)
|
||||
;--- no error expected
|
||||
|
||||
.286
|
||||
.model small
|
||||
.dosseg
|
||||
|
||||
.stack 200h
|
||||
|
||||
includelib <alias1.lib>
|
||||
|
||||
.data
|
||||
|
||||
externdef var1:byte
|
||||
externdef var2:byte
|
||||
|
||||
.code
|
||||
start:
|
||||
mov al,var1
|
||||
mov al,var2
|
||||
mov ah,4Ch
|
||||
int 21h
|
||||
|
||||
END start
|
Binary file not shown.
@ -1,21 +0,0 @@
|
||||
|
||||
;--- externals, 16-bit
|
||||
;--- becomes alias1.lib
|
||||
|
||||
.286
|
||||
.model small
|
||||
|
||||
.data
|
||||
|
||||
;--- syntax: ALIAS <alias> = <actual-name>
|
||||
|
||||
ALIAS <var1> = <var1x>
|
||||
ALIAS <var2> = <var2x>
|
||||
|
||||
public var1x
|
||||
public var2x
|
||||
|
||||
var1x db 0
|
||||
var2x db 0
|
||||
|
||||
End
|
Binary file not shown.
@ -1,27 +0,0 @@
|
||||
|
||||
;--- ALIAS segment attribute changes
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
W segment ALIAS("abc")
|
||||
W ends
|
||||
W segment ALIAS("abc")
|
||||
W ends
|
||||
|
||||
X segment ALIAS("abc")
|
||||
X ends
|
||||
X segment ALIAS("def") ;should be an error
|
||||
X ends
|
||||
|
||||
Y segment ALIAS("abc")
|
||||
Y ends
|
||||
Y segment
|
||||
Y ends
|
||||
|
||||
Z segment
|
||||
Z ends
|
||||
Z segment ALIAS("abc") ;should be an error
|
||||
Z ends
|
||||
|
||||
End
|
@ -1,2 +0,0 @@
|
||||
ALIAS2.ASC(14) : Error A2078: Segment definition changed: X, alias
|
||||
ALIAS2.ASC(24) : Error A2078: Segment definition changed: Z, alias
|
@ -1,61 +0,0 @@
|
||||
|
||||
;--- test ALIGNMENT
|
||||
|
||||
.386
|
||||
|
||||
S1 struct
|
||||
f1 db ?
|
||||
align 4
|
||||
f2 dw ?
|
||||
S1 ends
|
||||
|
||||
S2 struct 4
|
||||
f1 db ?
|
||||
align
|
||||
f2 dw ?
|
||||
S2 ends
|
||||
|
||||
_TEXT segment para public 'CODE'
|
||||
|
||||
int 3
|
||||
align 8
|
||||
int 3
|
||||
int 3
|
||||
align 8
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
align 8
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
align 8
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
align 8
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
align 8
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
int 3
|
||||
align 8
|
||||
|
||||
S1 <1,2>
|
||||
S2 <1,2>
|
||||
|
||||
_TEXT ends
|
||||
|
||||
END
|
Binary file not shown.
@ -1,14 +0,0 @@
|
||||
|
||||
.286
|
||||
|
||||
_TEXT segment word public 'CODE'
|
||||
db ? ;0
|
||||
even ;1 should NOT emit data (works with v2.04+)
|
||||
mov ax,1 ;2-4
|
||||
dw ? ;5-6
|
||||
even ;7 should NOT emit data (works with v2.04+)
|
||||
mov ax,2 ;8-10
|
||||
db ?
|
||||
_TEXT ends
|
||||
|
||||
end
|
Binary file not shown.
@ -1,46 +0,0 @@
|
||||
|
||||
.386
|
||||
.model flat, stdcall
|
||||
option casemap:none
|
||||
|
||||
.data
|
||||
|
||||
v1 db 0
|
||||
|
||||
align E1 ;error 'symbol not defined'
|
||||
E1 equ 4
|
||||
align 3 ;must be power of 2
|
||||
|
||||
align 64 ;incompatible with segment alignment
|
||||
|
||||
S1 struct 5 ;must be power of 2
|
||||
S1 ends
|
||||
|
||||
S2 struct 256
|
||||
db ?
|
||||
S2 ends
|
||||
|
||||
S3 struct
|
||||
db ?
|
||||
align 65536 ;should work, no integer overflow
|
||||
S3 ends
|
||||
|
||||
S4 struct E2 ;err 'symbol not defined'
|
||||
db ?
|
||||
S4 ends
|
||||
|
||||
E2 equ 4
|
||||
|
||||
S5 struct
|
||||
db ?
|
||||
align 5 ;must be power of 2
|
||||
db ?
|
||||
S5 ends
|
||||
|
||||
align v1 ;constant expected
|
||||
|
||||
S6 struct v1 ;constant expected
|
||||
db ?
|
||||
S6 ends
|
||||
|
||||
end
|
@ -1,9 +0,0 @@
|
||||
ALIGN3.ASO(10) : Error A2102: Symbol not defined : E1
|
||||
ALIGN3.ASO(12) : Error A2129: number must be a power of 2: 3
|
||||
ALIGN3.ASO(14) : Warning A4130: Incompatible with segment alignment: 64
|
||||
ALIGN3.ASO(16) : Error A2129: number must be a power of 2: 5
|
||||
ALIGN3.ASO(19) : Error A2214: Struct alignment must be 1, 2, 4, 8, 16 or 32
|
||||
ALIGN3.ASO(28) : Error A2102: Symbol not defined : E2
|
||||
ALIGN3.ASO(36) : Error A2129: number must be a power of 2: 5
|
||||
ALIGN3.ASO(40) : Error A2065: Constant expected
|
||||
ALIGN3.ASO(42) : Error A2065: Constant expected
|
@ -1,16 +0,0 @@
|
||||
|
||||
;--- alignment values in 16-bit
|
||||
|
||||
code segment dword 'CODE'
|
||||
nop
|
||||
align 4
|
||||
nop
|
||||
nop
|
||||
align 4 ;since v2.11, jwasm emits 8B C0 ( like Masm ); previously it was 89 C0
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
align 4
|
||||
code ends
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
<EFBFBD>.‹À<E280B9><C380>‹À<E280B9><C380><EFBFBD><EFBFBD>
|
@ -1,45 +0,0 @@
|
||||
|
||||
;--- arithmetic instructions
|
||||
;--- see arith2.asm for immediate as second operand
|
||||
;--- note that jwasm's code generation is to match Masm v8.
|
||||
;--- Masm v6 encodes the cmp instruction differently if
|
||||
;--- operands are byte registers.
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
.code
|
||||
|
||||
vb label byte
|
||||
vw label word
|
||||
vd label dword
|
||||
|
||||
op macro instr
|
||||
;;
|
||||
instr al,cl
|
||||
instr al,vb
|
||||
instr bl,cl
|
||||
instr bl,vb
|
||||
instr vb,al
|
||||
instr vb,bl
|
||||
;;
|
||||
instr ax,cx
|
||||
instr ax,vw
|
||||
instr bx,cx
|
||||
instr bx,vw
|
||||
instr vw,ax
|
||||
instr vw,bx
|
||||
;;
|
||||
instr eax,ecx
|
||||
instr eax,vd
|
||||
instr ebx,ecx
|
||||
instr ebx,vd
|
||||
instr vd,eax
|
||||
instr vd,ebx
|
||||
endm
|
||||
|
||||
for x,<add,or,adc,sbb,and,sub,xor,cmp>
|
||||
op x
|
||||
endm
|
||||
|
||||
end
|
Binary file not shown.
@ -1,39 +0,0 @@
|
||||
|
||||
;--- arithmetic instructions
|
||||
;--- second operand is immediate
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
.code
|
||||
|
||||
vb label byte
|
||||
vw label word
|
||||
vd label dword
|
||||
|
||||
op macro instr
|
||||
;;
|
||||
instr al,80h
|
||||
instr cl,80h
|
||||
instr vb,80h
|
||||
;;
|
||||
instr ax,7fh
|
||||
instr cx,7fh
|
||||
instr vw,7fh
|
||||
instr ax,80h
|
||||
instr cx,80h
|
||||
instr vw,80h
|
||||
;;
|
||||
instr eax,7fh
|
||||
instr ecx,7fh
|
||||
instr vd,7fh
|
||||
instr eax,80h
|
||||
instr ecx,80h
|
||||
instr vd,80h
|
||||
endm
|
||||
|
||||
for x,<add,or,adc,sbb,and,sub,xor,cmp>
|
||||
op x
|
||||
endm
|
||||
|
||||
end
|
Binary file not shown.
@ -1,26 +0,0 @@
|
||||
|
||||
;--- arithmetic instructions
|
||||
;--- second operand is immediate and too large
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
.code
|
||||
|
||||
vb label byte
|
||||
vw label word
|
||||
vd label dword
|
||||
|
||||
add al,100h
|
||||
add cl,100h
|
||||
add vb,100h
|
||||
|
||||
add ax,10000h ;accepted by Masm
|
||||
add cx,10000h ;accepted by Masm
|
||||
add vw,10000h ;accepted by Masm
|
||||
|
||||
add eax,100000000h
|
||||
add ecx,100000000h
|
||||
add vd, 100000000h
|
||||
|
||||
end
|
@ -1,9 +0,0 @@
|
||||
ARITH3.ASO(14) : Error A2048: Operands must be the same size: 1 - 2
|
||||
ARITH3.ASO(15) : Error A2048: Operands must be the same size: 1 - 2
|
||||
ARITH3.ASO(16) : Error A2048: Operands must be the same size: 1 - 2
|
||||
ARITH3.ASO(18) : Error A2048: Operands must be the same size: 2 - 4
|
||||
ARITH3.ASO(19) : Error A2048: Operands must be the same size: 2 - 4
|
||||
ARITH3.ASO(20) : Error A2048: Operands must be the same size: 2 - 4
|
||||
ARITH3.ASO(22) : Error A2235: Constant value too large: 100000000h
|
||||
ARITH3.ASO(23) : Error A2235: Constant value too large: 100000000h
|
||||
ARITH3.ASO(24) : Error A2235: Constant value too large: 100000000h
|
@ -1,54 +0,0 @@
|
||||
|
||||
ifdef __JWASM__
|
||||
.x64
|
||||
.model flat
|
||||
endif
|
||||
|
||||
.code
|
||||
|
||||
vb db 0
|
||||
vw dw 0
|
||||
vd dd 0
|
||||
vq dq 0
|
||||
|
||||
op macro instr
|
||||
;;
|
||||
instr al,cl
|
||||
instr al,1
|
||||
instr al,vb
|
||||
instr vb,1
|
||||
instr vb,al
|
||||
;;
|
||||
instr ax,cx
|
||||
instr ax,1
|
||||
instr ax,vw
|
||||
instr ax,1234h
|
||||
instr bx,1234h
|
||||
instr vw,1
|
||||
instr vw,1234h
|
||||
instr vw,ax
|
||||
;;
|
||||
instr eax,ecx
|
||||
instr eax,1
|
||||
instr eax,vd
|
||||
instr eax,1234h
|
||||
instr ebx,1234h
|
||||
instr vd,1
|
||||
instr vd,1234h
|
||||
instr vd,eax
|
||||
;;
|
||||
instr rax,rcx
|
||||
instr rax,1
|
||||
instr rax,vq
|
||||
instr rax,1234h
|
||||
instr rbx,1234h
|
||||
instr vq,1
|
||||
instr vq,1234h
|
||||
instr vq,rax
|
||||
endm
|
||||
|
||||
for x,<add,or,adc,sbb,and,sub,xor,cmp>
|
||||
op x
|
||||
endm
|
||||
|
||||
end
|
Binary file not shown.
@ -1,46 +0,0 @@
|
||||
|
||||
;--- test ARPL. This is a somewhat special case
|
||||
;--- because although it has 16-bit operands the
|
||||
;--- size prefix (066h) should NOT be set in 32-bit code.
|
||||
;--- There are a few similiar opcodes (LLDT, SMSW, ... ), but those
|
||||
;--- are 2 byte opcodes that can be marked with F_0FNO66 to achieve
|
||||
;--- the same effect.
|
||||
|
||||
.286p
|
||||
.model small
|
||||
.386p
|
||||
|
||||
.data
|
||||
|
||||
vw label word
|
||||
|
||||
.code
|
||||
|
||||
arpl ax,bx
|
||||
lldt ax
|
||||
lmsw ax
|
||||
ltr ax
|
||||
sldt ax
|
||||
smsw ax
|
||||
str ax
|
||||
verr ax
|
||||
verw ax
|
||||
|
||||
arpl vw,ax
|
||||
lldt vw
|
||||
lmsw vw
|
||||
ltr vw
|
||||
sldt vw
|
||||
smsw vw
|
||||
str vw
|
||||
verr vw
|
||||
verw vw
|
||||
|
||||
ret
|
||||
|
||||
_TEXT32 segment use32
|
||||
arpl vw,ax
|
||||
lldt vw
|
||||
_TEXT32 ends
|
||||
|
||||
end
|
BIN
Regress/ARPL.EXP
BIN
Regress/ARPL.EXP
Binary file not shown.
@ -1,23 +0,0 @@
|
||||
|
||||
;--- valid assumes
|
||||
|
||||
.286
|
||||
.model small
|
||||
|
||||
S1 struct
|
||||
db ?
|
||||
f1 db ?
|
||||
S1 ends
|
||||
|
||||
assume ds:_TEXT
|
||||
assume cs:ds
|
||||
assume bx:ptr
|
||||
assume es:DGROUP
|
||||
assume bx:ptr WORD
|
||||
assume bx:ptr S1
|
||||
|
||||
.code
|
||||
|
||||
mov al,[bx].f1
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
絵
|
@ -1,34 +0,0 @@
|
||||
|
||||
;--- assumed type is not to override type of variable.
|
||||
;--- regression in v2.08-2.09.
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
CV_LTYPE_STRUCT STRUC
|
||||
CV_LTYPE_GTYPE DD ?
|
||||
CV_LTYPE_NAMEOFF DB ?
|
||||
CV_LTYPE_FLAGS DB ?
|
||||
DW ?
|
||||
CV_LTYPE_NEST_LEVEL DD ?
|
||||
CV_LTYPE_CIRC_CNT DD ?
|
||||
CV_LTYPE_CIRC1 DD ?
|
||||
CV_LTYPE_STRUCT ENDS
|
||||
|
||||
STD_PTR_S STRUC
|
||||
DD ?
|
||||
DD ?
|
||||
DD ?
|
||||
DD ?
|
||||
STD_PTRS DD 4 DUP(?)
|
||||
STD_PTR_S ENDS
|
||||
|
||||
.code
|
||||
|
||||
array STD_PTR_S <>
|
||||
|
||||
assume esi:ptr CV_LTYPE_STRUCT
|
||||
xor esi, esi
|
||||
mov esi, array[esi*4].STD_PTRS
|
||||
|
||||
END
|
Binary file not shown.
@ -1,32 +0,0 @@
|
||||
|
||||
;--- weird masm feature: ASSUME may have
|
||||
;--- an effect for lines located BEFORE the assume.
|
||||
;--- looks like the assumes are not reset when a new pass starts.
|
||||
|
||||
;--- see adjustment in assume.c, AssumeInit()
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
S1 STRUCT
|
||||
DD ?
|
||||
s1f1 DD ?
|
||||
S1 ENDS
|
||||
|
||||
S2 STRUCT
|
||||
DW ?
|
||||
s2f1 DD ?
|
||||
S2 ENDS
|
||||
|
||||
.CODE
|
||||
|
||||
MOV EAX,[EDI].s1f1
|
||||
|
||||
assume edi:ptr S2
|
||||
|
||||
MOV EAX,[EDI].s2f1
|
||||
|
||||
ASSUME EDI:ptr S1 ;makes masm accept first "mov"
|
||||
|
||||
END
|
||||
|
@ -1 +0,0 @@
|
||||
季季
|
@ -1,21 +0,0 @@
|
||||
|
||||
;--- similar to assume11.asm, but with scalar types
|
||||
;--- this variant is NOT supposed to work!
|
||||
|
||||
;--- there's an additional problem, because jwasm emits a warning
|
||||
;--- in pass 1 in this case - which would be very misleading if the
|
||||
;--- later ASSUME remained in effect.
|
||||
|
||||
.386
|
||||
.model flat, stdcall
|
||||
option casemap:none
|
||||
|
||||
.code
|
||||
|
||||
mov [eax],1 ;jwasm emits warning ( assumed byte )
|
||||
|
||||
assume eax:ptr WORD
|
||||
|
||||
mov [eax],1234h
|
||||
|
||||
END
|
@ -1,17 +0,0 @@
|
||||
|
||||
;--- pointer dereference
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
S1 struct
|
||||
f1 dw ?
|
||||
f2 dw ?
|
||||
S1 ends
|
||||
|
||||
.code
|
||||
|
||||
assume esi:ptr ptr S1 ;2 levels of indirection!
|
||||
mov [esi].f2, 1 ;shouldn't be accepted
|
||||
|
||||
end
|
@ -1,2 +0,0 @@
|
||||
ASSUME13.ASO(15) : Warning A4073: Size not specified, assuming: BYTE
|
||||
ASSUME13.ASO(15) : Error A2102: Symbol not defined : f2
|
@ -1,21 +0,0 @@
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
MemBlock struct
|
||||
m_ptr DWORD ?
|
||||
m_size DWORD ?
|
||||
MemBlock ends
|
||||
|
||||
MemBlockPTR TYPEDEF PTR MemBlock
|
||||
|
||||
.code
|
||||
|
||||
ASSUME edx:MemBlockPTR, ecx:ptr MemBlock
|
||||
|
||||
mov eax,[edx].m_ptr
|
||||
mov ebx,[ecx].m_size
|
||||
mov eax,[ecx].m_size[ebx] ;fails with v2.05
|
||||
ret
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
‹‹Y‹DÃ
|
@ -1,24 +0,0 @@
|
||||
|
||||
; standard register ASSUMEs prior to v2.07 were handled incompatible with masm.
|
||||
; in masm, a potential assume of the LAST register has higher priority.
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
S1 struct
|
||||
v1 dd ?
|
||||
S1 ends
|
||||
|
||||
S2 struct
|
||||
v2 dd ?
|
||||
S2 ends
|
||||
|
||||
.code
|
||||
|
||||
assume eax:ptr S1
|
||||
assume edx:ptr S2
|
||||
mov [ecx+eax].v1,0 ; Fails with jwasm < 2.06.
|
||||
mov [edx+eax].v1,0 ; Fails with jwasm < 2.06.
|
||||
mov [eax+edx].v1,0 ; Works with jwasm < 2.06. Should fail.
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
ASSUME3.ASO(22) : Error A2063: Symbol not defined : S2.v1
|
@ -1,40 +0,0 @@
|
||||
|
||||
;--- type assumes
|
||||
;--- a part of this file is now assume7.aso
|
||||
|
||||
.386
|
||||
.model flat, stdcall
|
||||
|
||||
S1 struct
|
||||
f1 dd ?
|
||||
S1 ends
|
||||
|
||||
SDEF struct
|
||||
f1 dd ?
|
||||
SDEF ends
|
||||
|
||||
.code
|
||||
|
||||
;--- assume a defined struct
|
||||
assume ecx:ptr SDEF
|
||||
mov eax,[ecx].f1 ;Masm ok, JWasm ok
|
||||
mov eax,[ecx].S1.f1 ;Masm error, JWasm error (p1)
|
||||
|
||||
if 0
|
||||
;--- assume an undefined struct
|
||||
assume ecx:ptr SUNDEF
|
||||
mov eax,[ecx].f1 ;Masm error, JWasm error (p2)
|
||||
mov eax,[ecx].S1.f1 ;Masm ok, JWasm ok
|
||||
|
||||
;--- assume a not yet defined struct
|
||||
assume ecx:ptr SFWD
|
||||
mov eax,[ecx].f1 ;Masm ok, JWasm8 ok, JWasm7 error
|
||||
mov eax,[ecx].S1.f1 ;Masm ok, JWasm8 error (p2), JWasm7 ok
|
||||
|
||||
SFWD struct
|
||||
f1 dd ?
|
||||
SFWD ends
|
||||
|
||||
endif
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
ASSUME4.ASO(21) : Error A2063: Symbol not defined : SDEF.S1
|
@ -1,43 +0,0 @@
|
||||
|
||||
;--- masm accepts 1,3; rejects 2,4
|
||||
;--- jwasm v2.06 (and pred.) accepts 1,2,3,4
|
||||
;--- jwasm v2.07pre rejects 3,4
|
||||
;--- jwasm v2.07 rejects 4 in p1, 2 in p2
|
||||
;--- jwasm v2.08 splitted test case (errors in P2 now in assume9.aso)
|
||||
|
||||
.386
|
||||
.model flat
|
||||
option casemap:none
|
||||
|
||||
S1 STRUCT
|
||||
lParam dd ?
|
||||
S1 ENDS
|
||||
|
||||
S2 STRUCT
|
||||
left dd ?
|
||||
S2 ENDS
|
||||
|
||||
S3 STRUCT
|
||||
x dd ?
|
||||
S3 ENDS
|
||||
|
||||
.code
|
||||
|
||||
assume ebx:ptr S2
|
||||
mov eax, [ebx].left ;1. ok
|
||||
;--- override the ASSUME
|
||||
mov eax, [ebx.S1.lParam] ;3. ok
|
||||
mov eax, [ebx].S1.lParam ;4. rejected (p1)
|
||||
;--- special
|
||||
mov eax, [ebx+ecx].left ;ok
|
||||
mov eax, [ebx+1].left ;ok
|
||||
mov eax, [ebx][1].left ;ok
|
||||
mov eax, S1.lParam[ebx] ;ok
|
||||
|
||||
assume ecx:ptr S3
|
||||
mov eax, [ecx][ebx].left ;ok
|
||||
mov eax, [ecx+ebx].left ;ok
|
||||
mov eax, [ebx+ecx].left ;rejected (p1)
|
||||
mov eax, [ebx][ecx].left ;rejected (p1)
|
||||
|
||||
end
|
@ -1,3 +0,0 @@
|
||||
ASSUME5.ASO(30) : Error A2063: Symbol not defined : S2.S1
|
||||
ASSUME5.ASO(40) : Error A2063: Symbol not defined : S3.left
|
||||
ASSUME5.ASO(41) : Error A2063: Symbol not defined : S3.left
|
@ -1,20 +0,0 @@
|
||||
|
||||
;--- register assume overwritten by type coercion
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
VFT struct
|
||||
mt1 dd ?
|
||||
mt2 dd ?
|
||||
VFT ends
|
||||
|
||||
DMY struct
|
||||
DMY ends
|
||||
|
||||
.code
|
||||
|
||||
assume edx:ptr DMY
|
||||
call (VFT ptr [edx - 4]).mt1
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
<EFBFBD>R<EFBFBD>
|
@ -1,29 +0,0 @@
|
||||
|
||||
;--- type assumes
|
||||
;--- for v2.08, this was part of assume4.aso. It has been
|
||||
;--- split because some errors occur now in pass 2 only.
|
||||
|
||||
.386
|
||||
.model flat, stdcall
|
||||
|
||||
S1 struct
|
||||
f1 dd ?
|
||||
S1 ends
|
||||
|
||||
.code
|
||||
|
||||
;--- assume an undefined struct
|
||||
assume ecx:ptr SUNDEF
|
||||
mov eax,[ecx].f1 ;Masm error, JWasm error (p2)
|
||||
mov eax,[ecx].S1.f1 ;Masm ok, JWasm ok
|
||||
|
||||
;--- assume a not yet defined struct
|
||||
assume ecx:ptr SFWD
|
||||
mov eax,[ecx].f1 ;Masm ok, JWasm8 ok, JWasm7 error
|
||||
mov eax,[ecx].S1.f1 ;Masm ok, JWasm8 error (p2), JWasm7 ok
|
||||
|
||||
SFWD struct
|
||||
f1 dd ?
|
||||
SFWD ends
|
||||
|
||||
end
|
@ -1,2 +0,0 @@
|
||||
ASSUME7.ASO(17) : Error A2063: Symbol not defined : SUNDEF.f1
|
||||
ASSUME7.ASO(23) : Error A2063: Symbol not defined : SFWD.S1
|
@ -1,22 +0,0 @@
|
||||
|
||||
;--- rejected assume definitions
|
||||
|
||||
.286
|
||||
.model small
|
||||
.data
|
||||
v1 dw 0
|
||||
.code
|
||||
assume es:[bx]
|
||||
assume es:_DATA:[bx]
|
||||
assume es:bx
|
||||
assume es:DGROUP:[1]
|
||||
assume es:DGROUP:v1
|
||||
assume es:_DATA+1
|
||||
assume es:offset _DATA
|
||||
assume es:FLAT
|
||||
assume es:_DATA ;ok
|
||||
assume es:SEG _DATA ;ok
|
||||
assume es:DGROUP ;ok
|
||||
assume es:ds ;ok
|
||||
mov ax,v1
|
||||
end
|
@ -1,8 +0,0 @@
|
||||
ASSUME8.ASO(9) : Error A2069: Segment, group or segment register expected
|
||||
ASSUME8.ASO(10) : Error A2069: Segment, group or segment register expected
|
||||
ASSUME8.ASO(11) : Error A2069: Segment, group or segment register expected
|
||||
ASSUME8.ASO(12) : Error A2069: Segment, group or segment register expected
|
||||
ASSUME8.ASO(13) : Error A2069: Segment, group or segment register expected
|
||||
ASSUME8.ASO(14) : Error A2069: Segment, group or segment register expected
|
||||
ASSUME8.ASO(15) : Error A2069: Segment, group or segment register expected
|
||||
ASSUME8.ASO(16) : Error A2030: Instruction or register not accepted in current CPU mode
|
@ -1,37 +0,0 @@
|
||||
|
||||
;--- masm accepts 1,3; rejects 2,4
|
||||
;--- jwasm v2.06 (and pred.) accepts 1,2,3,4
|
||||
;--- jwasm v2.07pre rejects 3,4
|
||||
;--- jwasm v2.07 rejects 4 in p1, 2 in p2
|
||||
;--- jwasm v2.08: errors of assume5 in pass 2 (undefined symbol)
|
||||
|
||||
.386
|
||||
.model flat
|
||||
option casemap:none
|
||||
|
||||
S1 STRUCT
|
||||
lParam dd ?
|
||||
S1 ENDS
|
||||
|
||||
S2 STRUCT
|
||||
left dd ?
|
||||
S2 ENDS
|
||||
|
||||
S3 STRUCT
|
||||
x dd ?
|
||||
S3 ENDS
|
||||
|
||||
.code
|
||||
|
||||
assume ebx:ptr S2
|
||||
mov eax, [ebx].left ;1. ok
|
||||
mov eax, [ebx.left] ;2. rejected, 'symbol not defined'
|
||||
;--- override the ASSUME
|
||||
mov eax, [ebx.S1.lParam] ;3. ok
|
||||
;--- special
|
||||
mov eax, [ebx.S1.lParam].left ;rejected, 'symbol not defined'
|
||||
mov eax, S1.lParam[ebx] ;ok
|
||||
mov eax, S1.lParam[ebx].left ;Masm rejected, 'symbol not defined'; jwasm v2.08: ok
|
||||
mov eax, S1.lParam[ebx.left] ;rejected, 'symbol not defined'
|
||||
|
||||
end
|
@ -1,3 +0,0 @@
|
||||
ASSUME9.ASO(28) : Error A2102: Symbol not defined : left
|
||||
ASSUME9.ASO(32) : Error A2102: Symbol not defined : left
|
||||
ASSUME9.ASO(35) : Error A2102: Symbol not defined : left
|
476
Regress/AVX1.ASM
476
Regress/AVX1.ASM
@ -1,476 +0,0 @@
|
||||
|
||||
;--- AVX, 32-bit
|
||||
|
||||
.686
|
||||
.model flat
|
||||
.xmm
|
||||
|
||||
.data
|
||||
|
||||
m08 label byte
|
||||
m16 label word
|
||||
m32 label dword
|
||||
m64 label mmword
|
||||
m128 label xmmword
|
||||
m256 label ymmword
|
||||
|
||||
.code
|
||||
if 1
|
||||
;--- new AVX instructions
|
||||
vbroadcastss xmm0, m32
|
||||
vbroadcastss ymm0, m32
|
||||
vbroadcastsd ymm0, m64
|
||||
vbroadcastf128 ymm0, m128
|
||||
|
||||
vinsertf128 ymm0, ymm1, xmm1, 1
|
||||
vinsertf128 ymm0, ymm1, m128, 2
|
||||
vextractf128 xmm0, ymm0, 1
|
||||
vextractf128 m128, ymm0, 2
|
||||
|
||||
vmaskmovps xmm0, xmm1, m128
|
||||
vmaskmovps ymm0, ymm1, m256
|
||||
vmaskmovps m128, xmm0, xmm1
|
||||
vmaskmovps m256, ymm0, ymm1
|
||||
|
||||
vmaskmovpd xmm0, xmm1, m128
|
||||
vmaskmovpd ymm0, ymm1, m256
|
||||
vmaskmovpd m128, xmm0, xmm1
|
||||
vmaskmovpd m256, ymm0, ymm1
|
||||
|
||||
vpermilpd xmm0, xmm1, xmm2
|
||||
vpermilpd xmm0, xmm1, m128
|
||||
vpermilpd xmm0, xmm1, 1
|
||||
vpermilpd ymm0, ymm1, ymm2
|
||||
vpermilpd ymm0, ymm1, m256
|
||||
vpermilpd ymm0, ymm1, 1
|
||||
|
||||
vpermilps xmm0, xmm1, xmm2
|
||||
vpermilps xmm0, xmm1, m128
|
||||
vpermilps xmm0, xmm1, 1
|
||||
vpermilps ymm0, ymm1, ymm2
|
||||
vpermilps ymm0, ymm1, m256
|
||||
vpermilps ymm0, ymm1, 1
|
||||
|
||||
vperm2f128 ymm0, ymm1, ymm2, 1
|
||||
vperm2f128 ymm0, ymm1, m256, 1
|
||||
|
||||
vtestps xmm0, xmm1
|
||||
vtestps xmm0, m128
|
||||
vtestps ymm0, ymm1
|
||||
vtestps ymm0, m256
|
||||
|
||||
vtestpd xmm0, xmm1
|
||||
vtestpd xmm0, m128
|
||||
vtestpd ymm0, ymm1
|
||||
vtestpd ymm0, m256
|
||||
|
||||
vzeroall
|
||||
vzeroupper
|
||||
|
||||
endif
|
||||
if 1
|
||||
;--- ADD, DIV, MAX, MIN, MUL, SQRT, SUB
|
||||
addpd xmm0, xmm1
|
||||
addpd xmm0, m128
|
||||
|
||||
vaddpd xmm0, xmm1, xmm2
|
||||
vaddpd xmm0, xmm1, m128
|
||||
vaddpd ymm0, ymm1, ymm2
|
||||
vaddpd ymm0, ymm1, m256
|
||||
|
||||
vaddps xmm0, xmm1, xmm2
|
||||
vaddps xmm0, xmm1, m128
|
||||
vaddps ymm0, ymm1, ymm2
|
||||
vaddps ymm0, ymm1, m256
|
||||
|
||||
vaddsd xmm0, xmm1, xmm2
|
||||
vaddsd xmm0, xmm1, m64
|
||||
vaddss xmm0, xmm1, xmm2
|
||||
vaddss xmm0, xmm1, m32
|
||||
|
||||
divpd xmm0, xmm1
|
||||
divpd xmm0, m128
|
||||
vdivpd xmm0, xmm1, xmm2
|
||||
vdivpd xmm0, xmm1, m128
|
||||
vdivpd ymm0, ymm1, ymm2
|
||||
vdivpd ymm0, ymm1, m256
|
||||
|
||||
vdivps xmm0, xmm1, xmm2
|
||||
vdivps xmm0, xmm1, m128
|
||||
vdivps ymm0, ymm1, ymm2
|
||||
vdivps ymm0, ymm1, m256
|
||||
|
||||
vdivsd xmm0, xmm1, xmm2
|
||||
vdivsd xmm0, xmm1, m64
|
||||
vdivss xmm0, xmm1, xmm2
|
||||
vdivss xmm0, xmm1, m32
|
||||
endif
|
||||
if 1
|
||||
vandpd xmm0, xmm1, xmm2
|
||||
vandpd ymm0, ymm1, ymm2
|
||||
vandps xmm0, xmm1, xmm2
|
||||
vandps ymm0, ymm1, ymm2
|
||||
|
||||
vandnpd xmm0, xmm1, xmm2
|
||||
vandnpd ymm0, ymm1, ymm2
|
||||
vandnps xmm0, xmm1, xmm2
|
||||
vandnps ymm0, ymm1, ymm2
|
||||
endif
|
||||
if 1
|
||||
vaddsubpd xmm0, xmm1, xmm2
|
||||
vaddsubpd xmm0, xmm1, m128
|
||||
vaddsubpd ymm0, ymm1, ymm2
|
||||
vaddsubpd ymm0, ymm1, m256
|
||||
|
||||
vaddsubps xmm0, xmm1, xmm2
|
||||
vaddsubps xmm0, xmm1, m128
|
||||
vaddsubps ymm0, ymm1, ymm2
|
||||
vaddsubps ymm0, ymm1, m256
|
||||
|
||||
blendpd xmm0, xmm2, 1
|
||||
blendpd xmm0, m128, 1
|
||||
vblendpd xmm0, xmm1, xmm2, 1
|
||||
vblendpd xmm0, xmm1, m128, 1
|
||||
vblendpd ymm0, ymm1, ymm2, 2
|
||||
vblendpd ymm0, ymm1, m256, 2
|
||||
|
||||
blendps xmm0, xmm2, 3
|
||||
blendps xmm0, m128, 3
|
||||
vblendps xmm0, xmm1, xmm2, 3
|
||||
vblendps xmm0, xmm1, m128, 3
|
||||
vblendps ymm0, ymm1, ymm2, 4
|
||||
vblendps ymm0, ymm1, m256, 4
|
||||
|
||||
blendvpd xmm0, xmm2, xmm0
|
||||
blendvpd xmm0, m128, xmm0
|
||||
vblendvpd xmm0, xmm1, xmm2, xmm3
|
||||
vblendvpd xmm0, xmm1, m128, xmm3
|
||||
vblendvpd ymm0, ymm1, ymm2, ymm3
|
||||
vblendvpd ymm0, ymm1, m256, ymm3
|
||||
|
||||
blendvps xmm0, xmm2, xmm0
|
||||
blendvps xmm0, m128, xmm0
|
||||
vblendvps xmm0, xmm1, xmm2, xmm3
|
||||
vblendvps xmm0, xmm1, m128, xmm3
|
||||
vblendvps ymm0, ymm1, ymm2, ymm3
|
||||
vblendvps ymm0, ymm1, m256, ymm3
|
||||
|
||||
pblendvb xmm0, xmm2, xmm0
|
||||
pblendvb xmm0, m128, xmm0
|
||||
vpblendvb xmm0, xmm1, xmm2, xmm3
|
||||
vpblendvb xmm0, xmm1, m128, xmm3
|
||||
|
||||
vdppd xmm0, xmm1, xmm2, 1
|
||||
vdppd xmm0, xmm1, m128, 2
|
||||
;no VEX.256
|
||||
vdpps xmm0, xmm1, xmm2, 1
|
||||
vdpps xmm0, xmm1, m128, 2
|
||||
vdpps ymm0, ymm1, ymm2, 3
|
||||
vdpps ymm0, ymm1, m256, 4
|
||||
|
||||
vldmxcsr m32
|
||||
vstmxcsr m32
|
||||
|
||||
endif
|
||||
if 1
|
||||
vcmppd xmm0, xmm1, xmm2, 1
|
||||
vcmppd xmm0, xmm1, m128, 1
|
||||
vcmppd ymm0, ymm1, ymm2, 2
|
||||
vcmppd ymm0, ymm1, m256, 2
|
||||
|
||||
vcmpps xmm0, xmm1, xmm2, 3
|
||||
vcmpps xmm0, xmm1, m128, 3
|
||||
vcmpps ymm0, ymm1, ymm2, 4
|
||||
vcmpps ymm0, ymm1, m256, 4
|
||||
|
||||
vcmpsd xmm0, xmm1, xmm2, 1
|
||||
vcmpsd xmm0, xmm1, m64, 1
|
||||
vcmpss xmm0, xmm1, xmm2, 3
|
||||
vcmpss xmm0, xmm1, m32, 3
|
||||
endif
|
||||
if 1
|
||||
vpsrlw xmm0, xmm1, xmm2
|
||||
vpsrlw xmm0, xmm1, m128
|
||||
vpsrld xmm0, xmm1, xmm2
|
||||
vpsrld xmm0, xmm1, m128
|
||||
vpsrlq xmm0, xmm1, xmm2
|
||||
vpsrlq xmm0, xmm1, m128
|
||||
vpsraw xmm0, xmm1, xmm2
|
||||
vpsraw xmm0, xmm1, m128
|
||||
vpsrad xmm0, xmm1, xmm2
|
||||
vpsrad xmm0, xmm1, m128
|
||||
vpsllw xmm0, xmm1, xmm2
|
||||
vpsllw xmm0, xmm1, m128
|
||||
vpslld xmm0, xmm1, xmm2
|
||||
vpslld xmm0, xmm1, m128
|
||||
vpsllq xmm0, xmm1, xmm2
|
||||
vpsllq xmm0, xmm1, m128
|
||||
endif
|
||||
if 1
|
||||
movd xmm0, eax
|
||||
movd xmm0, m32
|
||||
movd eax, xmm0
|
||||
movd m32, xmm0
|
||||
vmovd xmm0, eax
|
||||
vmovd xmm0, m32
|
||||
vmovd eax, xmm0
|
||||
vmovd m32, xmm0
|
||||
|
||||
movq xmm0, m64
|
||||
movq m64, xmm0
|
||||
vmovq xmm0, m64
|
||||
vmovq m64, xmm0
|
||||
endif
|
||||
if 1
|
||||
;--- VEX.NDD
|
||||
vpslldq xmm0, xmm1, 1
|
||||
vpsrldq xmm0, xmm1, 2
|
||||
vpsrlw xmm0, xmm1, 3
|
||||
vpsrld xmm0, xmm1, 4
|
||||
vpsrlq xmm0, xmm1, 5
|
||||
vpsraw xmm0, xmm1, 6
|
||||
vpsrad xmm0, xmm1, 7
|
||||
vpsllw xmm0, xmm1, 8
|
||||
vpslld xmm0, xmm1, 9
|
||||
vpsllq xmm0, xmm1, 10
|
||||
|
||||
;--- VEX.NDS
|
||||
vpsrlw xmm0, xmm1, xmm2
|
||||
vpsrlw xmm0, xmm1, m128
|
||||
vpsrld xmm0, xmm1, xmm2
|
||||
vpsrld xmm0, xmm1, m128
|
||||
vpsrlq xmm0, xmm1, xmm2
|
||||
vpsrlq xmm0, xmm1, m128
|
||||
vpsraw xmm0, xmm1, xmm2
|
||||
vpsraw xmm0, xmm1, m128
|
||||
vpsrad xmm0, xmm1, xmm2
|
||||
vpsrad xmm0, xmm1, m128
|
||||
vpsllw xmm0, xmm1, xmm2
|
||||
vpsllw xmm0, xmm1, m128
|
||||
vpslld xmm0, xmm1, xmm2
|
||||
vpslld xmm0, xmm1, m128
|
||||
vpsllq xmm0, xmm1, xmm2
|
||||
vpsllq xmm0, xmm1, m128
|
||||
endif
|
||||
if 1
|
||||
vpabsb xmm0, xmm1
|
||||
vpabsb xmm0, m128
|
||||
vpabsw xmm0, xmm1
|
||||
vpabsw xmm0, m128
|
||||
vpabsd xmm0, xmm1
|
||||
vpabsd xmm0, m128
|
||||
|
||||
vrsqrtps xmm0, xmm1
|
||||
vrsqrtss xmm0, xmm1, xmm2
|
||||
|
||||
vcomisd xmm0, xmm1
|
||||
vcomisd xmm0, m64
|
||||
vcomiss xmm0, xmm1
|
||||
vcomiss xmm0, m32
|
||||
vucomisd xmm0, xmm1
|
||||
vucomisd xmm0, m64
|
||||
vucomiss xmm0, xmm1
|
||||
vucomiss xmm0, m32
|
||||
|
||||
vptest xmm0, xmm1
|
||||
vptest xmm0, m128
|
||||
vptest ymm0, ymm1
|
||||
vptest ymm0, m256
|
||||
vtestps xmm0, xmm1
|
||||
vtestps xmm0, m128
|
||||
vtestps ymm0, ymm1
|
||||
vtestps ymm0, m256
|
||||
vtestpd xmm0, xmm1
|
||||
vtestpd xmm0, m128
|
||||
vtestpd ymm0, ymm1
|
||||
vtestpd ymm0, m256
|
||||
vrcpps xmm0, xmm1
|
||||
vrcpps xmm0, m128
|
||||
vrcpps ymm0, ymm1
|
||||
vrcpps ymm0, m256
|
||||
vrcpss xmm0, xmm1, xmm2
|
||||
vrcpss xmm0, xmm1, m32
|
||||
|
||||
vpmovsxbw xmm0, xmm1
|
||||
vpmovsxbw xmm0, m64
|
||||
vpmovsxbd xmm0, xmm1
|
||||
vpmovsxbd xmm0, m32
|
||||
vpmovsxbq xmm0, xmm1
|
||||
vpmovsxbq xmm0, m16
|
||||
vpmovsxwd xmm0, xmm1
|
||||
vpmovsxwd xmm0, m64
|
||||
vpmovsxwq xmm0, xmm1
|
||||
vpmovsxwq xmm0, m32
|
||||
vpmovsxdq xmm0, xmm1
|
||||
vpmovsxdq xmm0, m64
|
||||
|
||||
vphminposuw xmm0, xmm1
|
||||
vphminposuw xmm0, m128
|
||||
|
||||
vextractps eax, xmm1, 1
|
||||
vextractps m32, xmm1, 1
|
||||
|
||||
vinsertps xmm0, xmm1, xmm3, 0
|
||||
vinsertps xmm0, xmm1, m32, 1
|
||||
|
||||
vhaddpd xmm0, xmm1, xmm2
|
||||
vhaddpd xmm0, xmm1, m128
|
||||
vhaddpd ymm0, ymm1, ymm2
|
||||
vhaddpd ymm0, ymm1, m256
|
||||
|
||||
vhaddps xmm0, xmm1, xmm2
|
||||
vhaddps xmm0, xmm1, m128
|
||||
vhaddps ymm0, ymm1, ymm2
|
||||
vhaddps ymm0, ymm1, m256
|
||||
|
||||
vhsubpd xmm0, xmm1, xmm2
|
||||
vhsubpd xmm0, xmm1, m128
|
||||
vhsubpd ymm0, ymm1, ymm2
|
||||
vhsubpd ymm0, ymm1, m256
|
||||
|
||||
vhsubps xmm0, xmm1, xmm2
|
||||
vhsubps xmm0, xmm1, m128
|
||||
vhsubps ymm0, ymm1, ymm2
|
||||
vhsubps ymm0, ymm1, m256
|
||||
|
||||
vlddqu xmm0, m128
|
||||
vlddqu ymm0, m256
|
||||
|
||||
vmaskmovdqu xmm0, xmm1
|
||||
vpmovmskb eax, xmm1
|
||||
|
||||
endif
|
||||
if 1
|
||||
vcvtdq2pd xmm0, xmm1
|
||||
vcvtdq2pd xmm0, m64
|
||||
vcvtdq2pd ymm0, xmm1 ;!
|
||||
vcvtdq2pd ymm0, m128 ;!
|
||||
|
||||
vcvtdq2ps xmm0, xmm1
|
||||
vcvtdq2ps xmm0, m128
|
||||
vcvtdq2ps ymm0, ymm1
|
||||
vcvtdq2ps ymm0, m256
|
||||
|
||||
vcvtpd2dq xmm0, xmm1
|
||||
vcvtpd2dq xmm0, m128
|
||||
vcvtpd2dq xmm0, ymm1
|
||||
vcvtpd2dq xmm0, m256 ;L bit set?
|
||||
|
||||
vcvttpd2dq xmm0, xmm1
|
||||
vcvttpd2dq xmm0, m128
|
||||
vcvttpd2dq xmm0, ymm1
|
||||
vcvttpd2dq xmm0, m256 ;L bit set?
|
||||
|
||||
vcvtpd2ps xmm0, xmm1
|
||||
vcvtpd2ps xmm0, m128
|
||||
vcvtpd2ps xmm0, ymm1
|
||||
vcvtpd2ps xmm0, m256 ;L bit set?
|
||||
|
||||
vcvtps2dq xmm0, xmm1
|
||||
vcvtps2dq xmm0, m128
|
||||
vcvtps2dq ymm0, ymm1
|
||||
vcvtps2dq ymm0, m256
|
||||
|
||||
vcvttps2dq xmm0, xmm1
|
||||
vcvttps2dq xmm0, m128
|
||||
vcvttps2dq ymm0, ymm1
|
||||
vcvttps2dq ymm0, m256
|
||||
|
||||
vcvtps2pd xmm0, xmm1
|
||||
vcvtps2pd xmm0, m64
|
||||
vcvtps2pd ymm0, xmm1 ;!
|
||||
vcvtps2pd ymm0, m128 ;!
|
||||
|
||||
vcvtsd2si eax, xmm1
|
||||
vcvtsd2si eax, m64
|
||||
|
||||
vcvttsd2si eax, xmm1
|
||||
vcvttsd2si eax, m64
|
||||
|
||||
vcvtsd2ss xmm0, xmm1, xmm2
|
||||
vcvtsd2ss xmm0, xmm1, m64
|
||||
|
||||
vcvtsi2sd xmm0, xmm1, eax
|
||||
vcvtsi2sd xmm0, xmm1, m32
|
||||
|
||||
vcvtsi2ss xmm0, xmm1, eax
|
||||
vcvtsi2ss xmm0, xmm1, m32
|
||||
|
||||
vcvtss2sd xmm0, xmm1, xmm2
|
||||
vcvtss2sd xmm0, xmm1, m32
|
||||
|
||||
vcvtss2si eax, xmm1
|
||||
vcvtss2si eax, m32
|
||||
|
||||
vcvttss2si eax, xmm1
|
||||
vcvttss2si eax, m32
|
||||
endif
|
||||
if 1
|
||||
vmovapd xmm0, xmm1
|
||||
vmovapd xmm0, m128
|
||||
vmovapd m128, xmm1
|
||||
vmovapd ymm0, ymm1
|
||||
vmovapd ymm0, m256
|
||||
vmovapd m256, ymm1
|
||||
|
||||
vmovaps xmm0, xmm1
|
||||
vmovaps xmm0, m128
|
||||
vmovaps m128, xmm1
|
||||
vmovaps ymm0, ymm1
|
||||
vmovaps ymm0, m256
|
||||
vmovaps m256, ymm1
|
||||
|
||||
vmovupd xmm0, xmm1
|
||||
vmovupd xmm0, m128
|
||||
vmovupd m128, xmm1
|
||||
vmovupd ymm0, ymm1
|
||||
vmovupd ymm0, m256
|
||||
vmovupd m256, ymm1
|
||||
|
||||
vmovups xmm0, xmm1
|
||||
vmovups xmm0, m128
|
||||
vmovups m128, xmm1
|
||||
vmovups ymm0, ymm1
|
||||
vmovups ymm0, m256
|
||||
vmovups m256, ymm1
|
||||
|
||||
vmovhlps xmm0, xmm1, xmm2
|
||||
vmovlhps xmm0, xmm1, xmm2
|
||||
|
||||
vmovhpd xmm0, xmm1, m64
|
||||
vmovhpd m64, xmm1
|
||||
vmovhps xmm0, xmm1, m64
|
||||
vmovhps m64, xmm1
|
||||
|
||||
vmovlpd xmm0, xmm1, m64
|
||||
vmovlpd m64, xmm1
|
||||
vmovlps xmm0, xmm1, m64
|
||||
vmovlps m64, xmm1
|
||||
endif
|
||||
if 1
|
||||
vpextrb eax, xmm1, 1
|
||||
vpextrb m08, xmm1, 1
|
||||
vpextrw eax, xmm1, 2
|
||||
vpextrw m16, xmm1, 2
|
||||
vpextrd eax, xmm1, 3
|
||||
vpextrd m32, xmm1, 3
|
||||
;vpextrq is 64-bit only
|
||||
;vpextrq rax, xmm1, 4
|
||||
;vpextrq m64, xmm1, 4
|
||||
|
||||
vpinsrb xmm0, xmm1, eax, 1
|
||||
vpinsrb xmm0, xmm1, m08, 1
|
||||
vpinsrw xmm0, xmm1, eax, 2
|
||||
vpinsrw xmm0, xmm1, m16, 2
|
||||
vpinsrd xmm0, xmm1, eax, 3
|
||||
vpinsrd xmm0, xmm1, m32, 3
|
||||
;vpinsrq is 64-bit only
|
||||
;vpinsrq xmm0, xmm1, rax, 4
|
||||
;vpinsrq xmm0, xmm1, m64, 4
|
||||
endif
|
||||
vmovddup xmm0, xmm1
|
||||
vmovddup xmm0, m64
|
||||
vmovddup ymm0, ymm1
|
||||
vmovddup ymm0, m256
|
||||
|
||||
end
|
BIN
Regress/AVX1.EXP
BIN
Regress/AVX1.EXP
Binary file not shown.
@ -1,93 +0,0 @@
|
||||
|
||||
;--- AVX, 32-bit
|
||||
|
||||
.686
|
||||
.model flat
|
||||
.xmm
|
||||
|
||||
.data
|
||||
|
||||
m08 label byte
|
||||
m16 label word
|
||||
m32 label dword
|
||||
m64 label mmword
|
||||
m128 label xmmword
|
||||
m256 label ymmword
|
||||
|
||||
.code
|
||||
|
||||
vbroadcastss xmm0, m64
|
||||
vbroadcastss ymm0, ymm1
|
||||
vbroadcastsd ymm0, m128
|
||||
vbroadcastf128 ymm0, ymm1
|
||||
vinsertf128 ymm0, ymm1, xmm1, xmm0
|
||||
vinsertf128 ymm0, ymm1, m128
|
||||
vextractf128 xmm0, ymm0, ymm0
|
||||
vextractf128 m128, ymm0
|
||||
vmaskmovps xmm0, xmm1
|
||||
vmaskmovps ymm0, ymm1, ymm2
|
||||
vmaskmovps m128, xmm0
|
||||
vmaskmovps m256, ymm0
|
||||
vmaskmovpd xmm0, xmm1
|
||||
vmaskmovpd ymm0, ymm1, ymm2
|
||||
vmaskmovpd m128, xmm0
|
||||
vmaskmovpd m256, ymm0
|
||||
vpermilpd xmm0, xmm1, xmm2
|
||||
vpermilpd xmm0, xmm1, m128
|
||||
vpermilpd xmm0, xmm1, 1
|
||||
vpermilpd ymm0, ymm1, ymm2
|
||||
vpermilpd ymm0, ymm1, m256
|
||||
vpermilpd ymm0, ymm1, 1
|
||||
vpermilps xmm0, xmm1, xmm2
|
||||
vpermilps xmm0, xmm1, m128
|
||||
vpermilps xmm0, xmm1, 1
|
||||
vpermilps ymm0, ymm1, ymm2
|
||||
vpermilps ymm0, ymm1, m256
|
||||
vpermilps ymm0, ymm1, 1
|
||||
vperm2f128 ymm0, ymm1, ymm2, 1
|
||||
vperm2f128 ymm0, ymm1, m256, 1
|
||||
vtestps xmm0, xmm1
|
||||
vtestps xmm0, m128
|
||||
vtestps ymm0, ymm1
|
||||
vtestps ymm0, m256
|
||||
vtestpd xmm0, xmm1
|
||||
vtestpd xmm0, m128
|
||||
vtestpd ymm0, ymm1
|
||||
vtestpd ymm0, m256
|
||||
vzeroall
|
||||
vzeroupper
|
||||
vaddpd xmm0, xmm1
|
||||
vaddpd xmm0, xmm1, m128
|
||||
vaddpd ymm0, ymm1, ymm2
|
||||
vaddpd ymm0, ymm1, m256
|
||||
vaddsubpd xmm0, xmm1
|
||||
vblendpd xmm0, xmm1, xmm2
|
||||
vblendpd xmm0, xmm1
|
||||
vblendpd ymm0, ymm1, ymm2
|
||||
vblendpd ymm0, ymm1
|
||||
vblendps xmm0, xmm1, xmm2
|
||||
vblendps xmm0, xmm1
|
||||
vblendps ymm0, ymm1, ymm2
|
||||
vblendps ymm0, ymm1
|
||||
vblendvpd xmm0, xmm1, xmm2
|
||||
vblendvpd xmm0, xmm1, m128
|
||||
vblendvpd ymm0, ymm1, ymm2
|
||||
vblendvpd ymm0, ymm1, m256
|
||||
vblendvps xmm0, xmm1
|
||||
vblendvps xmm0, xmm1
|
||||
vblendvps ymm0, ymm1
|
||||
vblendvps ymm0, ymm1
|
||||
vpblendvb xmm0, xmm1, xmm2
|
||||
vpblendvb xmm0, xmm1
|
||||
vdppd xmm0, xmm1, xmm2
|
||||
vdppd xmm0, xmm1
|
||||
vdpps xmm0, xmm1, eax
|
||||
vdpps xmm0, xmm1, m08
|
||||
vdpps ymm0, ymm1
|
||||
vdpps ymm0, ymm1, eax
|
||||
|
||||
vcvtpd2dq xmm0, [ebx] ;untyped memory is to be rejected!
|
||||
vcvttpd2dq xmm0, [ebx] ;untyped memory is to be rejected!
|
||||
vcvtpd2ps xmm0, [ebx] ;untyped memory is to be rejected!
|
||||
|
||||
end
|
@ -1,43 +0,0 @@
|
||||
AVX2.ASO(19) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(20) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(21) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(22) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(23) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(24) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(25) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(26) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(27) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(29) : Error A2209: Syntax error: , xmm0
|
||||
AVX2.ASO(30) : Error A2209: Syntax error: , ymm0
|
||||
AVX2.ASO(31) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(33) : Error A2209: Syntax error: , xmm0
|
||||
AVX2.ASO(34) : Error A2209: Syntax error: , ymm0
|
||||
AVX2.ASO(59) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(63) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(64) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(65) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(66) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(67) : Error A2209: Syntax error: , ymm1
|
||||
AVX2.ASO(68) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(69) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(70) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(71) : Error A2209: Syntax error: , ymm1
|
||||
AVX2.ASO(72) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(73) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(74) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(75) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(76) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(77) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(78) : Error A2209: Syntax error: , ymm1
|
||||
AVX2.ASO(79) : Error A2209: Syntax error: , ymm1
|
||||
AVX2.ASO(80) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(81) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(82) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(83) : Error A2209: Syntax error: , xmm1
|
||||
AVX2.ASO(84) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(85) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(86) : Error A2209: Syntax error: , ymm1
|
||||
AVX2.ASO(87) : Error A2049: Invalid instruction operands
|
||||
AVX2.ASO(89) : Error A2182: Instruction operand must have size
|
||||
AVX2.ASO(90) : Error A2182: Instruction operand must have size
|
||||
AVX2.ASO(91) : Error A2182: Instruction operand must have size
|
@ -1,86 +0,0 @@
|
||||
|
||||
;--- AVX, 32-bit
|
||||
|
||||
.686
|
||||
.model flat
|
||||
.xmm
|
||||
|
||||
.data
|
||||
|
||||
m08 label byte
|
||||
m16 label word
|
||||
m32 label dword
|
||||
m64 label mmword
|
||||
m128 label xmmword
|
||||
m256 label ymmword
|
||||
|
||||
.code
|
||||
|
||||
vldmxcsr eax
|
||||
vstmxcsr xmm0
|
||||
vcmppd xmm0, xmm1, xmm2
|
||||
vcmppd ymm0, ymm1, ymm2
|
||||
vcmppd ymm0, ymm1
|
||||
vpsrlw xmm0, xmm1, ymm2
|
||||
vpsrld xmm0, xmm1, ymm2
|
||||
vpsrld xmm0, xmm1, m64
|
||||
vmovd xmm0, ax
|
||||
vmovd ymm0, m64
|
||||
vmovd m16, xmm0
|
||||
vmovq xmm0, m128
|
||||
vmovq m64, xmm0, xmm1
|
||||
vpslldq xmm0, 1
|
||||
vpsllq xmm0, xmm1, xmm2
|
||||
vpsrlw xmm0, xmm1, m64
|
||||
vpabsb xmm0, xmm1, xmm2
|
||||
vpabsb xmm0, xmm1, m128
|
||||
vpmovsxbw xmm0, xmm1, xmm2
|
||||
vpmovsxbw xmm0, xmm1, m64
|
||||
vphminposuw xmm0, xmm1, xmm2
|
||||
vphminposuw xmm0, m64
|
||||
vextractps eax, xmm1, xmm2
|
||||
vextractps m32, xmm1, xmm2
|
||||
vinsertps xmm0, xmm1, xmm3
|
||||
vhaddpd xmm0, xmm1
|
||||
vlddqu xmm0, xmm1, m128
|
||||
vlddqu ymm0, m64
|
||||
vmaskmovdqu xmm0, xmm1, xmm2
|
||||
vpmovmskb eax, xmm1, xmm2
|
||||
vcvtdq2pd xmm0, xmm1, xmm2
|
||||
vcvtdq2pd xmm0, m128
|
||||
vcvtdq2pd ymm0, xmm1, xmm2
|
||||
vcvtdq2pd ymm0, m256
|
||||
vcvtpd2dq xmm0, xmm1, xmm2
|
||||
vcvtps2pd xmm0, xmm1, xmm2
|
||||
vcvtsd2si eax, ymm1, ymm2
|
||||
vcvttsd2si eax, ymm1, ymm2
|
||||
vcvtsd2ss xmm0, xmm1, xmm2
|
||||
vcvtsi2sd xmm0, xmm1, m32
|
||||
vcvtsi2ss xmm0, xmm1, eax
|
||||
vcvtss2sd xmm0, xmm1, xmm2
|
||||
vcvtss2si eax, xmm1
|
||||
vcvttss2si eax, xmm1
|
||||
vmovapd xmm0, xmm1, xmm2
|
||||
vmovapd ymm0, ymm1, m256
|
||||
vmovaps xmm0, xmm1
|
||||
vmovaps ymm0, m256
|
||||
vmovupd xmm0, xmm1
|
||||
vmovupd ymm0, m256
|
||||
vmovups ymm0, m256
|
||||
vmovups m256, ymm1
|
||||
vmovhlps xmm0, xmm1, xmm2
|
||||
vmovlhps xmm0, xmm1, xmm2
|
||||
vmovhpd xmm0, xmm1
|
||||
vmovhpd m64, xmm1, xmm2
|
||||
vmovhps xmm0, xmm1, xmm2
|
||||
vmovhps m64, xmm1
|
||||
vmovlpd xmm0, xmm1, xmm2
|
||||
vmovlpd m64, xmm1, xmm2
|
||||
vmovlps m64, xmm1, xmm2
|
||||
vpextrb xmm0, xmm1, xmm2
|
||||
vpextrb m64, xmm1, 1
|
||||
vpinsrb xmm0, xmm1, eax
|
||||
vpinsrw xmm0, xmm1, eax
|
||||
vpinsrw xmm0, xmm1, xmm2
|
||||
|
||||
end
|
@ -1,50 +0,0 @@
|
||||
AVX3.ASO(19) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(20) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(21) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(22) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(23) : Error A2209: Syntax error: , ymm1
|
||||
AVX3.ASO(24) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(25) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(26) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(27) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(28) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(29) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(30) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(31) : Error A2209: Syntax error: , xmm1
|
||||
AVX3.ASO(32) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(34) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(35) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(36) : Error A2209: Syntax error: , m128
|
||||
AVX3.ASO(37) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(38) : Error A2209: Syntax error: , m64
|
||||
AVX3.ASO(39) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(40) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(41) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(42) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(43) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(44) : Error A2209: Syntax error: , xmm1
|
||||
AVX3.ASO(45) : Error A2209: Syntax error: , m128
|
||||
AVX3.ASO(46) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(47) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(48) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(49) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(50) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(51) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(52) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(53) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(54) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(55) : Error A2209: Syntax error: , ymm2
|
||||
AVX3.ASO(56) : Error A2209: Syntax error: , ymm2
|
||||
AVX3.ASO(63) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(64) : Error A2209: Syntax error: , m256
|
||||
AVX3.ASO(73) : Error A2209: Syntax error: , xmm1
|
||||
AVX3.ASO(74) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(75) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(77) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(78) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(79) : Error A2209: Syntax error: , xmm2
|
||||
AVX3.ASO(80) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(81) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(82) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(83) : Error A2049: Invalid instruction operands
|
||||
AVX3.ASO(84) : Error A2049: Invalid instruction operands
|
266
Regress/AVX4.ASM
266
Regress/AVX4.ASM
@ -1,266 +0,0 @@
|
||||
|
||||
;--- AVX, 32-bit
|
||||
;--- unsized memory operand
|
||||
|
||||
.686
|
||||
.model flat
|
||||
.xmm
|
||||
|
||||
.code
|
||||
|
||||
;--- new AVX instructions
|
||||
vbroadcastss xmm0, [ebx]
|
||||
vbroadcastss ymm0, [ebx]
|
||||
vbroadcastsd ymm0, [ebx]
|
||||
vbroadcastf128 ymm0, [ebx]
|
||||
|
||||
vinsertf128 ymm0, ymm1, [ebx], 2
|
||||
vextractf128 [ebx], ymm0, 2
|
||||
|
||||
vmaskmovps xmm0, xmm1, [ebx]
|
||||
vmaskmovps ymm0, ymm1, [ebx]
|
||||
vmaskmovps [ebx], xmm0, xmm1
|
||||
vmaskmovps [ebx], ymm0, ymm1 ;ok with v2.08
|
||||
|
||||
vmaskmovpd xmm0, xmm1, [ebx]
|
||||
vmaskmovpd ymm0, ymm1, [ebx]
|
||||
vmaskmovpd [ebx], xmm0, xmm1
|
||||
vmaskmovpd [ebx], ymm0, ymm1 ;ok with v2.08
|
||||
|
||||
vpermilpd xmm0, xmm1, [ebx]
|
||||
vpermilpd ymm0, ymm1, [ebx]
|
||||
|
||||
vpermilps xmm0, xmm1, [ebx]
|
||||
vpermilps ymm0, ymm1, [ebx]
|
||||
|
||||
vperm2f128 ymm0, ymm1, [ebx], 1 ;ok with v2.08
|
||||
|
||||
vtestps xmm0, [ebx]
|
||||
vtestps ymm0, [ebx]
|
||||
|
||||
vtestpd xmm0, [ebx]
|
||||
vtestpd ymm0, [ebx]
|
||||
|
||||
;--- ADD, DIV, MAX, MIN, MUL, SQRT, SUB
|
||||
addpd xmm0, [ebx]
|
||||
|
||||
vaddpd xmm0, xmm1, [ebx]
|
||||
vaddpd ymm0, ymm1, [ebx]
|
||||
|
||||
vaddps xmm0, xmm1, [ebx]
|
||||
vaddps ymm0, ymm1, [ebx]
|
||||
|
||||
vaddsd xmm0, xmm1, [ebx]
|
||||
vaddss xmm0, xmm1, [ebx]
|
||||
|
||||
divpd xmm0, [ebx]
|
||||
vdivpd xmm0, xmm1, [ebx]
|
||||
vdivpd ymm0, ymm1, [ebx]
|
||||
|
||||
vdivps xmm0, xmm1, [ebx]
|
||||
vdivps ymm0, ymm1, [ebx]
|
||||
|
||||
vdivsd xmm0, xmm1, [ebx]
|
||||
vdivss xmm0, xmm1, [ebx]
|
||||
|
||||
vaddsubpd xmm0, xmm1, [ebx]
|
||||
vaddsubpd ymm0, ymm1, [ebx]
|
||||
|
||||
vaddsubps xmm0, xmm1, [ebx]
|
||||
vaddsubps ymm0, ymm1, [ebx]
|
||||
|
||||
blendpd xmm0, [ebx], 1
|
||||
vblendpd xmm0, xmm1, [ebx], 1
|
||||
vblendpd ymm0, ymm1, [ebx], 2
|
||||
|
||||
blendps xmm0, [ebx], 3
|
||||
vblendps xmm0, xmm1, [ebx], 3
|
||||
vblendps ymm0, ymm1, [ebx], 4
|
||||
|
||||
blendvpd xmm0, [ebx], xmm0
|
||||
vblendvpd xmm0, xmm1, [ebx], xmm3
|
||||
vblendvpd ymm0, ymm1, [ebx], ymm3
|
||||
|
||||
blendvps xmm0, [ebx], xmm0
|
||||
vblendvps xmm0, xmm1, [ebx], xmm3
|
||||
vblendvps ymm0, ymm1, [ebx], ymm3
|
||||
|
||||
pblendvb xmm0, [ebx], xmm0
|
||||
vpblendvb xmm0, xmm1, [ebx], xmm3
|
||||
|
||||
vdppd xmm0, xmm1, [ebx], 2
|
||||
;no VEX.256
|
||||
vdpps xmm0, xmm1, [ebx], 2
|
||||
vdpps ymm0, ymm1, [ebx], 4
|
||||
|
||||
vldmxcsr [ebx]
|
||||
vstmxcsr [ebx]
|
||||
|
||||
vcmppd xmm0, xmm1, [ebx], 1
|
||||
vcmppd ymm0, ymm1, [ebx], 2
|
||||
|
||||
vcmpps xmm0, xmm1, [ebx], 3
|
||||
vcmpps ymm0, ymm1, [ebx], 4
|
||||
|
||||
vcmpsd xmm0, xmm1, [ebx], 1
|
||||
vcmpss xmm0, xmm1, [ebx], 3
|
||||
|
||||
vpsrlw xmm0, xmm1, [ebx]
|
||||
vpsrld xmm0, xmm1, [ebx]
|
||||
vpsrlq xmm0, xmm1, [ebx]
|
||||
vpsraw xmm0, xmm1, [ebx]
|
||||
vpsrad xmm0, xmm1, [ebx]
|
||||
vpsllw xmm0, xmm1, [ebx]
|
||||
vpslld xmm0, xmm1, [ebx]
|
||||
vpsllq xmm0, xmm1, [ebx]
|
||||
|
||||
movd xmm0, [ebx]
|
||||
movd [ebx], xmm0
|
||||
vmovd xmm0, [ebx]
|
||||
vmovd [ebx], xmm0
|
||||
|
||||
movq xmm0, [ebx]
|
||||
movq [ebx], xmm0
|
||||
vmovq xmm0, [ebx]
|
||||
vmovq [ebx], xmm0
|
||||
|
||||
;--- VEX.NDS
|
||||
vpsrlw xmm0, xmm1, [ebx]
|
||||
vpsrld xmm0, xmm1, [ebx]
|
||||
vpsrlq xmm0, xmm1, [ebx]
|
||||
vpsraw xmm0, xmm1, [ebx]
|
||||
vpsrad xmm0, xmm1, [ebx]
|
||||
vpsllw xmm0, xmm1, [ebx]
|
||||
vpslld xmm0, xmm1, [ebx]
|
||||
vpsllq xmm0, xmm1, [ebx]
|
||||
|
||||
vpabsb xmm0, [ebx]
|
||||
vpabsw xmm0, [ebx]
|
||||
vpabsd xmm0, [ebx]
|
||||
|
||||
vcomisd xmm0, [ebx]
|
||||
vcomiss xmm0, [ebx]
|
||||
vucomisd xmm0, [ebx]
|
||||
vucomiss xmm0, [ebx]
|
||||
|
||||
vptest xmm0, [ebx]
|
||||
vptest ymm0, [ebx]
|
||||
vtestps xmm0, [ebx]
|
||||
vtestps ymm0, [ebx]
|
||||
vtestpd xmm0, [ebx]
|
||||
vtestpd ymm0, [ebx]
|
||||
vrcpps xmm0, [ebx]
|
||||
vrcpps ymm0, [ebx]
|
||||
vrcpss xmm0, xmm1, [ebx]
|
||||
|
||||
vpmovsxbw xmm0, [ebx]
|
||||
vpmovsxbd xmm0, [ebx]
|
||||
vpmovsxbq xmm0, [ebx]
|
||||
vpmovsxwd xmm0, [ebx]
|
||||
vpmovsxwq xmm0, [ebx]
|
||||
vpmovsxdq xmm0, [ebx]
|
||||
|
||||
vphminposuw xmm0, [ebx]
|
||||
|
||||
vextractps [ebx], xmm1, 1
|
||||
|
||||
vinsertps xmm0, xmm1, [ebx], 1
|
||||
|
||||
vhaddpd xmm0, xmm1, [ebx]
|
||||
vhaddpd ymm0, ymm1, [ebx]
|
||||
|
||||
vhaddps xmm0, xmm1, [ebx]
|
||||
vhaddps ymm0, ymm1, [ebx]
|
||||
|
||||
vhsubpd xmm0, xmm1, [ebx]
|
||||
vhsubpd ymm0, ymm1, [ebx]
|
||||
|
||||
vhsubps xmm0, xmm1, [ebx]
|
||||
vhsubps ymm0, ymm1, [ebx]
|
||||
|
||||
vlddqu xmm0, [ebx]
|
||||
vlddqu ymm0, [ebx]
|
||||
|
||||
vcvtdq2pd xmm0, [ebx]
|
||||
vcvtdq2pd ymm0, [ebx] ;ok with v2.08
|
||||
|
||||
vcvtdq2ps xmm0, [ebx]
|
||||
vcvtdq2ps ymm0, [ebx]
|
||||
|
||||
; vcvtpd2dq xmm0, [ebx] ;error with v2.08 (operand must have size)
|
||||
; vcvttpd2dq xmm0, [ebx] ;error with v2.08 (operand must have size)
|
||||
; vcvtpd2ps xmm0, [ebx] ;error with v2.08 (operand must have size)
|
||||
|
||||
vcvtps2dq xmm0, [ebx]
|
||||
vcvtps2dq ymm0, [ebx]
|
||||
|
||||
vcvttps2dq xmm0, [ebx]
|
||||
vcvttps2dq ymm0, [ebx]
|
||||
|
||||
vcvtps2pd xmm0, [ebx]
|
||||
vcvtps2pd ymm0, [ebx] ;ok with v2.08
|
||||
|
||||
vcvtsd2si eax, [ebx]
|
||||
|
||||
vcvttsd2si eax, [ebx]
|
||||
|
||||
vcvtsd2ss xmm0, xmm1, [ebx]
|
||||
|
||||
vcvtsi2sd xmm0, xmm1, [ebx]
|
||||
|
||||
vcvtsi2ss xmm0, xmm1, [ebx]
|
||||
|
||||
vcvtss2sd xmm0, xmm1, [ebx]
|
||||
|
||||
vcvtss2si eax, [ebx]
|
||||
|
||||
vcvttss2si eax, [ebx]
|
||||
|
||||
vmovapd xmm0, [ebx]
|
||||
vmovapd [ebx], xmm1
|
||||
vmovapd ymm0, [ebx]
|
||||
vmovapd [ebx], ymm1 ;ok with v2.08
|
||||
|
||||
vmovaps xmm0, [ebx]
|
||||
vmovaps [ebx], xmm1
|
||||
vmovaps ymm0, [ebx]
|
||||
vmovaps [ebx], ymm1 ;ok with v2.08
|
||||
|
||||
vmovupd xmm0, [ebx]
|
||||
vmovupd [ebx], xmm1
|
||||
vmovupd ymm0, [ebx]
|
||||
vmovupd [ebx], ymm1 ;ok with v2.08
|
||||
|
||||
vmovups xmm0, [ebx]
|
||||
vmovups [ebx], xmm1
|
||||
vmovups ymm0, [ebx]
|
||||
vmovups [ebx], ymm1 ;ok with v2.08
|
||||
|
||||
vmovhpd xmm0, xmm1, [ebx]
|
||||
vmovhpd [ebx], xmm1
|
||||
vmovhps xmm0, xmm1, [ebx]
|
||||
vmovhps [ebx], xmm1
|
||||
|
||||
vmovlpd xmm0, xmm1, [ebx]
|
||||
vmovlpd [ebx], xmm1
|
||||
vmovlps xmm0, xmm1, [ebx]
|
||||
vmovlps [ebx], xmm1
|
||||
|
||||
vpextrb [ebx], xmm1, 1
|
||||
vpextrw [ebx], xmm1, 2
|
||||
vpextrd [ebx], xmm1, 3
|
||||
;vpextrq is 64-bit only
|
||||
;vpextrq rax, xmm1, 4
|
||||
;vpextrq [ebx], xmm1, 4
|
||||
|
||||
vpinsrb xmm0, xmm1, [ebx], 1
|
||||
vpinsrw xmm0, xmm1, [ebx], 2
|
||||
vpinsrd xmm0, xmm1, [ebx], 3
|
||||
;vpinsrq is 64-bit only
|
||||
;vpinsrq xmm0, xmm1, rax, 4
|
||||
;vpinsrq xmm0, xmm1, [ebx], 4
|
||||
|
||||
vmovddup xmm0, [ebx]
|
||||
vmovddup ymm0, [ebx] ;ok with v2.08
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
ΔβyΔβ}Δβ}Δβ}ΔγuΔγ}Δβq,Δβu,Δβy.Δβ}.Δβq-Δβu-Δβy/Δβ}/Δβq
Δβu
ΔβqΔβuΔγuΔβyΔβ}ΔβyΔβ}fXΕρXΕυXΕπXΕτXΕσXΕςXf^Ερ^Ευ^Επ^Ετ^Εσ^Ες^ΕρΠΕυΠΕσΠΕχΠf:
Δγq
Δγu
f:ΔγqΔγuf8ΔγqK0ΔγuK0f8ΔγqJ0ΔγuJ0f8ΔγqL0ΔγqAΔγq@Δγu@Εψ<CE95>Εψ<CE95>ΕρΒΕυΒΕπΒΕτΒΕσΒΕςΒΕρΡΕρ<CE95>ΕρΣΕραΕρβΕρρΕρςΕρσfnf~ΕωnΕω~σ~fΦΕϊ~ΕωΦΕρΡΕρ<CE95>ΕρΣΕραΕρβΕρρΕρςΕρσΔβyΔβyΔβyΕω/Εψ/Εω.Εψ.ΔβyΔβ}ΔβyΔβ}ΔβyΔβ}ΕψSΕόSΕςSΔβy Δβy!Δβy"Δβy#Δβy$Δβy%ΔβyAΔγyΔγq!Ερ|Ευ|Εσ|Εχ|Ερ}Ευ}Εσ}Εχ}ΕϋπΕ<>πΕϊζΕώζΕψ[Εό[Εω[Εύ[Εϊ[Εώ[ΕψZΕόZΕϋ-Εϋ,ΕσZΕσ*Ες*ΕςZΕϊ-Εϊ,Εω(Εω)Εύ(Εύ)Εψ(Εψ)Εό(Εό)ΕωΕωΕύΕύΕψΕψΕόΕόΕρΕωΕπΕψΕρΕωΕπΕψΔγyΔγyΔγyΔγq ΕρΔΔγq"ΕϋΕ<>
|
@ -1,32 +0,0 @@
|
||||
|
||||
;--- AVX, 32-bit
|
||||
|
||||
.686
|
||||
.model flat
|
||||
.xmm
|
||||
|
||||
.data
|
||||
|
||||
m128 label xmmword
|
||||
m256 label ymmword
|
||||
oword 0,0
|
||||
|
||||
.code
|
||||
|
||||
vmovmskpd eax, xmm0
|
||||
vmovmskps eax, xmm0
|
||||
|
||||
vmovmskpd eax, ymm0 ;accepted since 2.11
|
||||
vmovmskps eax, ymm0 ;accepted since 2.11
|
||||
|
||||
vmovntdq m128, xmm0
|
||||
vmovntdqa xmm0, m128
|
||||
vmovntpd m128, xmm0
|
||||
vmovntps m128, xmm0
|
||||
|
||||
vmovntdq m256, ymm0 ;accepted since 2.11
|
||||
; vmovntdqa ymm0, m256 ;this will work in AVX2 only
|
||||
vmovntpd m256, ymm0 ;accepted since 2.11
|
||||
vmovntps m256, ymm0 ;accepted since 2.11
|
||||
|
||||
end
|
BIN
Regress/AVX5.EXP
BIN
Regress/AVX5.EXP
Binary file not shown.
@ -1,29 +0,0 @@
|
||||
|
||||
;--- AVX, 32-bit
|
||||
;--- test of some instructions that were missing in avx1.asm
|
||||
|
||||
.686
|
||||
.model flat
|
||||
.xmm
|
||||
|
||||
.data
|
||||
|
||||
m32 label dword
|
||||
m64 label qword
|
||||
dq 0
|
||||
|
||||
.code
|
||||
|
||||
vmovss xmm0, xmm1, xmm2
|
||||
vmovss xmm0, m32
|
||||
vmovss m32, xmm0
|
||||
vmovss xmm0, dword ptr [ebx]
|
||||
vmovss dword ptr [ebx], xmm0
|
||||
|
||||
vmovsd xmm0, xmm1, xmm2
|
||||
vmovsd xmm0, m64
|
||||
vmovsd m64, xmm0
|
||||
vmovsd xmm0, qword ptr [ebx]
|
||||
vmovsd qword ptr [ebx], xmm0
|
||||
|
||||
end
|
BIN
Regress/AVX6.EXP
BIN
Regress/AVX6.EXP
Binary file not shown.
@ -1,88 +0,0 @@
|
||||
|
||||
;--- AVX, 64-bit
|
||||
|
||||
ifdef __JWASM__
|
||||
if type near eq 0ff02h
|
||||
.x64
|
||||
.model flat, fastcall
|
||||
endif
|
||||
endif
|
||||
|
||||
.data
|
||||
|
||||
m08 label byte
|
||||
m16 label word
|
||||
m32 label dword
|
||||
m64 label mmword
|
||||
m128 label xmmword
|
||||
m256 label ymmword
|
||||
|
||||
.code
|
||||
|
||||
if 1
|
||||
movd xmm0, eax
|
||||
movd xmm0, rax
|
||||
movd xmm0, m32
|
||||
movd xmm0, m64
|
||||
movd eax, xmm0
|
||||
movd rax, xmm0
|
||||
movd m32, xmm0
|
||||
movd m64, xmm0
|
||||
vmovd xmm0, eax
|
||||
vmovd xmm0, rax
|
||||
vmovd xmm0, m32
|
||||
vmovd xmm0, m64
|
||||
vmovd eax, xmm0
|
||||
vmovd rax, xmm0
|
||||
vmovd m32, xmm0
|
||||
vmovd m64, xmm0
|
||||
|
||||
movq xmm0, m64
|
||||
movq m64, xmm0
|
||||
vmovq xmm0, m64
|
||||
vmovq m64, xmm0
|
||||
endif
|
||||
if 1
|
||||
vpextrb eax, xmm1, 1
|
||||
vpextrb m08, xmm1, 1
|
||||
vpextrw eax, xmm1, 2
|
||||
vpextrw m16, xmm1, 2
|
||||
vpextrd eax, xmm1, 3
|
||||
vpextrd m32, xmm1, 3
|
||||
vpextrq rax, xmm1, 4
|
||||
vpextrq m64, xmm1, 4
|
||||
|
||||
vpinsrb xmm0, xmm1, eax, 1
|
||||
vpinsrb xmm0, xmm1, m08, 1
|
||||
vpinsrw xmm0, xmm1, eax, 2
|
||||
vpinsrw xmm0, xmm1, m16, 2
|
||||
vpinsrd xmm0, xmm1, eax, 3
|
||||
vpinsrd xmm0, xmm1, m32, 3
|
||||
vpinsrq xmm0, xmm1, rax, 4
|
||||
vpinsrq xmm0, xmm1, m64, 4
|
||||
endif
|
||||
|
||||
vcvtsd2si eax, xmm1
|
||||
vcvtsd2si rax, xmm1
|
||||
vcvtsd2si eax, m64
|
||||
vcvtsd2si rax, m64
|
||||
|
||||
vcvttsd2si eax, xmm1
|
||||
vcvttsd2si eax, m64
|
||||
vcvttsd2si rax, m64
|
||||
|
||||
vcvtss2si eax, xmm1
|
||||
vcvtss2si rax, xmm1
|
||||
vcvtss2si eax, m32
|
||||
vcvtss2si rax, m32
|
||||
|
||||
vcvttss2si eax, xmm1
|
||||
vcvttss2si rax, xmm1
|
||||
vcvttss2si eax, m32
|
||||
vcvttss2si rax, m32
|
||||
|
||||
vpmovmskb eax, xmm1
|
||||
vpmovmskb rax, xmm1
|
||||
; vmovapd ymm0, ymm1
|
||||
|
||||
end
|
Binary file not shown.
@ -1,50 +0,0 @@
|
||||
|
||||
;--- test backslash
|
||||
;--- no error expected
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
OFN_EXPLORER equ 1
|
||||
OFN_HIDEREADONLY equ 2
|
||||
OFN_ENABLEHOOK equ 4
|
||||
OFN_PATHMUSTEXIST equ 8
|
||||
OFN_ENABLESIZING equ 16
|
||||
|
||||
.code
|
||||
|
||||
db 1,2,3, \
|
||||
4,5,6,7,8
|
||||
|
||||
N1 equ 1
|
||||
N2 equ 2
|
||||
|
||||
E1 textequ <abc\
|
||||
def>
|
||||
|
||||
E2 equ abc \
|
||||
def()
|
||||
|
||||
E3 equ N1 or\
|
||||
N2
|
||||
|
||||
E4 equ N1 or \
|
||||
N2
|
||||
|
||||
db @CatStr(!",%E1,!")
|
||||
db @CatStr(!",%E2,!")
|
||||
db @CatStr(!",%E3,!")
|
||||
db @CatStr(!",%E4,!")
|
||||
|
||||
;--- this works with JWasm, but not with Masm.
|
||||
;--- Masm does NOT insert a blank in this case.
|
||||
E5 equ OFN_EXPLORER or OFN_HIDEREADONLY\
|
||||
or OFN_ENABLEHOOK or OFN_PATHMUSTEXIST or OFN_ENABLESIZING
|
||||
|
||||
db E5
|
||||
|
||||
;--- this works for both JWasm and Masm. A white space is inserted.
|
||||
db OFN_EXPLORER or OFN_HIDEREADONLY\
|
||||
or OFN_ENABLEHOOK or OFN_PATHMUSTEXIST or OFN_ENABLESIZING
|
||||
|
||||
END
|
@ -1 +0,0 @@
|
||||
abcdefabc def()33
|
@ -1,24 +0,0 @@
|
||||
|
||||
;--- this is for format -bin only
|
||||
;--- the second section should not be written to disk,
|
||||
;--- but should affect "current" offset.
|
||||
|
||||
.386
|
||||
|
||||
S1 segment FLAT ;file offset 0
|
||||
db 1
|
||||
S1 ends
|
||||
|
||||
S2 segment FLAT
|
||||
org 40h
|
||||
S2 ends
|
||||
|
||||
S3 segment FLAT ;file offset 10h, offset 50h
|
||||
vb db 2
|
||||
S3 ends
|
||||
|
||||
_TEXT segment FLAT 'CODE'
|
||||
mov eax, offset vb
|
||||
_TEXT ends
|
||||
|
||||
END
|
Binary file not shown.
@ -1,83 +0,0 @@
|
||||
|
||||
;--- BT, BTC, BTR, BTS
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
.data
|
||||
|
||||
vq dq 0
|
||||
vd dd 0
|
||||
vw dw 0
|
||||
vb db 0
|
||||
|
||||
.code
|
||||
|
||||
bt ax, 1
|
||||
bt vw, 2
|
||||
bt ax, cx
|
||||
bt vw, cx
|
||||
bt eax,3
|
||||
bt vd, 4
|
||||
bt eax,ecx
|
||||
bt vd, ecx
|
||||
|
||||
btc ax, 1
|
||||
btc vw, 2
|
||||
btc ax, cx
|
||||
btc vw, cx
|
||||
btc eax,3
|
||||
btc vd, 4
|
||||
btc eax,ecx
|
||||
btc vd, ecx
|
||||
|
||||
btr ax, 1
|
||||
btr vw, 2
|
||||
btr ax, cx
|
||||
btr vw, cx
|
||||
btr eax,3
|
||||
btr vd, 4
|
||||
btr eax,ecx
|
||||
btr vd, ecx
|
||||
|
||||
bts ax, 1
|
||||
bts vw, 2
|
||||
bts ax, cx
|
||||
bts vw, cx
|
||||
bts eax,3
|
||||
bts vd, 4
|
||||
bts eax,ecx
|
||||
bts vd, ecx
|
||||
|
||||
;--- LOCK for BT is invalid,
|
||||
;--- for BTC, BTR and BTS LOCK is ok for memory operands only
|
||||
;--- However, Masm will always accept LOCK for BT, BTC, BTR and BTS
|
||||
|
||||
; lock bt ax,1
|
||||
; lock bt eax,1
|
||||
; lock bt vw,1
|
||||
; lock bt vd,1
|
||||
|
||||
; lock btc ax,1
|
||||
; lock btc eax,1
|
||||
lock btc vw,1
|
||||
lock btc vd,1
|
||||
|
||||
; lock btr ax,1
|
||||
; lock btr eax,1
|
||||
lock btr vw,1
|
||||
lock btr vd,1
|
||||
|
||||
; lock bts ax,1
|
||||
; lock bts eax,1
|
||||
lock bts vw,1
|
||||
lock bts vd,1
|
||||
|
||||
if 0 ;accepted by JWasm v2.05 and below
|
||||
bt vb,1
|
||||
btc vb,1
|
||||
btr vb,1
|
||||
bts vb,1
|
||||
endif
|
||||
|
||||
end
|
BIN
Regress/BT1.EXP
BIN
Regress/BT1.EXP
Binary file not shown.
@ -1,27 +0,0 @@
|
||||
|
||||
;--- BT, limits of immediate argument
|
||||
|
||||
.386
|
||||
.model small
|
||||
|
||||
.data
|
||||
|
||||
vw label word
|
||||
vd label dword
|
||||
|
||||
.code
|
||||
|
||||
bt ax, -1
|
||||
bt ax, -128
|
||||
bt ax, 255
|
||||
bt eax, -1
|
||||
bt eax, -128
|
||||
bt eax, 255
|
||||
bt vw, -1
|
||||
bt vw, -128
|
||||
bt vw, 255
|
||||
bt vd, -1
|
||||
bt vd, -128
|
||||
bt vd, 255
|
||||
|
||||
end
|
BIN
Regress/BT2.EXP
BIN
Regress/BT2.EXP
Binary file not shown.
@ -1,19 +0,0 @@
|
||||
|
||||
;--- for indirect calls/jmps, a displacement in form of a mbr
|
||||
;--- didn't set the type of the call/jmp in v1.94-2.02
|
||||
|
||||
.286
|
||||
.model tiny
|
||||
|
||||
cmOPTION struc
|
||||
optchar db ?
|
||||
optmask dw 0
|
||||
optproc@ dw ?
|
||||
cmOPTION ends
|
||||
|
||||
.code
|
||||
|
||||
call [bx + cmOPTION.optproc@]
|
||||
call [bx + offset cmOPTION.optproc@]
|
||||
|
||||
end
|
@ -1 +0,0 @@
|
||||
˙W˙W
|
@ -1,32 +0,0 @@
|
||||
|
||||
;--- indirect call with TYPE coercion
|
||||
|
||||
.286
|
||||
.MODEL small
|
||||
.386
|
||||
option casemap:none
|
||||
|
||||
p1 typedef proto near stdcall :word
|
||||
p2 typedef proto far stdcall :word
|
||||
p3 typedef proto near32 stdcall :word
|
||||
p4 typedef proto far32 stdcall :word
|
||||
|
||||
;--- duplicate type definition ( was a problem in 2.09-2.10 )
|
||||
p3 typedef proto near32 stdcall :word
|
||||
p4 typedef proto far32 stdcall :word
|
||||
|
||||
.CODE
|
||||
|
||||
call near32 ptr [bx]
|
||||
call far32 ptr [bx]
|
||||
|
||||
call p1 ptr [bx]
|
||||
call p2 ptr [bx]
|
||||
call p3 ptr [bx]
|
||||
call p4 ptr [bx]
|
||||
invoke p1 ptr [bx], 1
|
||||
invoke p2 ptr [bx], 1
|
||||
invoke p3 ptr [bx], 1
|
||||
invoke p4 ptr [bx], 1
|
||||
|
||||
END
|
@ -1 +0,0 @@
|
||||
f<EFBFBD>f<><1F><17>f<>f<>j<01>j<01>fjf<>fjf<>
|
@ -1,22 +0,0 @@
|
||||
|
||||
;--- invalid calls/jmps
|
||||
|
||||
.286
|
||||
.MODEL small
|
||||
|
||||
_TEXT2 segment 'CODE'
|
||||
p2 label near
|
||||
_TEXT2 ends
|
||||
|
||||
.CODE
|
||||
|
||||
p1 label near
|
||||
|
||||
call p1, p1 ;masm: syntax error; jwasm: invalid instruction operands
|
||||
call 12 ;jump destination must specify a label
|
||||
call 1.0 ;masm: real or BCD number not allowed; jwasm: syntax error
|
||||
call ds:12 ;instruction operand must have size (jwasm emits error in pass 2 only!)
|
||||
call al ;masm: instruction operand must have size; jwasm: invalid instruction operands
|
||||
call p2 ;cannot have implicit far jump or call to near label
|
||||
|
||||
END
|
@ -1,5 +0,0 @@
|
||||
CALL3.ASO(15) : Error A2049: Invalid instruction operands
|
||||
CALL3.ASO(16) : Error A2249: Jump destination must specify a label
|
||||
CALL3.ASO(17) : Error A2209: Syntax error: 1.0
|
||||
CALL3.ASO(19) : Error A2049: Invalid instruction operands
|
||||
CALL3.ASO(20) : Error A2169: Cannot have implicit far jump or call to near label
|
@ -1,19 +0,0 @@
|
||||
|
||||
;--- calling an external with a MT_PTR coercion
|
||||
;--- didn't work in v2.06-2.09. See parser.c, SetPtrMemtype().
|
||||
|
||||
.386
|
||||
.model flat, stdcall
|
||||
|
||||
proto_func TYPEDEF PROTO C :DWORD
|
||||
LPFNFUNC TYPEDEF PTR proto_func
|
||||
|
||||
EXTERNDEF extf1:DWORD
|
||||
|
||||
.code
|
||||
|
||||
call LPFNFUNC ptr extf1
|
||||
|
||||
extf1 dd 0
|
||||
|
||||
end
|
Binary file not shown.
@ -1,10 +0,0 @@
|
||||
|
||||
.386
|
||||
|
||||
_TEXT32 segment use32 'CODE'
|
||||
public xxx
|
||||
xxx:
|
||||
ret
|
||||
_TEXT32 ends
|
||||
|
||||
end
|
@ -1,23 +0,0 @@
|
||||
|
||||
;--- type coercion far -> near and change in offset size
|
||||
|
||||
.386
|
||||
|
||||
includelib <call5.lib>
|
||||
|
||||
externdef xxx:far
|
||||
|
||||
_TEXT16 segment use16 'CODE'
|
||||
start:
|
||||
call near32 ptr xxx
|
||||
_TEXT16 ends
|
||||
|
||||
_TEXT32 segment use32 'CODE'
|
||||
call near16 ptr xxx
|
||||
_TEXT32 ends
|
||||
|
||||
_STACK segment stack 'STACK'
|
||||
db 100h dup (?)
|
||||
_STACK ends
|
||||
|
||||
end start
|
Binary file not shown.
Binary file not shown.
@ -1,67 +0,0 @@
|
||||
|
||||
;--- 64-bit call and jumps
|
||||
;--- there are some problems:
|
||||
;--- - Masm (ML64) doesn't encode the 16-bit far calls/jumps correctly
|
||||
;--- - Masm (ML64) doesn't accept the 64-bit far calls/jumps correctly
|
||||
|
||||
ifdef __JWASM__
|
||||
.x64
|
||||
.model flat
|
||||
endif
|
||||
|
||||
.data
|
||||
|
||||
PF16 typedef ptr far16
|
||||
|
||||
v16n dw 0 ;16-bit indirect near branch (not allowed)
|
||||
v16f PF16 0 ;16-bit indirect far branch
|
||||
v32n dd 0 ;32-bit indirect near branch (not allowed)
|
||||
v32f df 0 ;32-bit indirect far branch
|
||||
v64n dq 0 ;64-bit indirect near branch
|
||||
v64f dt 0 ;64-bit indirect far branch
|
||||
|
||||
.code
|
||||
|
||||
; call v16n ;Masm accepts, but not allowed
|
||||
call v16f ;Masm accepts, but encodes wrong
|
||||
; call v32n ;not allowed
|
||||
call v32f
|
||||
call v64n
|
||||
ifdef __JWASM__
|
||||
call v64f ;Masm rejects
|
||||
endif
|
||||
call v16fl
|
||||
call v32fl
|
||||
call v64nl
|
||||
|
||||
; call ax ;Masm accepts, but not allowed
|
||||
; call eax ;not allowed
|
||||
call rax
|
||||
call r9
|
||||
|
||||
; jmp v16n ;Masm accepts, but not allowed
|
||||
jmp v16f ;Masm accepts, but encodes wrong
|
||||
; jmp v32n ;not allowed
|
||||
jmp v32f
|
||||
jmp v64n
|
||||
ifdef __JWASM__
|
||||
jmp v64f ;Masm rejects
|
||||
endif
|
||||
jmp v16fl
|
||||
jmp v32fl
|
||||
jmp v64nl
|
||||
|
||||
; jmp ax
|
||||
; jmp eax
|
||||
jmp rax
|
||||
jmp r9
|
||||
|
||||
ret
|
||||
|
||||
.data
|
||||
|
||||
v16fl PF16 0
|
||||
v32fl df 0
|
||||
v64nl dq 0
|
||||
|
||||
END
|
Binary file not shown.
@ -1,26 +0,0 @@
|
||||
|
||||
;--- test OMF case mapping for option -Cu
|
||||
;--- communals and exported names work since v2.11.
|
||||
|
||||
extern ext1:near
|
||||
extern ext2:near
|
||||
|
||||
comm c1:dword
|
||||
comm c2:word
|
||||
|
||||
e1 equ 1
|
||||
e2 equ 2
|
||||
public e1, e2
|
||||
|
||||
s1 segment 's1_code'
|
||||
p1 proc far export
|
||||
p1 endp
|
||||
s1 ends
|
||||
s2 segment 's2_code'
|
||||
p2 proc far export
|
||||
p2 endp
|
||||
s2 ends
|
||||
|
||||
g1 group s1,s2
|
||||
|
||||
end
|
Binary file not shown.
@ -1,22 +0,0 @@
|
||||
|
||||
;--- prior to v2.04, there was a problem in Result2, because
|
||||
;--- JWasm swallowed the blank between ??Sentence and TE1
|
||||
;--- "trailing" blanks as behind ??Sentence in Result3 were no problem
|
||||
|
||||
.386
|
||||
.model flat
|
||||
|
||||
.data
|
||||
|
||||
TE1 textequ <1>
|
||||
??Sentence textequ <szProp dw TE1>
|
||||
|
||||
Result1 textequ @CatStr(%??Sentence, <,>, TE1 )
|
||||
Result2 textequ @CatStr(%??Sentence TE1, <TE1>)
|
||||
Result3 textequ @CatStr(%??Sentence , <TE1>)
|
||||
|
||||
Result1
|
||||
db @CatStr(!",%Result2,!")
|
||||
db @CatStr(!",%Result3,!")
|
||||
|
||||
END
|
Binary file not shown.
@ -1,20 +0,0 @@
|
||||
|
||||
;--- must be 2 entries for "CODE" and "code" in lnames
|
||||
;--- and no complains about segment attribute changes
|
||||
|
||||
option casemap:none
|
||||
|
||||
_TEXT segment 'CODE'
|
||||
mov al,0
|
||||
_TEXT ends
|
||||
_TEXT segment 'code'
|
||||
mov al,0
|
||||
_TEXT ends
|
||||
_TEXT segment 'XXX_CODE'
|
||||
mov al,0
|
||||
_TEXT ends
|
||||
_TEXT segment 'DATA'
|
||||
mov al,0
|
||||
_TEXT ends
|
||||
|
||||
end
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user