diff --git a/test/runnable/test_cdstrpar.d b/test/runnable/test_cdstrpar.d index 6bdd434587c4..4bf5ac5c195b 100644 --- a/test/runnable/test_cdstrpar.d +++ b/test/runnable/test_cdstrpar.d @@ -1,4 +1,4 @@ -// REQUIRED_ARGS: -O +// REQUIRED_ARGS: -O -fPIC // PERMUTE_ARGS: // only testing on SYSV-ABI, but backend code is identical across platforms // DISABLED: win32 win64 osx linux32 freebsd32 @@ -6,7 +6,7 @@ debug = PRINTF; debug (PRINTF) import core.stdc.stdio; // Run this after codegen changes: -// env DMD=generated/linux/release/64/dmd rdmd -version=update test/runnable/test_cdstrpar.d +// env DMD=generated/linux/release/64/dmd rdmd -fPIC -version=update test/runnable/test_cdstrpar.d version (update) { import std.algorithm : canFind, find, splitter, until; @@ -76,8 +76,8 @@ version (update) auto content = src.readText; auto f = File(src, "w"); auto orng = f.lockingTextWriter; - immutable string start = "// begin"; - immutable string end = "// end"; + immutable string start = "// dfmt off"; + immutable string end = "// dfmt on"; replaceFirstInto!((_, orng) => formattedWrite(orng, start ~ "\n%s" ~ end, sink.data))(orng, content, ctRegex!(`^` ~ start ~ `[^$]*` ~ end ~ `$`, "m")); } @@ -118,7 +118,6 @@ struct Code(T_, int N_) alias AliasSeq(Args...) = Args; // dfmt off -// begin alias baselineCases = AliasSeq!( Code!(ubyte, 4)([ /* push rbp */ 0x55, @@ -209,7 +208,6 @@ alias baselineCases = AliasSeq!( ]), ); -// end // dfmt on bool matches(const(ubyte)[] code, const(ubyte)[] exp) diff --git a/test/runnable/test_cdvecfill.d b/test/runnable/test_cdvecfill.d index c47ef507ba50..6527a20bdafe 100644 --- a/test/runnable/test_cdvecfill.d +++ b/test/runnable/test_cdvecfill.d @@ -1,12 +1,11 @@ -// REQUIRED_ARGS: -O -// PERMUTE_ARGS: -mcpu=avx -mcpu=avx2 -fPIC +// REQUIRED_ARGS: -O -fPIC +// PERMUTE_ARGS: -mcpu=avx -mcpu=avx2 // only testing on SYSV-ABI, but backend code is identical across platforms // DISABLED: win32 win64 osx linux32 freebsd32 debug = PRINTF; debug (PRINTF) import core.stdc.stdio; // Run this after codegen changes: -// env DMD=generated/linux/release/64/dmd rdmd -version=update test/runnable/test_cdvecfill.d // env DMD=generated/linux/release/64/dmd rdmd -fPIC -version=update test/runnable/test_cdvecfill.d version (update) { @@ -92,16 +91,8 @@ version (update) auto content = src.readText; auto f = File(src, "w"); auto orng = f.lockingTextWriter; - version (D_PIC) - { - immutable string start = "// PIC begin"; - immutable string end = "// PIC end"; - } - else - { - immutable string start = "// nonPIC begin"; - immutable string end = "// nonPIC end"; - } + immutable string start = "// dfmt off"; + immutable string end = "// dfmt on"; replaceFirstInto!((_, orng) => formattedWrite(orng, start ~ "\n%s" ~ end, sink.data))(orng, content, ctRegex!(`^` ~ start ~ `[^$]*` ~ end ~ `$`, "m")); } @@ -137,9 +128,6 @@ struct Code(T_, int N_) alias AliasSeq(Args...) = Args; // dfmt off -version(D_PIC) -{ -// PIC begin alias baselineCases = AliasSeq!( Code!(ubyte, 16 / ubyte.sizeof)([ /* push rbp */ 0x55, @@ -970,742 +958,6 @@ alias avx2Cases = AliasSeq!( ]), ); -// PIC end -} -else -{ -// nonPIC begin -alias baselineCases = AliasSeq!( - Code!(ubyte, 16 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,edi */ 0x66, 0x0f, 0x6e, 0xc7, - /* punpcklbw xmm0,xmm0 */ 0x66, 0x0f, 0x60, 0xc0, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ubyte*, 16 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* movzx eax,BYTE PTR [rdi] */ 0x0f, 0xb6, 0x07, - /* movd xmm0,eax */ 0x66, 0x0f, 0x6e, 0xc0, - /* punpcklbw xmm0,xmm0 */ 0x66, 0x0f, 0x60, 0xc0, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte, 16 / byte.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,edi */ 0x66, 0x0f, 0x6e, 0xc7, - /* punpcklbw xmm0,xmm0 */ 0x66, 0x0f, 0x60, 0xc0, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte*, 16 / byte.sizeof)([ - /* push rax */ 0x50, - /* movsx eax,BYTE PTR [rdi] */ 0x0f, 0xbe, 0x07, - /* movd xmm0,eax */ 0x66, 0x0f, 0x6e, 0xc0, - /* punpcklbw xmm0,xmm0 */ 0x66, 0x0f, 0x60, 0xc0, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort, 16 / ushort.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,edi */ 0x66, 0x0f, 0x6e, 0xc7, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort*, 16 / ushort.sizeof)([ - /* push rax */ 0x50, - /* movzx eax,WORD PTR [rdi] */ 0x0f, 0xb7, 0x07, - /* movd xmm0,eax */ 0x66, 0x0f, 0x6e, 0xc0, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short, 16 / short.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,edi */ 0x66, 0x0f, 0x6e, 0xc7, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short*, 16 / short.sizeof)([ - /* push rax */ 0x50, - /* movsx eax,WORD PTR [rdi] */ 0x0f, 0xbf, 0x07, - /* movd xmm0,eax */ 0x66, 0x0f, 0x6e, 0xc0, - /* punpcklwd xmm0,xmm0 */ 0x66, 0x0f, 0x61, 0xc0, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint, 16 / uint.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,edi */ 0x66, 0x0f, 0x6e, 0xc7, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint*, 16 / uint.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,DWORD PTR [rdi] */ 0x66, 0x0f, 0x6e, 0x07, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int, 16 / int.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,edi */ 0x66, 0x0f, 0x6e, 0xc7, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int*, 16 / int.sizeof)([ - /* push rax */ 0x50, - /* movd xmm0,DWORD PTR [rdi] */ 0x66, 0x0f, 0x6e, 0x07, - /* pshufd xmm0,xmm0,0x0 */ 0x66, 0x0f, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong, 16 / ulong.sizeof)([ - /* push rax */ 0x50, - /* movq xmm0,rdi */ 0x66, 0x48, 0x0f, 0x6e, 0xc7, - /* punpcklqdq xmm0,xmm0 */ 0x66, 0x0f, 0x6c, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong*, 16 / ulong.sizeof)([ - /* push rax */ 0x50, - /* punpcklqdq xmm0,XMMWORD PTR [rdi] */ 0x66, 0x0f, 0x6c, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long, 16 / long.sizeof)([ - /* push rax */ 0x50, - /* movq xmm0,rdi */ 0x66, 0x48, 0x0f, 0x6e, 0xc7, - /* punpcklqdq xmm0,xmm0 */ 0x66, 0x0f, 0x6c, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long*, 16 / long.sizeof)([ - /* push rax */ 0x50, - /* punpcklqdq xmm0,XMMWORD PTR [rdi] */ 0x66, 0x0f, 0x6c, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float, 16 / float.sizeof)([ - /* push rax */ 0x50, - /* shufps xmm0,xmm0,0x0 */ 0x0f, 0xc6, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float*, 16 / float.sizeof)([ - /* push rax */ 0x50, - /* movss xmm0,DWORD PTR [rdi] */ 0xf3, 0x0f, 0x10, 0x07, - /* shufps xmm0,xmm0,0x0 */ 0x0f, 0xc6, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double, 16 / double.sizeof)([ - /* push rax */ 0x50, - /* unpcklpd xmm0,xmm0 */ 0x66, 0x0f, 0x14, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double*, 16 / double.sizeof)([ - /* push rax */ 0x50, - /* movsd xmm0,QWORD PTR [rdi] */ 0xf2, 0x0f, 0x10, 0x07, - /* unpcklpd xmm0,xmm0 */ 0x66, 0x0f, 0x14, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), -); - -alias avxCases = AliasSeq!( - Code!(ubyte, 16 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ubyte*, 16 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* movzx eax,BYTE PTR [rdi] */ 0x0f, 0xb6, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ubyte, 32 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ubyte*, 32 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* movzx eax,BYTE PTR [rdi] */ 0x0f, 0xb6, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(byte, 16 / byte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte*, 16 / byte.sizeof)([ - /* push rax */ 0x50, - /* movsx eax,BYTE PTR [rdi] */ 0x0f, 0xbe, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte, 32 / byte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte*, 32 / byte.sizeof)([ - /* push rax */ 0x50, - /* movsx eax,BYTE PTR [rdi] */ 0x0f, 0xbe, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpxor xmm1,xmm1,xmm1 */ 0xc5, 0xf1, 0xef, 0xc9, - /* vpshufb xmm0,xmm0,xmm1 */ 0xc4, 0xe2, 0x79, 0x00, 0xc1, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(ushort, 16 / ushort.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort*, 16 / ushort.sizeof)([ - /* push rax */ 0x50, - /* movzx eax,WORD PTR [rdi] */ 0x0f, 0xb7, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort, 32 / ushort.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort*, 32 / ushort.sizeof)([ - /* push rax */ 0x50, - /* movzx eax,WORD PTR [rdi] */ 0x0f, 0xb7, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(short, 16 / short.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short*, 16 / short.sizeof)([ - /* push rax */ 0x50, - /* movsx eax,WORD PTR [rdi] */ 0x0f, 0xbf, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short, 32 / short.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short*, 32 / short.sizeof)([ - /* push rax */ 0x50, - /* movsx eax,WORD PTR [rdi] */ 0x0f, 0xbf, 0x07, - /* vmovd xmm0,eax */ 0xc5, 0xf9, 0x6e, 0xc0, - /* vpunpcklwd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x61, 0xc0, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(uint, 16 / uint.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint*, 16 / uint.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss xmm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint, 32 / uint.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint*, 32 / uint.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss ymm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int, 16 / int.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int*, 16 / int.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss xmm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int, 32 / int.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpshufd xmm0,xmm0,0x0 */ 0xc5, 0xf9, 0x70, 0xc0, 0x00, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int*, 32 / int.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss ymm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong, 16 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpunpcklqdq xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x6c, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong*, 16 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vpunpcklqdq xmm0,xmm0,XMMWORD PTR [rdi] */ 0xc5, 0xf9, 0x6c, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong, 32 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpunpcklqdq xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x6c, 0xc0, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong*, 32 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastsd ymm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x19, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long, 16 / long.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpunpcklqdq xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x6c, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long*, 16 / long.sizeof)([ - /* push rax */ 0x50, - /* vpunpcklqdq xmm0,xmm0,XMMWORD PTR [rdi] */ 0xc5, 0xf9, 0x6c, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long, 32 / long.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpunpcklqdq xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x6c, 0xc0, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long*, 32 / long.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastsd ymm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x19, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float, 16 / float.sizeof)([ - /* push rax */ 0x50, - /* vshufps xmm0,xmm0,xmm0,0x0 */ 0xc5, 0xf8, 0xc6, 0xc0, 0x00, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float*, 16 / float.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss xmm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float, 32 / float.sizeof)([ - /* push rax */ 0x50, - /* vshufps ymm0,ymm0,ymm0,0x0 */ 0xc5, 0xfc, 0xc6, 0xc0, 0x00, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float*, 32 / float.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss ymm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double, 16 / double.sizeof)([ - /* push rax */ 0x50, - /* vunpcklpd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x14, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double*, 16 / double.sizeof)([ - /* push rax */ 0x50, - /* vmovsd xmm0,QWORD PTR [rdi] */ 0xc5, 0xfb, 0x10, 0x07, - /* vunpcklpd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x14, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double, 32 / double.sizeof)([ - /* push rax */ 0x50, - /* vunpcklpd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x14, 0xc0, - /* vinsertf128 ymm0,ymm0,xmm0,0x1 */ 0xc4, 0xe3, 0x7d, 0x18, 0xc0, 0x01, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(double*, 32 / double.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastsd ymm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x19, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), -); - -alias avx2Cases = AliasSeq!( - Code!(ubyte, 16 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastb xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x78, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ubyte*, 16 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastb xmm0,BYTE PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x78, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ubyte, 32 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastb ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x78, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ubyte*, 32 / ubyte.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastb ymm0,BYTE PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x78, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte, 16 / byte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastb xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x78, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte*, 16 / byte.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastb xmm0,BYTE PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x78, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte, 32 / byte.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastb ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x78, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(byte*, 32 / byte.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastb ymm0,BYTE PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x78, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort, 16 / ushort.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastw xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x79, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort*, 16 / ushort.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastw xmm0,WORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x79, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort, 32 / ushort.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastw ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x79, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ushort*, 32 / ushort.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastw ymm0,WORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x79, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short, 16 / short.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastw xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x79, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short*, 16 / short.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastw xmm0,WORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x79, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short, 32 / short.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastw ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x79, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(short*, 32 / short.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastw ymm0,WORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x79, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint, 16 / uint.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastd xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x58, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint*, 16 / uint.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastd xmm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x58, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint, 32 / uint.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastd ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x58, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(uint*, 32 / uint.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastd ymm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x58, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int, 16 / int.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastd xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x58, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int*, 16 / int.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastd xmm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x58, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int, 32 / int.sizeof)([ - /* push rax */ 0x50, - /* vmovd xmm0,edi */ 0xc5, 0xf9, 0x6e, 0xc7, - /* vpbroadcastd ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x58, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(int*, 32 / int.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastd ymm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x58, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong, 16 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpbroadcastq xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x59, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(ulong*, 16 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastq xmm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x59, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(ulong, 32 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpbroadcastq ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x59, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(ulong*, 32 / ulong.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastq ymm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x59, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long, 16 / long.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpbroadcastq xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x59, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(long*, 16 / long.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastq xmm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x59, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(long, 32 / long.sizeof)([ - /* push rax */ 0x50, - /* vmovq xmm0,rdi */ 0xc4, 0xe1, 0xf9, 0x6e, 0xc7, - /* vpbroadcastq ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x59, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - /* add BYTE PTR [rax],al */ 0x00, 0x00, - ]), - Code!(long*, 32 / long.sizeof)([ - /* push rax */ 0x50, - /* vpbroadcastq ymm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x59, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float, 16 / float.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss xmm0,xmm0 */ 0xc4, 0xe2, 0x79, 0x18, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float*, 16 / float.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss xmm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x79, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float, 32 / float.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x18, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(float*, 32 / float.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastss ymm0,DWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x18, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double, 16 / double.sizeof)([ - /* push rax */ 0x50, - /* vunpcklpd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x14, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double*, 16 / double.sizeof)([ - /* push rax */ 0x50, - /* vmovsd xmm0,QWORD PTR [rdi] */ 0xc5, 0xfb, 0x10, 0x07, - /* vunpcklpd xmm0,xmm0,xmm0 */ 0xc5, 0xf9, 0x14, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double, 32 / double.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastsd ymm0,xmm0 */ 0xc4, 0xe2, 0x7d, 0x19, 0xc0, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), - Code!(double*, 32 / double.sizeof)([ - /* push rax */ 0x50, - /* vbroadcastsd ymm0,QWORD PTR [rdi] */ 0xc4, 0xe2, 0x7d, 0x19, 0x07, - /* pop rcx */ 0x59, - /* ret */ 0xc3, - ]), -); -// nonPIC end -} // dfmt on version (D_AVX2)