Bug 12692 – Add support for __simd in for 32-bits targets

Status
RESOLVED
Resolution
FIXED
Severity
enhancement
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Windows
Creation time
2014-05-02T18:30:00Z
Last change time
2015-10-26T13:15:51Z
Assigned to
nobody
Creator
aliloko

Comments

Comment #0 by aliloko — 2014-05-02T18:30:51Z
If I understand currently, there is no way to have SSE2+ intrinsics in 32-bits targets. The problem is that it makes using intrinsics dubious since many programs must be provided in 32 and 64-bits and be equally fast. Moreover, some markets are 32-bits heavy.
Comment #1 by blah38621 — 2014-05-02T18:33:02Z
The backend doesn't have an issue emitting SIMD instructions on 32-bit, it's just the frontend that doesn't like it currently. Perhaps it's another simple over-limitation like labels in inline-asm?
Comment #2 by blah38621 — 2014-05-02T19:02:28Z
Alright, maybe I was wrong, it appears the backend did indeed have an issue with 32-bit SIMD intrinsics, the fix to https://issues.dlang.org/show_bug.cgi?id=7949 was what introduced the current error message that shows up for 32-bit non-OSX platforms....
Comment #3 by aliloko — 2014-05-04T11:26:20Z
Using this program: ---- import core.simd; void main() { float4 a; a = __simd(XMM.SQRTSS, a); } ---- $dmd test.d test.d(6): Error: undefined identifier __simd $dmd test.d -m64 [compile as expected]
Comment #4 by aliloko — 2015-10-26T13:15:51Z
Works as of DMD 2.069-b2