Mercurial > hg > CbC > CbC_llvm
diff test/CodeGen/AMDGPU/operand-folding.ll @ 120:1172e4bd9c6f
update 4.0.0
author | mir3636 |
---|---|
date | Fri, 25 Nov 2016 19:14:25 +0900 |
parents | afa8332a0e37 |
children | 803732b1fca8 |
line wrap: on
line diff
--- a/test/CodeGen/AMDGPU/operand-folding.ll Tue Jan 26 22:56:36 2016 +0900 +++ b/test/CodeGen/AMDGPU/operand-folding.ll Fri Nov 25 19:14:25 2016 +0900 @@ -1,4 +1,4 @@ -; RUN: llc < %s -march=amdgcn -mcpu=SI -verify-machineinstrs | FileCheck %s +; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck %s ; CHECK-LABEL: {{^}}fold_sgpr: ; CHECK: v_add_i32_e32 v{{[0-9]+}}, vcc, s @@ -8,7 +8,7 @@ br i1 %tmp0, label %if, label %endif if: - %id = call i32 @llvm.r600.read.tidig.x() + %id = call i32 @llvm.amdgcn.workitem.id.x() %offset = add i32 %fold, %id %tmp1 = getelementptr i32, i32 addrspace(1)* %out, i32 %offset store i32 0, i32 addrspace(1)* %tmp1 @@ -27,7 +27,7 @@ br i1 %tmp0, label %if, label %endif if: - %id = call i32 @llvm.r600.read.tidig.x() + %id = call i32 @llvm.amdgcn.workitem.id.x() %val = or i32 %id, %fold store i32 %val, i32 addrspace(1)* %out br label %endif @@ -63,7 +63,7 @@ define void @vector_inline(<4 x i32> addrspace(1)* %out) { entry: - %tmp0 = call i32 @llvm.r600.read.tidig.x() + %tmp0 = call i32 @llvm.amdgcn.workitem.id.x() %tmp1 = add i32 %tmp0, 1 %tmp2 = add i32 %tmp0, 2 %tmp3 = add i32 %tmp0, 3 @@ -82,7 +82,7 @@ define void @imm_one_use(i32 addrspace(1)* %out) { entry: - %tmp0 = call i32 @llvm.r600.read.tidig.x() + %tmp0 = call i32 @llvm.amdgcn.workitem.id.x() %tmp1 = xor i32 %tmp0, 100 store i32 %tmp1, i32 addrspace(1)* %out ret void @@ -96,7 +96,7 @@ define void @vector_imm(<4 x i32> addrspace(1)* %out) { entry: - %tmp0 = call i32 @llvm.r600.read.tidig.x() + %tmp0 = call i32 @llvm.amdgcn.workitem.id.x() %tmp1 = add i32 %tmp0, 1 %tmp2 = add i32 %tmp0, 2 %tmp3 = add i32 %tmp0, 3 @@ -109,5 +109,21 @@ ret void } -declare i32 @llvm.r600.read.tidig.x() #0 -attributes #0 = { readnone } +; A subregister use operand should not be tied. +; CHECK-LABEL: {{^}}no_fold_tied_subregister: +; CHECK: buffer_load_dwordx2 v{{\[}}[[LO:[0-9]+]]:[[HI:[0-9]+]]{{\]}} +; CHECK: v_mac_f32_e32 v[[LO]], 0x41200000, v[[HI]] +; CHECK: buffer_store_dword v[[LO]] +define void @no_fold_tied_subregister() { + %tmp1 = load volatile <2 x float>, <2 x float> addrspace(1)* undef + %tmp2 = extractelement <2 x float> %tmp1, i32 0 + %tmp3 = extractelement <2 x float> %tmp1, i32 1 + %tmp4 = fmul float %tmp3, 10.0 + %tmp5 = fadd float %tmp4, %tmp2 + store volatile float %tmp5, float addrspace(1)* undef + ret void +} + +declare i32 @llvm.amdgcn.workitem.id.x() #0 + +attributes #0 = { nounwind readnone }