Define __SSE__ when compiling with -msse
The hashable package needs to know if GHC was invoked with -msse4.1 so it can call out to faster C code in that case. I'd like to propose that GHC provides the following defines when running the preprocessor:
```
## If SSE is turned on at all:
#define __SSE__ 1
## Only with -msse2 and up:
#define __SSE2__ 1
## Only with -msse4.1 and up:
#define __SSE4_1__ 1
```
This behavior is consistent with GCC.
Note that on some platforms SSE2 might be enabled by default and so should the defines.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 7.6.1 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Define __SSE__ when compiling with -msse","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"7.6.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"FeatureRequest","description":"The hashable package needs to know if GHC was invoked with -msse4.1 so it can call out to faster C code in that case. I'd like to propose that GHC provides the following defines when running the preprocessor:\r\n\r\n{{{\r\n## If SSE is turned on at all:\r\n#define __SSE__ 1\r\n\r\n## Only with -msse2 and up:\r\n#define __SSE2__ 1\r\n\r\n## Only with -msse4.1 and up:\r\n#define __SSE4_1__ 1\r\n}}}\r\n\r\nThis behavior is consistent with GCC.\r\n\r\nNote that on some platforms SSE2 might be enabled by default and so should the defines.\r\n","type_of_failure":"OtherFailure","blocking":[]} -->
issue