diff options
Diffstat (limited to 'test/CodeGen/R600/ctpop64.ll')
-rw-r--r-- | test/CodeGen/R600/ctpop64.ll | 78 |
1 files changed, 39 insertions, 39 deletions
diff --git a/test/CodeGen/R600/ctpop64.ll b/test/CodeGen/R600/ctpop64.ll index 05f2ccc3991..2efac8f2067 100644 --- a/test/CodeGen/R600/ctpop64.ll +++ b/test/CodeGen/R600/ctpop64.ll @@ -7,11 +7,11 @@ declare <8 x i64> @llvm.ctpop.v8i64(<8 x i64>) nounwind readnone declare <16 x i64> @llvm.ctpop.v16i64(<16 x i64>) nounwind readnone ; FUNC-LABEL: {{^}}s_ctpop_i64: -; SI: S_LOAD_DWORDX2 [[SVAL:s\[[0-9]+:[0-9]+\]]], s{{\[[0-9]+:[0-9]+\]}}, 0xb -; SI: S_BCNT1_I32_B64 [[SRESULT:s[0-9]+]], [[SVAL]] -; SI: V_MOV_B32_e32 [[VRESULT:v[0-9]+]], [[SRESULT]] -; SI: BUFFER_STORE_DWORD [[VRESULT]], -; SI: S_ENDPGM +; SI: s_load_dwordx2 [[SVAL:s\[[0-9]+:[0-9]+\]]], s{{\[[0-9]+:[0-9]+\]}}, 0xb +; SI: s_bcnt1_i32_b64 [[SRESULT:s[0-9]+]], [[SVAL]] +; SI: v_mov_b32_e32 [[VRESULT:v[0-9]+]], [[SRESULT]] +; SI: buffer_store_dword [[VRESULT]], +; SI: s_endpgm define void @s_ctpop_i64(i32 addrspace(1)* noalias %out, i64 %val) nounwind { %ctpop = call i64 @llvm.ctpop.i64(i64 %val) nounwind readnone %truncctpop = trunc i64 %ctpop to i32 @@ -20,12 +20,12 @@ define void @s_ctpop_i64(i32 addrspace(1)* noalias %out, i64 %val) nounwind { } ; FUNC-LABEL: {{^}}v_ctpop_i64: -; SI: BUFFER_LOAD_DWORDX2 v{{\[}}[[LOVAL:[0-9]+]]:[[HIVAL:[0-9]+]]{{\]}}, -; SI: V_MOV_B32_e32 [[VZERO:v[0-9]+]], 0 -; SI: V_BCNT_U32_B32_e32 [[MIDRESULT:v[0-9]+]], v[[LOVAL]], [[VZERO]] -; SI-NEXT: V_BCNT_U32_B32_e32 [[RESULT:v[0-9]+]], v[[HIVAL]], [[MIDRESULT]] -; SI: BUFFER_STORE_DWORD [[RESULT]], -; SI: S_ENDPGM +; SI: buffer_load_dwordx2 v{{\[}}[[LOVAL:[0-9]+]]:[[HIVAL:[0-9]+]]{{\]}}, +; SI: v_mov_b32_e32 [[VZERO:v[0-9]+]], 0 +; SI: v_bcnt_u32_b32_e32 [[MIDRESULT:v[0-9]+]], v[[LOVAL]], [[VZERO]] +; SI-NEXT: v_bcnt_u32_b32_e32 [[RESULT:v[0-9]+]], v[[HIVAL]], [[MIDRESULT]] +; SI: buffer_store_dword [[RESULT]], +; SI: s_endpgm define void @v_ctpop_i64(i32 addrspace(1)* noalias %out, i64 addrspace(1)* noalias %in) nounwind { %val = load i64 addrspace(1)* %in, align 8 %ctpop = call i64 @llvm.ctpop.i64(i64 %val) nounwind readnone @@ -35,9 +35,9 @@ define void @v_ctpop_i64(i32 addrspace(1)* noalias %out, i64 addrspace(1)* noali } ; FUNC-LABEL: {{^}}s_ctpop_v2i64: -; SI: S_BCNT1_I32_B64 -; SI: S_BCNT1_I32_B64 -; SI: S_ENDPGM +; SI: s_bcnt1_i32_b64 +; SI: s_bcnt1_i32_b64 +; SI: s_endpgm define void @s_ctpop_v2i64(<2 x i32> addrspace(1)* noalias %out, <2 x i64> %val) nounwind { %ctpop = call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %val) nounwind readnone %truncctpop = trunc <2 x i64> %ctpop to <2 x i32> @@ -46,11 +46,11 @@ define void @s_ctpop_v2i64(<2 x i32> addrspace(1)* noalias %out, <2 x i64> %val) } ; FUNC-LABEL: {{^}}s_ctpop_v4i64: -; SI: S_BCNT1_I32_B64 -; SI: S_BCNT1_I32_B64 -; SI: S_BCNT1_I32_B64 -; SI: S_BCNT1_I32_B64 -; SI: S_ENDPGM +; SI: s_bcnt1_i32_b64 +; SI: s_bcnt1_i32_b64 +; SI: s_bcnt1_i32_b64 +; SI: s_bcnt1_i32_b64 +; SI: s_endpgm define void @s_ctpop_v4i64(<4 x i32> addrspace(1)* noalias %out, <4 x i64> %val) nounwind { %ctpop = call <4 x i64> @llvm.ctpop.v4i64(<4 x i64> %val) nounwind readnone %truncctpop = trunc <4 x i64> %ctpop to <4 x i32> @@ -59,11 +59,11 @@ define void @s_ctpop_v4i64(<4 x i32> addrspace(1)* noalias %out, <4 x i64> %val) } ; FUNC-LABEL: {{^}}v_ctpop_v2i64: -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: S_ENDPGM +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: s_endpgm define void @v_ctpop_v2i64(<2 x i32> addrspace(1)* noalias %out, <2 x i64> addrspace(1)* noalias %in) nounwind { %val = load <2 x i64> addrspace(1)* %in, align 16 %ctpop = call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %val) nounwind readnone @@ -73,15 +73,15 @@ define void @v_ctpop_v2i64(<2 x i32> addrspace(1)* noalias %out, <2 x i64> addrs } ; FUNC-LABEL: {{^}}v_ctpop_v4i64: -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: V_BCNT_U32_B32 -; SI: S_ENDPGM +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: v_bcnt_u32_b32 +; SI: s_endpgm define void @v_ctpop_v4i64(<4 x i32> addrspace(1)* noalias %out, <4 x i64> addrspace(1)* noalias %in) nounwind { %val = load <4 x i64> addrspace(1)* %in, align 32 %ctpop = call <4 x i64> @llvm.ctpop.v4i64(<4 x i64> %val) nounwind readnone @@ -94,12 +94,12 @@ define void @v_ctpop_v4i64(<4 x i32> addrspace(1)* noalias %out, <4 x i64> addrs ; but there are some cases when the should be allowed. ; FUNC-LABEL: {{^}}ctpop_i64_in_br: -; SI: S_LOAD_DWORDX2 s{{\[}}[[LOVAL:[0-9]+]]:[[HIVAL:[0-9]+]]{{\]}}, s[{{[0-9]+:[0-9]+}}], 0xd -; SI: S_BCNT1_I32_B64 [[RESULT:s[0-9]+]], {{s\[}}[[LOVAL]]:[[HIVAL]]{{\]}} -; SI: V_MOV_B32_e32 v[[VLO:[0-9]+]], [[RESULT]] -; SI: V_MOV_B32_e32 v[[VHI:[0-9]+]], s[[HIVAL]] -; SI: BUFFER_STORE_DWORDX2 {{v\[}}[[VLO]]:[[VHI]]{{\]}} -; SI: S_ENDPGM +; SI: s_load_dwordx2 s{{\[}}[[LOVAL:[0-9]+]]:[[HIVAL:[0-9]+]]{{\]}}, s[{{[0-9]+:[0-9]+}}], 0xd +; SI: s_bcnt1_i32_b64 [[RESULT:s[0-9]+]], {{s\[}}[[LOVAL]]:[[HIVAL]]{{\]}} +; SI: v_mov_b32_e32 v[[VLO:[0-9]+]], [[RESULT]] +; SI: v_mov_b32_e32 v[[VHI:[0-9]+]], s[[HIVAL]] +; SI: buffer_store_dwordx2 {{v\[}}[[VLO]]:[[VHI]]{{\]}} +; SI: s_endpgm define void @ctpop_i64_in_br(i64 addrspace(1)* %out, i64 addrspace(1)* %in, i64 %ctpop_arg, i32 %cond) { entry: %tmp0 = icmp eq i32 %cond, 0 |