Summary: | amd64 front end: Illegal Instruction vcmptrueps | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | dwwork |
Component: | general | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | paolo |
Priority: | NOR | ||
Version First Reported In: | 3.13.0 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | Small C program illustrating the problem |
Description
dwwork
2018-10-01 17:16:17 UTC
I should comment that for simplicity, I compiled the test program with '-mavx -g'. The -mavx is needed, as the intrinsic is part of the AVX instruction set. Well, I can reproduce this, and I see why it fails. The thing is, I'm not sure why you'd want to generate this instruction in the first place. It ignores its operands and returns "true" in each lane (that is, 4 lanes of 0xFFFFFFFF). V handles these comparisons ok in the case where it really is actually a comparison. But for these always-true/always-false cases, I can't think of a quick fix. You might want to have a look at findSSECmpOp() in guest_amd64_toIR.c; VCMPTRUEPS is the missing case 0xF. Fixed: ecc4e970936b8ab2057f0a899d220ac611e83c3e implementation ea09451baf13c13dfea3869b0df34b677e0557bb test cases *** Bug 406669 has been marked as a duplicate of this bug. *** |