| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: llc -mtriple=amdgpu9.00 < %s | FileCheck %s |
| |
| ; Two vectors are derived from the same poison-padded base constant. CSE shares |
| ; the base BUILD_VECTOR; the combine rebuilds each insert as its own |
| ; BUILD_VECTOR so the shared base does not force copies of its unused lanes. |
| define void @shared_poison_base(i32 %a, i32 %b, ptr addrspace(1) %out0, ptr addrspace(1) %out1) { |
| ; CHECK-LABEL: shared_poison_base: |
| ; CHECK: ; %bb.0: |
| ; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| ; CHECK-NEXT: v_mov_b32_e32 v7, v0 |
| ; CHECK-NEXT: v_mov_b32_e32 v6, 1 |
| ; CHECK-NEXT: global_store_dwordx4 v[2:3], v[6:9], off |
| ; CHECK-NEXT: global_store_dwordx4 v[4:5], v[1:4], off |
| ; CHECK-NEXT: s_waitcnt vmcnt(0) |
| ; CHECK-NEXT: s_setpc_b64 s[30:31] |
| %v0 = insertelement <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>, i32 %a, i64 1 |
| %v1 = insertelement <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>, i32 %b, i64 0 |
| store <4 x i32> %v0, ptr addrspace(1) %out0 |
| store <4 x i32> %v1, ptr addrspace(1) %out1 |
| ret void |
| } |