-
Notifications
You must be signed in to change notification settings - Fork 15.3k
Closed
Labels
Description
| Bugzilla Link | 33795 |
| Resolution | FIXED |
| Resolved on | Aug 17, 2017 10:42 |
| Version | trunk |
| OS | All |
| Blocks | #33196 |
| Attachments | reproducer |
| CC | @topperc,@Delena,@zmodem,@igor-breger,@RKSimon,@ZviRackover |
Extended Description
clang trunk, x86 (32 bit mode).
Clang generates "vpbroadcastb %ch, %xmm1" instruction (at least it intends doing so). The instruction consumes 8 bit from general purpose register, but only 32 registers are allowed. As a result, clang tries to encode
"vpbroadcastb %ch, %xmm1" as 62 f2 7d 08 7a cd, which really is "vpbroadcastb %ebp,%zmm1".
I assume instruction description is incorrect.
The instruction was generated by "Machine Instruction Scheduler on function" pass, if this matters.
Reproducer isn't really small, check "run" file for instruction for compiling it, they should be self explanatory.
Let me know if more details are needed.