llvm
6e798350 - [X86] Add baseline tests exposing invalid masked folds. (#178411)

Commit
5 days ago
[X86] Add baseline tests exposing invalid masked folds. (#178411) This tests exposes invalid same-mask fold. We need prevent folding the load into an "interleave‑type instruction", because doing so removes the double mask application, which affects the final result of the operation. For some instructions, folding the load is simply invalid, even if the same mask is used. I have already prepared a patch. Few examples ``` EVEX.128.66.0F.WIG 67 /r VPACKUSWB xmm1{k1}{z}, xmm2, xmm3/m128 A: 00010203 7F000001 80000002 DEADBEEF E : 00000000 00000001 00000002 00000003 D: 11111111 22222222 33333333 44444444 k = 0x0400 Masked_e = 00000000 00000000 00000000 00000000 (vmovdqu8{k}{z} Masked_e E) res1 = 00000000 00000000 00010000 00000000 (VPACKUSWB D{k}{z}, A, E) res2 = 00000000 00000000 00000000 00000000 (VPACKUSWB D{k}{z}, A, Masked_e) EVEX.128.66.0F38.W0 C4 /r VPCONFLICTD xmm1 {k1}{z}, xmm2/m128/m32bcst A: DAA66D2B FFFFFFFC FFFFFFFC D9A0643C E : 7DDF743F 00000000 5FD99E73 4ED634C9 D: 2629AB38 9E37782F 67BB800F AD66764A k = 0x0002 Masked_e = (vmovdqu32 {k}{z} Masked_e E) res1 = 00000000 00000000 00000000 00000000 (VPCONFLICTD D{k}{z}, E) res2 = 00000000 00000001 00000000 00000000 (VPCONFLICTD D{k}{z}, Masked_e) EVEX.128.66.0F38.W1 8D /r VPERMW xmm1 {k1}{z}, xmm2, xmm3/m128 A: 00010203 7F000001 80000002 DEADBEEF E : 00000000 00000001 00000002 00000003 D: 11111111 22222222 33333333 44444444 k = 0x0010 Masked_e = 00000000 00000000 00000002 00000000 (vmovdqu16 {k}{z} Masked_e E) res1 = 00000000 00000000 00000001 00000000 (vpermw D{k}{z}, A, E) res2 = 00000000 00000000 00000000 00000000 (vpermw D{k}{z}, A, Masked_e) EVEX.128.66.0F38.W0 78 /r VPBROADCASTB xmm1{k1}{z}, xmm2/m8 E : 7F4A7C15 6E490933 5D4C9659 4C433CE3 D: F63F9D36 97F6E2B2 9432E8E6 FAEE7A3E k = 0x0002 Masked_e = 00007C00 00000000 00000000 00000000 (vmovdqu8{k}{z} Masked_e E) res = 00001500 00000000 00000000 00000000 (vpbroadcastb D{k}{z}, E) res = 00000000 00000000 00000000 00000000 (vpbroadcastb D{k}{z}, Masked_e) ```
Author
Committer
Parents
Loading