Skip to content

Commit 7786266

Browse files
authored
AMDGPU: Expand shuffle testing with generated tests (#123574)
Add some generated tests with every shuffle permutation for relevant vector element types and sizes. Not sure if this is going overboard with the number of tests. I pruned out the largest cases (16 and 32-bit cases are impractically large), and there's redundancy when testing the pointer cases (at least for SelectionDAG). This uses inline assembly to produce sample values because of how the ABI is lowered when using a function argument. Since we break all arguments into 32-bit pieces, a shuffle never ends up forming. We need separate handling to reconstruct shuffles in contexts involving physical registers in ABI contexts. I wrote a small tool to generate these, so I can easily change the exact test body. Not sure if it's worth posting anywhere. This is in preparation for making better use of v_pk_mov_b32, v_mov_b64 and s_mov_b64 in shuffles.
1 parent e87b843 commit 7786266

File tree

79 files changed

+900397
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+900397
-0
lines changed

llvm/test/CodeGen/AMDGPU/shufflevector.v2bf16.v2bf16.ll

+2,042
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2bf16.v3bf16.ll

+4,437
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2bf16.v4bf16.ll

+7,377
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2bf16.v8bf16.ll

+27,671
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f16.v2f16.ll

+2,042
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f16.v3f16.ll

+4,437
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f16.v4f16.ll

+7,377
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f16.v8f16.ll

+27,671
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f32.v2f32.ll

+1,875
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f32.v3f32.ll

+4,236
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f32.v4f32.ll

+6,929
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2f32.v8f32.ll

+25,924
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i16.v2i16.ll

+2,021
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i16.v3i16.ll

+4,404
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i16.v4i16.ll

+7,263
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i16.v8i16.ll

+27,155
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i32.v2i32.ll

+1,875
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i32.v3i32.ll

+4,236
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i32.v4i32.ll

+6,929
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i32.v8i32.ll

+25,924
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i64.v2i64.ll

+2,104
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i64.v3i64.ll

+4,469
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i64.v4i64.ll

+7,547
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2i64.v8i64.ll

+31,395
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2p0.v2p0.ll

+2,104
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2p0.v3p0.ll

+4,469
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2p0.v4p0.ll

+7,547
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2p3.v2p3.ll

+1,875
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2p3.v3p3.ll

+4,236
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2p3.v4p3.ll

+6,929
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v2p3.v8p3.ll

+25,924
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3bf16.v2bf16.ll

+4,042
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3bf16.v3bf16.ll

+9,009
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3bf16.v4bf16.ll

+15,446
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3f16.v2f16.ll

+4,042
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3f16.v3f16.ll

+9,009
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3f16.v4f16.ll

+15,446
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3f32.v2f32.ll

+4,166
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3f32.v3f32.ll

+8,883
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3f32.v4f32.ll

+15,324
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i16.v2i16.ll

+3,964
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i16.v3i16.ll

+8,900
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i16.v4i16.ll

+15,161
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i32.v2i32.ll

+4,166
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i32.v3i32.ll

+8,883
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i32.v4i32.ll

+15,324
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i64.v2i64.ll

+4,508
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i64.v3i64.ll

+9,583
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3i64.v4i64.ll

+16,611
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3p0.v2p0.ll

+4,508
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3p0.v3p0.ll

+9,583
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3p0.v4p0.ll

+16,611
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3p3.v2p3.ll

+4,166
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3p3.v3p3.ll

+8,883
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v3p3.v4p3.ll

+15,324
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4bf16.v2bf16.ll

+6,535
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4bf16.v3bf16.ll

+14,253
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4bf16.v4bf16.ll

+24,202
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4f16.v2f16.ll

+6,535
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4f16.v3f16.ll

+14,253
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4f16.v4f16.ll

+24,202
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4f32.v2f32.ll

+6,422
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4f32.v3f32.ll

+14,014
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4f32.v4f32.ll

+24,149
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i16.v2i16.ll

+6,199
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i16.v3i16.ll

+13,983
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i16.v4i16.ll

+23,344
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i32.v2i32.ll

+6,434
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i32.v3i32.ll

+14,014
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i32.v4i32.ll

+24,149
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i64.v2i64.ll

+7,310
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i64.v3i64.ll

+16,014
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4i64.v4i64.ll

+27,249
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4p0.v2p0.ll

+7,310
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4p0.v3p0.ll

+16,014
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4p0.v4p0.ll

+27,249
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4p3.v2p3.ll

+6,434
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4p3.v3p3.ll

+14,014
Large diffs are not rendered by default.

llvm/test/CodeGen/AMDGPU/shufflevector.v4p3.v4p3.ll

+24,149
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)