# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=GCN,GFX9
--- |
- define amdgpu_kernel void @smrd_imm(i32 addrspace(4)* %const0) { ret void }
+ define amdgpu_kernel void @smrd_imm(ptr addrspace(4) %const0) { ret void }
define amdgpu_kernel void @smrd_wide() { ret void }
define amdgpu_kernel void @constant_address_positive() { ret void }
define amdgpu_kernel void @smrd_sgpr() { ret void }
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer %s -o - | FileCheck %s
--- |
- @addr = global i8* null
+ @addr = global ptr null
define void @test_blockaddress() {
- store i8* blockaddress(@test_blockaddress, %block), i8** @addr
- indirectbr i8* blockaddress(@test_blockaddress, %block), [label %block]
+ store ptr blockaddress(@test_blockaddress, %block), ptr @addr
+ indirectbr ptr blockaddress(@test_blockaddress, %block), [label %block]
block:
ret void
--- |
- define i32 @widen_load_range0_tbaa(i24 addrspace(1)* %ptr) {
- %load = load i24, i24 addrspace(1)* %ptr, !range !0, !tbaa !1
+ define i32 @widen_load_range0_tbaa(ptr addrspace(1) %ptr) {
+ %load = load i24, ptr addrspace(1) %ptr, !range !0, !tbaa !1
%zext = zext i24 %load to i32
ret i32 %zext
}
- define i32 @widen_load_range1_tbaa(i24 addrspace(1)* %ptr) {
- %load = load i24, i24 addrspace(1)* %ptr, !range !0, !tbaa !1
+ define i32 @widen_load_range1_tbaa(ptr addrspace(1) %ptr) {
+ %load = load i24, ptr addrspace(1) %ptr, !range !0, !tbaa !1
%zext = zext i24 %load to i32
ret i32 %zext
}
- define i32 @widen_load_tbaa0(i24 addrspace(1)* %ptr) {
- %load = load i24, i24 addrspace(1)* %ptr, !tbaa !1
+ define i32 @widen_load_tbaa0(ptr addrspace(1) %ptr) {
+ %load = load i24, ptr addrspace(1) %ptr, !tbaa !1
%zext = zext i24 %load to i32
ret i32 %zext
}
- define i32 @widen_load_tbaa1(i24 addrspace(1)* %ptr) {
- %load = load i24, i24 addrspace(1)* %ptr, !tbaa !1
+ define i32 @widen_load_tbaa1(ptr addrspace(1) %ptr) {
+ %load = load i24, ptr addrspace(1) %ptr, !tbaa !1
%zext = zext i24 %load to i32
ret i32 %zext
}
# CHECK-NEXT: V_ADD_CO_U32_e64 [[SWIZZLE2]], {{%[0-9]+}}, 0, implicit $exec
--- |
- define amdgpu_kernel void @no_cse(i32 addrspace(1)*, i32, i1) {
+ define amdgpu_kernel void @no_cse(ptr addrspace(1), i32, i1) {
entry:
unreachable
if.then:
--- |
- @addr = global i8* null
+ @addr = global ptr null
define void @test_blockaddress() {
- store i8* blockaddress(@test_blockaddress, %block), i8** @addr
- indirectbr i8* blockaddress(@test_blockaddress, %block), [label %block]
+ store ptr blockaddress(@test_blockaddress, %block), ptr @addr
+ indirectbr ptr blockaddress(@test_blockaddress, %block), [label %block]
block: ; preds = %0
ret void
# RUN: llc -amdgpu-global-isel-new-legality -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
--- |
- define amdgpu_kernel void @load_global_v8i32_non_uniform(<8 x i32> addrspace(1)* %in) {
+ define amdgpu_kernel void @load_global_v8i32_non_uniform(ptr addrspace(1) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %global.not.uniform.v8i32 = getelementptr <8 x i32>, <8 x i32> addrspace(1)* %in, i32 %tmp0
- %tmp2 = load <8 x i32>, <8 x i32> addrspace(1)* %global.not.uniform.v8i32
+ %global.not.uniform.v8i32 = getelementptr <8 x i32>, ptr addrspace(1) %in, i32 %tmp0
+ %tmp2 = load <8 x i32>, ptr addrspace(1) %global.not.uniform.v8i32
ret void
}
- define amdgpu_kernel void @load_global_v4i64_non_uniform(<4 x i64> addrspace(1)* %in) {
+ define amdgpu_kernel void @load_global_v4i64_non_uniform(ptr addrspace(1) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %global.not.uniform.v4i64 = getelementptr <4 x i64>, <4 x i64> addrspace(1)* %in, i32 %tmp0
- %tmp2 = load <4 x i64>, <4 x i64> addrspace(1)* %global.not.uniform.v4i64
+ %global.not.uniform.v4i64 = getelementptr <4 x i64>, ptr addrspace(1) %in, i32 %tmp0
+ %tmp2 = load <4 x i64>, ptr addrspace(1) %global.not.uniform.v4i64
ret void
}
- define amdgpu_kernel void @load_global_v16i32_non_uniform(<16 x i32> addrspace(1)* %in) {
+ define amdgpu_kernel void @load_global_v16i32_non_uniform(ptr addrspace(1) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %global.not.uniform.v16i32 = getelementptr <16 x i32>, <16 x i32> addrspace(1)* %in, i32 %tmp0
- %tmp2 = load <16 x i32>, <16 x i32> addrspace(1)* %global.not.uniform.v16i32
+ %global.not.uniform.v16i32 = getelementptr <16 x i32>, ptr addrspace(1) %in, i32 %tmp0
+ %tmp2 = load <16 x i32>, ptr addrspace(1) %global.not.uniform.v16i32
ret void
}
- define amdgpu_kernel void @load_global_v8i64_non_uniform(<8 x i64> addrspace(1)* %in) {
+ define amdgpu_kernel void @load_global_v8i64_non_uniform(ptr addrspace(1) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %global.not.uniform.v8i64 = getelementptr <8 x i64>, <8 x i64> addrspace(1)* %in, i32 %tmp0
- %tmp2 = load <8 x i64>, <8 x i64> addrspace(1)* %global.not.uniform.v8i64
+ %global.not.uniform.v8i64 = getelementptr <8 x i64>, ptr addrspace(1) %in, i32 %tmp0
+ %tmp2 = load <8 x i64>, ptr addrspace(1) %global.not.uniform.v8i64
ret void
}
define amdgpu_kernel void @load_global_v8i32_uniform() {ret void}
define amdgpu_kernel void @load_global_v4i64_uniform() {ret void}
define amdgpu_kernel void @load_global_v16i32_uniform() {ret void}
define amdgpu_kernel void @load_global_v8i64_uniform() {ret void}
- define amdgpu_kernel void @load_constant_v8i32_non_uniform(<8 x i32> addrspace(4)* %in) {
+ define amdgpu_kernel void @load_constant_v8i32_non_uniform(ptr addrspace(4) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %constant.not.uniform.v8i32 = getelementptr <8 x i32>, <8 x i32> addrspace(4)* %in, i32 %tmp0
- %tmp2 = load <8 x i32>, <8 x i32> addrspace(4)* %constant.not.uniform.v8i32
+ %constant.not.uniform.v8i32 = getelementptr <8 x i32>, ptr addrspace(4) %in, i32 %tmp0
+ %tmp2 = load <8 x i32>, ptr addrspace(4) %constant.not.uniform.v8i32
ret void
}
- define amdgpu_kernel void @load_constant_i256_non_uniform(i256 addrspace(4)* %in) {
+ define amdgpu_kernel void @load_constant_i256_non_uniform(ptr addrspace(4) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %constant.not.uniform = getelementptr i256, i256 addrspace(4)* %in, i32 %tmp0
- %tmp2 = load i256, i256 addrspace(4)* %constant.not.uniform
+ %constant.not.uniform = getelementptr i256, ptr addrspace(4) %in, i32 %tmp0
+ %tmp2 = load i256, ptr addrspace(4) %constant.not.uniform
ret void
}
- define amdgpu_kernel void @load_constant_v16i16_non_uniform(<16 x i16> addrspace(4)* %in) {
+ define amdgpu_kernel void @load_constant_v16i16_non_uniform(ptr addrspace(4) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %constant.not.uniform = getelementptr <16 x i16>, <16 x i16> addrspace(4)* %in, i32 %tmp0
- %tmp2 = load <16 x i16>, <16 x i16> addrspace(4)* %constant.not.uniform
+ %constant.not.uniform = getelementptr <16 x i16>, ptr addrspace(4) %in, i32 %tmp0
+ %tmp2 = load <16 x i16>, ptr addrspace(4) %constant.not.uniform
ret void
}
- define amdgpu_kernel void @load_constant_v4i64_non_uniform(<4 x i64> addrspace(4)* %in) {
+ define amdgpu_kernel void @load_constant_v4i64_non_uniform(ptr addrspace(4) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %constant.not.uniform.v4i64 = getelementptr <4 x i64>, <4 x i64> addrspace(4)* %in, i32 %tmp0
- %tmp2 = load <4 x i64>, <4 x i64> addrspace(4)* %constant.not.uniform.v4i64
+ %constant.not.uniform.v4i64 = getelementptr <4 x i64>, ptr addrspace(4) %in, i32 %tmp0
+ %tmp2 = load <4 x i64>, ptr addrspace(4) %constant.not.uniform.v4i64
ret void
}
- define amdgpu_kernel void @load_constant_v16i32_non_uniform(<16 x i32> addrspace(4)* %in) {
+ define amdgpu_kernel void @load_constant_v16i32_non_uniform(ptr addrspace(4) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %constant.not.uniform.v16i32 = getelementptr <16 x i32>, <16 x i32> addrspace(4)* %in, i32 %tmp0
- %tmp2 = load <16 x i32>, <16 x i32> addrspace(4)* %constant.not.uniform.v16i32
+ %constant.not.uniform.v16i32 = getelementptr <16 x i32>, ptr addrspace(4) %in, i32 %tmp0
+ %tmp2 = load <16 x i32>, ptr addrspace(4) %constant.not.uniform.v16i32
ret void
}
- define amdgpu_kernel void @load_constant_v8i64_non_uniform(<8 x i64> addrspace(4)* %in) {
+ define amdgpu_kernel void @load_constant_v8i64_non_uniform(ptr addrspace(4) %in) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %constant.not.uniform.v8i64 = getelementptr <8 x i64>, <8 x i64> addrspace(4)* %in, i32 %tmp0
- %tmp2 = load <8 x i64>, <8 x i64> addrspace(4)* %constant.not.uniform.v8i64
+ %constant.not.uniform.v8i64 = getelementptr <8 x i64>, ptr addrspace(4) %in, i32 %tmp0
+ %tmp2 = load <8 x i64>, ptr addrspace(4) %constant.not.uniform.v8i64
ret void
}
--- |
- define amdgpu_ps i96 @split_smrd_load_range(i96 addrspace(4)* %ptr) {
- %load = load i96, i96 addrspace(4)* %ptr, !range !0
+ define amdgpu_ps i96 @split_smrd_load_range(ptr addrspace(4) %ptr) {
+ %load = load i96, ptr addrspace(4) %ptr, !range !0
ret i96 %load
}
- define amdgpu_ps <3 x i32> @split_smrd_load_tbaa(<3 x i32> addrspace(4)* %ptr) {
- %load = load <3 x i32>, <3 x i32> addrspace(4)* %ptr, !tbaa !1
+ define amdgpu_ps <3 x i32> @split_smrd_load_tbaa(ptr addrspace(4) %ptr) {
+ %load = load <3 x i32>, ptr addrspace(4) %ptr, !tbaa !1
ret <3 x i32> %load
}
# RUN: llc -march=amdgcn -mcpu=hawaii -mattr=+flat-for-global -run-pass=regbankselect %s -verify-machineinstrs -o - | FileCheck %s
--- |
- define amdgpu_kernel void @load_constant(i32 addrspace(4)* %ptr0) {
+ define amdgpu_kernel void @load_constant(ptr addrspace(4) %ptr0) {
ret void
}
- define amdgpu_kernel void @load_constant_volatile(i32 addrspace(4)* %ptr0) {
+ define amdgpu_kernel void @load_constant_volatile(ptr addrspace(4) %ptr0) {
ret void
}
- define amdgpu_kernel void @load_global_uniform_invariant(i32 addrspace(1)* %ptr1) {
- %tmp0 = load i32, i32 addrspace(1)* %ptr1
+ define amdgpu_kernel void @load_global_uniform_invariant(ptr addrspace(1) %ptr1) {
+ %tmp0 = load i32, ptr addrspace(1) %ptr1
ret void
}
- define amdgpu_kernel void @load_global_uniform_noclobber(i32 addrspace(1)* %ptr1) {
- %tmp0 = load i32, i32 addrspace(1)* %ptr1, !amdgpu.noclobber !0
+ define amdgpu_kernel void @load_global_uniform_noclobber(ptr addrspace(1) %ptr1) {
+ %tmp0 = load i32, ptr addrspace(1) %ptr1, !amdgpu.noclobber !0
ret void
}
- define amdgpu_kernel void @load_global_uniform_variant(i32 addrspace(1)* %ptr1) {
- %tmp0 = load i32, i32 addrspace(1)* %ptr1
+ define amdgpu_kernel void @load_global_uniform_variant(ptr addrspace(1) %ptr1) {
+ %tmp0 = load i32, ptr addrspace(1) %ptr1
ret void
}
- define amdgpu_kernel void @load_global_uniform_volatile_invariant(i32 addrspace(1)* %ptr1) {
- %tmp0 = load i32, i32 addrspace(1)* %ptr1
+ define amdgpu_kernel void @load_global_uniform_volatile_invariant(ptr addrspace(1) %ptr1) {
+ %tmp0 = load i32, ptr addrspace(1) %ptr1
ret void
}
- define amdgpu_kernel void @load_global_uniform_atomic_invariant(i32 addrspace(1)* %ptr1) {
- %tmp0 = load i32, i32 addrspace(1)* %ptr1
+ define amdgpu_kernel void @load_global_uniform_atomic_invariant(ptr addrspace(1) %ptr1) {
+ %tmp0 = load i32, ptr addrspace(1) %ptr1
ret void
}
- define amdgpu_kernel void @load_global_non_uniform(i32 addrspace(1)* %ptr2) {
+ define amdgpu_kernel void @load_global_non_uniform(ptr addrspace(1) %ptr2) {
%tmp0 = call i32 @llvm.amdgcn.workitem.id.x() #0
- %tmp1 = getelementptr i32, i32 addrspace(1)* %ptr2, i32 %tmp0
- %tmp2 = load i32, i32 addrspace(1)* %tmp1
+ %tmp1 = getelementptr i32, ptr addrspace(1) %ptr2, i32 %tmp0
+ %tmp2 = load i32, ptr addrspace(1) %tmp1
ret void
}
define void @non_power_of_2() { ret void }
- define amdgpu_kernel void @load_constant_v4i16_from_8_align8(<3 x i16> addrspace(4)* %ptr0) {
+ define amdgpu_kernel void @load_constant_v4i16_from_8_align8(ptr addrspace(4) %ptr0) {
ret void
}
; RUN: llc -march=amdgcn -mcpu=gfx1010 < %s | FileCheck %s -check-prefix=ISA
; RUN: llc -march=amdgcn -mcpu=gfx1010 -stop-before=si-fix-sgpr-copies < %s | FileCheck %s -check-prefix=MIR
-define void @f(i32 %arg, float* %ptr) {
+define void @f(i32 %arg, ptr %ptr) {
; ISA-LABEL: f:
; ISA: ; %bb.0: ; %bb
; ISA-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; MIR-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
; MIR-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
; MIR-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
- ; MIR-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM killed [[S_MOV_B64_]], 0, 0 :: (invariant load (s64) from `<2 x i32> addrspace(4)* null`, align 4294967296, addrspace 4)
+ ; MIR-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM killed [[S_MOV_B64_]], 0, 0 :: (invariant load (s64) from `ptr addrspace(4) null`, align 4294967296, addrspace 4)
; MIR-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[S_LOAD_DWORDX2_IMM]].sub1
; MIR-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_LOAD_DWORDX2_IMM]].sub0
; MIR-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
; MIR-NEXT: FLAT_STORE_DWORD [[COPY8]], [[PHI2]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %ir.ptr)
; MIR-NEXT: SI_RETURN
bb:
- %i = load <2 x i32>, <2 x i32> addrspace(4)* null, align 4294967296
+ %i = load <2 x i32>, ptr addrspace(4) null, align 4294967296
%i1 = extractelement <2 x i32> %i, i64 1
%i2 = extractelement <2 x i32> %i, i64 0
%i3 = lshr i32 %i1, 1
br i1 %i20, label %bb14, label %bb21
bb21:
- store float %i15, float* %ptr, align 4
+ store float %i15, ptr %ptr, align 4
ret void
}
%3 = COPY $vgpr0
%0 = COPY $sgpr0_sgpr1
- %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
%24 = V_ASHRREV_I32_e32 31, %3, implicit $exec
%25 = REG_SEQUENCE %3, 1, %24, 2
%10 = S_MOV_B32 61440
%3 = COPY $vgpr0
%0 = COPY $sgpr0_sgpr1
- %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
%24 = V_ASHRREV_I32_e32 31, %3, implicit $exec
%25 = REG_SEQUENCE %3, 1, %24, 2
%10 = S_MOV_B32 61440
%3 = COPY $vgpr0
%0 = COPY $sgpr0_sgpr1
- %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
%24 = V_ASHRREV_I32_e32 31, %3, implicit $exec
%25 = REG_SEQUENCE %3, 1, %24, 2
%10 = S_MOV_B32 61440
%3 = COPY $vgpr0
%0 = COPY $sgpr0_sgpr1
- %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
%24 = V_ASHRREV_I32_e32 31, %3, implicit $exec
%25 = REG_SEQUENCE %3, 1, %24, 2
%10 = S_MOV_B32 61440
%3 = COPY $vgpr0
%0 = COPY $sgpr0_sgpr1
- %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
%24 = V_ASHRREV_I32_e32 31, %3, implicit $exec
%25 = REG_SEQUENCE %3, 1, %24, 2
%10 = S_MOV_B32 61440
%3 = COPY $vgpr0
%0 = COPY $sgpr0_sgpr1
- %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
%24 = V_ASHRREV_I32_e32 31, %3, implicit $exec
%25 = REG_SEQUENCE %3, 1, %24, 2
%10 = S_MOV_B32 61440
%28:vgpr_32 = IMAGE_LOAD_V1_V4 killed %25, killed %27, 2, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s128) from constant-pool, addrspace 4)
%29:vgpr_32 = nofpexcept V_ADD_F32_e32 0, killed %28, implicit $mode, implicit $exec
$m0 = S_MOV_B32 -1
- DS_WRITE_B32 undef %30:vgpr_32, killed %29, 0, 0, implicit $m0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`, addrspace 3)
+ DS_WRITE_B32 undef %30:vgpr_32, killed %29, 0, 0, implicit $m0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`, addrspace 3)
S_ENDPGM 0
...
%2:vgpr_32 = COPY $vgpr0
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %3:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %3:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%15:vgpr_32 = V_ASHRREV_I32_e64 31, %2, implicit $exec
%16:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %15, %subreg.sub1
%17:vreg_64 = V_LSHLREV_B64_e64 2, killed %16, implicit $exec
# GCN: FLAT_LOAD_DWORD
# GCN-NEXT: FLAT_LOAD_DWORD
--- |
- define amdgpu_kernel void @flat_load_clustering(i32 addrspace(1)* nocapture %arg, i32 addrspace(4)* nocapture readonly %arg1) {
+ define amdgpu_kernel void @flat_load_clustering(ptr addrspace(1) nocapture %arg, ptr addrspace(4) nocapture readonly %arg1) {
bb:
%tid = tail call i32 @llvm.amdgcn.workitem.id.x()
%idxprom = sext i32 %tid to i64
- %gep1 = getelementptr inbounds i32, i32 addrspace(4)* %arg1, i64 %idxprom
- %load1 = load i32, i32 addrspace(4)* %gep1, align 4
- %gep2 = getelementptr inbounds i32, i32 addrspace(1)* %arg, i64 %idxprom
- %gep34 = getelementptr inbounds i32, i32 addrspace(4)* %gep1, i64 4
- %load2 = load i32, i32 addrspace(4)* %gep34, align 4
- %gep4 = getelementptr inbounds i32, i32 addrspace(1)* %gep2, i64 4
- store i32 %load1, i32 addrspace(1)* %gep2, align 4
- store i32 %load2, i32 addrspace(1)* %gep4, align 4
+ %gep1 = getelementptr inbounds i32, ptr addrspace(4) %arg1, i64 %idxprom
+ %load1 = load i32, ptr addrspace(4) %gep1, align 4
+ %gep2 = getelementptr inbounds i32, ptr addrspace(1) %arg, i64 %idxprom
+ %gep34 = getelementptr inbounds i32, ptr addrspace(4) %gep1, i64 4
+ %load2 = load i32, ptr addrspace(4) %gep34, align 4
+ %gep4 = getelementptr inbounds i32, ptr addrspace(1) %gep2, i64 4
+ store i32 %load1, ptr addrspace(1) %gep2, align 4
+ store i32 %load2, ptr addrspace(1) %gep4, align 4
ret void
}
%1 = COPY $sgpr4_sgpr5
%0 = COPY $vgpr0
- %3 = S_LOAD_DWORDX2_IMM %1, 0, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %4 = S_LOAD_DWORDX2_IMM %1, 8, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ %3 = S_LOAD_DWORDX2_IMM %1, 0, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %4 = S_LOAD_DWORDX2_IMM %1, 8, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
%7 = V_LSHLREV_B32_e32 2, %0, implicit $exec
%2 = V_MOV_B32_e32 0, implicit $exec
undef %12.sub0 = V_ADD_CO_U32_e32 %4.sub0, %7, implicit-def $vcc, implicit $exec
# RUN: llc --mtriple=amdgcn--amdhsa -mcpu=fiji -verify-machineinstrs -run-pass si-fold-operands,si-shrink-instructions %s -o - | FileCheck %s
--- |
define amdgpu_kernel void @add_f32_1.0_one_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
+ %f32.val = load volatile float, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xH3C00
%f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile float %f32.add, ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_f32_1.0_multi_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
+ %f32.val = load volatile float, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xH3C00
%f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile float %f32.add, ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_f32_1.0_one_f32_use_one_f16_use () #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
+ %f32.val = load volatile float, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xH3C00
%f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile float %f32.add, ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_f32_1.0_one_f32_use_multi_f16_use () #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
+ %f32.val = load volatile float, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xH3C00
%f16.add1 = fadd half %f16.val1, 0xH3C00
%f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f16.add1, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile half %f16.add1, ptr addrspace(1) undef
+ store volatile float %f32.add, ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_i32_1_multi_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xH0001
%f16.add1 = fadd half %f16.val1, 0xH0001
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f16.add1,half addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile half %f16.add1,ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_i32_m2_one_f32_use_multi_f16_use () #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
+ %f32.val = load volatile float, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xHFFFE
%f16.add1 = fadd half %f16.val1, 0xHFFFE
%f32.add = fadd float %f32.val, 0xffffffffc0000000
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f16.add1, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile half %f16.add1, ptr addrspace(1) undef
+ store volatile float %f32.add, ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_f16_1.0_multi_f32_use() #0 {
- %f32.val0 = load volatile float, float addrspace(1)* undef
- %f32.val1 = load volatile float, float addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
+ %f32.val0 = load volatile float, ptr addrspace(1) undef
+ %f32.val1 = load volatile float, ptr addrspace(1) undef
+ %f32.val = load volatile float, ptr addrspace(1) undef
%f32.add0 = fadd float %f32.val0, 1.0
%f32.add1 = fadd float %f32.val1, 1.0
- store volatile float %f32.add0, float addrspace(1)* undef
- store volatile float %f32.add1, float addrspace(1)* undef
+ store volatile float %f32.add0, ptr addrspace(1) undef
+ store volatile float %f32.add1, ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_f16_1.0_other_high_bits_multi_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile half, half addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
+ %f32.val = load volatile half, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xH3C00
%f32.add = fadd half %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f32.add, half addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile half %f32.add, ptr addrspace(1) undef
ret void
}
define amdgpu_kernel void @add_f16_1.0_other_high_bits_use_f16_f32() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile half, half addrspace(1)* undef
+ %f16.val0 = load volatile half, ptr addrspace(1) undef
+ %f16.val1 = load volatile half, ptr addrspace(1) undef
+ %f32.val = load volatile half, ptr addrspace(1) undef
%f16.add0 = fadd half %f16.val0, 0xH3C00
%f32.add = fadd half %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f32.add, half addrspace(1)* undef
+ store volatile half %f16.add0, ptr addrspace(1) undef
+ store volatile half %f32.add, ptr addrspace(1) undef
ret void
}
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
%12 = V_MOV_B32_e32 1065353216, implicit $exec
%13 = V_ADD_F16_e64 0, killed %11, 0, %12, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_SHORT_OFFSET killed %13, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %13, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
%13 = V_MOV_B32_e32 1065353216, implicit $exec
%14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit $mode, implicit $exec
%15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
%14 = V_MOV_B32_e32 1065353216, implicit $exec
%15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
%16 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `float addrspace(1)* undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_DWORD_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
%14 = V_MOV_B32_e32 1065353216, implicit $exec
%15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
%16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit $mode, implicit $exec
%17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `float addrspace(1)* undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
%13 = V_MOV_B32_e32 1, implicit $exec
%14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit $mode, implicit $exec
%15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
%14 = V_MOV_B32_e32 -2, implicit $exec
%15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
%16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit $mode, implicit $exec
%17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `float addrspace(1)* undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
- %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
%13 = V_MOV_B32_e32 15360, implicit $exec
%14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
%15 = V_ADD_F32_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `float addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `float addrspace(1)* undef`)
+ BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_DWORD_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
%13 = V_MOV_B32_e32 80886784, implicit $exec
%14 = V_ADD_F16_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
%15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
%8 = S_MOV_B32 61440
%9 = S_MOV_B32 -1
%10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `half addrspace(1)* undef`)
+ %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
+ %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, implicit $exec :: (volatile load (s16) from `ptr addrspace(1) undef`)
%13 = V_MOV_B32_e32 305413120, implicit $exec
%14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
%15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
- BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `float addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `half addrspace(1)* undef`)
+ BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
+ BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, implicit $exec :: (volatile store (s16) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
name: flat_atomic_fcmpswap_to_s_denorm_mode
body: |
bb.0:
- FLAT_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fcmpswap_x2_to_s_denorm_mode
body: |
bb.0:
- FLAT_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmax_to_s_denorm_mode
body: |
bb.0:
- FLAT_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmax_x2_to_s_denorm_mode
body: |
bb.0:
- FLAT_ATOMIC_FMAX_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FMAX_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmin_to_s_denorm_mode
body: |
bb.0:
- FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmin_x2_to_s_denorm_mode
body: |
bb.0:
- FLAT_ATOMIC_FMIN_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FMIN_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = FLAT_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = FLAT_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmax_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = FLAT_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = FLAT_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmax_x2_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = FLAT_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = FLAT_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmin_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = FLAT_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = FLAT_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fmin_x2_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = FLAT_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = FLAT_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_atomic_fcmpswap_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = FLAT_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = FLAT_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fcmpswap_to_s_denorm_mode
body: |
bb.0:
- GLOBAL_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ GLOBAL_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fcmpswap_x2_to_s_denorm_mode
body: |
bb.0:
- GLOBAL_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ GLOBAL_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmax_to_s_denorm_mode
body: |
bb.0:
- GLOBAL_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ GLOBAL_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmax_x2_to_s_denorm_mode
body: |
bb.0:
- GLOBAL_ATOMIC_FMAX_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ GLOBAL_ATOMIC_FMAX_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmin_to_s_denorm_mode
body: |
bb.0:
- GLOBAL_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ GLOBAL_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmin_x2_to_s_denorm_mode
body: |
bb.0:
- GLOBAL_ATOMIC_FMIN_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ GLOBAL_ATOMIC_FMIN_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fcmpswap_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = GLOBAL_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = GLOBAL_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmax_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmax_x2_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmin_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmin_x2_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fcmpswap_saddr_to_s_denorm_mode
body: |
bb.0:
- GLOBAL_ATOMIC_FCMPSWAP_SADDR undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ GLOBAL_ATOMIC_FCMPSWAP_SADDR undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fcmpswap_x2_saddr_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_128, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_128, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmax_saddr_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmax_x2_saddr_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmin_saddr_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: global_atomic_fmin_x2_saddr_rtn_to_s_denorm_mode
body: |
bb.0:
- %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_fp_atomic_to_s_denorm_mode_waitcnt
body: |
bb.0:
- FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
S_WAITCNT 0
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
name: flat_fp_atomic_to_s_denorm_mode_valu
body: |
bb.0:
- FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
+ FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `ptr addrspace(1) undef`)
%2:vgpr_32 = V_ADD_F32_e32 undef %1:vgpr_32, undef %1:vgpr_32, implicit $mode, implicit $exec
S_DENORM_MODE 0, implicit-def $mode, implicit $mode
...
--- |
define amdgpu_ps <4 x float> @exp_done_waitcnt(<4 x i32> inreg, <4 x
i32> inreg, i32 inreg %w, float %v) #0 {
- %a = load volatile float, float addrspace(1)* undef
- %b = load volatile float, float addrspace(1)* undef
- %c = load volatile float, float addrspace(1)* undef
- %d = load volatile float, float addrspace(1)* undef
+ %a = load volatile float, ptr addrspace(1) undef
+ %b = load volatile float, ptr addrspace(1) undef
+ %c = load volatile float, ptr addrspace(1) undef
+ %d = load volatile float, ptr addrspace(1) undef
call void @llvm.amdgcn.exp.f32(i32 15, i32 1, float %a, float %b, float %c, float %d, i1 true, i1 false)
ret <4 x float> <float 5.000000e-01, float 1.000000e+00, float 2.000000e+00, float 4.000000e+00>
}
bb.0 (%ir-block.2):
$sgpr3 = S_MOV_B32 61440
$sgpr2 = S_MOV_B32 -1
- $vgpr0 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
- $vgpr1 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
- $vgpr2 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
- $vgpr3 = BUFFER_LOAD_DWORD_OFFSET killed $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `float addrspace(1)* undef`)
+ $vgpr0 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
+ $vgpr1 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
+ $vgpr2 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
+ $vgpr3 = BUFFER_LOAD_DWORD_OFFSET killed $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32) from `ptr addrspace(1) undef`)
EXP_DONE 0, killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, -1, -1, 15, implicit $exec
$vgpr0 = V_MOV_B32_e32 1056964608, implicit $exec
$vgpr1 = V_MOV_B32_e32 1065353216, implicit $exec
# RUN: llc -run-pass block-placement -march=amdgcn -verify-machineinstrs -o - %s | FileCheck %s
--- |
- define amdgpu_kernel void @invert_br_undef_vcc(float %cond, i32 addrspace(1)* %out) #0 {
+ define amdgpu_kernel void @invert_br_undef_vcc(float %cond, ptr addrspace(1) %out) #0 {
entry:
br i1 undef, label %if, label %else, !structurizecfg.uniform !0, !amdgpu.uniform !0
else: ; preds = %entry
- store volatile i32 100, i32 addrspace(1)* undef
+ store volatile i32 100, ptr addrspace(1) undef
br label %done, !structurizecfg.uniform !0
if: ; preds = %entry
- store volatile i32 9, i32 addrspace(1)* undef
+ store volatile i32 9, ptr addrspace(1) undef
br label %done, !structurizecfg.uniform !0
done: ; preds = %if, %else
%value = phi i32 [ 0, %if ], [ 1, %else ]
- store i32 %value, i32 addrspace(1)* %out
+ store i32 %value, ptr addrspace(1) %out
ret void
}
bb.0.entry:
liveins: $sgpr0_sgpr1
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
$sgpr7 = S_MOV_B32 61440
$sgpr6 = S_MOV_B32 -1
S_CBRANCH_VCCNZ %bb.2, implicit undef $vcc
liveins: $sgpr6, $sgpr7, $sgpr0_sgpr1_sgpr2_sgpr3:0x00000003
$vgpr0 = V_MOV_B32_e32 100, implicit $exec
- BUFFER_STORE_DWORD_OFFSET killed $vgpr0, killed $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `i32 addrspace(1)* undef`)
+ BUFFER_STORE_DWORD_OFFSET killed $vgpr0, killed $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
$vgpr0 = V_MOV_B32_e32 1, implicit $exec
S_BRANCH %bb.3
liveins: $sgpr6, $sgpr7, $sgpr0_sgpr1_sgpr2_sgpr3:0x00000003
$vgpr0 = V_MOV_B32_e32 9, implicit $exec
- BUFFER_STORE_DWORD_OFFSET killed $vgpr0, killed $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `i32 addrspace(1)* undef`)
+ BUFFER_STORE_DWORD_OFFSET killed $vgpr0, killed $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`)
$vgpr0 = V_MOV_B32_e32 0, implicit $exec
bb.3.done:
body: |
bb.0:
$m0 = S_MOV_B32 0
- BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef` + 4), (store (s32) into `i32 addrspace(3)* undef` + 4)
- $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef` + 4), (store (s32) into `ptr addrspace(3) undef` + 4)
+ $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
S_ENDPGM 0
...
body: |
bb.0:
$m0 = S_MOV_B32 0
- BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef`), (store (s32) into `i32 addrspace(3)* undef`)
- $vgpr10 = BUFFER_LOAD_DWORD_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef`)
- $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef`), (store (s32) into `ptr addrspace(3) undef`)
+ $vgpr10 = BUFFER_LOAD_DWORD_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef`)
+ $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
S_ENDPGM 0
...
body: |
bb.0:
$m0 = S_MOV_B32 0
- BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef`), (store (s32) into `i32 addrspace(3)* undef`)
- $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `i32* undef`)
+ BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef`), (store (s32) into `ptr addrspace(3) undef`)
+ $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr undef`)
S_ENDPGM 0
body: |
bb.0:
$m0 = S_MOV_B32 0
- GLOBAL_LOAD_LDS_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef` + 4), (store (s32) into `i32 addrspace(3)* undef` + 4)
- $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ GLOBAL_LOAD_LDS_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef` + 4), (store (s32) into `ptr addrspace(3) undef` + 4)
+ $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
S_ENDPGM 0
...
body: |
bb.0:
$m0 = S_MOV_B32 0
- SCRATCH_LOAD_LDS_DWORD $vgpr0, 4, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(5)* undef` + 4), (store (s32) into `i32 addrspace(3)* undef` + 4)
- $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ SCRATCH_LOAD_LDS_DWORD $vgpr0, 4, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(5) undef` + 4), (store (s32) into `ptr addrspace(3) undef` + 4)
+ $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
S_ENDPGM 0
...
body: |
bb.0:
$m0 = S_MOV_B32 0
- BUFFER_STORE_LDS_DWORD $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(3)* undef` + 4), (store (s32) into `i32 addrspace(1)* undef` + 4)
- $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ BUFFER_STORE_LDS_DWORD $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(3) undef` + 4), (store (s32) into `ptr addrspace(1) undef` + 4)
+ $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
S_ENDPGM 0
...
body: |
bb.0:
$m0 = S_MOV_B32 0
- BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef`), (store (s32) into `i32 addrspace(3)* undef`)
- BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef` + 4), (store (s32) into `i32 addrspace(3)* undef` + 4)
- BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 8, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `i32 addrspace(1)* undef` + 8), (store (s32) into `i32 addrspace(3)* undef` + 8)
- $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef`), (store (s32) into `ptr addrspace(3) undef`)
+ BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef` + 4), (store (s32) into `ptr addrspace(3) undef` + 4)
+ BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 8, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) undef` + 8), (store (s32) into `ptr addrspace(3) undef` + 8)
+ $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
S_ENDPGM 0
...
# operations correctly with/without DLC bit.
--- |
- define amdgpu_kernel void @test1(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test1(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
- define amdgpu_kernel void @test2(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test2(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
- define amdgpu_kernel void @test3(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test3(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
- define amdgpu_kernel void @test4(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test4(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
...
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
# operations correctly with/without SCC bit.
--- |
- define amdgpu_kernel void @test1(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test1(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
- define amdgpu_kernel void @test2(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test2(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
- define amdgpu_kernel void @test3(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test3(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
- define amdgpu_kernel void @test4(i32 addrspace(1)* %out) {
- %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
- store i32 123, i32 addrspace(1)* %out.gep.1
- store i32 456, i32 addrspace(1)* %out
+ define amdgpu_kernel void @test4(ptr addrspace(1) %out) {
+ %out.gep.1 = getelementptr i32, ptr addrspace(1) %out, i32 1
+ store i32 123, ptr addrspace(1) %out.gep.1
+ store i32 456, ptr addrspace(1) %out
ret void
}
...
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
$sgpr3 = S_MOV_B32 61440
%0:sgpr_64 = COPY $sgpr0_sgpr1
- %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, addrspace 4)
+ %1:sgpr_64 = S_LOAD_DWORDX2_IMM %1, 36, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, addrspace 4)
%2:sgpr_32 = COPY $sgpr2
%3:sgpr_32 = COPY $sgpr3
%4:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2
declare i32 @llvm.amdgcn.workitem.id.x() #0
define amdgpu_kernel void @atomic_max_i32_noret(
- i32 addrspace(1)* %out,
- i32 addrspace(1)* addrspace(1)* %in,
- i32 addrspace(1)* %x,
+ ptr addrspace(1) %out,
+ ptr addrspace(1) %in,
+ ptr addrspace(1) %x,
i32 %y) #1 {
%tid = call i32 @llvm.amdgcn.workitem.id.x()
%idxprom = sext i32 %tid to i64
- %tid.gep = getelementptr i32 addrspace(1)*, i32 addrspace(1)* addrspace(1)* %in, i64 %idxprom
- %ptr = load volatile i32 addrspace(1)*, i32 addrspace(1)* addrspace(1)* %tid.gep
+ %tid.gep = getelementptr ptr addrspace(1), ptr addrspace(1) %in, i64 %idxprom
+ %ptr = load volatile ptr addrspace(1), ptr addrspace(1) %tid.gep
%xor = xor i32 %tid, 1
%cmp = icmp ne i32 %xor, 0
%1 = call { i1, i64 } @llvm.amdgcn.if(i1 %cmp)
br i1 %2, label %atomic, label %exit
atomic: ; preds = %0
- %gep = getelementptr i32, i32 addrspace(1)* %ptr, i32 100
- %ret = atomicrmw max i32 addrspace(1)* %gep, i32 %y seq_cst
+ %gep = getelementptr i32, ptr addrspace(1) %ptr, i32 100
+ %ret = atomicrmw max ptr addrspace(1) %gep, i32 %y seq_cst
br label %exit
exit: ; preds = %atomic, %0
successors: %bb.1.atomic(0x40000000), %bb.2.exit(0x40000000)
liveins: $vgpr0, $sgpr0_sgpr1
- $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
$vgpr1 = V_ASHRREV_I32_e32 31, $vgpr0, implicit $exec
$vgpr1_vgpr2 = V_LSHL_B64_e64 $vgpr0_vgpr1, 3, implicit $exec
$sgpr7 = S_MOV_B32 61440
successors: %bb.2.exit(0x80000000)
liveins: $sgpr4_sgpr5_sgpr6_sgpr7:0x0000000C, $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr1_vgpr2_vgpr3_vgpr4:0x00000003
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 15, 0 :: (non-temporal dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 15, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) undef`)
dead $vgpr0 = V_MOV_B32_e32 -1, implicit $exec
dead $vgpr0 = V_MOV_B32_e32 61440, implicit $exec
$sgpr4_sgpr5 = S_MOV_B64 0
$vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr3
$vgpr1 = V_MOV_B32_e32 killed $sgpr3, implicit $exec, implicit $sgpr2_sgpr3, implicit $exec
- renamable $vgpr2 = FLAT_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load syncscope("one-as") seq_cst (s32) from `i32 addrspace(42)* undef`)
+ renamable $vgpr2 = FLAT_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load syncscope("one-as") seq_cst (s32) from `ptr addrspace(42) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
$vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile store syncscope("agent-one-as") seq_cst (s32) into `i32 addrspace(42)* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile store syncscope("agent-one-as") seq_cst (s32) into `ptr addrspace(42) undef`)
S_ENDPGM 0
...
$vgpr0 = V_MOV_B32_e32 killed $sgpr4, implicit $exec, implicit $exec
$vgpr1 = V_MOV_B32_e32 killed $sgpr5, implicit $exec, implicit $exec
$vgpr2 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_ATOMIC_CMPSWAP killed renamable $vgpr2_vgpr3, killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store syncscope("workgroup-one-as") seq_cst seq_cst (s32) on `i32 addrspace(42)* undef`)
+ FLAT_ATOMIC_CMPSWAP killed renamable $vgpr2_vgpr3, killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store syncscope("workgroup-one-as") seq_cst seq_cst (s32) on `ptr addrspace(42) undef`)
S_ENDPGM 0
...
$vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr3
$vgpr1 = V_MOV_B32_e32 killed $sgpr3, implicit $exec, implicit $sgpr2_sgpr3, implicit $exec
$vgpr2 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- FLAT_ATOMIC_SWAP killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store syncscope("wavefront-one-as") seq_cst (s32) on `i32 addrspace(42)* undef`)
+ FLAT_ATOMIC_SWAP killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store syncscope("wavefront-one-as") seq_cst (s32) on `ptr addrspace(42) undef`)
S_ENDPGM 0
...
name: load_singlethread_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") unordered (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") unordered (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_singlethread_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") monotonic (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") monotonic (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_singlethread_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") acquire (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") acquire (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_singlethread_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") seq_cst (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") seq_cst (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") unordered (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") unordered (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") monotonic (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") monotonic (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") acquire (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") acquire (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") seq_cst (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") seq_cst (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") unordered (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") unordered (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") monotonic (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") monotonic (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") acquire (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") acquire (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") seq_cst (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") seq_cst (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") unordered (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") unordered (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") monotonic (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") monotonic (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") acquire (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") acquire (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") seq_cst (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") seq_cst (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") unordered (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") unordered (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") monotonic (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") monotonic (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") acquire (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") acquire (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") seq_cst (s32) from `i32 addrspace(3)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 0, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") seq_cst (s32) from `ptr addrspace(3) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: store_singlethread_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_singlethread_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_singlethread_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_singlethread_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_wavefront_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") unordered (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") unordered (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_wavefront_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") monotonic (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") monotonic (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_wavefront_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") release (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") release (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_wavefront_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") seq_cst (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") seq_cst (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_workgroup_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") unordered (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") unordered (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_workgroup_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") monotonic (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") monotonic (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_workgroup_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") release (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") release (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_workgroup_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") seq_cst (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") seq_cst (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_agent_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") unordered (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") unordered (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_agent_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") monotonic (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") monotonic (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_agent_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") release (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") release (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_agent_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") seq_cst (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") seq_cst (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_system_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") unordered (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") unordered (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_system_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") monotonic (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") monotonic (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_system_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") release (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") release (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: store_system_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") seq_cst (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") seq_cst (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `i32 addrspace(3)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `i32 addrspace(3)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acquire (s32) into `i32 addrspace(3)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acquire (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `i32 addrspace(3)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_acq_rel
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acq_rel (s32) into `i32 addrspace(3)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acq_rel (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `i32 addrspace(3)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 0, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `ptr addrspace(3) undef`)
S_ENDPGM 0
...
successors: %bb.1(0x30000000), %bb.2(0x50000000)
liveins: $sgpr0_sgpr1, $sgpr3
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 44, 0 :: (non-temporal dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 44, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) undef`)
$sgpr8 = S_MOV_B32 &SCRATCH_RSRC_DWORD0, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11
- $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 36, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
+ $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 36, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
$sgpr9 = S_MOV_B32 &SCRATCH_RSRC_DWORD1, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11
$sgpr10 = S_MOV_B32 4294967295, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11
$sgpr11 = S_MOV_B32 15204352, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11
$vgpr0 = V_MOV_B32_e32 1, implicit $exec
- BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 4, 0, 0, implicit $exec :: (store (s32) into `i32 addrspace(5)* undef`)
+ BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 4, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(5) undef`)
S_WAITCNT 127
S_CMP_LG_U32 killed $sgpr2, 0, implicit-def $scc
S_WAITCNT 3855
$vgpr0 = V_MOV_B32_e32 2, implicit $exec
$vgpr1 = V_MOV_B32_e32 32772, implicit $exec
- BUFFER_STORE_DWORD_OFFEN killed $vgpr0, killed $vgpr1, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 0, 0, 0, implicit $exec :: (store (s32) into `i32 addrspace(5)* undef`)
+ BUFFER_STORE_DWORD_OFFEN killed $vgpr0, killed $vgpr1, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 0, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(5) undef`)
S_CBRANCH_SCC0 %bb.1, implicit killed $scc
bb.2:
successors: %bb.3(0x80000000)
liveins: $sgpr0_sgpr1, $sgpr4_sgpr5, $sgpr3, $sgpr8_sgpr9_sgpr10_sgpr11
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 52, 0 :: (non-temporal dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 52, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) undef`)
S_WAITCNT 3855
$vgpr0 = V_MOV_B32_e32 32772, implicit $exec
S_BRANCH %bb.3
successors: %bb.3(0x80000000)
liveins: $sgpr0_sgpr1, $sgpr4_sgpr5, $sgpr3, $sgpr8_sgpr9_sgpr10_sgpr11
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 48, 0 :: (non-temporal dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 48, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) undef`)
S_WAITCNT 3855
$vgpr0 = V_MOV_B32_e32 4, implicit $exec
S_WAITCNT 127
$sgpr0 = S_LSHL_B32 killed $sgpr0, 2, implicit-def dead $scc
$vgpr0 = V_ADD_CO_U32_e32 killed $sgpr0, killed $vgpr0, implicit-def dead $vcc, implicit $exec
- $vgpr0 = BUFFER_LOAD_DWORD_OFFEN killed $vgpr0, killed $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 0, 0, 0, implicit $exec :: (load syncscope("agent-one-as") unordered (s32) from `i32 addrspace(1)* undef`), (load syncscope("workgroup-one-as") seq_cst (s32) from `[8192 x i32] addrspace(5)* undef`)
+ $vgpr0 = BUFFER_LOAD_DWORD_OFFEN killed $vgpr0, killed $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 0, 0, 0, implicit $exec :: (load syncscope("agent-one-as") unordered (s32) from `ptr addrspace(1) undef`), (load syncscope("workgroup-one-as") seq_cst (s32) from `ptr addrspace(5) undef`)
$vgpr1 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr4_sgpr5
$vgpr2 = V_MOV_B32_e32 killed $sgpr5, implicit $exec, implicit $sgpr4_sgpr5, implicit $exec
S_WAITCNT 3952
- FLAT_STORE_DWORD killed $vgpr1_vgpr2, killed $vgpr0, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32 addrspace(1)* undef`)
+ FLAT_STORE_DWORD killed $vgpr1_vgpr2, killed $vgpr0, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr addrspace(1) undef`)
S_ENDPGM 0
...
name: load_singlethread_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 1, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") unordered (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 1, 0, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") unordered (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_singlethread_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") monotonic (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") monotonic (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_singlethread_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") acquire (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") acquire (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_singlethread_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") seq_cst (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("singlethread-one-as") seq_cst (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") unordered (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") unordered (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") monotonic (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") monotonic (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") acquire (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") acquire (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_wavefront_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") seq_cst (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("wavefront-one-as") seq_cst (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") unordered (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") unordered (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") monotonic (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") monotonic (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") acquire (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") acquire (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_workgroup_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") seq_cst (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("workgroup-one-as") seq_cst (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") unordered (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") unordered (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") monotonic (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") monotonic (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") acquire (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") acquire (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_agent_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") seq_cst (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("agent-one-as") seq_cst (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") unordered (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") unordered (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") monotonic (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") monotonic (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") acquire (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") acquire (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: load_system_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`, align 4, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed $sgpr0_sgpr1, 44, 0 :: (dereferenceable invariant load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
- renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") seq_cst (s32) from `i32 addrspace(2)* undef`)
+ renamable $vgpr2 = DS_READ_B32 killed renamable $vgpr0, 0, 1, implicit $m0, implicit $exec :: (volatile load syncscope("one-as") seq_cst (s32) from `ptr addrspace(2) undef`)
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1
$vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec
- FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `i32* undef`)
+ FLAT_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr undef`)
S_ENDPGM 0
...
name: store_singlethread_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_singlethread_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_singlethread_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_singlethread_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_wavefront_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") unordered (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") unordered (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_wavefront_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") monotonic (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") monotonic (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_wavefront_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") release (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") release (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_wavefront_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") seq_cst (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("wavefront-one-as") seq_cst (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_workgroup_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") unordered (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") unordered (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_workgroup_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") monotonic (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") monotonic (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_workgroup_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") release (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") release (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_workgroup_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") seq_cst (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("workgroup-one-as") seq_cst (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_agent_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") unordered (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") unordered (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_agent_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") monotonic (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") monotonic (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_agent_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") release (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") release (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_agent_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") seq_cst (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("agent-one-as") seq_cst (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_system_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store unordered (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store unordered (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_system_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store monotonic (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store monotonic (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_system_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") release (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") release (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: store_system_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") seq_cst (s32) into `i32 addrspace(2)* undef`)
+ DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("one-as") seq_cst (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_unordered
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `i32 addrspace(2)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") unordered (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_monotonic
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `i32 addrspace(2)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") monotonic (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_acquire
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acquire (s32) into `i32 addrspace(2)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acquire (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_release
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `i32 addrspace(2)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") release (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_acq_rel
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acq_rel (s32) into `i32 addrspace(2)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") acq_rel (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
name: atomicrmw_singlethread_seq_cst
body: |
bb.0:
- $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, addrspace 4)
- $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`, align 8, addrspace 4)
+ $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 36, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, addrspace 4)
+ $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 40, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`, align 8, addrspace 4)
$m0 = S_MOV_B32 -1
$vgpr1 = V_MOV_B32_e32 killed $sgpr2, implicit $exec, implicit $exec
$vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
- $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `i32 addrspace(2)* undef`)
+ $vgpr2 = DS_WRXCHG_RTN_B32 killed renamable $vgpr0, killed renamable $vgpr1, 0, 1, implicit $m0, implicit $exec :: (volatile store syncscope("singlethread-one-as") seq_cst (s32) into `ptr addrspace(2) undef`)
S_ENDPGM 0
...
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- %1:vgpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
- %2:vgpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ %1:vgpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
+ %2:vgpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
...
# GCN-LABEL: name: ds_read_b32_a_a
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- %1:agpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
- %2:agpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ %1:agpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
+ %2:agpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
...
# GCN-LABEL: name: ds_read_b32_v_a
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- %1:vgpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
- %2:agpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ %1:vgpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
+ %2:agpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
...
# GCN-LABEL: name: ds_read_b32_a_v
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- %1:agpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
- %2:vgpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)
+ %1:agpr_32 = DS_READ_B32_gfx9 %0, 8, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
+ %2:vgpr_32 = DS_READ_B32_gfx9 %0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`)
...
# GCN-LABEL: name: ds_write_b32_v_v
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- DS_WRITE_B32_gfx9 %0, undef %1:vgpr_32, 0, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
- DS_WRITE_B32_gfx9 %0, undef %2:vgpr_32, 8, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32_gfx9 %0, undef %1:vgpr_32, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
+ DS_WRITE_B32_gfx9 %0, undef %2:vgpr_32, 8, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
...
# GCN-LABEL: name: ds_write_b32_a_a
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- DS_WRITE_B32_gfx9 %0, undef %1:agpr_32, 0, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
- DS_WRITE_B32_gfx9 %0, undef %2:agpr_32, 8, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32_gfx9 %0, undef %1:agpr_32, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
+ DS_WRITE_B32_gfx9 %0, undef %2:agpr_32, 8, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
...
# GCN-LABEL: name: ds_write_b32_v_a
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- DS_WRITE_B32_gfx9 %0, undef %1:vgpr_32, 0, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
- DS_WRITE_B32_gfx9 %0, undef %2:agpr_32, 8, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32_gfx9 %0, undef %1:vgpr_32, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
+ DS_WRITE_B32_gfx9 %0, undef %2:agpr_32, 8, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
...
# GCN-LABEL: name: ds_write_b32_a_v
bb.0:
%0:vgpr_32 = IMPLICIT_DEF
- DS_WRITE_B32_gfx9 %0, undef %1:agpr_32, 0, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
- DS_WRITE_B32_gfx9 %0, undef %2:vgpr_32, 8, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)
+ DS_WRITE_B32_gfx9 %0, undef %1:agpr_32, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
+ DS_WRITE_B32_gfx9 %0, undef %2:vgpr_32, 8, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`)
...
body: |
bb.0:
%4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
- %5:vreg_64 = DS_READ_B64_gfx9 %4, 776, 0, implicit $exec :: (load (s64) from `double addrspace(3)* undef`, addrspace 3)
- %6:vreg_64 = DS_READ_B64_gfx9 %4, 784, 0, implicit $exec :: (load (s64) from `double addrspace(3)* undef` + 8, addrspace 3)
- %17:vreg_64 = DS_READ_B64_gfx9 %4, 840, 0, implicit $exec :: (load (s64) from `double addrspace(3)* undef`, addrspace 3)
- DS_WRITE_B64_gfx9 %4, %17, 8, 0, implicit $exec :: (store (s64) into `double addrspace(3)* undef` + 8, addrspace 3)
- DS_WRITE_B64_gfx9 %4, %6, 0, 0, implicit $exec :: (store (s64) into `double addrspace(3)* undef`, align 16, addrspace 3)
- %24:vreg_64 = DS_READ_B64_gfx9 %4, 928, 0, implicit $exec :: (load (s64) from `double addrspace(3)* undef` + 8, addrspace 3)
- DS_WRITE_B64_gfx9 undef %29:vgpr_32, %5, 0, 0, implicit $exec :: (store (s64) into `double addrspace(3)* undef`, addrspace 3)
+ %5:vreg_64 = DS_READ_B64_gfx9 %4, 776, 0, implicit $exec :: (load (s64) from `ptr addrspace(3) undef`, addrspace 3)
+ %6:vreg_64 = DS_READ_B64_gfx9 %4, 784, 0, implicit $exec :: (load (s64) from `ptr addrspace(3) undef` + 8, addrspace 3)
+ %17:vreg_64 = DS_READ_B64_gfx9 %4, 840, 0, implicit $exec :: (load (s64) from `ptr addrspace(3) undef`, addrspace 3)
+ DS_WRITE_B64_gfx9 %4, %17, 8, 0, implicit $exec :: (store (s64) into `ptr addrspace(3) undef` + 8, addrspace 3)
+ DS_WRITE_B64_gfx9 %4, %6, 0, 0, implicit $exec :: (store (s64) into `ptr addrspace(3) undef`, align 16, addrspace 3)
+ %24:vreg_64 = DS_READ_B64_gfx9 %4, 928, 0, implicit $exec :: (load (s64) from `ptr addrspace(3) undef` + 8, addrspace 3)
+ DS_WRITE_B64_gfx9 undef %29:vgpr_32, %5, 0, 0, implicit $exec :: (store (s64) into `ptr addrspace(3) undef`, addrspace 3)
S_ENDPGM 0
...
# Check that constant is in SGPR registers
--- |
- define amdgpu_kernel void @const_to_sgpr(i32 addrspace(1)* nocapture %arg, i64 %id) {
+ define amdgpu_kernel void @const_to_sgpr(ptr addrspace(1) nocapture %arg, i64 %id) {
bb:
br i1 undef, label %bb1, label %bb2
ret void
}
- define amdgpu_kernel void @const_to_sgpr_multiple_use(i32 addrspace(1)* nocapture %arg, i64 %id1, i64 %id2) {
+ define amdgpu_kernel void @const_to_sgpr_multiple_use(ptr addrspace(1) nocapture %arg, i64 %id1, i64 %id2) {
bb:
br i1 undef, label %bb1, label %bb2
ret void
}
- define amdgpu_kernel void @const_to_sgpr_subreg(i32 addrspace(1)* nocapture %arg, i64 %id) {
+ define amdgpu_kernel void @const_to_sgpr_subreg(ptr addrspace(1) nocapture %arg, i64 %id) {
bb:
br i1 undef, label %bb1, label %bb2
br i1 undef, label %if, label %end
if: ; preds = %main_body
- %v.if = load volatile i32, i32 addrspace(1)* undef
+ %v.if = load volatile i32, ptr addrspace(1) undef
br label %end
end: ; preds = %if, %main_body
%15:sreg_32_xm0 = S_MOV_B32 61440
%16:sreg_32_xm0 = S_MOV_B32 -1
%17:sgpr_128 = REG_SEQUENCE undef %14:sreg_32_xm0, %subreg.sub0, undef %12:sreg_32_xm0, %subreg.sub1, %16, %subreg.sub2, %15, %subreg.sub3
- BUFFER_STORE_DWORD_OFFSET %4, %17, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `i32 addrspace(1)* undef`, addrspace 1)
+ BUFFER_STORE_DWORD_OFFSET %4, %17, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`, addrspace 1)
%19:vgpr_32 = COPY %4
%20:sreg_64 = SI_IF %0, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
S_BRANCH %bb.3
# CHECK: DBG_VALUE{{.*}} %13.sub2
--- |
- define amdgpu_kernel void @test(i32 addrspace(1)* %out) { ret void }
+ define amdgpu_kernel void @test(ptr addrspace(1) %out) { ret void }
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !4, producer: "llvm", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !4)
!1 = !DILocalVariable(name: "a", scope: !2, file: !4, line: 126, type: !6)
%3 = COPY killed $vgpr0
%0 = COPY killed $sgpr0_sgpr1
- %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `i64 addrspace(4)* undef`)
- %5 = S_LOAD_DWORD_IMM killed %0, 13, 0 :: (non-temporal dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`)
+ %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) undef`)
+ %5 = S_LOAD_DWORD_IMM killed %0, 13, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) undef`)
%18 = V_ASHRREV_I32_e32 31, %3, implicit $exec
undef %19.sub0 = COPY killed %3
%19.sub1 = COPY killed %18
; CHECK-NEXT: - basic block: %bb.0
; CHECK-NEXT: - instruction: S_CBRANCH_SCC1 %bb.2, implicit killed $scc
; CHECK-NEXT: - operand 1: implicit killed $scc
-define amdgpu_kernel void @kernel0(i32 addrspace(1)* %out, i32 %in) #1 {
+define amdgpu_kernel void @kernel0(ptr addrspace(1) %out, i32 %in) #1 {
call void asm sideeffect "", "~{v[0:7]}" () #0
call void asm sideeffect "", "~{v[8:15]}" () #0
call void asm sideeffect "", "~{v[16:19]}"() #0
# RUN: llc -march=amdgcn -mcpu=gfx908 -misched-cluster=false -run-pass=postmisched -verify-misched -o - %s | FileCheck %s
--- |
- define amdgpu_kernel void @no_sched_barrier(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_0(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_1(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
+ define amdgpu_kernel void @no_sched_barrier(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_0(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_1(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
!0 = distinct !{!0}
!1 = !{!1, !0}
# RUN: llc -march=amdgcn -mcpu=gfx908 -misched-cluster=false -run-pass=machine-scheduler -verify-misched -o - %s | FileCheck %s
--- |
- define amdgpu_kernel void @no_sched_barrier(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_0(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_1(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_2(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_4(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_8(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_16(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_32(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_64(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_128(i32 addrspace(3)* noalias %out, i32 addrspace(3)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_256(i32 addrspace(3)* noalias %out, i32 addrspace(3)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_512(i32 addrspace(3)* noalias %out, i32 addrspace(3)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_masks_8_12(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_4_bundle(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_barrier_mask_0_bundle(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
+ define amdgpu_kernel void @no_sched_barrier(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_0(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_1(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_2(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_4(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_8(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_16(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_32(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_64(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_128(ptr addrspace(3) noalias %out, ptr addrspace(3) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_256(ptr addrspace(3) noalias %out, ptr addrspace(3) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_512(ptr addrspace(3) noalias %out, ptr addrspace(3) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_masks_8_12(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_4_bundle(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_barrier_mask_0_bundle(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
!0 = distinct !{!0}
!1 = !{!1, !0}
# RUN: llc -march=amdgcn -mcpu=gfx908 -amdgpu-igrouplp-exact-solver -run-pass=machine-scheduler -o - %s | FileCheck -check-prefix=EXACT %s
--- |
- define amdgpu_kernel void @sched_group_barrier_2_VMEM_10_ALU_5_MFMA_2_VMEM_WRITE(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_group_barrier_MFMA_VALU_and_SALU_alternating(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_group_barrier_2_separate_pipes(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_group_barrier_3_separate_pipes(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
+ define amdgpu_kernel void @sched_group_barrier_2_VMEM_10_ALU_5_MFMA_2_VMEM_WRITE(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_group_barrier_MFMA_VALU_and_SALU_alternating(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_group_barrier_2_separate_pipes(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_group_barrier_3_separate_pipes(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
!0 = distinct !{!0}
!1 = !{!1, !0}
# RUN: llc -march=amdgcn -mcpu=gfx908 -misched-cluster=false -run-pass=machine-scheduler -amdgpu-igrouplp-exact-solver -verify-misched -o - %s | FileCheck -check-prefix=EXACT %s
--- |
- define amdgpu_kernel void @no_sched_group_barrier(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_group_barrier_1_VMEM_READ_1_VALU_5_MFMA_1_VMEM_READ_3_VALU_2_VMEM_WRITE(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_group_barrier_2_VMEM_1000_ALU_5_MFMA_2_VMEM_WRITE(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
- define amdgpu_kernel void @sched_group_barrier_MFMA_VALU_and_SALU_alternating(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
+ define amdgpu_kernel void @no_sched_group_barrier(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_group_barrier_1_VMEM_READ_1_VALU_5_MFMA_1_VMEM_READ_3_VALU_2_VMEM_WRITE(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_group_barrier_2_VMEM_1000_ALU_5_MFMA_2_VMEM_WRITE(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
+ define amdgpu_kernel void @sched_group_barrier_MFMA_VALU_and_SALU_alternating(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
!0 = distinct !{!0}
!1 = !{!1, !0}
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -verify-machineinstrs -run-pass=machine-scheduler -verify-misched -o - %s | FileCheck %s
--- |
- define amdgpu_kernel void @schedule_ilp(i32 addrspace(1)* noalias %out, i32 addrspace(1)* noalias %in) { ret void }
+ define amdgpu_kernel void @schedule_ilp(ptr addrspace(1) noalias %out, ptr addrspace(1) noalias %in) { ret void }
!0 = distinct !{!0}
!1 = !{!1, !0}
liveins: $sgpr4_sgpr5
%1 = COPY $sgpr4_sgpr5
- %5 = S_LOAD_DWORD_IMM %1, 0, 0 :: (non-temporal dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`)
+ %5 = S_LOAD_DWORD_IMM %1, 0, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) undef`)
$m0 = S_MOV_B32 -1
%7 = COPY %5
%6 = DS_READ_B32 %7, 0, 0, implicit $m0, implicit $exec
--- |
- define void @sgpr_spill_wrong_stack_id(float addrspace(1)* nocapture readnone %arg, float addrspace(1)* noalias %arg1) {
+ define void @sgpr_spill_wrong_stack_id(ptr addrspace(1) nocapture readnone %arg, ptr addrspace(1) noalias %arg1) {
bb:
- %tmp = load i32, i32 addrspace(1)* null, align 4
+ %tmp = load i32, ptr addrspace(1) null, align 4
call void @func(i32 undef)
call void @func(i32 %tmp)
unreachable
%3.sub1:sgpr_128 = S_AND_B32 %2, 65535, implicit-def dead $scc
%3.sub3:sgpr_128 = S_MOV_B32 151468
%3.sub2:sgpr_128 = S_MOV_B32 -1
- %7.sub0:sreg_64_xexec = S_LOAD_DWORD_IMM %7, 48, 0 :: (load (s32) from `i8 addrspace(4)* undef`, addrspace 4)
+ %7.sub0:sreg_64_xexec = S_LOAD_DWORD_IMM %7, 48, 0 :: (load (s32) from `ptr addrspace(4) undef`, addrspace 4)
%8:sreg_64_xexec = S_BUFFER_LOAD_DWORDX2_IMM %3, 640, 0 :: (dereferenceable invariant load (s64))
undef %9.sub0:vreg_128 = V_LSHL_ADD_U32_e64 %6, 4, %4, implicit $exec
%9.sub1:vreg_128 = V_LSHL_ADD_U32_e64 %5, 4, %0, implicit $exec
liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr13
$vgpr1_vgpr2 = COPY killed $sgpr4_sgpr5, implicit $exec
- $vgpr1 = GLOBAL_LOAD_UBYTE killed $vgpr1_vgpr2, 0, 0, implicit $exec :: (non-temporal dereferenceable invariant load (s8) from `i1 addrspace(4)* undef`)
+ $vgpr1 = GLOBAL_LOAD_UBYTE killed $vgpr1_vgpr2, 0, 0, implicit $exec :: (non-temporal dereferenceable invariant load (s8) from `ptr addrspace(4) undef`)
$vcc = V_CMP_NE_U32_e64 0, $vgpr0, implicit $exec
$sgpr0_sgpr1 = V_CMP_EQ_U32_e64 1, killed $vgpr1, implicit $exec
$vgpr1 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed $sgpr0_sgpr1, implicit $exec
liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr13
$vgpr1_vgpr2 = COPY killed $sgpr4_sgpr5, implicit $exec
- $vgpr1 = GLOBAL_LOAD_UBYTE killed $vgpr1_vgpr2, 0, 0, implicit $exec :: (non-temporal dereferenceable invariant load (s8) from `i1 addrspace(4)* undef`)
+ $vgpr1 = GLOBAL_LOAD_UBYTE killed $vgpr1_vgpr2, 0, 0, implicit $exec :: (non-temporal dereferenceable invariant load (s8) from `ptr addrspace(4) undef`)
$vcc = V_CMP_NE_U32_e64 0, $vgpr0, implicit $exec
$sgpr0_sgpr1 = V_CMP_EQ_U32_e64 1, killed $vgpr1, implicit $exec
$vgpr1 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed $sgpr0_sgpr1, implicit $exec
# RUN: llc -march=amdgcn -mcpu=gfx90a -run-pass si-insert-waitcnts -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
--- |
- define amdgpu_kernel void @flat_zero_waitcnt(i32 addrspace(1)* %global4,
- <4 x i32> addrspace(1)* %global16,
- i32* %flat4,
- <4 x i32>* %flat16) {
+ define amdgpu_kernel void @flat_zero_waitcnt(ptr addrspace(1) %global4,
+ ptr addrspace(1) %global16,
+ ptr %flat4,
+ ptr %flat16) {
ret void
}
$vgpr1 = V_MOV_B32_e32 0, implicit $exec, implicit-def $vgpr1_vgpr2
$vgpr2 = V_MOV_B32_e32 0, implicit $exec, implicit-def $vgpr1_vgpr2
- $vgpr4 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `float addrspace(1)* null`, addrspace 1)
- $vgpr0 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `float addrspace(1)* null`, addrspace 1)
+ $vgpr4 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `ptr addrspace(1) null`, addrspace 1)
+ $vgpr0 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `ptr addrspace(1) null`, addrspace 1)
$sgpr0_sgpr1 = V_CMP_EQ_U32_e64 3, killed $sgpr4, implicit $exec
$vgpr3 = V_CNDMASK_B32_e64 0, -1082130432, 0, 1065353216, killed $sgpr0_sgpr1, implicit $exec
$vgpr5 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $exec
bb.3:
successors: %bb.1
- $vgpr5 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `float addrspace(1)* null`, addrspace 1)
+ $vgpr5 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `ptr addrspace(1) null`, addrspace 1)
bb.1:
successors: %bb.5, %bb.2
bb.4:
successors: %bb.3, %bb.1
- $vgpr5 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `float addrspace(1)* null`, addrspace 1)
+ $vgpr5 = FLAT_LOAD_DWORD $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load (s32) from `ptr addrspace(1) null`, addrspace 1)
$vgpr4 = V_CVT_I32_F32_e32 $vgpr5, implicit $mode, implicit $exec
V_CMP_EQ_U32_e32 2, killed $vgpr4, implicit-def $vcc, implicit $exec
$vcc = S_AND_B64 $exec, killed $vcc, implicit-def dead $scc
body: |
bb.0:
liveins: $sgpr0_sgpr1
- $sgpr4 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 4, 0 :: (dereferenceable invariant load (s32) from `i32 addrspace(4)* undef`)
+ $sgpr4 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 4, 0 :: (dereferenceable invariant load (s32) from `ptr addrspace(4) undef`)
S_WAITCNT_VSCNT undef $sgpr_null, 0
$vgpr0 = GLOBAL_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 0, 1, implicit $exec :: (load store syncscope("agent") seq_cst (s32), addrspace 1)
S_CMP_LG_U32 killed $sgpr4, 0, implicit-def $scc
# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass si-insert-waitcnts %s -o - | FileCheck -check-prefixes=CHECK,GFX89 %s
--- |
- define amdgpu_kernel void @flat_zero_waitcnt(i32 addrspace(1)* %global4,
- <4 x i32> addrspace(1)* %global16,
- i32* %flat4,
- <4 x i32>* %flat16) {
+ define amdgpu_kernel void @flat_zero_waitcnt(ptr addrspace(1) %global4,
+ ptr addrspace(1) %global16,
+ ptr %flat4,
+ ptr %flat16) {
ret void
}
name: waitcnt_backedge
body: |
bb.0:
- renamable $sgpr4_sgpr5_sgpr6_sgpr7 = S_LOAD_DWORDX4_IMM renamable $sgpr2_sgpr3, 32, 0 :: (load (s128) from `i32 addrspace(4)* undef`, addrspace 4)
+ renamable $sgpr4_sgpr5_sgpr6_sgpr7 = S_LOAD_DWORDX4_IMM renamable $sgpr2_sgpr3, 32, 0 :: (load (s128) from `ptr addrspace(4) undef`, addrspace 4)
bb.4:
renamable $sgpr10_sgpr11 = S_CSELECT_B64 -1, 0, implicit killed $scc
renamable $vgpr1 = BUFFER_LOAD_DWORD_OFFEN killed renamable $vgpr5, renamable $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 1, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4)
- renamable $sgpr10_sgpr11 = S_LOAD_DWORDX2_IMM killed renamable $sgpr0_sgpr1, 0, 0 :: (load (s64) from `i32 addrspace(4)* undef`, align 4, addrspace 4)
+ renamable $sgpr10_sgpr11 = S_LOAD_DWORDX2_IMM killed renamable $sgpr0_sgpr1, 0, 0 :: (load (s64) from `ptr addrspace(4) undef`, align 4, addrspace 4)
S_CBRANCH_SCC0 %bb.9, implicit killed $scc
bb.9:
%struct.s = type opaque
; Function Attrs: nounwind
- define arm_aapcscc i32 @f(%struct.s* %s, i32 %u, i8* %b, i32 %n) #0 !dbg !4 {
+ define arm_aapcscc i32 @f(ptr %s, i32 %u, ptr %b, i32 %n) #0 !dbg !4 {
entry:
- tail call void @llvm.dbg.value(metadata %struct.s* %s, i64 0, metadata !18, metadata !27), !dbg !28
+ tail call void @llvm.dbg.value(metadata ptr %s, i64 0, metadata !18, metadata !27), !dbg !28
tail call void @llvm.dbg.value(metadata i32 %u, i64 0, metadata !19, metadata !27), !dbg !28
- tail call void @llvm.dbg.value(metadata i8* %b, i64 0, metadata !20, metadata !27), !dbg !28
+ tail call void @llvm.dbg.value(metadata ptr %b, i64 0, metadata !20, metadata !27), !dbg !28
tail call void @llvm.dbg.value(metadata i32 %n, i64 0, metadata !21, metadata !27), !dbg !28
%cmp = icmp ult i32 %n, 4, !dbg !29
br i1 %cmp, label %return, label %if.end, !dbg !31
if.end: ; preds = %entry
- tail call arm_aapcscc void @g(%struct.s* %s, i8* %b, i32 %n) #3, !dbg !32
+ tail call arm_aapcscc void @g(ptr %s, ptr %b, i32 %n) #3, !dbg !32
br label %return, !dbg !33
return: ; preds = %if.end, %entry
ret i32 %retval.0, !dbg !34
}
- declare arm_aapcscc void @g(%struct.s*, i8*, i32) #1
+ declare arm_aapcscc void @g(ptr, ptr, i32) #1
; Function Attrs: nounwind readnone
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #2
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { nounwind readnone speculatable "target-features"="+vfp4" }
attributes #1 = { "target-features"="+vfp4" }
%retval = alloca i32, align 4
%mul = alloca i32, align 4
%mul1 = mul nsw i32 %a, %b
- store i32 %mul1, i32* %mul, align 4
- %0 = load i32, i32* %mul, align 4
+ store i32 %mul1, ptr %mul, align 4
+ %0 = load i32, ptr %mul, align 4
%cmp = icmp sle i32 %0, 0
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
- store i32 42, i32* %retval, align 4
+ store i32 42, ptr %retval, align 4
br label %return
if.end: ; preds = %entry
- store i32 1, i32* %retval, align 4
+ store i32 1, ptr %retval, align 4
br label %return
return: ; preds = %if.end, %if.then
- %1 = load i32, i32* %retval, align 4
+ %1 = load i32, ptr %retval, align 4
ret i32 %1
}
target triple = "thumbebv8m.main-arm-none-eabi"
; Function Attrs: cmse_nonsecure_entry nounwind
- define hidden arm_aapcs_vfpcc void @secure_foo(void (double, double, double, double, double, double, double, double)* %fptr) local_unnamed_addr #0 {
+ define hidden arm_aapcs_vfpcc void @secure_foo(ptr %fptr) local_unnamed_addr #0 {
entry:
- %0 = ptrtoint void (double, double, double, double, double, double, double, double)* %fptr to i32
+ %0 = ptrtoint ptr %fptr to i32
%and = and i32 %0, -2
- %1 = inttoptr i32 %and to void (double, double, double, double, double, double, double, double)*
+ %1 = inttoptr i32 %and to ptr
call arm_aapcs_vfpcc void %1(double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00, double 5.000000e+00, double 6.000000e+00, double 7.000000e+00) #2
ret void
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { "cmse_nonsecure_entry" nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+8msecext,+armv8-m.main,-d32,-fp64,+fp-armv8,+hwdiv,+thumb-mode,-crypto,-fullfp16,-neon" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind }
br label %b5
b3: ; preds = %b1
- %v1 = load i32, i32* undef, align 4
+ %v1 = load i32, ptr undef, align 4
%v2 = and i32 %v1, 256
br label %b5
br label %b5
b3: ; preds = %b1
- %v1 = load i32, i32* undef, align 4
+ %v1 = load i32, ptr undef, align 4
%v2 = and i32 %v1, 256
br label %b5
br label %b5
b3: ; preds = %b1
- %v1 = load i32, i32* undef, align 4
+ %v1 = load i32, ptr undef, align 4
%v2 = and i32 %v1, 256
br label %b5
declare i32 @extfunc()
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { optsize }
attributes #1 = { minsize }
; CHECK-V7: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-V7: bb.3.b3:
; CHECK-V7: successors: %bb.4(0x80000000)
- ; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `i32* undef`)
+ ; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
; CHECK-V7: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
; CHECK-V7: bb.4.b5:
; CHECK-V7: successors: %bb.5(0x50000000)
; CHECK-V8: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-V8: bb.3.b3:
; CHECK-V8: successors: %bb.4(0x80000000)
- ; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `i32* undef`)
+ ; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
; CHECK-V8: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
; CHECK-V8: bb.4.b5:
; CHECK-V8: successors: %bb.5(0x50000000)
bb.3.b3:
successors: %bb.4(0x80000000)
- renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `i32* undef`)
+ renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
bb.4.b5:
; CHECK-V7: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-V7: bb.3.b3:
; CHECK-V7: successors: %bb.4(0x80000000)
- ; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `i32* undef`)
+ ; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
; CHECK-V7: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
; CHECK-V7: bb.4.b5:
; CHECK-V7: successors: %bb.5(0x30000000), %bb.6(0x50000000)
; CHECK-V8: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-V8: bb.3.b3:
; CHECK-V8: successors: %bb.4(0x80000000)
- ; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `i32* undef`)
+ ; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
; CHECK-V8: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
; CHECK-V8: bb.4.b5:
; CHECK-V8: successors: %bb.5(0x30000000), %bb.6(0x50000000)
bb.3.b3:
successors: %bb.4(0x80000000)
- renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `i32* undef`)
+ renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
bb.4.b5:
; CHECK-V7: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-V7: bb.3.b3:
; CHECK-V7: successors: %bb.4(0x80000000)
- ; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `i32* undef`)
+ ; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
; CHECK-V7: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
; CHECK-V7: bb.4.b5:
; CHECK-V7: successors: %bb.5(0x30000000), %bb.6(0x50000000)
; CHECK-V8: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-V8: bb.3.b3:
; CHECK-V8: successors: %bb.4(0x80000000)
- ; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `i32* undef`)
+ ; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
; CHECK-V8: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
; CHECK-V8: bb.4.b5:
; CHECK-V8: successors: %bb.5(0x30000000), %bb.6(0x50000000)
bb.3.b3:
successors: %bb.4(0x80000000)
- renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `i32* undef`)
+ renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
bb.4.b5:
define hidden i32 @main() {
entry:
%P5 = alloca half, align 2
- store half 0xH3FE0, half* %P5, align 2
- %0 = load half, half* %P5, align 2
+ store half 0xH3FE0, ptr %P5, align 2
+ %0 = load half, ptr %P5, align 2
call void @z_bar(half %0)
ret i32 0
}
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #2
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #3
+ declare void @llvm.stackprotector(ptr, ptr) #3
attributes #0 = { minsize nounwind optsize }
attributes #1 = { minsize optsize }
declare i32 @llvm.arm.space(i32, i32) #0
- define dso_local i32 @ARM(i64* %LL, i32 %A.coerce) local_unnamed_addr #1 {
+ define dso_local i32 @ARM(ptr %LL, i32 %A.coerce) local_unnamed_addr #1 {
entry:
%S = alloca half, align 2
%tmp.0.extract.trunc = trunc i32 %A.coerce to i16
%0 = bitcast i16 %tmp.0.extract.trunc to half
- store volatile half 0xH3C00, half* %S, align 2
- store volatile i64 4242424242424242, i64* %LL, align 8
+ store volatile half 0xH3C00, ptr %S, align 2
+ store volatile i64 4242424242424242, ptr %LL, align 8
%1 = call i32 @llvm.arm.space(i32 8920, i32 undef)
- %S.0.S.0.570 = load volatile half, half* %S, align 2
+ %S.0.S.0.570 = load volatile half, ptr %S, align 2
%add298 = fadd half %S.0.S.0.570, 0xH2E66
- store volatile half %add298, half* %S, align 2
+ store volatile half %add298, ptr %S, align 2
%2 = call i32 @llvm.arm.space(i32 1350, i32 undef)
%3 = bitcast half %add298 to i16
%tmp343.0.insert.ext = zext i16 %3 to i32
%S = alloca half, align 2
%tmp.0.extract.trunc = trunc i32 %A.coerce to i16
%0 = bitcast i16 %tmp.0.extract.trunc to half
- store volatile float 4.200000e+01, float* %F, align 4
- store volatile half 0xH3C00, half* %S, align 2
- %S.0.S.0.142 = load volatile half, half* %S, align 2
+ store volatile float 4.200000e+01, ptr %F, align 4
+ store volatile half 0xH3C00, ptr %S, align 2
+ %S.0.S.0.142 = load volatile half, ptr %S, align 2
%1 = call i32 @llvm.arm.space(i32 1230, i32 undef)
%add42 = fadd half %S.0.S.0.142, 0xH2E66
- store volatile half %add42, half* %S, align 2
+ store volatile half %add42, ptr %S, align 2
%2 = call i32 @llvm.arm.space(i32 1330, i32 undef)
- %S.0.S.0.119 = load volatile half, half* %S, align 2
+ %S.0.S.0.119 = load volatile half, ptr %S, align 2
%3 = bitcast half %add42 to i16
%tmp87.0.insert.ext = zext i16 %3 to i32
ret i32 %tmp87.0.insert.ext
define dso_local i32 @CP() #1 {
entry:
%res = alloca half, align 2
- store half 0xH706B, half* %res, align 2
- %0 = load half, half* %res, align 2
+ store half 0xH706B, ptr %res, align 2
+ %0 = load half, ptr %res, align 2
%tobool = fcmp une half %0, 0xH0000
br i1 %tobool, label %LA, label %END
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { nounwind "target-features"="+v8.2a,+fullfp16" }
attributes #1 = { "target-features"="+v8.2a,+fullfp16" }
define dso_local i32 @CP() #1 {
entry:
%res = alloca half, align 2
- store half 0xH706B, half* %res, align 2
- %0 = load half, half* %res, align 2
+ store half 0xH706B, ptr %res, align 2
+ %0 = load half, ptr %res, align 2
%tobool = fcmp une half %0, 0xH0000
br i1 %tobool, label %LA, label %END
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { nounwind "target-features"="+v8.2a,+fullfp16" }
attributes #1 = { "target-features"="+v8.2a,+fullfp16" }
--- |
target triple = "thumbv7-unknown-linux-gnueabi"
- define dso_local i8* @fn1() {
+ define dso_local ptr @fn1() {
entry:
br label %l_yes
l_yes:
- ret i8* blockaddress(@fn1, %l_yes)
+ ret ptr blockaddress(@fn1, %l_yes)
}
declare dso_local i32 @fn2(...)
@e = external constant [2 x %struct.anon], align 4
- define arm_aapcscc void @g(i32 * noalias %a, i32 *%b, i32 %x) {
+ define arm_aapcscc void @g(ptr noalias %a, ptr %b, i32 %x) {
entry:
- %c = getelementptr inbounds [2 x %struct.anon], [2 x %struct.anon]* @e, i32 0, i32 %x, i32 0
- %l1 = load i32, i32* %c, align 4
- %d = getelementptr inbounds [2 x %struct.anon], [2 x %struct.anon]* @e, i32 0, i32 %x, i32 1
- %l2 = load i32, i32* %d, align 4
+ %c = getelementptr inbounds [2 x %struct.anon], ptr @e, i32 0, i32 %x, i32 0
+ %l1 = load i32, ptr %c, align 4
+ %d = getelementptr inbounds [2 x %struct.anon], ptr @e, i32 0, i32 %x, i32 1
+ %l2 = load i32, ptr %d, align 4
br i1 undef, label %land.lhs.true, label %if.end
land.lhs.true: ; preds = %entry
define i64 @foo(i16 signext %a, i16 signext %b) {
entry:
- %0 = load i32, i32* @g1, align 4
- %1 = load i32, i32* @g2, align 4
+ %0 = load i32, ptr @g1, align 4
+ %1 = load i32, ptr @g2, align 4
%2 = add nuw nsw i32 %0, %0
%3 = sdiv i32 %2, %1
- store i32 %3, i32* @g1, align 4
+ store i32 %3, ptr @g1, align 4
%d = mul nsw i16 %a, %a
%e = mul nsw i16 %b, %b
%f = add nuw nsw i16 %e, %d
define void @noret() noreturn nounwind {
start:
%p = alloca i32
- store i32 42, i32* %p
+ store i32 42, ptr %p
unreachable
}
...
# RUN: llc -o - %s -mtriple=arm-- -run-pass prologepilog | FileCheck %s
--- |
- define swiftcc i8* @need_emergency_slot(i8 *swiftself %v) {
+ define swiftcc ptr @need_emergency_slot(ptr swiftself %v) {
; Just a dummy to add a swiftself bit. The real code is in the MI below.
unreachable
}
--- |
target triple = "thumbv7---eabi"
- define void @ldrd_strd_aa(i32* noalias nocapture %x, i32* noalias nocapture readonly %y) {
+ define void @ldrd_strd_aa(ptr noalias nocapture %x, ptr noalias nocapture readonly %y) {
entry:
- %0 = load i32, i32* %y, align 4
- store i32 %0, i32* %x, align 4
- %arrayidx2 = getelementptr inbounds i32, i32* %y, i32 1
- %1 = load i32, i32* %arrayidx2, align 4
- %arrayidx3 = getelementptr inbounds i32, i32* %x, i32 1
- store i32 %1, i32* %arrayidx3, align 4
+ %0 = load i32, ptr %y, align 4
+ store i32 %0, ptr %x, align 4
+ %arrayidx2 = getelementptr inbounds i32, ptr %y, i32 1
+ %1 = load i32, ptr %arrayidx2, align 4
+ %arrayidx3 = getelementptr inbounds i32, ptr %x, i32 1
+ store i32 %1, ptr %arrayidx3, align 4
ret void
}
...
--- |
target triple = "thumbv7---eabi"
- define void @a(i32* nocapture %x, i32 %y, i32 %z) {
+ define void @a(ptr nocapture %x, i32 %y, i32 %z) {
entry:
ret void
}
- define void @b(i32* nocapture %x, i32 %y, i32 %z) {
+ define void @b(ptr nocapture %x, i32 %y, i32 %z) {
entry:
ret void
}
%struct.__neon_int8x8x4_t = type { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }
; Function Attrs: nounwind
- define <8 x i8> @foo(i8* %A) {
- %tmp1 = call %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8.p0i8(i8* %A, i32 8)
+ define <8 x i8> @foo(ptr %A) {
+ %tmp1 = call %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8.p0(ptr %A, i32 8)
%tmp2 = extractvalue %struct.__neon_int8x8x4_t %tmp1, 0
%tmp3 = extractvalue %struct.__neon_int8x8x4_t %tmp1, 1
%tmp4 = add <8 x i8> %tmp2, %tmp3
ret <8 x i8> %tmp4
}
- declare %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8.p0i8(i8*, i32)
+ declare %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8.p0(ptr, i32)
# CHECK: ********** MI Scheduling **********
# CHECK: ScheduleDAGMILive::schedule starting
define i32 @testpos() {
entry:
%a = alloca i32, align 4
- call void @other(i32* %a)
- %b = load i32, i32* %a, align 4
+ call void @other(ptr %a)
+ %b = load i32, ptr %a, align 4
ret i32 %b
}
define i32 @testneg4() {
entry:
%a = alloca i32, align 4
- call void @other(i32* %a)
- %b = load i32, i32* %a, align 4
+ call void @other(ptr %a)
+ %b = load i32, ptr %a, align 4
ret i32 %b
}
define i32 @testneg8() {
entry:
%a = alloca i32, align 4
- call void @other(i32* %a)
- %b = load i32, i32* %a, align 4
+ call void @other(ptr %a)
+ %b = load i32, ptr %a, align 4
ret i32 %b
}
- declare void @other(i32*)
+ declare void @other(ptr)
...
---
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv7a-none-unknown-eabi"
- define i8* @STR_pre4(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre8(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre255(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre256(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre1024(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre4095(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre4096(i8* %p, i32 %v) { unreachable }
- define i8* @STR_prem1024(i8* %p, i32 %v) { unreachable }
- define i8* @STR_prem4095(i8* %p, i32 %v) { unreachable }
- define i8* @STR_prem4096(i8* %p, i32 %v) { unreachable }
-
- define i8* @STR_post4(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post8(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post255(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post256(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post1024(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post4095(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post4096(i8* %p, i32 %v) { unreachable }
- define i8* @STR_postm1024(i8* %p, i32 %v) { unreachable }
- define i8* @STR_postm4095(i8* %p, i32 %v) { unreachable }
- define i8* @STR_postm4096(i8* %p, i32 %v) { unreachable }
+ define ptr @STR_pre4(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre8(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre255(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre256(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre1024(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre4095(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre4096(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_prem1024(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_prem4095(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_prem4096(ptr %p, i32 %v) { unreachable }
+
+ define ptr @STR_post4(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post8(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post255(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post256(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post1024(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post4095(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post4096(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_postm1024(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_postm4095(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_postm4096(ptr %p, i32 %v) { unreachable }
...
---
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv6m-none--eabi"
- define void @foo(i8 %in, i32* %addr) {
- store i32 12345678, i32* %addr
+ define void @foo(i8 %in, ptr %addr) {
+ store i32 12345678, ptr %addr
%1 = call i32 @llvm.arm.space(i32 980, i32 undef)
%2 = zext i8 %in to i32
switch i32 %2, label %default [
unreachable
}
- define void @bar(i8 %in, i32* %addr) {
- store i32 12345678, i32* %addr
+ define void @bar(i8 %in, ptr %addr) {
+ store i32 12345678, ptr %addr
%1 = zext i8 %in to i32
switch i32 %1, label %default [
i32 0, label %d1
declare i32 @llvm.arm.space(i32, i32) #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
# liveness flags are added.
--- |
target triple = "thumbv7-apple-ios"
- define arm_aapcs_vfpcc <4 x float> @foo(float* %ptr) {
+ define arm_aapcs_vfpcc <4 x float> @foo(ptr %ptr) {
ret <4 x float> undef
}
...
$r0 = t2MOVTi16 internal $r0, target-flags(arm-hi16) @a, 14, $noreg
}
$r1 = t2ADDri $r0, 8, 14, $noreg, $noreg
- VLDMDIA killed $r1, 14, $noreg, def $d23, def $d24, def $d25, def $d26, def $d27, def $d28, def $d29, def $d30, def $d31 :: (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 2, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 4, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 6, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 8, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 10, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 12, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 14, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 16, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 18, i32 0) to <2 x float>*)`, align 4)
+ VLDMDIA killed $r1, 14, $noreg, def $d23, def $d24, def $d25, def $d26, def $d27, def $d28, def $d29, def $d30, def $d31 :: (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 2, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 4, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 6, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 8, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 10, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 12, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 14, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 16, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 18, i32 0)`, align 4)
$r0, dead $cpsr = tADDi8 killed $r0, 80, 14, $noreg
- VLDMDIA killed $r0, 14, $noreg, def $d0, def $d1, def $d2, def $d3, def $d4, def $d5, def $d6 :: (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 20, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 22, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 24, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 26, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 28, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 30, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 32, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 33, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 34, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 35, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 36, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 37, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 38, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 39, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 40, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 41, i32 0) to <2 x float>*)`, align 4), (load (s64) from `<2 x float>* bitcast (float* getelementptr ([1 x float], [1 x float]* @a, i32 42, i32 0) to <2 x float>*)`, align 4)
+ VLDMDIA killed $r0, 14, $noreg, def $d0, def $d1, def $d2, def $d3, def $d4, def $d5, def $d6 :: (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 20, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 22, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 24, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 26, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 28, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 30, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 32, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 33, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 34, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 35, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 36, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 37, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 38, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 39, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 40, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 41, i32 0)`, align 4), (load (s64) from `ptr getelementptr ([1 x float], ptr @a, i32 42, i32 0)`, align 4)
...
--- |
target triple = "thumbv8m.main-arm-none-eabi"
- define hidden void @foo(void ()* nocapture %baz) local_unnamed_addr #0 {
+ define hidden void @foo(ptr nocapture %baz) local_unnamed_addr #0 {
entry:
%call = call i32 @bar() #0
%tobool = icmp eq i32 %call, 0
--- |
target triple = "hexagon-unknown-unknown-elf"
- %s.0 = type { i32 (...)**, i32, i32, %s.1 }
+ %s.0 = type { ptr, i32, i32, %s.1 }
%s.1 = type { i32, i32 }
- @g0 = external dso_local unnamed_addr constant { [3 x i8*], [3 x i8*] }, align 4
+ @g0 = external dso_local unnamed_addr constant { [3 x ptr], [3 x ptr] }, align 4
; Function Attrs: norecurse
define void @f0() #0 {
b0:
- %v0 = load i32 (%s.0*)*, i32 (%s.0*)** bitcast (i8* getelementptr (i8, i8* bitcast (i8** getelementptr inbounds ({ [3 x i8*], [3 x i8*] }, { [3 x i8*], [3 x i8*] }* @g0, i32 0, inrange i32 0, i32 3) to i8*), i32 sub (i32 ptrtoint (i32 (%s.0*)* @f1 to i32), i32 1)) to i32 (%s.0*)**), align 4
- %v1 = call i32 %v0(%s.0* nonnull undef)
+ %v0 = load ptr, ptr getelementptr (i8, ptr getelementptr inbounds ({ [3 x ptr], [3 x ptr] }, ptr @g0, i32 0, inrange i32 0, i32 3), i32 sub (i32 ptrtoint (ptr @f1 to i32), i32 1)), align 4
+ %v1 = call i32 %v0(ptr nonnull undef)
unreachable
}
; Function Attrs: norecurse nounwind
- declare dso_local i32 @f1(%s.0*) #1 align 2
+ declare dso_local i32 @f1(ptr) #1 align 2
attributes #0 = { norecurse "target-cpu"="hexagonv60" }
attributes #1 = { norecurse nounwind "target-cpu"="hexagonv60" }
body: |
bb.0.b0:
$r2 = A2_tfrsi @g0 + 12
- $r2 = L2_loadri_io killed $r2, @f1 - 1 :: (load (s32) from `i32 (%s.0*)** bitcast (i8* getelementptr (i8, i8* bitcast (i8** getelementptr inbounds ({ [3 x i8*], [3 x i8*] }, { [3 x i8*], [3 x i8*] }* @g0, i32 0, inrange i32 0, i32 3) to i8*), i32 sub (i32 ptrtoint (i32 (%s.0*)* @f1 to i32), i32 1)) to i32 (%s.0*)**)`)
+ $r2 = L2_loadri_io killed $r2, @f1 - 1 :: (load (s32) from `ptr getelementptr (i8, ptr getelementptr inbounds ({ [3 x ptr], [3 x ptr] }, ptr @g0, i32 0, inrange i32 0, i32 3), i32 sub (i32 ptrtoint (ptr @f1 to i32), i32 1))`)
ADJCALLSTACKDOWN 0, 0, implicit-def $r29, implicit-def dead $r30, implicit $r31, implicit $r30, implicit $r29
PS_callr_nr killed $r2, hexagoncsr, implicit undef $r0, implicit-def $r29, implicit-def dead $r0
ADJCALLSTACKUP 0, 0, implicit-def dead $r29, implicit-def dead $r30, implicit-def dead $r31, implicit $r29
b0:
%v0 = tail call i32 @llvm.read_register.i32(metadata !0)
%v1 = add nsw i32 %v0, 4096
- %v2 = inttoptr i32 %v1 to %s.0*
- %v3 = getelementptr inbounds %s.0, %s.0* %v2, i32 -1
- %v4 = tail call i32 bitcast (i32 (...)* @f1 to i32 (%s.0*)*)(%s.0* noundef nonnull %v3) #2
+ %v2 = inttoptr i32 %v1 to ptr
+ %v3 = getelementptr inbounds %s.0, ptr %v2, i32 -1
+ %v4 = tail call i32 @f1(ptr noundef nonnull %v3) #2
br i1 %a0, label %b2, label %b1
b1: ; preds = %b0
- %v5 = getelementptr inbounds %s.0, %s.0* %v3, i32 0, i32 0, i32 0, i32 0
- %v6 = load i32, i32* %v5, align 4
+ %v6 = load i32, ptr %v3, align 4
br label %b2
b2: ; preds = %b1, %b0
# CHECK: L2_loadri_io killed $r0, 12
--- |
- define void @foo(i32* %a, i32* %b) {
+ define void @foo(ptr %a, ptr %b) {
ret void
}
...
define void @f0(i32 %a0) {
b0:
- %v0 = bitcast [10 x %s.0]* inttoptr (i32 -121502345 to [10 x %s.0]*) to [10 x %s.0]*
+ %v0 = bitcast ptr inttoptr (i32 -121502345 to ptr) to ptr
br label %b1
b1: ; preds = %b5, %b0
%v1 = phi i32 [ 0, %b0 ], [ %v28, %b5 ]
%v2 = phi i32 [ 0, %b0 ], [ %v27, %b5 ]
- %v3 = load i32, i32* @g2, align 4
- %v4 = load i32, i32* @g3, align 8
+ %v3 = load i32, ptr @g2, align 4
+ %v4 = load i32, ptr @g3, align 8
%v5 = and i32 %v4, %v3
- %v6 = getelementptr [10 x %s.0], [10 x %s.0]* %v0, i32 0, i32 %v2
- %v7 = bitcast %s.0* %v6 to %s.0*
- %v8 = getelementptr %s.0, %s.0* %v7, i32 0, i32 12
- %v9 = getelementptr %s.0, %s.0* %v7, i32 0, i32 13
+ %v6 = getelementptr [10 x %s.0], ptr %v0, i32 0, i32 %v2
+ %v8 = getelementptr %s.0, ptr %v6, i32 0, i32 12
+ %v9 = getelementptr %s.0, ptr %v6, i32 0, i32 13
br label %b2
b2: ; preds = %b4, %b1
%v11 = phi i32 [ %v13, %b4 ], [ %v5, %b1 ]
%v12 = tail call i32 @llvm.hexagon.S2.cl0(i32 %v11)
%v13 = tail call i32 @llvm.hexagon.S2.setbit.r(i32 %v11, i32 %v12)
- %v14 = getelementptr [24 x i32], [24 x i32]* %v8, i32 0, i32 %v12
- %v15 = load i32, i32* %v14, align 4
+ %v14 = getelementptr [24 x i32], ptr %v8, i32 0, i32 %v12
+ %v15 = load i32, ptr %v14, align 4
%v16 = tail call i64 @llvm.hexagon.M2.vmpy2s.s0(i32 %v15, i32 %v15)
- %v17 = getelementptr [24 x i32], [24 x i32]* %v9, i32 0, i32 %v12
- %v18 = load i32, i32* %v17, align 4
+ %v17 = getelementptr [24 x i32], ptr %v9, i32 0, i32 %v12
+ %v18 = load i32, ptr %v17, align 4
%v19 = tail call i64 @llvm.hexagon.M2.vmac2s.s0(i64 %v16, i32 %v18, i32 %v18)
- %v20 = load i8, i8* @g4, align 1
+ %v20 = load i8, ptr @g4, align 1
%v21 = and i8 %v20, 1
%v22 = icmp eq i8 %v21, 0
br i1 %v22, label %b3, label %b4
b3: ; preds = %b2
%v23 = tail call i64 @llvm.hexagon.A2.vaddws(i64 %v10, i64 %v19)
- store i64 %v23, i64* @g0, align 8
+ store i64 %v23, ptr @g0, align 8
br label %b4
b4: ; preds = %b3, %b2
br i1 %v29, label %b6, label %b1
b6: ; preds = %b5
- store i64 %v19, i64* @g1, align 8
+ store i64 %v19, ptr @g1, align 8
ret void
}
%s.9 = type { i8, i8 }
; Function Attrs: nounwind optsize
- define dso_local void @f0(%s.0* byval(%s.0) nocapture readonly align 8 %a0) local_unnamed_addr #0 {
+ define dso_local void @f0(ptr byval(%s.0) nocapture readonly align 8 %a0) local_unnamed_addr #0 {
b0:
- %v0 = getelementptr inbounds %s.0, %s.0* %a0, i32 0, i32 10
- %v1 = load i8, i8* %v0, align 8
- %v2 = tail call i8* @f1(i8 signext %v1) #0
+ %v0 = getelementptr inbounds %s.0, ptr %a0, i32 0, i32 10
+ %v1 = load i8, ptr %v0, align 8
+ %v2 = tail call ptr @f1(i8 signext %v1) #0
unreachable
}
; Function Attrs: nounwind optsize
- declare dso_local i8* @f1(i8 signext) local_unnamed_addr #0
+ declare dso_local ptr @f1(i8 signext) local_unnamed_addr #0
attributes #0 = { nounwind optsize "target-cpu"="hexagonv65" }
successors: %bb.1, %bb.2
%0:intregs = IMPLICIT_DEF
- %1:intregs = L2_loadrub_io killed %0:intregs, 0 :: (load (s8) from `i8* undef`, align 2)
+ %1:intregs = L2_loadrub_io killed %0:intregs, 0 :: (load (s8) from `ptr undef`, align 2)
%2:predregs = C2_cmpeqi %1:intregs, 5
%3:intregs = A2_tfrsi 0
S2_pstorerbt_io %2:predregs, %stack.0, 267, killed %3:intregs :: (store (s8) into %stack.0)
define void @f0() #0 {
b0:
- tail call fastcc void @f1(float* inttoptr (i64 add (i64 ptrtoint ([0 x i8]* @0 to i64), i64 128) to float*), i64* getelementptr inbounds ([2 x i64], [2 x i64]* @1, i32 0, i32 0))
+ tail call fastcc void @f1(ptr inttoptr (i64 add (i64 ptrtoint (ptr @0 to i64), i64 128) to ptr), ptr @1)
ret void
}
- declare fastcc void @f1(float* nocapture readonly, i64* nocapture readonly) #1
+ declare fastcc void @f1(ptr nocapture readonly, ptr nocapture readonly) #1
attributes #0 = { alwaysinline nounwind "target-cpu"="hexagonv60" }
attributes #1 = { noinline norecurse nounwind "target-cpu"="hexagonv60" }
%s.2 = type { %s.3 }
%s.3 = type { %s.4 }
%s.4 = type { %s.5 }
- %s.5 = type { i32, i32, i8* }
+ %s.5 = type { i32, i32, ptr }
- declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
+ declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0
define hidden fastcc void @f0() {
b0:
%v0 = alloca %s.0, align 4
- %v1 = load i8, i8* undef, align 1
+ %v1 = load i8, ptr undef, align 1
%v2 = add i8 %v1, -102
%v3 = icmp ult i8 %v2, 1
br i1 %v3, label %b1, label %b2
b1: ; preds = %b0
- %v4 = bitcast %s.0* %v0 to i8*
- call void @llvm.lifetime.end.p0i8(i64 12, i8* nonnull %v4)
+ call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %v0)
br label %b2
b2: ; preds = %b1, %b0
successors: %bb.1.b1(0x40000000), %bb.2.b2(0x40000000)
%1 = IMPLICIT_DEF
- %0 = L2_loadrb_io killed %1, 0 :: (load (s8) from `i8* undef`)
+ %0 = L2_loadrb_io killed %1, 0 :: (load (s8) from `ptr undef`)
%2 = C2_cmpeqi killed %0, 102
%3 = COPY killed %2
J2_jumpf killed %3, %bb.2.b2, implicit-def dead $pc
--- |
target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
- define void @if-cvt(i32* %p, i1 %c) {
+ define void @if-cvt(ptr %p, i1 %c) {
entry:
br i1 %c, label %if, label %endif
if: ; preds = %entry
- store i32 1, i32* %p, align 4
+ store i32 1, ptr %p, align 4
br label %endif
endif: ; preds = %if, %entry
%s.0 = type { i32 }
- @g0 = external dso_local local_unnamed_addr global %s.0*, align 4, !dbg !0
+ @g0 = external dso_local local_unnamed_addr global ptr, align 4, !dbg !0
define dso_local void @f0() local_unnamed_addr #0 !dbg !13 {
b0:
%v2 = add nsw i32 %v1, -8
%v3 = add nsw i32 %v2, %v0
call void @llvm.dbg.value(metadata i32 %v3, metadata !19, metadata !DIExpression()), !dbg !24
- %v4 = load %s.0*, %s.0** @g0, align 4
- %v5 = getelementptr inbounds %s.0, %s.0* %v4, i32 %v3, i32 0
- store i32 undef, i32* %v5, align 4
+ %v4 = load ptr, ptr @g0, align 4
+ %v5 = getelementptr inbounds %s.0, ptr %v4, i32 %v3, i32 0
+ store i32 undef, ptr %v5, align 4
%v6 = icmp eq i32 %v2, 0
br i1 %v6, label %b2, label %b1
J2_jumpf killed renamable $p0, %bb.2, implicit-def dead $pc
bb.1:
- S4_storeiri_io undef renamable $r0, 0, 32768 :: (store (s32) into `i32* undef`)
+ S4_storeiri_io undef renamable $r0, 0, 32768 :: (store (s32) into `ptr undef`)
PS_jmpret $r31, implicit-def dead $pc
bb.2:
- S4_storeiri_io undef renamable $r0, 0, 32768 :: (store (s32) into `i32* undef`)
+ S4_storeiri_io undef renamable $r0, 0, 32768 :: (store (s32) into `ptr undef`)
PS_jmpret $r31, implicit-def dead $pc
...
target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
; Function Attrs: nounwind
- define void @f0(i32 %a0, i16* nocapture %a1) #0 {
+ define void @f0(i32 %a0, ptr nocapture %a1) #0 {
b0:
br i1 undef, label %b1, label %b2.preheader
br i1 undef, label %b3, label %b2.preheader
b2.preheader: ; preds = %b0, %b1
- %cgep = getelementptr i16, i16* %a1, i32 undef
+ %cgep = getelementptr i16, ptr %a1, i32 undef
br label %b2
b2: ; preds = %b2.preheader, %b2
- %lsr.iv = phi i16* [ %cgep, %b2.preheader ], [ %cgep3, %b2 ]
+ %lsr.iv = phi ptr [ %cgep, %b2.preheader ], [ %cgep3, %b2 ]
%v1 = phi i32 [ %v7, %b2 ], [ undef, %b2.preheader ]
%v2 = phi i32 [ %v1, %b2 ], [ %a0, %b2.preheader ]
%v3 = add nsw i32 %v2, -2
- %cgep2 = getelementptr inbounds i16, i16* %a1, i32 %v3
- %v5 = load i16, i16* %cgep2, align 2, !tbaa !0
- store i16 %v5, i16* %lsr.iv, align 2, !tbaa !0
+ %cgep2 = getelementptr inbounds i16, ptr %a1, i32 %v3
+ %v5 = load i16, ptr %cgep2, align 2, !tbaa !0
+ store i16 %v5, ptr %lsr.iv, align 2, !tbaa !0
%v7 = add nsw i32 %v1, -1
%v8 = icmp sgt i32 %v7, 0
- %cgep3 = getelementptr i16, i16* %lsr.iv, i32 -1
+ %cgep3 = getelementptr i16, ptr %lsr.iv, i32 -1
br i1 %v8, label %b2, label %b3
b3: ; preds = %b2, %b1
# CHECK: r1 = memw(r0++#8)
--- |
- define void @fred(i32* %a) { ret void }
+ define void @fred(ptr %a) { ret void }
...
---
name: fred
%shl50 = shl i64 %add45, %4
%and52 = and i64 %shl37, %or12
%and54 = and i64 %shl50, %or26
- store i64 %and54, i64* undef, align 8
+ store i64 %and54, ptr undef, align 8
%cmp56 = icmp eq i64 %and52, 0
br i1 %cmp56, label %for.end, label %if.end82
%21 = COPY %13
%21 = S2_lsr_i_p_and %21, %29, 9
%22 = S2_asl_i_p_and %22, %7, 42
- S2_storerd_io undef %23, 0, %22 :: (store (s64) into `i64* undef`)
+ S2_storerd_io undef %23, 0, %22 :: (store (s64) into `ptr undef`)
%25 = C2_cmpeqp %21, %51
J2_jumpt %25, %bb.3.for.end, implicit-def dead $pc
J2_jump %bb.2.if.end82, implicit-def dead $pc
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @add_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @add_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @add_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @add_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @add_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define i32 @indirectbr(i8* %addr) {
+ define i32 @indirectbr(ptr %addr) {
entry:
- indirectbr i8* %addr, [label %L1, label %L2]
+ indirectbr ptr %addr, [label %L1, label %L2]
L1:
ret i32 0
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @fabs_v4f32(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
- define void @fabs_v2f64(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @fabs_v4f32(ptr %a, ptr %c) { entry: ret void }
+ define void @fabs_v2f64(ptr %a, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @atomic_load_i32(i32* %ptr) { ret void }
+ define void @atomic_load_i32(ptr %ptr) { ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @fadd_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fadd_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fadd_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fadd_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fsub_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fsub_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fsub_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fsub_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fmul_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fmul_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fmul_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fmul_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fdiv_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fdiv_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fdiv_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fdiv_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sqrt_v4f32(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
- define void @sqrt_v2f64(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @sqrt_v4f32(ptr %a, ptr %c) { entry: ret void }
+ define void @sqrt_v2f64(ptr %a, ptr %c) { entry: ret void }
...
---
@.str = private unnamed_addr constant [11 x i8] c"hello %d \0A\00"
define void @main() {entry: ret void}
- declare i32 @printf(i8*, ...)
+ declare i32 @printf(ptr, ...)
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32FP64
--- |
- define void @load_i32(i32* %ptr) {entry: ret void}
- define void @load_float(float* %ptr) {entry: ret void}
- define void @load_double(double* %ptr) {entry: ret void}
+ define void @load_i32(ptr %ptr) {entry: ret void}
+ define void @load_float(ptr %ptr) {entry: ret void}
+ define void @load_double(ptr %ptr) {entry: ret void}
...
---
define float @load_float_align1() {
entry:
- %0 = load float, float* @float_align1, align 1
+ %0 = load float, ptr @float_align1, align 1
ret float %0
}
define float @load_float_align4() {
entry:
- %0 = load float, float* @float_align4, align 4
+ %0 = load float, ptr @float_align4, align 4
ret float %0
}
define i32 @load_i32_align8() {
entry:
- %0 = load i32, i32* @i32_align8, align 8
+ %0 = load i32, ptr @i32_align8, align 8
ret i32 %0
}
define float @load_float_align1() {
entry:
- %0 = load float, float* @float_align1, align 1
+ %0 = load float, ptr @float_align1, align 1
ret float %0
}
define float @load_float_align8() {
entry:
- %0 = load float, float* @float_align8, align 8
+ %0 = load float, ptr @float_align8, align 8
ret float %0
}
define i32 @load_i32_align2() {
entry:
- %0 = load i32, i32* @i32_align2, align 2
+ %0 = load i32, ptr @i32_align2, align 2
ret i32 %0
}
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=msa,+fp64 -mattr=nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @load_store_v16i8(<16 x i8>* %a, <16 x i8>* %b) { entry: ret void }
- define void @load_store_v8i16(<8 x i16>* %a, <8 x i16>* %b) { entry: ret void }
- define void @load_store_v4i32(<4 x i32>* %a, <4 x i32>* %b) { entry: ret void }
- define void @load_store_v2i64(<2 x i64>* %a, <2 x i64>* %b) { entry: ret void }
- define void @load_store_v4f32(<4 x float>* %a, <4 x float>* %b) { entry: ret void }
- define void @load_store_v2f64(<2 x double>* %a, <2 x double>* %b) { entry: ret void }
+ define void @load_store_v16i8(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v8i16(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v4i32(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v2i64(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v4f32(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v2f64(ptr %a, ptr %b) { entry: ret void }
...
---
--- |
define void @mul_i32(i32 %x, i32 %y) {entry: ret void}
- define void @umul_with_overflow(i32 %lhs, i32 %rhs, i32* %pmul, i1* %pcarry_flag) { ret void }
+ define void @umul_with_overflow(i32 %lhs, i32 %rhs, ptr %pmul, ptr %pcarry_flag) { ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @mul_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @mul_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @mul_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @mul_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @mul_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @ptr_arg_in_regs(i32* %p) {entry: ret void}
- define void @ptr_arg_on_stack(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i32* %p) {entry: ret void}
- define void @ret_ptr(i8* %p) {entry: ret void}
+ define void @ptr_arg_in_regs(ptr %p) {entry: ret void}
+ define void @ptr_arg_on_stack(i32 %x1, i32 %x2, i32 %x3, i32 %x4, ptr %p) {entry: ret void}
+ define void @ret_ptr(ptr %p) {entry: ret void}
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sdiv_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @sdiv_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @sdiv_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @sdiv_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @srem_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @srem_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @srem_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @srem_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @udiv_v16u8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @udiv_v8u16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @udiv_v4u32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @udiv_v2u64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @urem_v16u8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @urem_v8u16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @urem_v4u32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @urem_v2u64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sdiv_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @srem_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @udiv_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @urem_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32FP64
--- |
- define void @store_i32(i32* %ptr) { entry: ret void }
- define void @store_float(float* %ptr) { entry: ret void }
- define void @store_double(double* %ptr) { entry: ret void }
+ define void @store_i32(ptr %ptr) { entry: ret void }
+ define void @store_float(ptr %ptr) { entry: ret void }
+ define void @store_double(ptr %ptr) { entry: ret void }
...
---
define void @store_float_align1(float %a) {
entry:
- store float %a, float* @float_align1, align 1
+ store float %a, ptr @float_align1, align 1
ret void
}
define void @store_float_align4(float %a) {
entry:
- store float %a, float* @float_align4, align 4
+ store float %a, ptr @float_align4, align 4
ret void
}
define void @store_i32_align8(i32 signext %a) {
entry:
- store i32 %a, i32* @i32_align8, align 8
+ store i32 %a, ptr @i32_align8, align 8
ret void
}
define void @store_float_align1(float %a) #0 {
entry:
- store float %a, float* @float_align1, align 1
+ store float %a, ptr @float_align1, align 1
ret void
}
define void @store_float_align8(float %a) #0 {
entry:
- store float %a, float* @float_align8, align 8
+ store float %a, ptr @float_align8, align 8
ret void
}
define void @store_i32_align2(i32 signext %a) #0 {
entry:
- store i32 %a, i32* @i32_align2, align 2
+ store i32 %a, ptr @i32_align2, align 2
ret void
}
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sub_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @sub_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @sub_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @sub_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sub_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load_store_i8(i8* %px, i8* %py) {entry: ret void}
- define void @load_store_i16(i16* %px, i16* %py) {entry: ret void}
- define void @load_store_i32(i32* %px, i32* %py) {entry: ret void}
+ define void @load_store_i8(ptr %px, ptr %py) {entry: ret void}
+ define void @load_store_i16(ptr %px, ptr %py) {entry: ret void}
+ define void @load_store_i32(ptr %px, ptr %py) {entry: ret void}
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load1_s8_to_zextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_zextLoad2_s32(i16* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_sextLoad2_s32(i16* %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_zextLoad2_s32(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_sextLoad2_s32(ptr %px) {entry: ret void}
...
---
define void @add_i16_aext() {entry: ret void}
define void @add_i64() {entry: ret void}
define void @add_i128() {entry: ret void}
- define void @uadd_with_overflow(i32 %lhs, i32 %rhs, i32* %padd, i1* %pcarry_flag) { ret void }
+ define void @uadd_with_overflow(i32 %lhs, i32 %rhs, ptr %padd, ptr %pcarry_flag) { ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @add_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @add_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @add_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @add_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @add_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
--- |
declare <16 x i8> @llvm.mips.addv.b(<16 x i8>, <16 x i8>)
- define void @add_v16i8_builtin(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
+ define void @add_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.addv.h(<8 x i16>, <8 x i16>)
- define void @add_v8i16_builtin(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
+ define void @add_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.addv.w(<4 x i32>, <4 x i32>)
- define void @add_v4i32_builtin(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
+ define void @add_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.addv.d(<2 x i64>, <2 x i64>)
- define void @add_v2i64_builtin(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @add_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <16 x i8> @llvm.mips.addvi.b(<16 x i8>, i32 immarg)
- define void @add_v16i8_builtin_imm(<16 x i8>* %a, <16 x i8>* %c) { entry: ret void }
+ define void @add_v16i8_builtin_imm(ptr %a, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.addvi.h(<8 x i16>, i32 immarg)
- define void @add_v8i16_builtin_imm(<8 x i16>* %a, <8 x i16>* %c) { entry: ret void }
+ define void @add_v8i16_builtin_imm(ptr %a, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.addvi.w(<4 x i32>, i32 immarg)
- define void @add_v4i32_builtin_imm(<4 x i32>* %a, <4 x i32>* %c) { entry: ret void }
+ define void @add_v4i32_builtin_imm(ptr %a, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.addvi.d(<2 x i64>, i32 immarg)
- define void @add_v2i64_builtin_imm(<2 x i64>* %a, <2 x i64>* %c) { entry: ret void }
+ define void @add_v2i64_builtin_imm(ptr %a, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define i32 @indirectbr(i8* %addr) {
+ define i32 @indirectbr(ptr %addr) {
entry:
- indirectbr i8* %addr, [label %L1, label %L2]
+ indirectbr ptr %addr, [label %L1, label %L2]
L1:
ret i32 0
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- declare i32 @puts(i8*)
- declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i1)
+ declare i32 @puts(ptr)
+ declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
define void @Print_c_N_times(i8 %c, i32 %N) {
entry:
%add = add i32 %N, 1
%vla = alloca i8, i32 %add, align 1
- call void @llvm.memset.p0i8.i32(i8* align 1 %vla, i8 %c, i32 %N, i1 false)
- %arrayidx = getelementptr inbounds i8, i8* %vla, i32 %N
- store i8 0, i8* %arrayidx, align 1
- %call = call i32 @puts(i8* %vla)
+ call void @llvm.memset.p0.i32(ptr align 1 %vla, i8 %c, i32 %N, i1 false)
+ %arrayidx = getelementptr inbounds i8, ptr %vla, i32 %N
+ store i8 0, ptr %arrayidx, align 1
+ %call = call i32 @puts(ptr %vla)
ret void
}
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @fabs_v4f32(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
- define void @fabs_v2f64(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @fabs_v4f32(ptr %a, ptr %c) { entry: ret void }
+ define void @fabs_v2f64(ptr %a, ptr %c) { entry: ret void }
...
---
--- |
declare <4 x float> @llvm.mips.fmax.a.w(<4 x float>, <4 x float>)
- define void @fabs_v4f32_builtin(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
+ define void @fabs_v4f32_builtin(ptr %a, ptr %c) { entry: ret void }
declare <2 x double> @llvm.mips.fmax.a.d(<2 x double>, <2 x double>)
- define void @fabs_v2f64_builtin(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @fabs_v2f64_builtin(ptr %a, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @atomic_load_i32(i32* %ptr) { ret void }
+ define void @atomic_load_i32(ptr %ptr) { ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @fadd_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fadd_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fadd_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fadd_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fsub_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fsub_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fsub_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fsub_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fmul_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fmul_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fmul_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fmul_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fdiv_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fdiv_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fdiv_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fdiv_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
--- |
declare <4 x float> @llvm.mips.fadd.w(<4 x float>, <4 x float>)
- define void @fadd_v4f32_builtin(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
+ define void @fadd_v4f32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x double> @llvm.mips.fadd.d(<2 x double>, <2 x double>)
- define void @fadd_v2f64_builtin(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fadd_v2f64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x float> @llvm.mips.fsub.w(<4 x float>, <4 x float>)
- define void @fsub_v4f32_builtin(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
+ define void @fsub_v4f32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x double> @llvm.mips.fsub.d(<2 x double>, <2 x double>)
- define void @fsub_v2f64_builtin(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fsub_v2f64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x float> @llvm.mips.fmul.w(<4 x float>, <4 x float>)
- define void @fmul_v4f32_builtin(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
+ define void @fmul_v4f32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x double> @llvm.mips.fmul.d(<2 x double>, <2 x double>)
- define void @fmul_v2f64_builtin(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fmul_v2f64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x float> @llvm.mips.fdiv.w(<4 x float>, <4 x float>)
- define void @fdiv_v4f32_builtin(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
+ define void @fdiv_v4f32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x double> @llvm.mips.fdiv.d(<2 x double>, <2 x double>)
- define void @fdiv_v2f64_builtin(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fdiv_v2f64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sqrt_v4f32(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
- define void @sqrt_v2f64(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @sqrt_v4f32(ptr %a, ptr %c) { entry: ret void }
+ define void @sqrt_v2f64(ptr %a, ptr %c) { entry: ret void }
...
---
--- |
declare <4 x float> @llvm.mips.fsqrt.w(<4 x float>)
- define void @fsqrt_v4f32_builtin(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
+ define void @fsqrt_v4f32_builtin(ptr %a, ptr %c) { entry: ret void }
declare <2 x double> @llvm.mips.fsqrt.d(<2 x double>)
- define void @fsqrt_v2f64_builtin(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @fsqrt_v2f64_builtin(ptr %a, ptr %c) { entry: ret void }
...
---
@.str = private unnamed_addr constant [11 x i8] c"hello %d \0A\00"
define void @main() {entry: ret void}
- declare i32 @printf(i8*, ...)
+ declare i32 @printf(ptr, ...)
...
---
define float @load_float_align1() {
entry:
- %0 = load float, float* @float_align1, align 1
+ %0 = load float, ptr @float_align1, align 1
ret float %0
}
define float @load_float_align2() {
entry:
- %0 = load float, float* @float_align2, align 2
+ %0 = load float, ptr @float_align2, align 2
ret float %0
}
define float @load_float_align4() {
entry:
- %0 = load float, float* @float_align4, align 4
+ %0 = load float, ptr @float_align4, align 4
ret float %0
}
define float @load_float_align8() {
entry:
- %0 = load float, float* @float_align8, align 8
+ %0 = load float, ptr @float_align8, align 8
ret float %0
}
define i32 @load_i32_align1() {
entry:
- %0 = load i32, i32* @i32_align1, align 1
+ %0 = load i32, ptr @i32_align1, align 1
ret i32 %0
}
define i32 @load_i32_align2() {
entry:
- %0 = load i32, i32* @i32_align2, align 2
+ %0 = load i32, ptr @i32_align2, align 2
ret i32 %0
}
define i32 @load_i32_align4() {
entry:
- %0 = load i32, i32* @i32_align4, align 4
+ %0 = load i32, ptr @i32_align4, align 4
ret i32 %0
}
define i32 @load_i32_align8() {
entry:
- %0 = load i32, i32* @i32_align8, align 8
+ %0 = load i32, ptr @i32_align8, align 8
ret i32 %0
}
define void @mul_i64() {entry: ret void}
define void @mul_i128() {entry: ret void}
define void @umulh_i64() {entry: ret void}
- define void @umul_with_overflow(i32 %lhs, i32 %rhs, i32* %pmul, i1* %pcarry_flag) { ret void }
+ define void @umul_with_overflow(i32 %lhs, i32 %rhs, ptr %pmul, ptr %pcarry_flag) { ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @mul_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @mul_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @mul_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @mul_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @mul_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
--- |
declare <16 x i8> @llvm.mips.mulv.b(<16 x i8>, <16 x i8>)
- define void @mul_v16i8_builtin(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
+ define void @mul_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.mulv.h(<8 x i16>, <8 x i16>)
- define void @mul_v8i16_builtin(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
+ define void @mul_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.mulv.w(<4 x i32>, <4 x i32>)
- define void @mul_v4i32_builtin(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
+ define void @mul_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.mulv.d(<2 x i64>, <2 x i64>)
- define void @mul_v2i64_builtin(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @mul_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
ret i64 %cond
}
- define void @phi_ambiguous_i64_in_fpr(i1 %cnd, i64* %i64_ptr_a, i64* %i64_ptr_b, i64* %i64_ptr_c) {
+ define void @phi_ambiguous_i64_in_fpr(i1 %cnd, ptr %i64_ptr_a, ptr %i64_ptr_b, ptr %i64_ptr_c) {
entry:
- %0 = load i64, i64* %i64_ptr_a, align 8
- %1 = load i64, i64* %i64_ptr_b, align 8
+ %0 = load i64, ptr %i64_ptr_a, align 8
+ %1 = load i64, ptr %i64_ptr_b, align 8
br i1 %cnd, label %cond.true, label %cond.false
cond.true: ; preds = %entry
cond.end: ; preds = %cond.false, %cond.true
%cond = phi i64 [ %0, %cond.true ], [ %1, %cond.false ]
- store i64 %cond, i64* %i64_ptr_c, align 8
+ store i64 %cond, ptr %i64_ptr_c, align 8
ret void
}
ret float %cond
}
- define void @phi_ambiguous_float_in_gpr(i1 %cnd, float* %f32_ptr_a, float* %f32_ptr_b, float* %f32_ptr_c) {
+ define void @phi_ambiguous_float_in_gpr(i1 %cnd, ptr %f32_ptr_a, ptr %f32_ptr_b, ptr %f32_ptr_c) {
entry:
- %0 = load float, float* %f32_ptr_a, align 4
- %1 = load float, float* %f32_ptr_b, align 4
+ %0 = load float, ptr %f32_ptr_a, align 4
+ %1 = load float, ptr %f32_ptr_b, align 4
br i1 %cnd, label %cond.true, label %cond.false
cond.true: ; preds = %entry
cond.end: ; preds = %cond.false, %cond.true
%cond = phi float [ %0, %cond.true ], [ %1, %cond.false ]
- store float %cond, float* %f32_ptr_c, align 4
+ store float %cond, ptr %f32_ptr_c, align 4
ret void
}
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @ptr_arg_in_regs(i32* %p) {entry: ret void}
- define void @ptr_arg_on_stack(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i32* %p) {entry: ret void}
- define void @ret_ptr(i8* %p) {entry: ret void}
+ define void @ptr_arg_in_regs(ptr %p) {entry: ret void}
+ define void @ptr_arg_on_stack(i32 %x1, i32 %x2, i32 %x3, i32 %x4, ptr %p) {entry: ret void}
+ define void @ret_ptr(ptr %p) {entry: ret void}
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sdiv_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @sdiv_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @sdiv_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @sdiv_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @srem_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @srem_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @srem_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @srem_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @udiv_v16u8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @udiv_v8u16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @udiv_v4u32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @udiv_v2u64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @urem_v16u8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @urem_v8u16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @urem_v4u32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @urem_v2u64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sdiv_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @srem_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @udiv_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @urem_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
--- |
declare <16 x i8> @llvm.mips.div.s.b(<16 x i8>, <16 x i8>)
- define void @sdiv_v16i8_builtin(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
+ define void @sdiv_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.div.s.h(<8 x i16>, <8 x i16>)
- define void @sdiv_v8i16_builtin(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
+ define void @sdiv_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.div.s.w(<4 x i32>, <4 x i32>)
- define void @sdiv_v4i32_builtin(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
+ define void @sdiv_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.div.s.d(<2 x i64>, <2 x i64>)
- define void @sdiv_v2i64_builtin(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sdiv_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <16 x i8> @llvm.mips.mod.s.b(<16 x i8>, <16 x i8>)
- define void @smod_v16i8_builtin(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
+ define void @smod_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.mod.s.h(<8 x i16>, <8 x i16>)
- define void @smod_v8i16_builtin(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
+ define void @smod_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.mod.s.w(<4 x i32>, <4 x i32>)
- define void @smod_v4i32_builtin(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
+ define void @smod_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.mod.s.d(<2 x i64>, <2 x i64>)
- define void @smod_v2i64_builtin(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @smod_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <16 x i8> @llvm.mips.div.u.b(<16 x i8>, <16 x i8>)
- define void @udiv_v16i8_builtin(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
+ define void @udiv_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.div.u.h(<8 x i16>, <8 x i16>)
- define void @udiv_v8i16_builtin(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
+ define void @udiv_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.div.u.w(<4 x i32>, <4 x i32>)
- define void @udiv_v4i32_builtin(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
+ define void @udiv_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.div.u.d(<2 x i64>, <2 x i64>)
- define void @udiv_v2i64_builtin(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @udiv_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <16 x i8> @llvm.mips.mod.u.b(<16 x i8>, <16 x i8>)
- define void @umod_v16i8_builtin(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
+ define void @umod_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.mod.u.h(<8 x i16>, <8 x i16>)
- define void @umod_v8i16_builtin(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
+ define void @umod_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.mod.u.w(<4 x i32>, <4 x i32>)
- define void @umod_v4i32_builtin(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
+ define void @umod_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.mod.u.d(<2 x i64>, <2 x i64>)
- define void @umod_v2i64_builtin(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @umod_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
define void @store_float_align1(float %a) {
entry:
- store float %a, float* @float_align1, align 1
+ store float %a, ptr @float_align1, align 1
ret void
}
define void @store_float_align2(float %a) {
entry:
- store float %a, float* @float_align2, align 2
+ store float %a, ptr @float_align2, align 2
ret void
}
define void @store_float_align4(float %a) {
entry:
- store float %a, float* @float_align4, align 4
+ store float %a, ptr @float_align4, align 4
ret void
}
define void @store_float_align8(float %a) {
entry:
- store float %a, float* @float_align8, align 8
+ store float %a, ptr @float_align8, align 8
ret void
}
define void @store_i32_align1(i32 signext %a) {
entry:
- store i32 %a, i32* @i32_align1, align 1
+ store i32 %a, ptr @i32_align1, align 1
ret void
}
define void @store_i32_align2(i32 signext %a) {
entry:
- store i32 %a, i32* @i32_align2, align 2
+ store i32 %a, ptr @i32_align2, align 2
ret void
}
define void @store_i32_align4(i32 signext %a) {
entry:
- store i32 %a, i32* @i32_align4, align 4
+ store i32 %a, ptr @i32_align4, align 4
ret void
}
define void @store_i32_align8(i32 signext %a) {
entry:
- store i32 %a, i32* @i32_align8, align 8
+ store i32 %a, ptr @i32_align8, align 8
ret void
}
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sub_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @sub_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @sub_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @sub_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sub_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
--- |
declare <16 x i8> @llvm.mips.subv.b(<16 x i8>, <16 x i8>)
- define void @sub_v16i8_builtin(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
+ define void @sub_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.subv.h(<8 x i16>, <8 x i16>)
- define void @sub_v8i16_builtin(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
+ define void @sub_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.subv.w(<4 x i32>, <4 x i32>)
- define void @sub_v4i32_builtin(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
+ define void @sub_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.subv.d(<2 x i64>, <2 x i64>)
- define void @sub_v2i64_builtin(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sub_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
declare <16 x i8> @llvm.mips.subvi.b(<16 x i8>, i32 immarg)
- define void @sub_v16i8_builtin_imm(<16 x i8>* %a, <16 x i8>* %c) { entry: ret void }
+ define void @sub_v16i8_builtin_imm(ptr %a, ptr %c) { entry: ret void }
declare <8 x i16> @llvm.mips.subvi.h(<8 x i16>, i32 immarg)
- define void @sub_v8i16_builtin_imm(<8 x i16>* %a, <8 x i16>* %c) { entry: ret void }
+ define void @sub_v8i16_builtin_imm(ptr %a, ptr %c) { entry: ret void }
declare <4 x i32> @llvm.mips.subvi.w(<4 x i32>, i32 immarg)
- define void @sub_v4i32_builtin_imm(<4 x i32>* %a, <4 x i32>* %c) { entry: ret void }
+ define void @sub_v4i32_builtin_imm(ptr %a, ptr %c) { entry: ret void }
declare <2 x i64> @llvm.mips.subvi.d(<2 x i64>, i32 immarg)
- define void @sub_v2i64_builtin_imm(<2 x i64>* %a, <2 x i64>* %c) { entry: ret void }
+ define void @sub_v2i64_builtin_imm(ptr %a, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load1_s8_to_zextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_zextLoad2_s32(i16* %px) {entry: ret void}
- define void @load1_s8_to_zextLoad1_s16(i8* %px) {entry: ret void}
- define void @load1_s8_to_zextLoad1_s16_to_zextLoad1_s32(i8* %px) {entry: ret void}
- define void @load4_s32_to_zextLoad4_s64(i8* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_sextLoad2_s32(i16* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s16(i8* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s16_to_sextLoad1_s32(i8* %px) {entry: ret void}
- define void @load4_s32_to_sextLoad4_s64(i8* %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_zextLoad2_s32(ptr %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s16(ptr %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s16_to_zextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load4_s32_to_zextLoad4_s64(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_sextLoad2_s32(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s16(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s16_to_sextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load4_s32_to_sextLoad4_s64(ptr %px) {entry: ret void}
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=mips-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load1_s8_to_load1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_load2_s32(i16* %px) {entry: ret void}
+ define void @load1_s8_to_load1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_load2_s32(ptr %px) {entry: ret void}
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=mips-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load1_s8_to_zextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_zextLoad2_s32(i16* %px) {entry: ret void}
- define void @load1_s8_to_zextLoad1_s16(i8* %px) {entry: ret void}
- define void @load1_s8_to_zextLoad1_s16_to_zextLoad1_s32(i8* %px) {entry: ret void}
- define void @load4_s32_to_zextLoad4_s64(i8* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_sextLoad2_s32(i16* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s16(i8* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s16_to_sextLoad1_s32(i8* %px) {entry: ret void}
- define void @load4_s32_to_sextLoad4_s64(i8* %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_zextLoad2_s32(ptr %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s16(ptr %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s16_to_zextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load4_s32_to_zextLoad4_s64(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_sextLoad2_s32(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s16(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s16_to_sextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load4_s32_to_sextLoad4_s64(ptr %px) {entry: ret void}
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @skipCopiesOutgoing(float* %ptr_a, float* %ptr_b, float* %ptr_c) {entry: ret void}
- define void @skipCopiesIncoming(float* %float_ptr) {entry: ret void}
+ define void @skipCopiesOutgoing(ptr %ptr_a, ptr %ptr_b, ptr %ptr_c) {entry: ret void}
+ define void @skipCopiesIncoming(ptr %float_ptr) {entry: ret void}
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @add_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @add_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @add_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @add_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @add_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @add_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define i32 @indirectbr(i8* %addr) {
+ define i32 @indirectbr(ptr %addr) {
entry:
- indirectbr i8* %addr, [label %L1, label %L2]
+ indirectbr ptr %addr, [label %L1, label %L2]
L1:
ret i32 0
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @fabs_v4f32(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
- define void @fabs_v2f64(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @fabs_v4f32(ptr %a, ptr %c) { entry: ret void }
+ define void @fabs_v2f64(ptr %a, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @atomic_load_i32(i32* %ptr) { ret void }
+ define void @atomic_load_i32(ptr %ptr) { ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @fadd_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fadd_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fadd_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fadd_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fsub_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fsub_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fsub_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fsub_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fmul_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fmul_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fmul_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fmul_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
- define void @fdiv_v4f32(<4 x float>* %a, <4 x float>* %b, <4 x float>* %c) { entry: ret void }
- define void @fdiv_v2f64(<2 x double>* %a, <2 x double>* %b, <2 x double>* %c) { entry: ret void }
+ define void @fdiv_v4f32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @fdiv_v2f64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sqrt_v4f32(<4 x float>* %a, <4 x float>* %c) { entry: ret void }
- define void @sqrt_v2f64(<2 x double>* %a, <2 x double>* %c) { entry: ret void }
+ define void @sqrt_v4f32(ptr %a, ptr %c) { entry: ret void }
+ define void @sqrt_v2f64(ptr %a, ptr %c) { entry: ret void }
...
---
@.str = private unnamed_addr constant [11 x i8] c"hello %d \0A\00"
define void @main() {entry: ret void}
- declare i32 @printf(i8*, ...)
+ declare i32 @printf(ptr, ...)
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load_i32(i32* %ptr) {entry: ret void}
- define void @load_i64(i64* %ptr) {entry: ret void}
- define void @load_ambiguous_i64_in_fpr(i64* %i64_ptr_a, i64* %i64_ptr_b) {entry: ret void}
- define void @load_float(float* %ptr) {entry: ret void}
- define void @load_ambiguous_float_in_gpr(float* %float_ptr_a, float* %float_ptr_b) {entry: ret void}
- define void @load_double(double* %ptr) {entry: ret void}
+ define void @load_i32(ptr %ptr) {entry: ret void}
+ define void @load_i64(ptr %ptr) {entry: ret void}
+ define void @load_ambiguous_i64_in_fpr(ptr %i64_ptr_a, ptr %i64_ptr_b) {entry: ret void}
+ define void @load_float(ptr %ptr) {entry: ret void}
+ define void @load_ambiguous_float_in_gpr(ptr %float_ptr_a, ptr %float_ptr_b) {entry: ret void}
+ define void @load_double(ptr %ptr) {entry: ret void}
...
---
define float @load_float_align1() {
entry:
- %0 = load float, float* @float_align1, align 1
+ %0 = load float, ptr @float_align1, align 1
ret float %0
}
define float @load_float_align4() {
entry:
- %0 = load float, float* @float_align4, align 4
+ %0 = load float, ptr @float_align4, align 4
ret float %0
}
define i32 @load_i32_align8() {
entry:
- %0 = load i32, i32* @i32_align8, align 8
+ %0 = load i32, ptr @i32_align8, align 8
ret i32 %0
}
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=msa,+fp64 -mattr=nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @load_store_v16i8(<16 x i8>* %a, <16 x i8>* %b) { entry: ret void }
- define void @load_store_v8i16(<8 x i16>* %a, <8 x i16>* %b) { entry: ret void }
- define void @load_store_v4i32(<4 x i32>* %a, <4 x i32>* %b) { entry: ret void }
- define void @load_store_v2i64(<2 x i64>* %a, <2 x i64>* %b) { entry: ret void }
- define void @load_store_v4f32(<4 x float>* %a, <4 x float>* %b) { entry: ret void }
- define void @load_store_v2f64(<2 x double>* %a, <2 x double>* %b) { entry: ret void }
+ define void @load_store_v16i8(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v8i16(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v4i32(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v2i64(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v4f32(ptr %a, ptr %b) { entry: ret void }
+ define void @load_store_v2f64(ptr %a, ptr %b) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @long_chain_ambiguous_i64_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, i64* %a, i64* %b, i64* %c, i64* %result) {
+ define void @long_chain_ambiguous_i64_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load i64, i64* %a
+ %phi1.0 = load i64, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load i64, i64* %b
+ %phi1.1 = load i64, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load i64, i64* %c
+ %phi1.2 = load i64, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store i64 %phi1, i64* %result
+ store i64 %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load i64, i64* %a
+ %phi2.0 = load i64, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load i64, i64* %b
+ %phi2.1 = load i64, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store i64 %phi2, i64* %result
+ store i64 %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4
%sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3
- store i64 %sel_3_1.2, i64* %result
- store i64 %phi3, i64* %result
+ store i64 %sel_3_1.2, ptr %result
+ store i64 %phi3, ptr %result
ret void
}
- define void @long_chain_i64_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, i64* %a, i64* %b, i64* %c, i64* %result) {
+ define void @long_chain_i64_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load i64, i64* %a
+ %phi1.0 = load i64, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load i64, i64* %b
+ %phi1.1 = load i64, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load i64, i64* %c
+ %phi1.2 = load i64, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store i64 %phi1, i64* %result
+ store i64 %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load i64, i64* %a
+ %phi2.0 = load i64, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load i64, i64* %b
+ %phi2.1 = load i64, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store i64 %phi2, i64* %result
+ store i64 %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ 0, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4
%sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3
- store i64 %sel_3_1.2, i64* %result
- store i64 %phi3, i64* %result
+ store i64 %sel_3_1.2, ptr %result
+ store i64 %phi3, ptr %result
ret void
}
- define void @long_chain_ambiguous_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, double* %a, double* %b, double* %c, double* %result) {
+ define void @long_chain_ambiguous_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load double, double* %a
+ %phi1.0 = load double, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load double, double* %b
+ %phi1.1 = load double, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load double, double* %c
+ %phi1.2 = load double, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store double %phi1, double* %result
+ store double %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load double, double* %a
+ %phi2.0 = load double, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load double, double* %b
+ %phi2.1 = load double, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store double %phi2, double* %result
+ store double %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, double %phi3, double %phi4
%sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3
- store double %sel_3_1.2, double* %result
- store double %phi3, double* %result
+ store double %sel_3_1.2, ptr %result
+ store double %phi3, ptr %result
ret void
}
- define void @long_chain_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, double* %a, double* %b, double* %c, double* %result) {
+ define void @long_chain_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load double, double* %a
+ %phi1.0 = load double, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load double, double* %b
+ %phi1.1 = load double, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load double, double* %c
+ %phi1.2 = load double, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store double %phi1, double* %result
+ store double %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load double, double* %a
+ %phi2.0 = load double, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load double, double* %b
+ %phi2.1 = load double, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store double %phi2, double* %result
+ store double %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi double [ %phi2, %b.PHI.2 ], [ 0.000000e+00, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, double %phi3, double %phi4
%sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3
- store double %sel_3_1.2, double* %result
- store double %phi3, double* %result
+ store double %sel_3_1.2, ptr %result
+ store double %phi3, ptr %result
ret void
}
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @long_chain_ambiguous_i64_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, i64* %a, i64* %b, i64* %c, i64* %result) {
+ define void @long_chain_ambiguous_i64_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load i64, i64* %a
+ %phi1.0 = load i64, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load i64, i64* %b
+ %phi1.1 = load i64, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load i64, i64* %c
+ %phi1.2 = load i64, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store i64 %phi1, i64* %result
+ store i64 %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load i64, i64* %a
+ %phi2.0 = load i64, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load i64, i64* %b
+ %phi2.1 = load i64, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store i64 %phi2, i64* %result
+ store i64 %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4
%sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3
- store i64 %sel_3_1.2, i64* %result
- store i64 %phi3, i64* %result
+ store i64 %sel_3_1.2, ptr %result
+ store i64 %phi3, ptr %result
ret void
}
- define void @long_chain_i64_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, i64* %a, i64* %b, i64* %c, i64* %result) {
+ define void @long_chain_i64_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load i64, i64* %a
+ %phi1.0 = load i64, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load i64, i64* %b
+ %phi1.1 = load i64, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load i64, i64* %c
+ %phi1.2 = load i64, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store i64 %phi1, i64* %result
+ store i64 %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load i64, i64* %a
+ %phi2.0 = load i64, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load i64, i64* %b
+ %phi2.1 = load i64, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store i64 %phi2, i64* %result
+ store i64 %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ 0, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4
%sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3
- store i64 %sel_3_1.2, i64* %result
- store i64 %phi3, i64* %result
+ store i64 %sel_3_1.2, ptr %result
+ store i64 %phi3, ptr %result
ret void
}
- define void @long_chain_ambiguous_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, double* %a, double* %b, double* %c, double* %result) {
+ define void @long_chain_ambiguous_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load double, double* %a
+ %phi1.0 = load double, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load double, double* %b
+ %phi1.1 = load double, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load double, double* %c
+ %phi1.2 = load double, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store double %phi1, double* %result
+ store double %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load double, double* %a
+ %phi2.0 = load double, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load double, double* %b
+ %phi2.1 = load double, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store double %phi2, double* %result
+ store double %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, double %phi3, double %phi4
%sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3
- store double %sel_3_1.2, double* %result
- store double %phi3, double* %result
+ store double %sel_3_1.2, ptr %result
+ store double %phi3, ptr %result
ret void
}
- define void @long_chain_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, double* %a, double* %b, double* %c, double* %result) {
+ define void @long_chain_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
entry:
br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
b.PHI.1.0: ; preds = %pre.PHI.1.0
- %phi1.0 = load double, double* %a
+ %phi1.0 = load double, ptr %a
br label %b.PHI.1
b.PHI.1.1: ; preds = %pre.PHI.1
- %phi1.1 = load double, double* %b
+ %phi1.1 = load double, ptr %b
br label %b.PHI.1
b.PHI.1.2: ; preds = %pre.PHI.1.0
- %phi1.2 = load double, double* %c
+ %phi1.2 = load double, ptr %c
br label %b.PHI.1
b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
b.PHI.1.end: ; preds = %b.PHI.1
- store double %phi1, double* %result
+ store double %phi1, ptr %result
ret void
pre.PHI.2: ; preds = %entry
br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
b.PHI.2.0: ; preds = %pre.PHI.2
- %phi2.0 = load double, double* %a
+ %phi2.0 = load double, ptr %a
br label %b.PHI.2
b.PHI.2.1: ; preds = %pre.PHI.2
- %phi2.1 = load double, double* %b
+ %phi2.1 = load double, ptr %b
br label %b.PHI.2
b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
b.PHI.2.end: ; preds = %b.PHI.2
- store double %phi2, double* %result
+ store double %phi2, ptr %result
ret void
b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
%phi4 = phi double [ %phi2, %b.PHI.2 ], [ 0.000000e+00, %b.PHI.1 ]
%sel_1.2 = select i1 %cnd2, double %phi3, double %phi4
%sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3
- store double %sel_3_1.2, double* %result
- store double %phi3, double* %result
+ store double %sel_3_1.2, ptr %result
+ store double %phi3, ptr %result
ret void
}
--- |
define void @mul_i32(i32 %x, i32 %y) {entry: ret void}
- define void @umul_with_overflow(i32 %lhs, i32 %rhs, i32* %pmul, i1* %pcarry_flag) { ret void }
+ define void @umul_with_overflow(i32 %lhs, i32 %rhs, ptr %pmul, ptr %pcarry_flag) { ret void }
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @mul_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @mul_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @mul_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @mul_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @mul_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @mul_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
ret i64 %cond
}
- define void @phi_ambiguous_i64_in_fpr(i1 %cnd, i64* %i64_ptr_a, i64* %i64_ptr_b, i64* %i64_ptr_c) {
+ define void @phi_ambiguous_i64_in_fpr(i1 %cnd, ptr %i64_ptr_a, ptr %i64_ptr_b, ptr %i64_ptr_c) {
entry:
- %0 = load i64, i64* %i64_ptr_a, align 8
- %1 = load i64, i64* %i64_ptr_b, align 8
+ %0 = load i64, ptr %i64_ptr_a, align 8
+ %1 = load i64, ptr %i64_ptr_b, align 8
br i1 %cnd, label %cond.true, label %cond.false
cond.true: ; preds = %entry
cond.end: ; preds = %cond.false, %cond.true
%cond = phi i64 [ %0, %cond.true ], [ %1, %cond.false ]
- store i64 %cond, i64* %i64_ptr_c, align 8
+ store i64 %cond, ptr %i64_ptr_c, align 8
ret void
}
ret float %cond
}
- define void @phi_ambiguous_float_in_gpr(i1 %cnd, float* %f32_ptr_a, float* %f32_ptr_b, float* %f32_ptr_c) {
+ define void @phi_ambiguous_float_in_gpr(i1 %cnd, ptr %f32_ptr_a, ptr %f32_ptr_b, ptr %f32_ptr_c) {
entry:
- %0 = load float, float* %f32_ptr_a, align 4
- %1 = load float, float* %f32_ptr_b, align 4
+ %0 = load float, ptr %f32_ptr_a, align 4
+ %1 = load float, ptr %f32_ptr_b, align 4
br i1 %cnd, label %cond.true, label %cond.false
cond.true: ; preds = %entry
cond.end: ; preds = %cond.false, %cond.true
%cond = phi float [ %0, %cond.true ], [ %1, %cond.false ]
- store float %cond, float* %f32_ptr_c, align 4
+ store float %cond, ptr %f32_ptr_c, align 4
ret void
}
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @ptr_arg_in_regs(i32* %p) {entry: ret void}
- define void @ptr_arg_on_stack(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i32* %p) {entry: ret void}
- define void @ret_ptr(i8* %p) {entry: ret void}
+ define void @ptr_arg_in_regs(ptr %p) {entry: ret void}
+ define void @ptr_arg_on_stack(i32 %x1, i32 %x2, i32 %x3, i32 %x4, ptr %p) {entry: ret void}
+ define void @ret_ptr(ptr %p) {entry: ret void}
...
---
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sdiv_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @sdiv_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @sdiv_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @sdiv_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @srem_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @srem_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @srem_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @srem_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @udiv_v16u8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @udiv_v8u16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @udiv_v4u32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @udiv_v2u64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
-
- define void @urem_v16u8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @urem_v8u16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @urem_v4u32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @urem_v2u64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sdiv_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sdiv_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @srem_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @srem_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @udiv_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @udiv_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
+
+ define void @urem_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @urem_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
define void @select_i32(i32, i32) {entry: ret void}
define void @select_ptr(i32, i32) {entry: ret void}
define void @select_i64() {entry: ret void}
- define void @select_ambiguous_i64_in_fpr(i64* %i64_ptr_a, i64* %i64_ptr_b, i64* %i64_ptr_c) {entry: ret void}
+ define void @select_ambiguous_i64_in_fpr(ptr %i64_ptr_a, ptr %i64_ptr_b, ptr %i64_ptr_c) {entry: ret void}
define void @select_float() {entry: ret void}
- define void @select_ambiguous_float_in_gpr(float* %f32_ptr_a, float* %f32_ptr_b, float* %f32_ptr_c) {entry: ret void}
+ define void @select_ambiguous_float_in_gpr(ptr %f32_ptr_a, ptr %f32_ptr_b, ptr %f32_ptr_c) {entry: ret void}
define void @select_double() {entry: ret void}
...
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @store_i32(i32* %ptr) { entry: ret void }
- define void @store_i64(i64* %ptr) { entry: ret void }
- define void @store_float(float* %ptr) { entry: ret void }
- define void @store_double(double* %ptr) { entry: ret void }
+ define void @store_i32(ptr %ptr) { entry: ret void }
+ define void @store_i64(ptr %ptr) { entry: ret void }
+ define void @store_float(ptr %ptr) { entry: ret void }
+ define void @store_double(ptr %ptr) { entry: ret void }
...
---
define void @store_float_align1(float %a) {
entry:
- store float %a, float* @float_align1, align 1
+ store float %a, ptr @float_align1, align 1
ret void
}
define void @store_float_align4(float %a) {
entry:
- store float %a, float* @float_align4, align 4
+ store float %a, ptr @float_align4, align 4
ret void
}
define void @store_i32_align8(i32 signext %a) {
entry:
- store i32 %a, i32* @i32_align8, align 8
+ store i32 %a, ptr @i32_align8, align 8
ret void
}
# RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
--- |
- define void @sub_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
- define void @sub_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
- define void @sub_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
- define void @sub_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
+ define void @sub_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
+ define void @sub_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @outgoing_gpr(i32* %i32_ptr) {entry: ret void}
- define void @outgoing_fpr(float* %float_ptr) {entry: ret void}
- define void @outgoing_gpr_instr(i32* %i32_ptr1, i32* %i32_ptr2) {entry: ret void}
- define void @outgoing_fpr_instr(float* %float_ptr1, float* %float_ptr2) {entry: ret void}
- define void @incoming_gpr(i32* %a) {entry: ret void}
- define void @incoming_fpr(float* %a) {entry: ret void}
- define void @incoming_i32_instr(i32* %i32_ptr) {entry: ret void}
- define void @incoming_float_instr(float* %float_ptr) {entry: ret void}
+ define void @outgoing_gpr(ptr %i32_ptr) {entry: ret void}
+ define void @outgoing_fpr(ptr %float_ptr) {entry: ret void}
+ define void @outgoing_gpr_instr(ptr %i32_ptr1, ptr %i32_ptr2) {entry: ret void}
+ define void @outgoing_fpr_instr(ptr %float_ptr1, ptr %float_ptr2) {entry: ret void}
+ define void @incoming_gpr(ptr %a) {entry: ret void}
+ define void @incoming_fpr(ptr %a) {entry: ret void}
+ define void @incoming_i32_instr(ptr %i32_ptr) {entry: ret void}
+ define void @incoming_float_instr(ptr %float_ptr) {entry: ret void}
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load_store_i8(i8* %px, i8* %py) {entry: ret void}
- define void @load_store_i16(i16* %px, i16* %py) {entry: ret void}
- define void @load_store_i32(i32* %px, i32* %py) {entry: ret void}
+ define void @load_store_i8(ptr %px, ptr %py) {entry: ret void}
+ define void @load_store_i16(ptr %px, ptr %py) {entry: ret void}
+ define void @load_store_i32(ptr %px, ptr %py) {entry: ret void}
...
---
# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
--- |
- define void @load1_s8_to_zextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_zextLoad2_s32(i16* %px) {entry: ret void}
- define void @load4_s32_to_zextLoad4_s64(i8* %px) {entry: ret void}
- define void @load1_s8_to_sextLoad1_s32(i8* %px) {entry: ret void}
- define void @load2_s16_to_sextLoad2_s32(i16* %px) {entry: ret void}
- define void @load4_s32_to_sextLoad4_s64(i8* %px) {entry: ret void}
+ define void @load1_s8_to_zextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_zextLoad2_s32(ptr %px) {entry: ret void}
+ define void @load4_s32_to_zextLoad4_s64(ptr %px) {entry: ret void}
+ define void @load1_s8_to_sextLoad1_s32(ptr %px) {entry: ret void}
+ define void @load2_s16_to_sextLoad2_s32(ptr %px) {entry: ret void}
+ define void @load4_s32_to_sextLoad4_s64(ptr %px) {entry: ret void}
...
---
entry:
%retval = alloca i32, align 4
%a.addr = alloca i32, align 4
- store i32 %a, i32* %a.addr, align 4
- %0 = load i32, i32* %a.addr, align 4
+ store i32 %a, ptr %a.addr, align 4
+ %0 = load i32, ptr %a.addr, align 4
%cmp = icmp sgt i32 %0, 5
br i1 %cmp, label %if.then, label %if.else
if.then: ; preds = %entry
- %1 = load i32, i32* %a.addr, align 4
- %2 = load i32, i32* %a.addr, align 4
+ %1 = load i32, ptr %a.addr, align 4
+ %2 = load i32, ptr %a.addr, align 4
%add = add nsw i32 %1, %2
- store i32 %add, i32* %retval, align 4
+ store i32 %add, ptr %retval, align 4
br label %return
if.else: ; preds = %entry
- %3 = load i32, i32* %a.addr, align 4
+ %3 = load i32, ptr %a.addr, align 4
%call = call i32 @g(i32 signext %3)
- store i32 %call, i32* %retval, align 4
+ store i32 %call, ptr %retval, align 4
br label %return
return: ; preds = %if.else, %if.then
- %4 = load i32, i32* %retval, align 4
+ %4 = load i32, ptr %retval, align 4
ret i32 %4
}
declare i32 @g(i32 signext)
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**)
+ declare void @llvm.stackprotector(ptr, ptr)
!llvm.ident = !{!0}
--- |
target datalayout = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
target triple = "mips64-unknown-freebsd"
- declare i8* @func_a(i64 zeroext)
- declare i8* @func_b(i64 zeroext)
+ declare ptr @func_a(i64 zeroext)
+ declare ptr @func_b(i64 zeroext)
; Function Attrs: nounwind
- define i8* @test(i64 zeroext %nbytes) local_unnamed_addr #0 {
+ define ptr @test(i64 zeroext %nbytes) local_unnamed_addr #0 {
entry:
%cmp = icmp eq i64 %nbytes, 0
br i1 %cmp, label %if.else, label %if.then
if.then: ; preds = %entry
- %call = tail call i8* @func_a(i64 zeroext %nbytes)
+ %call = tail call ptr @func_a(i64 zeroext %nbytes)
br label %return
if.else: ; preds = %entry
- %call1 = tail call i8* @func_b(i64 zeroext 0)
+ %call1 = tail call ptr @func_b(i64 zeroext 0)
br label %return
return: ; preds = %if.else, %if.then
- %retval.0 = phi i8* [ %call, %if.then ], [ %call1, %if.else ]
- ret i8* %retval.0
+ %retval.0 = phi ptr [ %call, %if.then ], [ %call1, %if.else ]
+ ret ptr %retval.0
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
# CHECK: Bad machine code: invalid instruction when using jump guards!
--- |
- define i32 @fooTail(i32 (i32)* nocapture %f1) {
+ define i32 @fooTail(ptr nocapture %f1) {
entry:
%0 = tail call i32 %f1(i32 14)
ret i32 %0
# CHECK: Bad machine code: invalid instruction when using jump guards!
--- |
- define i32 @fooTail(i32 (i32)* nocapture %f1) {
+ define i32 @fooTail(ptr nocapture %f1) {
entry:
%0 = tail call i32 %f1(i32 14)
ret i32 %0
; Function Attrs: noinline nounwind optnone
define void @_Z3foov() {
entry:
- %0 = load i8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 5), align 1
+ %0 = load i8, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5), align 1
%conv = sext i8 %0 to i32
%sub = sub nsw i32 %conv, 7
%conv1 = trunc i32 %sub to i8
- store i8 %conv1, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 3), align 1
- %1 = load i8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 5), align 1
+ store i8 %conv1, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3), align 1
+ %1 = load i8, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5), align 1
%conv2 = sext i8 %1 to i32
%sub3 = sub nsw i32 %conv2, 7
%conv4 = trunc i32 %sub3 to i8
- store i8 %conv4, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 3), align 1
- %2 = load i16, i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 5), align 2
+ store i8 %conv4, ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3), align 1
+ %2 = load i16, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5), align 2
%conv5 = sext i16 %2 to i32
%sub6 = sub nsw i32 %conv5, 7
%conv7 = trunc i32 %sub6 to i16
- store i16 %conv7, i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 3), align 2
- %3 = load i16, i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 5), align 2
+ store i16 %conv7, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3), align 2
+ %3 = load i16, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5), align 2
%conv8 = sext i16 %3 to i32
%sub9 = sub nsw i32 %conv8, 7
%conv10 = trunc i32 %sub9 to i16
- store i16 %conv10, i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 3), align 2
- %4 = load i32, i32* getelementptr inbounds ([13 x i32], [13 x i32]* @wArray, i32 0, i32 5), align 4
+ store i16 %conv10, ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3), align 2
+ %4 = load i32, ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 5), align 4
%sub11 = sub nsw i32 %4, 7
- store i32 %sub11, i32* getelementptr inbounds ([13 x i32], [13 x i32]* @wArray, i32 0, i32 3), align 4
+ store i32 %sub11, ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 3), align 4
ret void
}
; Function Attrs: noinline nounwind optnone
- define i32 @_Z3barPi(i32* %z) {
+ define i32 @_Z3barPi(ptr %z) {
entry:
- %z.addr = alloca i32*, align 4
- store i32* %z, i32** %z.addr, align 4
- %0 = load i32*, i32** %z.addr, align 4
+ %z.addr = alloca ptr, align 4
+ store ptr %z, ptr %z.addr, align 4
+ %0 = load ptr, ptr %z.addr, align 4
fence seq_cst
- %1 = atomicrmw add i32* %0, i32 42 monotonic
+ %1 = atomicrmw add ptr %0, i32 42 monotonic
fence seq_cst
%2 = add i32 %1, 42
ret i32 %2
bb.0.entry:
%0:gpr32 = LUi target-flags(mips-abs-hi) @bArray
%1:gpr32 = ADDiu killed %0, target-flags(mips-abs-lo) @bArray
- %2:gpr32 = LBuE %1, 5 :: (dereferenceable load (s8) from `i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 5)`)
+ %2:gpr32 = LBuE %1, 5 :: (dereferenceable load (s8) from `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5)`)
%3:gpr32 = ADDiu killed %2, -7
- SBE killed %3, %1, 3 :: (store (s8) into `i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 3)`)
- %4:gpr32 = LBE %1, 5 :: (dereferenceable load (s8) from `i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 5)`)
+ SBE killed %3, %1, 3 :: (store (s8) into `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3)`)
+ %4:gpr32 = LBE %1, 5 :: (dereferenceable load (s8) from `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 5)`)
%5:gpr32 = ADDiu killed %4, -7
- SBE killed %5, %1, 3 :: (store (s8) into `i8* getelementptr inbounds ([13 x i8], [13 x i8]* @bArray, i32 0, i32 3)`)
+ SBE killed %5, %1, 3 :: (store (s8) into `ptr getelementptr inbounds ([13 x i8], ptr @bArray, i32 0, i32 3)`)
%6:gpr32 = LUi target-flags(mips-abs-hi) @hArray
%7:gpr32 = ADDiu killed %6, target-flags(mips-abs-lo) @hArray
- %8:gpr32 = LHuE %7, 10 :: (dereferenceable load (s16) from `i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 5)`)
+ %8:gpr32 = LHuE %7, 10 :: (dereferenceable load (s16) from `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5)`)
%9:gpr32 = ADDiu killed %8, -7
- SHE killed %9, %7, 6 :: (store (s16) into `i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 3)`)
- %10:gpr32 = LHE %7, 10 :: (dereferenceable load (s16) from `i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 5)`)
+ SHE killed %9, %7, 6 :: (store (s16) into `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3)`)
+ %10:gpr32 = LHE %7, 10 :: (dereferenceable load (s16) from `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 5)`)
%11:gpr32 = ADDiu killed %10, -7
- SHE killed %11, %7, 6 :: (store (s16) into `i16* getelementptr inbounds ([13 x i16], [13 x i16]* @hArray, i32 0, i32 3)`)
+ SHE killed %11, %7, 6 :: (store (s16) into `ptr getelementptr inbounds ([13 x i16], ptr @hArray, i32 0, i32 3)`)
%12:gpr32 = LUi target-flags(mips-abs-hi) @wArray
%13:gpr32 = ADDiu killed %12, target-flags(mips-abs-lo) @wArray
- %14:gpr32 = LWE %13, 20 :: (dereferenceable load (s32) from `i32* getelementptr inbounds ([13 x i32], [13 x i32]* @wArray, i32 0, i32 5)`)
+ %14:gpr32 = LWE %13, 20 :: (dereferenceable load (s32) from `ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 5)`)
%15:gpr32 = ADDiu killed %14, -7
- SWE killed %15, %13, 12 :: (store (s32) into `i32* getelementptr inbounds ([13 x i32], [13 x i32]* @wArray, i32 0, i32 3)`)
+ SWE killed %15, %13, 12 :: (store (s32) into `ptr getelementptr inbounds ([13 x i32], ptr @wArray, i32 0, i32 3)`)
RetRA
...
# RUN: %s -o - | FileCheck %s
--- |
- define void @f1(i32* %adr, i32 %val) { ret void }
- define void @f2(i32* %adr, i32 %val) { ret void }
- define void @f3(i32* %adr, i32 %val) { ret void }
- define void @f4(i32* %adr, i32 %val) { ret void }
+ define void @f1(ptr %adr, i32 %val) { ret void }
+ define void @f2(ptr %adr, i32 %val) { ret void }
+ define void @f3(ptr %adr, i32 %val) { ret void }
+ define void @f4(ptr %adr, i32 %val) { ret void }
- declare i32* @f()
+ declare ptr @f()
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**)
+ declare void @llvm.stackprotector(ptr, ptr)
...
---
# RUN: %s -o - | FileCheck %s
--- |
- define void @f1(i32* %adr, i32 %val) { ret void }
- define void @f2(i32* %adr, i32 %val) { ret void }
- define void @f3(i32* %adr, i32 %val) { ret void }
- define void @f4(i32* %adr, i32 %val) { ret void }
+ define void @f1(ptr %adr, i32 %val) { ret void }
+ define void @f2(ptr %adr, i32 %val) { ret void }
+ define void @f3(ptr %adr, i32 %val) { ret void }
+ define void @f4(ptr %adr, i32 %val) { ret void }
- declare i32* @f()
+ declare ptr @f()
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**)
+ declare void @llvm.stackprotector(ptr, ptr)
...
---
# CHECK-LABEL: name: f1
entry:
%call = tail call i32 @_Z1gi(i32 signext %asd)
%add = add nsw i32 %call, %asd
- %0 = load i32, i32* @v, align 4
+ %0 = load i32, ptr @v, align 4
%add1 = add nsw i32 %add, %0
- %.b.i.i = load i1, i1* @__tls_guard, align 1
+ %.b.i.i = load i1, ptr @__tls_guard, align 1
br i1 %.b.i.i, label %entry._ZTW1k.exit_crit_edge, label %init.i.i
entry._ZTW1k.exit_crit_edge:
- %.pre = load i32, i32* @k, align 4
+ %.pre = load i32, ptr @k, align 4
br label %_ZTW1k.exit
init.i.i:
- store i1 true, i1* @__tls_guard, align 1
+ store i1 true, ptr @__tls_guard, align 1
%call.i.i.i = tail call i32 @_Z1gi(i32 signext 3)
- store i32 %call.i.i.i, i32* @k, align 4
+ store i32 %call.i.i.i, ptr @k, align 4
br label %_ZTW1k.exit
_ZTW1k.exit:
%1 = phi i32 [ %.pre, %entry._ZTW1k.exit_crit_edge ], [ %call.i.i.i, %init.i.i ]
%add2 = add nsw i32 %add1, %1
- br i1 icmp ne (void ()* @_ZTH1j, void ()* null), label %2, label %_ZTW1j.exit
+ br i1 icmp ne (ptr @_ZTH1j, ptr null), label %2, label %_ZTW1j.exit
; <label>:2:
tail call void @_ZTH1j()
br label %_ZTW1j.exit
_ZTW1j.exit:
- %3 = load i32, i32* @j, align 4
+ %3 = load i32, ptr @j, align 4
%add3 = add nsw i32 %add2, %3
ret i32 %add3
}
entry:
%call = tail call i32 @_Z1gi(i32 signext %asd)
%add = add nsw i32 %call, %asd
- %0 = load i32, i32* @v, align 4
+ %0 = load i32, ptr @v, align 4
%add1 = add nsw i32 %add, %0
- %1 = load i32, i32* @j, align 4
+ %1 = load i32, ptr @j, align 4
%add2 = add nsw i32 %add1, %1
ret i32 %add2
}
entry:
%call = tail call i32 @_Z1gi(i32 signext %asd)
%add = add nsw i32 %call, %asd
- %0 = load i32, i32* @v, align 4
+ %0 = load i32, ptr @v, align 4
%add1 = add nsw i32 %add, %0
- %1 = load i32, i32* @j, align 4
+ %1 = load i32, ptr @j, align 4
%add2 = add nsw i32 %add1, %1
ret i32 %add2
}
entry:
%call = tail call i32 @_Z1gi(i32 signext %asd)
%add = add nsw i32 %call, %asd
- %0 = load i32, i32* @v, align 4
+ %0 = load i32, ptr @v, align 4
%add1 = add nsw i32 %add, %0
- %.b.i.i = load i1, i1* @__tls_guard, align 1
+ %.b.i.i = load i1, ptr @__tls_guard, align 1
br i1 %.b.i.i, label %entry._ZTW1k.exit_crit_edge, label %init.i.i
entry._ZTW1k.exit_crit_edge:
- %.pre = load i32, i32* @k, align 4
+ %.pre = load i32, ptr @k, align 4
br label %_ZTW1k.exit
init.i.i:
- store i1 true, i1* @__tls_guard, align 1
+ store i1 true, ptr @__tls_guard, align 1
%call.i.i.i = tail call i32 @_Z1gi(i32 signext 3)
- store i32 %call.i.i.i, i32* @k, align 4
+ store i32 %call.i.i.i, ptr @k, align 4
br label %_ZTW1k.exit
_ZTW1k.exit:
%1 = phi i32 [ %.pre, %entry._ZTW1k.exit_crit_edge ], [ %call.i.i.i, %init.i.i ]
%add2 = add nsw i32 %add1, %1
- br i1 icmp ne (void ()* @_ZTH1j, void ()* null), label %2, label %_ZTW1j.exit
+ br i1 icmp ne (ptr @_ZTH1j, ptr null), label %2, label %_ZTW1j.exit
; <label>:2:
tail call void @_ZTH1j()
br label %_ZTW1j.exit
_ZTW1j.exit:
- %3 = load i32, i32* @j, align 4
+ %3 = load i32, ptr @j, align 4
%add3 = add nsw i32 %add2, %3
ret i32 %add3
}
# Test that MIPS unaligned load/store instructions can be mapped to their
# corresponding microMIPS instructions.
--- |
- define void @g(i32* %a, i32* %b) {
+ define void @g(ptr %a, ptr %b) {
entry:
- %0 = load i32, i32* %a, align 1
- store i32 %0, i32* %b, align 1
+ %0 = load i32, ptr %a, align 1
+ store i32 %0, ptr %b, align 1
ret void
}
- define void @g2(i32* %a, i32* %b) {
+ define void @g2(ptr %a, ptr %b) {
entry:
- %0 = load i32, i32* %a, align 1
- store i32 %0, i32* %b, align 1
+ %0 = load i32, ptr %a, align 1
+ store i32 %0, ptr %b, align 1
ret void
}
...
--- |
target datalayout = "e-m:e-i64:64-n32:64"
- define dso_local void @test(void (i32)* nocapture %fp, i32 signext %Arg, i32 signext %Len, i32* nocapture %Ptr) {
+ define dso_local void @test(ptr nocapture %fp, i32 signext %Arg, i32 signext %Len, ptr nocapture %Ptr) {
entry:
tail call void asm sideeffect "#NOTHING", "~{r2}"()
%cmp6 = icmp sgt i32 %Len, 0
for.body: ; preds = %for.inc, %for.body.lr.ph
%i.07 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ]
- %0 = load i32, i32* %Ptr, align 4
+ %0 = load i32, ptr %Ptr, align 4
%1 = add i32 %i.07, %0
- store i32 %1, i32* %Ptr, align 4
+ store i32 %1, ptr %Ptr, align 4
br i1 %cmp1, label %if.then, label %for.inc
if.then: ; preds = %for.body
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
target triple = "powerpc64le-unknown-linux-gnu"
; Function Attrs: nounwind
- define dso_local void @test(void (i32)* nocapture %fp, i32 signext %Arg, i32 signext %Len, i32* nocapture %Ptr) local_unnamed_addr #0 !prof !29 !section_prefix !30 {
+ define dso_local void @test(ptr nocapture %fp, i32 signext %Arg, i32 signext %Len, ptr nocapture %Ptr) local_unnamed_addr #0 !prof !29 !section_prefix !30 {
entry:
tail call void asm sideeffect "#NOTHING", "~{r2}"() #1, !srcloc !31
%cmp6 = icmp sgt i32 %Len, 0
for.body: ; preds = %for.inc, %for.body.lr.ph
%i.07 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ]
- %0 = load i32, i32* %Ptr, align 4, !tbaa !33
+ %0 = load i32, ptr %Ptr, align 4, !tbaa !33
%1 = add i32 %i.07, %0
- store i32 %1, i32* %Ptr, align 4, !tbaa !33
+ store i32 %1, ptr %Ptr, align 4, !tbaa !33
br i1 %cmp1, label %if.then, label %for.inc, !prof !37
if.then: ; preds = %for.body
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="ppc64le" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+vsx,-power9-vector" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind }
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="ppc64le" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+vsx,-power9-vector" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind }
@tasklist_lock = external global %struct.rwlock_t.0.22.58.68.242.244, align 1
; Function Attrs: nounwind
- define void @mm_update_next_owner(i8** %p1, i32* %p2) #0 {
+ define void @mm_update_next_owner(ptr %p1, ptr %p2) #0 {
entry:
- %0 = load i8*, i8** %p1, align 8
+ %0 = load ptr, ptr %p1, align 8
br i1 undef, label %do.body.92, label %for.body.21
for.body.21: ; preds = %entry
unreachable
do.body.92: ; preds = %entry
- %usage = getelementptr inbounds i8, i8* %0, i64 -48
- %counter.i = bitcast i8* %usage to i32*
- %call95 = tail call signext i32 bitcast (i32 (...)* @__raw_read_unlock to i32 (%struct.rwlock_t.0.22.58.68.242.244*)*)(%struct.rwlock_t.0.22.58.68.242.244* nonnull @tasklist_lock) #1
- store volatile i32 0, i32* %p2, align 4
+ %usage = getelementptr inbounds i8, ptr %0, i64 -48
+ %call95 = tail call signext i32 @__raw_read_unlock(ptr nonnull @tasklist_lock) #1
+ store volatile i32 0, ptr %p2, align 4
tail call void asm sideeffect "#compiler barrier", "~{memory}"() #1
- %1 = tail call i32 asm sideeffect "\0Alwsync \0A1:\09lwarx\09$0,0,$1\09\09# atomic_dec_return\0A\09addic\09$0,$0,-1\0A\09stwcx.\09$0,0,$1\0A\09bne-\091b\0Async \0A", "=&r,r,~{cc},~{xer},~{memory}"(i32* %counter.i) #1
+ %1 = tail call i32 asm sideeffect "\0Alwsync \0A1:\09lwarx\09$0,0,$1\09\09# atomic_dec_return\0A\09addic\09$0,$0,-1\0A\09stwcx.\09$0,0,$1\0A\09bne-\091b\0Async \0A", "=&r,r,~{cc},~{xer},~{memory}"(ptr %usage) #1
%cmp.i = icmp eq i32 %1, 0
br i1 %cmp.i, label %if.then.i, label %put_task_struct.exit
; Function Attrs: nounwind
define void @test1() #0 {
entry:
- store i1 true, i1* @x, align 1
- store i32 20, i32* @y, align 4
+ store i1 true, ptr @x, align 1
+ store i32 20, ptr @y, align 4
ret void
}
source_filename = "test.ll"
target datalayout = "e-m:e-i64:64-n32:64"
- @_ZTIl = external constant i8*
- @_ZTIi = external constant i8*
- @_ZTIc = external constant i8*
+ @_ZTIl = external constant ptr
+ @_ZTIi = external constant ptr
+ @_ZTIc = external constant ptr
define dso_local void @_Z6calleev() local_unnamed_addr {
entry:
declare void @__cxa_rethrow() local_unnamed_addr
- define dso_local void @_Z14TestSinglePredv() local_unnamed_addr personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+ define dso_local void @_Z14TestSinglePredv() local_unnamed_addr personality ptr @__gxx_personality_v0 {
entry:
br label %for.body
unreachable
lpad: ; preds = %for.body
- %0 = landingpad { i8*, i32 }
- catch i8* bitcast (i8** @_ZTIl to i8*)
- catch i8* bitcast (i8** @_ZTIi to i8*)
- catch i8* null
- %1 = extractvalue { i8*, i32 } %0, 0
- %2 = extractvalue { i8*, i32 } %0, 1
- %3 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIl to i8*))
+ %0 = landingpad { ptr, i32 }
+ catch ptr @_ZTIl
+ catch ptr @_ZTIi
+ catch ptr null
+ %1 = extractvalue { ptr, i32 } %0, 0
+ %2 = extractvalue { ptr, i32 } %0, 1
+ %3 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIl)
%matches = icmp eq i32 %2, %3
br i1 %matches, label %catch4, label %catch.fallthrough
catch4: ; preds = %lpad
- %4 = tail call i8* @__cxa_begin_catch(i8* %1)
+ %4 = tail call ptr @__cxa_begin_catch(ptr %1)
invoke void @__cxa_rethrow()
to label %unreachable unwind label %lpad6
catch.fallthrough: ; preds = %lpad
- %5 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*))
+ %5 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi)
%matches1 = icmp eq i32 %2, %5
- %6 = tail call i8* @__cxa_begin_catch(i8* %1)
+ %6 = tail call ptr @__cxa_begin_catch(ptr %1)
br i1 %matches1, label %catch2, label %catch
catch2: ; preds = %catch.fallthrough
br label %for.inc
lpad6: ; preds = %catch4
- %7 = landingpad { i8*, i32 }
+ %7 = landingpad { ptr, i32 }
cleanup
- catch i8* bitcast (i8** @_ZTIc to i8*)
- %8 = extractvalue { i8*, i32 } %7, 1
- %9 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIc to i8*))
+ catch ptr @_ZTIc
+ %8 = extractvalue { ptr, i32 } %7, 1
+ %9 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIc)
%matches9 = icmp eq i32 %8, %9
br i1 %matches9, label %catch10, label %ehcleanup
catch10: ; preds = %lpad6
- %10 = extractvalue { i8*, i32 } %7, 0
- %11 = tail call i8* @__cxa_begin_catch(i8* %10)
+ %10 = extractvalue { ptr, i32 } %7, 0
+ %11 = tail call ptr @__cxa_begin_catch(ptr %10)
tail call void @__cxa_end_catch()
tail call void @__cxa_end_catch()
br label %for.inc
ehcleanup: ; preds = %lpad6
tail call void @__cxa_end_catch()
- %exn.obj = extractvalue { i8*, i32 } %7, 0
- call void @_Unwind_Resume(i8* %exn.obj)
+ %exn.obj = extractvalue { ptr, i32 } %7, 0
+ call void @_Unwind_Resume(ptr %exn.obj)
unreachable
unreachable: ; preds = %catch4
declare i32 @__gxx_personality_v0(...)
; Function Attrs: nounwind readnone
- declare i32 @llvm.eh.typeid.for(i8*) #0
+ declare i32 @llvm.eh.typeid.for(ptr) #0
- declare i8* @__cxa_begin_catch(i8*) local_unnamed_addr
+ declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr
declare void @__cxa_end_catch() local_unnamed_addr
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
- declare void @_Unwind_Resume(i8*)
+ declare void @_Unwind_Resume(ptr)
attributes #0 = { nounwind readnone }
attributes #1 = { nounwind }
define dso_local void @test() local_unnamed_addr #0 {
test_entry:
- %_val_domain_ = load i32, i32* undef, align 4
+ %_val_domain_ = load i32, ptr undef, align 4
%_conv765 = sext i32 %_val_domain_ to i64
br i1 undef, label %_label_42, label %_loop_40_loopHeader_
_loop_40_loopHeader_: ; preds = %test_entry
- %_val_flags_1020 = load i32, i32* undef, align 4
+ %_val_flags_1020 = load i32, ptr undef, align 4
%0 = and i32 %_val_flags_1020, 1
%_cond_conv_1022.not = icmp eq i32 %0, 0
%1 = sub i64 1, %_conv765
_label_42.loopexit: ; preds = %_loop_44_do_
%3 = trunc i64 %lsr.iv to i32
- store i32 %3, i32* undef, align 4
+ store i32 %3, ptr undef, align 4
unreachable
_label_42: ; preds = %test_entry
successors: %bb.7(0x40000000), %bb.1(0x40000000)
%5:g8rc_and_g8rc_nox0 = IMPLICIT_DEF
- %0:g8rc = LWA 0, killed %5 :: (load (s32) from `i32* undef`)
+ %0:g8rc = LWA 0, killed %5 :: (load (s32) from `ptr undef`)
%6:crbitrc = IMPLICIT_DEF
BC killed %6, %bb.7
B %bb.1
successors: %bb.3(0x80000000)
%9:g8rc_and_g8rc_nox0 = IMPLICIT_DEF
- %8:gprc = LWZ 0, %9 :: (load (s32) from `i32* undef`)
+ %8:gprc = LWZ 0, %9 :: (load (s32) from `ptr undef`)
%15:gprc = ANDI_rec %8, 1, implicit-def $cr0
%1:crbitrc = COPY $cr0eq
%10:g8rc_and_g8rc_nox0 = SUBFIC8 %0, 1, implicit-def dead $carry
successors:
%14:g8rc_and_g8rc_nox0 = IMPLICIT_DEF
- STW8 %4, 0, killed %14 :: (store (s32) into `i32* undef`)
+ STW8 %4, 0, killed %14 :: (store (s32) into `ptr undef`)
bb.7._label_42:
--- |
; Function Attrs: noreturn nounwind
- define signext i32 @zext_free(i8** nocapture dereferenceable(8) %p) {
+ define signext i32 @zext_free(ptr nocapture dereferenceable(8) %p) {
entry:
- %.pre = load i8*, i8** %p, align 8
+ %.pre = load ptr, ptr %p, align 8
br label %loop
loop: ; preds = %loop, %if.then3, %entry
- %0 = phi i8* [ %.pre, %entry ], [ %incdec.ptr4, %if.then3 ], [ %incdec.ptr, %loop ]
- %1 = load i8, i8* %0, align 1
+ %0 = phi ptr [ %.pre, %entry ], [ %incdec.ptr4, %if.then3 ], [ %incdec.ptr, %loop ]
+ %1 = load i8, ptr %0, align 1
%tobool = icmp eq i8 %1, 0
- %incdec.ptr = getelementptr inbounds i8, i8* %0, i64 1
- store i8* %incdec.ptr, i8** %p, align 8
- %2 = load i8, i8* %incdec.ptr, align 1
+ %incdec.ptr = getelementptr inbounds i8, ptr %0, i64 1
+ store ptr %incdec.ptr, ptr %p, align 8
+ %2 = load i8, ptr %incdec.ptr, align 1
%tobool2 = icmp ne i8 %2, 0
%or.cond = and i1 %tobool, %tobool2
br i1 %or.cond, label %if.then3, label %loop
if.then3: ; preds = %loop
- %incdec.ptr4 = getelementptr inbounds i8, i8* %0, i64 2
- store i8* %incdec.ptr4, i8** %p, align 8
+ %incdec.ptr4 = getelementptr inbounds i8, ptr %0, i64 2
+ store ptr %incdec.ptr4, ptr %p, align 8
br label %loop
}
ret float %cond
}
- define signext i32 @select-i1-vs-i1(i8** nocapture dereferenceable(8) %p) #0 {
+ define signext i32 @select-i1-vs-i1(ptr nocapture dereferenceable(8) %p) #0 {
entry:
- %.pre = load i8*, i8** %p, align 8
+ %.pre = load ptr, ptr %p, align 8
br label %loop
loop: ; preds = %loop, %if.then3, %entry
- %0 = phi i8* [ %.pre, %entry ], [ %incdec.ptr4, %if.then3 ], [ %incdec.ptr, %loop ]
- %1 = load i8, i8* %0, align 1
+ %0 = phi ptr [ %.pre, %entry ], [ %incdec.ptr4, %if.then3 ], [ %incdec.ptr, %loop ]
+ %1 = load i8, ptr %0, align 1
%tobool = icmp eq i8 %1, 0
- %incdec.ptr = getelementptr inbounds i8, i8* %0, i64 1
- store i8* %incdec.ptr, i8** %p, align 8
- %2 = load i8, i8* %incdec.ptr, align 1
+ %incdec.ptr = getelementptr inbounds i8, ptr %0, i64 1
+ store ptr %incdec.ptr, ptr %p, align 8
+ %2 = load i8, ptr %incdec.ptr, align 1
%tobool2 = icmp ne i8 %2, 0
%or.cond = and i1 %tobool, %tobool2
br i1 %or.cond, label %if.then3, label %loop
if.then3: ; preds = %loop
- %incdec.ptr4 = getelementptr inbounds i8, i8* %0, i64 2
- store i8* %incdec.ptr4, i8** %p, align 8
+ %incdec.ptr4 = getelementptr inbounds i8, ptr %0, i64 2
+ store ptr %incdec.ptr4, ptr %p, align 8
br label %loop
}
target triple = "powerpc64-unknown-linux-gnu"
@d = global i32 15, align 4
- @b = global i32* @d, align 8
+ @b = global ptr @d, align 8
@a = common global i32 0, align 4
; Function Attrs: nounwind
define signext i32 @main() #0 {
entry:
- %0 = load i32*, i32** @b, align 8
- %1 = load i32, i32* @a, align 4
+ %0 = load ptr, ptr @b, align 8
+ %1 = load i32, ptr @a, align 4
%lnot = icmp eq i32 %1, 0
%lnot.ext = zext i1 %lnot to i32
%shr.i = lshr i32 2072, %lnot.ext
%call.lobit = lshr i32 %shr.i, 7
%2 = and i32 %call.lobit, 1
- %3 = load i32, i32* %0, align 4
+ %3 = load i32, ptr %0, align 4
%or = or i32 %2, %3
- store i32 %or, i32* %0, align 4
- %4 = load i32, i32* @a, align 4
+ store i32 %or, ptr %0, align 4
+ %4 = load i32, ptr @a, align 4
%lnot.1 = icmp eq i32 %4, 0
%lnot.ext.1 = zext i1 %lnot.1 to i32
%shr.i.1 = lshr i32 2072, %lnot.ext.1
%call.lobit.1 = lshr i32 %shr.i.1, 7
%5 = and i32 %call.lobit.1, 1
%or.1 = or i32 %5, %or
- store i32 %or.1, i32* %0, align 4
+ store i32 %or.1, ptr %0, align 4
ret i32 %or.1
}
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { nounwind readnone }
attributes #1 = { nounwind }
# with an unprimed accumulator PHI node cycle.
--- |
- define dso_local void @phiCopy(i32 signext %i, <16 x i8> %vc, <512 x i1>* nocapture %ptr) {
+ define dso_local void @phiCopy(i32 signext %i, <16 x i8> %vc, ptr nocapture %ptr) {
entry:
%0 = tail call <512 x i1> @llvm.ppc.mma.xxsetaccz()
%tobool.not = icmp eq i32 %i, 0
if.end:
%vq.0 = phi <512 x i1> [ %1, %if.then ], [ %0, %entry ]
- store <512 x i1> %vq.0, <512 x i1>* %ptr, align 64
+ store <512 x i1> %vq.0, ptr %ptr, align 64
ret void
}
declare <512 x i1> @llvm.ppc.mma.xvf32gerpp(<512 x i1>, <16 x i8>, <16 x i8>)
- define dso_local void @phiCopyUndef(i32 signext %i, <16 x i8> %vc, <512 x i1>* nocapture %ptr) {
+ define dso_local void @phiCopyUndef(i32 signext %i, <16 x i8> %vc, ptr nocapture %ptr) {
entry:
%tobool.not = icmp eq i32 %i, 0
br i1 %tobool.not, label %if.end, label %if.then
if.end:
%vq.0 = phi <512 x i1> [ %0, %if.then ], [ undef, %entry ]
- store <512 x i1> %vq.0, <512 x i1>* %ptr, align 64
+ store <512 x i1> %vq.0, ptr %ptr, align 64
ret void
}
- define dso_local void @phiPhis(i32 signext %i, <16 x i8> %vc, <512 x i1>* nocapture %ptr) {
+ define dso_local void @phiPhis(i32 signext %i, <16 x i8> %vc, ptr nocapture %ptr) {
entry:
%cmp6 = icmp sgt i32 %i, 0
br i1 %cmp6, label %for.body.preheader, label %for.cond.cleanup
for.cond.cleanup:
%vq.0.lcssa = phi <512 x i1> [ undef, %entry ], [ %vq.07.unr, %for.cond.cleanup.loopexit.unr-lcssa ], [ %9, %for.body.epil ]
- %add.ptr = getelementptr inbounds <512 x i1>, <512 x i1>* %ptr, i64 1
- store <512 x i1> %vq.0.lcssa, <512 x i1>* %add.ptr, align 64
+ %add.ptr = getelementptr inbounds <512 x i1>, ptr %ptr, i64 1
+ store <512 x i1> %vq.0.lcssa, ptr %add.ptr, align 64
ret void
for.body:
br i1 %19, label %for.body, label %for.cond.cleanup.loopexit.unr-lcssa
}
- define dso_local void @phiCycle(i32 signext %i, <16 x i8> %vc, <512 x i1>* nocapture %ptr) {
+ define dso_local void @phiCycle(i32 signext %i, <16 x i8> %vc, ptr nocapture %ptr) {
entry:
%cmp6 = icmp sgt i32 %i, 0
br i1 %cmp6, label %for.body.preheader, label %for.cond.cleanup
for.cond.cleanup:
%vq.0.lcssa = phi <512 x i1> [ undef, %entry ], [ %vq.07.unr, %for.cond.cleanup.loopexit.unr-lcssa ]
- %add.ptr = getelementptr inbounds <512 x i1>, <512 x i1>* %ptr, i64 1
- store <512 x i1> %vq.0.lcssa, <512 x i1>* %add.ptr, align 64
+ %add.ptr = getelementptr inbounds <512 x i1>, ptr %ptr, i64 1
+ store <512 x i1> %vq.0.lcssa, ptr %add.ptr, align 64
ret void
for.body:
# RUN: -run-pass=livevars,phi-node-elimination | FileCheck %s
--- |
- define void @phi_eliminate(i32 %0, i32 %1, i8* %2) {
- %scevgep3 = getelementptr i8, i8* %2, i64 undef
+ define void @phi_eliminate(i32 %0, i32 %1, ptr %2) {
+ %scevgep3 = getelementptr i8, ptr %2, i64 undef
call void @llvm.set.loop.iterations.i64(i64 undef)
br label %4
4: ; preds = %4, %3
%5 = phi i32 [ %8, %4 ], [ %0, %3 ]
- %6 = phi i8* [ %scevgep3, %3 ], [ %7, %4 ]
- %7 = getelementptr i8, i8* %6, i64 -1
+ %6 = phi ptr [ %scevgep3, %3 ], [ %7, %4 ]
+ %7 = getelementptr i8, ptr %6, i64 -1
%8 = sdiv i32 %5, %1
%9 = mul nsw i32 %8, %1
%10 = sub nsw i32 %5, %9
%12 = trunc i32 %10 to i8
%13 = select i1 %11, i8 48, i8 55
%14 = add i8 %13, %12
- store i8 %14, i8* %7, align 1
+ store i8 %14, ptr %7, align 1
%15 = call i1 @llvm.loop.decrement.i64(i64 1)
br i1 %15, label %4, label %16
declare i1 @llvm.loop.decrement.i64(i64)
- declare void @llvm.stackprotector(i8*, i8**)
+ declare void @llvm.stackprotector(ptr, ptr)
...
---
name: phi_eliminate
@b = common dso_local local_unnamed_addr global i32 0, align 4
@d = common dso_local local_unnamed_addr global i32 0, align 4
- @e = common dso_local local_unnamed_addr global i32* null, align 8
+ @e = common dso_local local_unnamed_addr global ptr null, align 8
@c = common dso_local local_unnamed_addr global i32 0, align 4
@a = common dso_local local_unnamed_addr global [1 x i32] zeroinitializer, align 4
; Function Attrs: norecurse nounwind
define dso_local signext i32 @copycrunset() local_unnamed_addr #0 {
entry:
- %0 = load i32, i32* @b, align 4
+ %0 = load i32, ptr @b, align 4
%tobool3 = icmp eq i32 %0, 0
br i1 %tobool3, label %while.end, label %while.body.preheader
while.body.preheader: ; preds = %entry
- %.pre = load i32, i32* @d, align 4
+ %.pre = load i32, ptr @d, align 4
%tobool1 = icmp eq i32 %.pre, 0
br label %while.body
br i1 %tobool1, label %land.end, label %land.rhs
land.rhs: ; preds = %while.body
- %1 = load i32*, i32** @e, align 8
- %2 = load i32, i32* %1, align 4
+ %1 = load ptr, ptr @e, align 8
+ %2 = load i32, ptr %1, align 4
%idxprom = sext i32 %2 to i64
- %arrayidx = getelementptr inbounds [1 x i32], [1 x i32]* @a, i64 0, i64 %idxprom
- %3 = load i32, i32* %arrayidx, align 4
+ %arrayidx = getelementptr inbounds [1 x i32], ptr @a, i64 0, i64 %idxprom
+ %3 = load i32, ptr %arrayidx, align 4
%tobool2 = icmp ne i32 %3, 0
br label %land.end
land.end: ; preds = %land.rhs, %while.body
%4 = phi i1 [ false, %while.body ], [ %tobool2, %land.rhs ]
%land.ext = zext i1 %4 to i32
- store i32 %land.ext, i32* @c, align 4
+ store i32 %land.ext, ptr @c, align 4
br label %while.body
while.end: ; preds = %entry
target datalayout = "e-m:e-i64:64-n32:64"
; Function Attrs: nounwind
- define dso_local signext i32 @b(i32 signext %a, i32* nocapture %b) local_unnamed_addr #0 {
+ define dso_local signext i32 @b(i32 signext %a, ptr nocapture %b) local_unnamed_addr #0 {
entry:
%call = tail call signext i32 @g(i32 signext %a)
- store i32 %call, i32* %b, align 4
+ store i32 %call, ptr %b, align 4
%call1 = tail call signext i32 @g(i32 signext %a)
ret i32 %call1
}
declare signext i32 @g(i32 signext) local_unnamed_addr #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
--- |
target datalayout = "e-m:e-i64:64-n32:64"
- define i64 @foo(i8* %p, i8* %q) {
+ define i64 @foo(ptr %p, ptr %q) {
entry:
br label %while.cond6.i
while.cond6.i:
%n.0 = phi i64 [ 0, %entry ], [ %n.1, %while.cond6.i ]
%conv = and i64 %n.0, 4294967295
- %arrayidx = getelementptr inbounds i8, i8* %p, i64 %conv
- %0 = load i8, i8* %arrayidx, align 1
- %arrayidx4 = getelementptr inbounds i8, i8* %q, i64 %conv
- %1 = load i8, i8* %arrayidx4, align 1
+ %arrayidx = getelementptr inbounds i8, ptr %p, i64 %conv
+ %0 = load i8, ptr %arrayidx, align 1
+ %arrayidx4 = getelementptr inbounds i8, ptr %q, i64 %conv
+ %1 = load i8, ptr %arrayidx4, align 1
%cmp = icmp eq i8 %0, %1
%n.1 = add i64 %conv, 1
br i1 %cmp, label %while.cond6.i, label %while.end
--- |
target datalayout = "E-m:e-i64:64-n32:64"
target triple = "powerpc64le-unknown-linux-gnu"
- define i8* @func(i8* %a) {
+ define ptr @func(ptr %a) {
entry:
- ret i8* %a
+ ret ptr %a
}
...
declare i1 @llvm.loop.decrement.i64(i64) #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { noduplicate nounwind }
attributes #1 = { nounwind }
define i32 @tls_func() local_unnamed_addr {
entry:
- %0 = load i32, i32* @tls_var
+ %0 = load i32, ptr @tls_var
ret i32 %0
}
define i32 @tls_func() local_unnamed_addr {
entry:
- %0 = load i32, i32* @tls_var
+ %0 = load i32, ptr @tls_var
ret i32 %0
}
# RUN: -verify-machineinstrs -o /dev/null 2>&1
--- |
- define void @VerifyTwoAddressCrash(i16 %div.0.i.i.i.i, i32 %L_num.0.i.i.i.i, i32 %tmp1.i.i206.i.i, i16* %P) {
+ define void @VerifyTwoAddressCrash(i16 %div.0.i.i.i.i, i32 %L_num.0.i.i.i.i, i32 %tmp1.i.i206.i.i, ptr %P) {
%X = shl i16 %div.0.i.i.i.i, 1
%tmp28.i.i.i.i = shl i32 %L_num.0.i.i.i.i, 1
%tmp31.i.i.i.i = icmp slt i32 %tmp28.i.i.i.i, %tmp1.i.i206.i.i
%tmp31.i.i.i.i.upgrd.1 = zext i1 %tmp31.i.i.i.i to i16
%tmp371.i.i.i.i1 = or i16 %tmp31.i.i.i.i.upgrd.1, %X
%div.0.be.i.i.i.i = xor i16 %tmp371.i.i.i.i1, 1
- store i16 %div.0.be.i.i.i.i, i16* %P, align 2
+ store i16 %div.0.be.i.i.i.i, ptr %P, align 2
ret void
}
@arm_cmplx_conj_f32_mve.cmplx_conj_sign = internal constant [4 x float] [float 1.000000e+00, float -1.000000e+00, float 1.000000e+00, float -1.000000e+00], align 4
; Function Attrs: nounwind
- define hidden void @arm_cmplx_conj_f32_mve(float* %pSrc, float* %pDst, i32 %blockSize) local_unnamed_addr #0 {
+ define hidden void @arm_cmplx_conj_f32_mve(ptr %pSrc, ptr %pDst, i32 %blockSize) local_unnamed_addr #0 {
entry:
ret void
}
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define i32 @do_copy(i32 %n, i32* nocapture %p, i32* nocapture readonly %q) {
+ define i32 @do_copy(i32 %n, ptr nocapture %p, ptr nocapture readonly %q) {
entry:
- %scevgep = getelementptr i32, i32* %q, i32 -1
- %scevgep3 = getelementptr i32, i32* %p, i32 -1
+ %scevgep = getelementptr i32, ptr %q, i32 -1
+ %scevgep3 = getelementptr i32, ptr %p, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %n)
br label %while.body
while.body: ; preds = %while.body, %entry
- %lsr.iv4 = phi i32* [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
- %lsr.iv = phi i32* [ %scevgep1, %while.body ], [ %scevgep, %entry ]
+ %lsr.iv4 = phi ptr [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
+ %lsr.iv = phi ptr [ %scevgep1, %while.body ], [ %scevgep, %entry ]
%0 = phi i32 [ %start, %entry ], [ %2, %while.body ]
- %scevgep6 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep2 = getelementptr i32, i32* %lsr.iv4, i32 1
- %1 = load i32, i32* %scevgep6, align 4
- store i32 %1, i32* %scevgep2, align 4
- %scevgep1 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep5 = getelementptr i32, i32* %lsr.iv4, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep2 = getelementptr i32, ptr %lsr.iv4, i32 1
+ %1 = load i32, ptr %scevgep6, align 4
+ store i32 %1, ptr %scevgep2, align 4
+ %scevgep1 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i32, ptr %lsr.iv4, i32 1
%2 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%3 = icmp ne i32 %2, 0
br i1 %3, label %while.body, label %while.end
# CHECK-NOT: LETP
--- |
- define arm_aapcs_vfpcc void @test_ctlz_i8(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c, i32 %elts, i32 %iters) #0 {
+ define arm_aapcs_vfpcc void @test_ctlz_i8(ptr %a, ptr %b, ptr %c, i32 %elts, i32 %iters) #0 {
entry:
%cmp = icmp slt i32 %elts, 1
br i1 %cmp, label %exit, label %loop.ph
loop.body: ; preds = %loop.body, %loop.ph
%lsr.iv = phi i32 [ %lsr.iv.next, %loop.body ], [ %start, %loop.ph ]
%count = phi i32 [ %elts, %loop.ph ], [ %elts.rem, %loop.body ]
- %addr.a = phi <8 x i16>* [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
- %addr.b = phi <8 x i16>* [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
- %addr.c = phi <8 x i16>* [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
+ %addr.a = phi ptr [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
+ %addr.b = phi ptr [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
+ %addr.c = phi ptr [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
%pred = call <8 x i1> @llvm.arm.mve.vctp16(i32 %count)
%elts.rem = sub i32 %count, 8
- %masked.load.a = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %addr.a, i32 2, <8 x i1> %pred, <8 x i16> undef)
- %masked.load.b = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %addr.b, i32 2, <8 x i1> %pred, <8 x i16> undef)
+ %masked.load.a = call <8 x i16> @llvm.masked.load.v8i16.p0(ptr %addr.a, i32 2, <8 x i1> %pred, <8 x i16> undef)
+ %masked.load.b = call <8 x i16> @llvm.masked.load.v8i16.p0(ptr %addr.b, i32 2, <8 x i1> %pred, <8 x i16> undef)
%bitcast.a = bitcast <8 x i16> %masked.load.a to <16 x i8>
%ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %bitcast.a, i1 false)
%shrn = call <16 x i8> @llvm.arm.mve.vshrn.v16i8.v8i16(<16 x i8> %ctlz, <8 x i16> %masked.load.b, i32 1, i32 1, i32 0, i32 1, i32 0, i32 1)
%bitcast = bitcast <16 x i8> %shrn to <8 x i16>
- call void @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %bitcast, <8 x i16>* %addr.c, i32 2, <8 x i1> %pred)
- %addr.a.next = getelementptr <8 x i16>, <8 x i16>* %addr.b, i32 1
- %addr.b.next = getelementptr <8 x i16>, <8 x i16>* %addr.b, i32 1
- %addr.c.next = getelementptr <8 x i16>, <8 x i16>* %addr.c, i32 1
+ call void @llvm.masked.store.v8i16.p0(<8 x i16> %bitcast, ptr %addr.c, i32 2, <8 x i1> %pred)
+ %addr.a.next = getelementptr <8 x i16>, ptr %addr.b, i32 1
+ %addr.b.next = getelementptr <8 x i16>, ptr %addr.b, i32 1
+ %addr.c.next = getelementptr <8 x i16>, ptr %addr.c, i32 1
%loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%end = icmp ne i32 %loop.dec, 0
%lsr.iv.next = add i32 %lsr.iv, -1
ret void
}
- define arm_aapcs_vfpcc void @test_ctlz_i16(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c, i32 %elts, i32 %iters) #0 {
+ define arm_aapcs_vfpcc void @test_ctlz_i16(ptr %a, ptr %b, ptr %c, i32 %elts, i32 %iters) #0 {
entry:
%cmp = icmp slt i32 %elts, 1
br i1 %cmp, label %exit, label %loop.ph
loop.body: ; preds = %loop.body, %loop.ph
%lsr.iv = phi i32 [ %lsr.iv.next, %loop.body ], [ %start, %loop.ph ]
%count = phi i32 [ %elts, %loop.ph ], [ %elts.rem, %loop.body ]
- %addr.a = phi <4 x i32>* [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
- %addr.b = phi <4 x i32>* [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
- %addr.c = phi <4 x i32>* [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
+ %addr.a = phi ptr [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
+ %addr.b = phi ptr [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
+ %addr.c = phi ptr [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
%pred = call <4 x i1> @llvm.arm.mve.vctp32(i32 %count)
%elts.rem = sub i32 %count, 4
- %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
- %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
%bitcast.a = bitcast <4 x i32> %masked.load.a to <8 x i16>
%ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %bitcast.a, i1 false)
%shrn = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> %ctlz, <4 x i32> %masked.load.b, i32 3, i32 1, i32 0, i32 1, i32 0, i32 1)
%bitcast = bitcast <8 x i16> %shrn to <4 x i32>
- call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %bitcast, <4 x i32>* %addr.c, i32 4, <4 x i1> %pred)
- %addr.a.next = getelementptr <4 x i32>, <4 x i32>* %addr.a, i32 1
- %addr.b.next = getelementptr <4 x i32>, <4 x i32>* %addr.b, i32 1
- %addr.c.next = getelementptr <4 x i32>, <4 x i32>* %addr.c, i32 1
+ call void @llvm.masked.store.v4i32.p0(<4 x i32> %bitcast, ptr %addr.c, i32 4, <4 x i1> %pred)
+ %addr.a.next = getelementptr <4 x i32>, ptr %addr.a, i32 1
+ %addr.b.next = getelementptr <4 x i32>, ptr %addr.b, i32 1
+ %addr.c.next = getelementptr <4 x i32>, ptr %addr.c, i32 1
%loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%end = icmp ne i32 %loop.dec, 0
%lsr.iv.next = add i32 %lsr.iv, -1
ret void
}
- define arm_aapcs_vfpcc void @test_ctlz_i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c, i32 %elts, i32 %iters) #0 {
+ define arm_aapcs_vfpcc void @test_ctlz_i32(ptr %a, ptr %b, ptr %c, i32 %elts, i32 %iters) #0 {
entry:
%cmp = icmp slt i32 %elts, 1
br i1 %cmp, label %exit, label %loop.ph
loop.body: ; preds = %loop.body, %loop.ph
%lsr.iv = phi i32 [ %lsr.iv.next, %loop.body ], [ %start, %loop.ph ]
%count = phi i32 [ %elts, %loop.ph ], [ %elts.rem, %loop.body ]
- %addr.a = phi <4 x i32>* [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
- %addr.b = phi <4 x i32>* [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
- %addr.c = phi <4 x i32>* [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
+ %addr.a = phi ptr [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
+ %addr.b = phi ptr [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
+ %addr.c = phi ptr [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
%pred = call <4 x i1> @llvm.arm.mve.vctp32(i32 %count)
%elts.rem = sub i32 %count, 4
- %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
- %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
%ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %masked.load.b, i1 false)
%bitcast.a = bitcast <4 x i32> %masked.load.a to <8 x i16>
%shrn = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> %bitcast.a, <4 x i32> %ctlz, i32 3, i32 1, i32 0, i32 1, i32 0, i32 1)
%bitcast = bitcast <8 x i16> %shrn to <4 x i32>
- call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %bitcast, <4 x i32>* %addr.c, i32 4, <4 x i1> %pred)
- %addr.a.next = getelementptr <4 x i32>, <4 x i32>* %addr.a, i32 1
- %addr.b.next = getelementptr <4 x i32>, <4 x i32>* %addr.b, i32 1
- %addr.c.next = getelementptr <4 x i32>, <4 x i32>* %addr.c, i32 1
+ call void @llvm.masked.store.v4i32.p0(<4 x i32> %bitcast, ptr %addr.c, i32 4, <4 x i1> %pred)
+ %addr.a.next = getelementptr <4 x i32>, ptr %addr.a, i32 1
+ %addr.b.next = getelementptr <4 x i32>, ptr %addr.b, i32 1
+ %addr.c.next = getelementptr <4 x i32>, ptr %addr.c, i32 1
%loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%end = icmp ne i32 %loop.dec, 0
%lsr.iv.next = add i32 %lsr.iv, -1
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
declare <4 x i1> @llvm.arm.mve.vctp32(i32)
- declare <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>*, i32 immarg, <4 x i1>, <4 x i32>)
- declare void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>, <4 x i32>*, i32 immarg, <4 x i1>)
+ declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>)
+ declare void @llvm.masked.store.v4i32.p0(<4 x i32>, ptr, i32 immarg, <4 x i1>)
declare <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16>, <4 x i32>, i32, i32, i32, i32, i32, i32)
declare <8 x i1> @llvm.arm.mve.vctp16(i32)
- declare <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>*, i32 immarg, <8 x i1>, <8 x i16>)
- declare void @llvm.masked.store.v8i16.p0v8i16(<8 x i16>, <8 x i16>*, i32 immarg, <8 x i1>)
+ declare <8 x i16> @llvm.masked.load.v8i16.p0(ptr, i32 immarg, <8 x i1>, <8 x i16>)
+ declare void @llvm.masked.store.v8i16.p0(<8 x i16>, ptr, i32 immarg, <8 x i1>)
declare <16 x i8> @llvm.arm.mve.vshrn.v16i8.v8i16(<16 x i8>, <8 x i16>, i32, i32, i32, i32, i32, i32)
...
# RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve.fp -run-pass=arm-low-overhead-loops %s -o - --verify-machineinstrs | FileCheck %s
--- |
- define hidden arm_aapcs_vfpcc void @dont_ignore_vctp(float* %pSrc, float* %pDst, i32 %blockSize) local_unnamed_addr #0 {
+ define hidden arm_aapcs_vfpcc void @dont_ignore_vctp(ptr %pSrc, ptr %pDst, i32 %blockSize) local_unnamed_addr #0 {
entry:
%mul = shl i32 %blockSize, 1
%0 = add i32 %mul, 3
do.body: ; preds = %do.body, %entry
%blkCnt.0 = phi i32 [ %mul, %entry ], [ %sub, %do.body ]
- %pDst.addr.0 = phi float* [ %pDst, %entry ], [ %add.ptr4, %do.body ]
- %pSrc.addr.0 = phi float* [ %pSrc, %entry ], [ %add.ptr, %do.body ]
+ %pDst.addr.0 = phi ptr [ %pDst, %entry ], [ %add.ptr4, %do.body ]
+ %pSrc.addr.0 = phi ptr [ %pSrc, %entry ], [ %add.ptr, %do.body ]
%5 = phi i32 [ %start, %entry ], [ %9, %do.body ]
%6 = tail call <4 x i1> @llvm.arm.mve.vctp32(i32 %blkCnt.0)
- %input_cast = bitcast float* %pSrc.addr.0 to <4 x float>*
- %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %input_cast, i32 4, <4 x i1> %6, <4 x float> undef)
+ %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0(ptr %pSrc.addr.0, i32 4, <4 x i1> %6, <4 x float> undef)
%8 = fmul <4 x float> %7, <float 1.000000e+00, float -1.000000e+00, float 1.000000e+00, float -1.000000e+00>
- %output_cast = bitcast float* %pDst.addr.0 to <4 x float>*
- tail call void @llvm.masked.store.v4f32.p0v4f32(<4 x float> %8, <4 x float>* %output_cast, i32 4, <4 x i1> %6)
- %add.ptr = getelementptr inbounds float, float* %pSrc.addr.0, i32 4
- %add.ptr4 = getelementptr inbounds float, float* %pDst.addr.0, i32 4
+ tail call void @llvm.masked.store.v4f32.p0(<4 x float> %8, ptr %pDst.addr.0, i32 4, <4 x i1> %6)
+ %add.ptr = getelementptr inbounds float, ptr %pSrc.addr.0, i32 4
+ %add.ptr4 = getelementptr inbounds float, ptr %pDst.addr.0, i32 4
%sub = add nsw i32 %blkCnt.0, -4
%9 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
%10 = icmp ne i32 %9, 0
ret void
}
declare <4 x i1> @llvm.arm.mve.vctp32(i32) #1
- declare <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>*, i32 immarg, <4 x i1>, <4 x float>)
- declare void @llvm.masked.store.v4f32.p0v4f32(<4 x float>, <4 x float>*, i32 immarg, <4 x i1>)
+ declare <4 x float> @llvm.masked.load.v4f32.p0(ptr, i32 immarg, <4 x i1>, <4 x float>)
+ declare void @llvm.masked.store.v4f32.p0(<4 x float>, ptr, i32 immarg, <4 x i1>)
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define void @size_limit(i32* nocapture %a, i32* nocapture readonly %b, i32* nocapture readonly %c, i32 %N) {
+ define void @size_limit(ptr nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) {
entry:
%start = call i32 @llvm.start.loop.iterations.i32(i32 %N)
- %scevgep = getelementptr i32, i32* %a, i32 -1
- %scevgep4 = getelementptr i32, i32* %c, i32 -1
- %scevgep8 = getelementptr i32, i32* %b, i32 -1
+ %scevgep = getelementptr i32, ptr %a, i32 -1
+ %scevgep4 = getelementptr i32, ptr %c, i32 -1
+ %scevgep8 = getelementptr i32, ptr %b, i32 -1
br label %for.header
for.body: ; preds = %for.header
- %scevgep11 = getelementptr i32, i32* %lsr.iv9, i32 1
- %ld1 = load i32, i32* %scevgep11, align 4
- %scevgep7 = getelementptr i32, i32* %lsr.iv5, i32 1
- %ld2 = load i32, i32* %scevgep7, align 4
+ %scevgep11 = getelementptr i32, ptr %lsr.iv9, i32 1
+ %ld1 = load i32, ptr %scevgep11, align 4
+ %scevgep7 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %ld2 = load i32, ptr %scevgep7, align 4
%mul = mul nsw i32 %ld2, %ld1
- %scevgep3 = getelementptr i32, i32* %lsr.iv1, i32 1
- store i32 %mul, i32* %scevgep3, align 4
- %scevgep2 = getelementptr i32, i32* %lsr.iv1, i32 1
- %scevgep6 = getelementptr i32, i32* %lsr.iv5, i32 1
- %scevgep10 = getelementptr i32, i32* %lsr.iv9, i32 1
+ %scevgep3 = getelementptr i32, ptr %lsr.iv1, i32 1
+ store i32 %mul, ptr %scevgep3, align 4
+ %scevgep2 = getelementptr i32, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %scevgep10 = getelementptr i32, ptr %lsr.iv9, i32 1
%count.next = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %count, i32 1)
%cmp = icmp ne i32 %count.next, 0
br i1 %cmp, label %for.header, label %for.cond.cleanup
ret void
for.header: ; preds = %for.body, %entry
- %lsr.iv9 = phi i32* [ %scevgep8, %entry ], [ %scevgep10, %for.body ]
- %lsr.iv5 = phi i32* [ %scevgep4, %entry ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi i32* [ %scevgep, %entry ], [ %scevgep2, %for.body ]
+ %lsr.iv9 = phi ptr [ %scevgep8, %entry ], [ %scevgep10, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %entry ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %entry ], [ %scevgep2, %for.body ]
%count = phi i32 [ %start, %entry ], [ %count.next, %for.body ]
br label %for.body
}
# IT-block with 3 statements, all chained together.
--- |
- define hidden arm_aapcs_vfpcc void @it_block_2_stmts(float* %pSrc, float* %pDst, i32 %blockSize) local_unnamed_addr #0 {
+ define hidden arm_aapcs_vfpcc void @it_block_2_stmts(ptr %pSrc, ptr %pDst, i32 %blockSize) local_unnamed_addr #0 {
entry:
%mul = shl i32 %blockSize, 1
%0 = add i32 %mul, 3
do.body: ; preds = %do.body, %entry
%blkCnt.0 = phi i32 [ %mul, %entry ], [ %sub, %do.body ]
- %pDst.addr.0 = phi float* [ %pDst, %entry ], [ %add.ptr4, %do.body ]
- %pSrc.addr.0 = phi float* [ %pSrc, %entry ], [ %add.ptr, %do.body ]
+ %pDst.addr.0 = phi ptr [ %pDst, %entry ], [ %add.ptr4, %do.body ]
+ %pSrc.addr.0 = phi ptr [ %pSrc, %entry ], [ %add.ptr, %do.body ]
%5 = phi i32 [ %start, %entry ], [ %9, %do.body ]
%6 = tail call <4 x i1> @llvm.arm.mve.vctp32(i32 %blkCnt.0)
- %input_cast = bitcast float* %pSrc.addr.0 to <4 x float>*
- %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %input_cast, i32 4, <4 x i1> %6, <4 x float> undef)
+ %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0(ptr %pSrc.addr.0, i32 4, <4 x i1> %6, <4 x float> undef)
%8 = fmul <4 x float> %7, <float 1.000000e+00, float -1.000000e+00, float 1.000000e+00, float -1.000000e+00>
- %output_cast = bitcast float* %pDst.addr.0 to <4 x float>*
- tail call void @llvm.masked.store.v4f32.p0v4f32(<4 x float> %8, <4 x float>* %output_cast, i32 4, <4 x i1> %6)
- %add.ptr = getelementptr inbounds float, float* %pSrc.addr.0, i32 4
- %add.ptr4 = getelementptr inbounds float, float* %pDst.addr.0, i32 4
+ tail call void @llvm.masked.store.v4f32.p0(<4 x float> %8, ptr %pDst.addr.0, i32 4, <4 x i1> %6)
+ %add.ptr = getelementptr inbounds float, ptr %pSrc.addr.0, i32 4
+ %add.ptr4 = getelementptr inbounds float, ptr %pDst.addr.0, i32 4
%sub = add nsw i32 %blkCnt.0, -4
%9 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
%10 = icmp ne i32 %9, 0
ret void
}
declare <4 x i1> @llvm.arm.mve.vctp32(i32) #1
- declare <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>*, i32 immarg, <4 x i1>, <4 x float>)
- declare void @llvm.masked.store.v4f32.p0v4f32(<4 x float>, <4 x float>*, i32 immarg, <4 x i1>)
+ declare <4 x float> @llvm.masked.load.v4f32.p0(ptr, i32 immarg, <4 x i1>, <4 x float>)
+ declare void @llvm.masked.store.v4f32.p0(<4 x float>, ptr, i32 immarg, <4 x i1>)
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
# not remove any of the iteration count statements.
--- |
- define hidden arm_aapcs_vfpcc void @it_block_2_stmts(float* %pSrc, float* %pDst, i32 %blockSize) local_unnamed_addr #0 {
+ define hidden arm_aapcs_vfpcc void @it_block_2_stmts(ptr %pSrc, ptr %pDst, i32 %blockSize) local_unnamed_addr #0 {
entry:
%mul = shl i32 %blockSize, 1
%0 = add i32 %mul, 3
do.body: ; preds = %do.body, %entry
%blkCnt.0 = phi i32 [ %mul, %entry ], [ %sub, %do.body ]
- %pDst.addr.0 = phi float* [ %pDst, %entry ], [ %add.ptr4, %do.body ]
- %pSrc.addr.0 = phi float* [ %pSrc, %entry ], [ %add.ptr, %do.body ]
+ %pDst.addr.0 = phi ptr [ %pDst, %entry ], [ %add.ptr4, %do.body ]
+ %pSrc.addr.0 = phi ptr [ %pSrc, %entry ], [ %add.ptr, %do.body ]
%5 = phi i32 [ %start, %entry ], [ %9, %do.body ]
%6 = tail call <4 x i1> @llvm.arm.mve.vctp32(i32 %blkCnt.0)
- %input_cast = bitcast float* %pSrc.addr.0 to <4 x float>*
- %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %input_cast, i32 4, <4 x i1> %6, <4 x float> undef)
+ %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0(ptr %pSrc.addr.0, i32 4, <4 x i1> %6, <4 x float> undef)
%8 = fmul <4 x float> %7, <float 1.000000e+00, float -1.000000e+00, float 1.000000e+00, float -1.000000e+00>
- %output_cast = bitcast float* %pDst.addr.0 to <4 x float>*
- tail call void @llvm.masked.store.v4f32.p0v4f32(<4 x float> %8, <4 x float>* %output_cast, i32 4, <4 x i1> %6)
- %add.ptr = getelementptr inbounds float, float* %pSrc.addr.0, i32 4
- %add.ptr4 = getelementptr inbounds float, float* %pDst.addr.0, i32 4
+ tail call void @llvm.masked.store.v4f32.p0(<4 x float> %8, ptr %pDst.addr.0, i32 4, <4 x i1> %6)
+ %add.ptr = getelementptr inbounds float, ptr %pSrc.addr.0, i32 4
+ %add.ptr4 = getelementptr inbounds float, ptr %pDst.addr.0, i32 4
%sub = add nsw i32 %blkCnt.0, -4
%9 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
%10 = icmp ne i32 %9, 0
ret void
}
declare <4 x i1> @llvm.arm.mve.vctp32(i32) #1
- declare <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>*, i32 immarg, <4 x i1>, <4 x float>)
- declare void @llvm.masked.store.v4f32.p0v4f32(<4 x float>, <4 x float>*, i32 immarg, <4 x i1>)
+ declare <4 x float> @llvm.masked.load.v4f32.p0(ptr, i32 immarg, <4 x i1>, <4 x float>)
+ declare void @llvm.masked.store.v4f32.p0(<4 x float>, ptr, i32 immarg, <4 x i1>)
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
--- |
; Function Attrs: nounwind
- define hidden arm_aapcs_vfpcc void @cond_trip_count(float* %0, i32 %1, float* nocapture %2) local_unnamed_addr #1 {
+ define hidden arm_aapcs_vfpcc void @cond_trip_count(ptr %0, i32 %1, ptr nocapture %2) local_unnamed_addr #1 {
ret void
}
# IT block and any of its instructions.
--- |
- define hidden arm_aapcs_vfpcc void @it_block_2_stmts(float* %pSrc, float* %pDst, i32 %blockSize) local_unnamed_addr #0 {
+ define hidden arm_aapcs_vfpcc void @it_block_2_stmts(ptr %pSrc, ptr %pDst, i32 %blockSize) local_unnamed_addr #0 {
entry:
%mul = shl i32 %blockSize, 1
%0 = add i32 %mul, 3
do.body: ; preds = %do.body, %entry
%blkCnt.0 = phi i32 [ %mul, %entry ], [ %sub, %do.body ]
- %pDst.addr.0 = phi float* [ %pDst, %entry ], [ %add.ptr4, %do.body ]
- %pSrc.addr.0 = phi float* [ %pSrc, %entry ], [ %add.ptr, %do.body ]
+ %pDst.addr.0 = phi ptr [ %pDst, %entry ], [ %add.ptr4, %do.body ]
+ %pSrc.addr.0 = phi ptr [ %pSrc, %entry ], [ %add.ptr, %do.body ]
%5 = phi i32 [ %start, %entry ], [ %9, %do.body ]
%6 = tail call <4 x i1> @llvm.arm.mve.vctp32(i32 %blkCnt.0)
- %input_cast = bitcast float* %pSrc.addr.0 to <4 x float>*
- %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %input_cast, i32 4, <4 x i1> %6, <4 x float> undef)
+ %7 = tail call <4 x float> @llvm.masked.load.v4f32.p0(ptr %pSrc.addr.0, i32 4, <4 x i1> %6, <4 x float> undef)
%8 = fmul <4 x float> %7, <float 1.000000e+00, float -1.000000e+00, float 1.000000e+00, float -1.000000e+00>
- %output_cast = bitcast float* %pDst.addr.0 to <4 x float>*
- tail call void @llvm.masked.store.v4f32.p0v4f32(<4 x float> %8, <4 x float>* %output_cast, i32 4, <4 x i1> %6)
- %add.ptr = getelementptr inbounds float, float* %pSrc.addr.0, i32 4
- %add.ptr4 = getelementptr inbounds float, float* %pDst.addr.0, i32 4
+ tail call void @llvm.masked.store.v4f32.p0(<4 x float> %8, ptr %pDst.addr.0, i32 4, <4 x i1> %6)
+ %add.ptr = getelementptr inbounds float, ptr %pSrc.addr.0, i32 4
+ %add.ptr4 = getelementptr inbounds float, ptr %pDst.addr.0, i32 4
%sub = add nsw i32 %blkCnt.0, -4
%9 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
%10 = icmp ne i32 %9, 0
ret void
}
declare <4 x i1> @llvm.arm.mve.vctp32(i32) #1
- declare <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>*, i32 immarg, <4 x i1>, <4 x float>)
- declare void @llvm.masked.store.v4f32.p0v4f32(<4 x float>, <4 x float>*, i32 immarg, <4 x i1>)
+ declare <4 x float> @llvm.masked.load.v4f32.p0(ptr, i32 immarg, <4 x i1>, <4 x float>)
+ declare void @llvm.masked.store.v4f32.p0(<4 x float>, ptr, i32 immarg, <4 x i1>)
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define dso_local arm_aapcscc void @massive(i32* nocapture %a, i32* nocapture readonly %b, i32* nocapture readonly %c, i32 %N) {
+ define dso_local arm_aapcscc void @massive(ptr nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) {
entry:
%cmp8 = icmp eq i32 %N, 0
br i1 %cmp8, label %for.cond.cleanup, label %for.body.preheader
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr i32, i32* %a, i32 -1
- %scevgep4 = getelementptr i32, i32* %c, i32 -1
- %scevgep8 = getelementptr i32, i32* %b, i32 -1
+ %scevgep = getelementptr i32, ptr %a, i32 -1
+ %scevgep4 = getelementptr i32, ptr %c, i32 -1
+ %scevgep8 = getelementptr i32, ptr %b, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %N)
br label %for.body
ret void
for.body: ; preds = %for.body, %for.body.preheader
- %lsr.iv9 = phi i32* [ %scevgep8, %for.body.preheader ], [ %scevgep10, %for.body ]
- %lsr.iv5 = phi i32* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi i32* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv9 = phi ptr [ %scevgep8, %for.body.preheader ], [ %scevgep10, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%0 = phi i32 [ %start, %for.body.preheader ], [ %3, %for.body ]
%size = call i32 @llvm.arm.space(i32 4096, i32 undef)
- %scevgep3 = getelementptr i32, i32* %lsr.iv9, i32 1
- %1 = load i32, i32* %scevgep3, align 4
- %scevgep7 = getelementptr i32, i32* %lsr.iv5, i32 1
- %2 = load i32, i32* %scevgep7, align 4
+ %scevgep3 = getelementptr i32, ptr %lsr.iv9, i32 1
+ %1 = load i32, ptr %scevgep3, align 4
+ %scevgep7 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %2 = load i32, ptr %scevgep7, align 4
%mul = mul nsw i32 %2, %1
- %scevgep11 = getelementptr i32, i32* %lsr.iv1, i32 1
- store i32 %mul, i32* %scevgep11, align 4
- %scevgep2 = getelementptr i32, i32* %lsr.iv1, i32 1
- %scevgep6 = getelementptr i32, i32* %lsr.iv5, i32 1
- %scevgep10 = getelementptr i32, i32* %lsr.iv9, i32 1
+ %scevgep11 = getelementptr i32, ptr %lsr.iv1, i32 1
+ store i32 %mul, ptr %scevgep11, align 4
+ %scevgep2 = getelementptr i32, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %scevgep10 = getelementptr i32, ptr %lsr.iv9, i32 1
%3 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%4 = icmp ne i32 %3, 0
br i1 %4, label %for.body, label %for.cond.cleanup
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #1
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
attributes #1 = { noduplicate nounwind }
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define i32 @do_copy(i32 %n, i32* nocapture %p, i32* nocapture readonly %q) {
+ define i32 @do_copy(i32 %n, ptr nocapture %p, ptr nocapture readonly %q) {
entry:
- %scevgep = getelementptr i32, i32* %q, i32 -1
- %scevgep3 = getelementptr i32, i32* %p, i32 -1
+ %scevgep = getelementptr i32, ptr %q, i32 -1
+ %scevgep3 = getelementptr i32, ptr %p, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %n)
br label %while.body
while.body: ; preds = %while.body, %entry
- %lsr.iv4 = phi i32* [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
- %lsr.iv = phi i32* [ %scevgep1, %while.body ], [ %scevgep, %entry ]
+ %lsr.iv4 = phi ptr [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
+ %lsr.iv = phi ptr [ %scevgep1, %while.body ], [ %scevgep, %entry ]
%0 = phi i32 [ %start, %entry ], [ %2, %while.body ]
- %scevgep6 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep2 = getelementptr i32, i32* %lsr.iv4, i32 1
- %1 = load i32, i32* %scevgep6, align 4
- store i32 %1, i32* %scevgep2, align 4
- %scevgep1 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep5 = getelementptr i32, i32* %lsr.iv4, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep2 = getelementptr i32, ptr %lsr.iv4, i32 1
+ %1 = load i32, ptr %scevgep6, align 4
+ store i32 %1, ptr %scevgep2, align 4
+ %scevgep1 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i32, ptr %lsr.iv4, i32 1
%2 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%3 = icmp ne i32 %2, 0
br i1 %3, label %while.body, label %while.end
# RUN: llc -mtriple=armv8.1m.main -mattr=+lob -run-pass=arm-low-overhead-loops --verify-machineinstrs %s -o - | FileCheck %s
--- |
- define void @size_limit(i32* nocapture %a, i32* nocapture readonly %b, i32* nocapture readonly %c, i32 %N) {
+ define void @size_limit(ptr nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) {
entry:
%cmp8 = icmp eq i32 %N, 0
br i1 %cmp8, label %for.cond.cleanup, label %for.body.preheader
ret void
for.body: ; preds = %for.end, %for.body.preheader
- %lsr.iv4 = phi i32* [ %b, %for.body.preheader ], [ %scevgep5, %for.end ]
- %lsr.iv2 = phi i32* [ %c, %for.body.preheader ], [ %scevgep3, %for.end ]
- %lsr.iv1 = phi i32* [ %a, %for.body.preheader ], [ %scevgep, %for.end ]
+ %lsr.iv4 = phi ptr [ %b, %for.body.preheader ], [ %scevgep5, %for.end ]
+ %lsr.iv2 = phi ptr [ %c, %for.body.preheader ], [ %scevgep3, %for.end ]
+ %lsr.iv1 = phi ptr [ %a, %for.body.preheader ], [ %scevgep, %for.end ]
%lsr.iv = phi i32 [ %start, %for.body.preheader ], [ %lsr.iv.next, %for.end ]
%size = call i32 @llvm.arm.space(i32 3072, i32 undef)
- %0 = load i32, i32* %lsr.iv4, align 4
- %1 = load i32, i32* %lsr.iv2, align 4
+ %0 = load i32, ptr %lsr.iv4, align 4
+ %1 = load i32, ptr %lsr.iv2, align 4
%mul = mul nsw i32 %1, %0
- store i32 %mul, i32* %lsr.iv1, align 4
+ store i32 %mul, ptr %lsr.iv1, align 4
%cmp = icmp ne i32 %0, 0
br i1 %cmp, label %middle.block, label %for.end
middle.block: ; preds = %for.body
%div = udiv i32 %1, %0
- store i32 %div, i32* %lsr.iv1, align 4
+ store i32 %div, ptr %lsr.iv1, align 4
%size.1 = call i32 @llvm.arm.space(i32 1024, i32 undef)
br label %for.end
for.end: ; preds = %middle.block, %for.body
- %scevgep = getelementptr i32, i32* %lsr.iv1, i32 1
- %scevgep3 = getelementptr i32, i32* %lsr.iv2, i32 1
- %scevgep5 = getelementptr i32, i32* %lsr.iv4, i32 1
+ %scevgep = getelementptr i32, ptr %lsr.iv1, i32 1
+ %scevgep3 = getelementptr i32, ptr %lsr.iv2, i32 1
+ %scevgep5 = getelementptr i32, ptr %lsr.iv4, i32 1
%lsr.iv.next = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%exitcond = icmp eq i32 %lsr.iv.next, 0
br i1 %exitcond, label %for.cond.cleanup, label %for.body
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #1
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
attributes #1 = { noduplicate nounwind }
br i1 %tobool5, label %j.us.us.preheader, label %entry.split
j.us.us.preheader: ; preds = %entry
- %.pre59 = load i32, i32* @d, align 4
+ %.pre59 = load i32, ptr @d, align 4
br label %j.us.us
j.us.us: ; preds = %j.us.us, %if.end.us.us.us, %if.end.us.us.us.1, %if.end.us.us.us.2, %if.end.us.us.us.3, %if.end.us.us.us.4, %if.end.us.us.us.5, %if.end.us.us.us.6, %j.us.us.preheader
%0 = phi i32 [ %.pre59, %j.us.us.preheader ], [ %12, %if.end.us.us.us.6 ], [ %11, %if.end.us.us.us.5 ], [ %10, %if.end.us.us.us.4 ], [ %9, %if.end.us.us.us.3 ], [ %8, %if.end.us.us.us.2 ], [ %7, %if.end.us.us.us.1 ], [ %2, %if.end.us.us.us ], [ %0, %j.us.us ]
- %cmp.us.us = icmp slt i32 %0, ptrtoint (i32* @a to i32)
+ %cmp.us.us = icmp slt i32 %0, ptrtoint (ptr @a to i32)
%conv1.us.us = zext i1 %cmp.us.us to i32
- %1 = load i32, i32* @e, align 4
+ %1 = load i32, ptr @e, align 4
%and.us.us = and i32 %1, %conv1.us.us
- store i32 %and.us.us, i32* @e, align 4
+ store i32 %and.us.us, ptr @e, align 4
%tobool4.us.us.us = icmp eq i32 %0, 0
br i1 %tobool4.us.us.us, label %if.end.us.us.us, label %j.us.us
if.end.us.us.us: ; preds = %j.us.us
tail call void asm sideeffect "", ""()
- %2 = load i32, i32* @d, align 4
+ %2 = load i32, ptr @d, align 4
%tobool4.us.us.us.1 = icmp eq i32 %2, 0
br i1 %tobool4.us.us.us.1, label %if.end.us.us.us.1, label %j.us.us
br i1 %tobool, label %j.us27.preheader, label %j.preheader
j.preheader: ; preds = %entry.split
- %.pre = load i32, i32* @e, align 4
- %.pre55 = load i32, i32* @d, align 4
- %cmp = icmp slt i32 %conv, ptrtoint (i32* @a to i32)
+ %.pre = load i32, ptr @e, align 4
+ %.pre55 = load i32, ptr @d, align 4
+ %cmp = icmp slt i32 %conv, ptrtoint (ptr @a to i32)
%conv1 = zext i1 %cmp to i32
br label %j
j.us27.preheader: ; preds = %entry.split
- %.pre56 = load i32, i32* @d, align 4
- %.pre57 = load i32, i32* @e, align 4
- %cmp.us29 = icmp slt i32 %.pre56, ptrtoint (i32* @a to i32)
+ %.pre56 = load i32, ptr @d, align 4
+ %.pre57 = load i32, ptr @e, align 4
+ %cmp.us29 = icmp slt i32 %.pre56, ptrtoint (ptr @a to i32)
%conv1.us30 = zext i1 %cmp.us29 to i32
br label %j.us27
br i1 %4, label %if.end.us38, label %j.us27
if.end.us38: ; preds = %j.us27
- store i32 %and.us31, i32* @e, align 4
+ store i32 %and.us31, ptr @e, align 4
tail call void asm sideeffect "", ""()
ret void
br i1 %6, label %if.end, label %j
if.end: ; preds = %j
- store i32 %and, i32* @e, align 4
+ store i32 %and, ptr @e, align 4
tail call void asm sideeffect "", ""()
ret void
if.end.us.us.us.1: ; preds = %if.end.us.us.us
tail call void asm sideeffect "", ""()
- %7 = load i32, i32* @d, align 4
+ %7 = load i32, ptr @d, align 4
%tobool4.us.us.us.2 = icmp eq i32 %7, 0
br i1 %tobool4.us.us.us.2, label %if.end.us.us.us.2, label %j.us.us
if.end.us.us.us.2: ; preds = %if.end.us.us.us.1
tail call void asm sideeffect "", ""()
- %8 = load i32, i32* @d, align 4
+ %8 = load i32, ptr @d, align 4
%tobool4.us.us.us.3 = icmp eq i32 %8, 0
br i1 %tobool4.us.us.us.3, label %if.end.us.us.us.3, label %j.us.us
if.end.us.us.us.3: ; preds = %if.end.us.us.us.2
tail call void asm sideeffect "", ""()
- %9 = load i32, i32* @d, align 4
+ %9 = load i32, ptr @d, align 4
%tobool4.us.us.us.4 = icmp eq i32 %9, 0
br i1 %tobool4.us.us.us.4, label %if.end.us.us.us.4, label %j.us.us
if.end.us.us.us.4: ; preds = %if.end.us.us.us.3
tail call void asm sideeffect "", ""()
- %10 = load i32, i32* @d, align 4
+ %10 = load i32, ptr @d, align 4
%tobool4.us.us.us.5 = icmp eq i32 %10, 0
br i1 %tobool4.us.us.us.5, label %if.end.us.us.us.5, label %j.us.us
if.end.us.us.us.5: ; preds = %if.end.us.us.us.4
tail call void asm sideeffect "", ""()
- %11 = load i32, i32* @d, align 4
+ %11 = load i32, ptr @d, align 4
%tobool4.us.us.us.6 = icmp eq i32 %11, 0
br i1 %tobool4.us.us.us.6, label %if.end.us.us.us.6, label %j.us.us
if.end.us.us.us.6: ; preds = %if.end.us.us.us.5
tail call void asm sideeffect "", ""()
- %12 = load i32, i32* @d, align 4
+ %12 = load i32, ptr @d, align 4
%tobool4.us.us.us.7 = icmp eq i32 %12, 0
br i1 %tobool4.us.us.us.7, label %if.end.us.us.us.7, label %j.us.us
# RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve.fp -run-pass=arm-low-overhead-loops --verify-machineinstrs %s -o - | FileCheck %s
--- |
- define dso_local arm_aapcs_vfpcc void @remove_mov_lr_chain(float* nocapture readonly %pSrc, float* nocapture %pDst, i32 %blockSize) #0 {
+ define dso_local arm_aapcs_vfpcc void @remove_mov_lr_chain(ptr nocapture readonly %pSrc, ptr nocapture %pDst, i32 %blockSize) #0 {
entry:
%cmp5 = icmp eq i32 %blockSize, 0
br i1 %cmp5, label %while.end, label %while.body.preheader
br i1 %min.iters.check, label %while.body.preheader19, label %vector.memcheck
vector.memcheck: ; preds = %while.body.preheader
- %scevgep = getelementptr float, float* %pDst, i32 %blockSize
- %scevgep12 = getelementptr float, float* %pSrc, i32 %blockSize
- %bound0 = icmp ugt float* %scevgep12, %pDst
- %bound1 = icmp ugt float* %scevgep, %pSrc
+ %scevgep = getelementptr float, ptr %pDst, i32 %blockSize
+ %scevgep12 = getelementptr float, ptr %pSrc, i32 %blockSize
+ %bound0 = icmp ugt ptr %scevgep12, %pDst
+ %bound1 = icmp ugt ptr %scevgep, %pSrc
%found.conflict = and i1 %bound0, %bound1
%0 = lshr i32 %blockSize, 2
%1 = shl nuw i32 %0, 2
vector.ph: ; preds = %vector.memcheck
%n.vec = and i32 %blockSize, -4
%ind.end = sub i32 %blockSize, %n.vec
- %ind.end15 = getelementptr float, float* %pSrc, i32 %n.vec
- %ind.end17 = getelementptr float, float* %pDst, i32 %n.vec
- %scevgep9 = getelementptr float, float* %pDst, i32 -4
- %scevgep14 = getelementptr float, float* %pSrc, i32 -4
+ %ind.end15 = getelementptr float, ptr %pSrc, i32 %n.vec
+ %ind.end17 = getelementptr float, ptr %pDst, i32 %n.vec
+ %scevgep9 = getelementptr float, ptr %pDst, i32 -4
+ %scevgep14 = getelementptr float, ptr %pSrc, i32 -4
%start1 = call i32 @llvm.start.loop.iterations.i32(i32 %4)
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
- %lsr.iv15 = phi float* [ %scevgep16, %vector.body ], [ %scevgep14, %vector.ph ]
- %lsr.iv10 = phi float* [ %scevgep11, %vector.body ], [ %scevgep9, %vector.ph ]
+ %lsr.iv15 = phi ptr [ %scevgep16, %vector.body ], [ %scevgep14, %vector.ph ]
+ %lsr.iv10 = phi ptr [ %scevgep11, %vector.body ], [ %scevgep9, %vector.ph ]
%5 = phi i32 [ %start1, %vector.ph ], [ %7, %vector.body ]
- %lsr.iv1517 = bitcast float* %lsr.iv15 to <4 x float>*
- %lsr.iv1012 = bitcast float* %lsr.iv10 to <4 x float>*
- %scevgep18 = getelementptr <4 x float>, <4 x float>* %lsr.iv1517, i32 1
- %wide.load = load <4 x float>, <4 x float>* %scevgep18, align 4
+ %scevgep18 = getelementptr <4 x float>, ptr %lsr.iv15, i32 1
+ %wide.load = load <4 x float>, ptr %scevgep18, align 4
%6 = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> %wide.load)
- %scevgep13 = getelementptr <4 x float>, <4 x float>* %lsr.iv1012, i32 1
- store <4 x float> %6, <4 x float>* %scevgep13, align 4
- %scevgep11 = getelementptr float, float* %lsr.iv10, i32 4
- %scevgep16 = getelementptr float, float* %lsr.iv15, i32 4
+ %scevgep13 = getelementptr <4 x float>, ptr %lsr.iv10, i32 1
+ store <4 x float> %6, ptr %scevgep13, align 4
+ %scevgep11 = getelementptr float, ptr %lsr.iv10, i32 4
+ %scevgep16 = getelementptr float, ptr %lsr.iv15, i32 4
%7 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
%8 = icmp ne i32 %7, 0
br i1 %8, label %vector.body, label %middle.block
while.body.preheader19: ; preds = %middle.block, %vector.memcheck, %while.body.preheader
%blkCnt.08.ph = phi i32 [ %blockSize, %vector.memcheck ], [ %blockSize, %while.body.preheader ], [ %ind.end, %middle.block ]
- %pSrc.addr.07.ph = phi float* [ %pSrc, %vector.memcheck ], [ %pSrc, %while.body.preheader ], [ %ind.end15, %middle.block ]
- %pDst.addr.06.ph = phi float* [ %pDst, %vector.memcheck ], [ %pDst, %while.body.preheader ], [ %ind.end17, %middle.block ]
- %scevgep1 = getelementptr float, float* %pSrc.addr.07.ph, i32 -1
- %scevgep4 = getelementptr float, float* %pDst.addr.06.ph, i32 -1
+ %pSrc.addr.07.ph = phi ptr [ %pSrc, %vector.memcheck ], [ %pSrc, %while.body.preheader ], [ %ind.end15, %middle.block ]
+ %pDst.addr.06.ph = phi ptr [ %pDst, %vector.memcheck ], [ %pDst, %while.body.preheader ], [ %ind.end17, %middle.block ]
+ %scevgep1 = getelementptr float, ptr %pSrc.addr.07.ph, i32 -1
+ %scevgep4 = getelementptr float, ptr %pDst.addr.06.ph, i32 -1
%start2 = call i32 @llvm.start.loop.iterations.i32(i32 %blkCnt.08.ph)
br label %while.body
while.body: ; preds = %while.body, %while.body.preheader19
- %lsr.iv5 = phi float* [ %scevgep6, %while.body ], [ %scevgep4, %while.body.preheader19 ]
- %lsr.iv = phi float* [ %scevgep2, %while.body ], [ %scevgep1, %while.body.preheader19 ]
+ %lsr.iv5 = phi ptr [ %scevgep6, %while.body ], [ %scevgep4, %while.body.preheader19 ]
+ %lsr.iv = phi ptr [ %scevgep2, %while.body ], [ %scevgep1, %while.body.preheader19 ]
%9 = phi i32 [ %start2, %while.body.preheader19 ], [ %12, %while.body ]
- %scevgep3 = getelementptr float, float* %lsr.iv, i32 1
- %scevgep7 = getelementptr float, float* %lsr.iv5, i32 1
- %10 = load float, float* %scevgep3, align 4
+ %scevgep3 = getelementptr float, ptr %lsr.iv, i32 1
+ %scevgep7 = getelementptr float, ptr %lsr.iv5, i32 1
+ %10 = load float, ptr %scevgep3, align 4
%11 = tail call fast float @llvm.fabs.f32(float %10)
- store float %11, float* %scevgep7, align 4
- %scevgep2 = getelementptr float, float* %lsr.iv, i32 1
- %scevgep6 = getelementptr float, float* %lsr.iv5, i32 1
+ store float %11, ptr %scevgep7, align 4
+ %scevgep2 = getelementptr float, ptr %lsr.iv, i32 1
+ %scevgep6 = getelementptr float, ptr %lsr.iv5, i32 1
%12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %9, i32 1)
%13 = icmp ne i32 %12, 0
br i1 %13, label %while.body, label %while.end
while.body: ; preds = %while.body, %while.body.preheader
%res.07 = phi i32 [ %add, %while.body ], [ 0, %while.body.preheader ]
%0 = phi i32 [ %start, %while.body.preheader ], [ %1, %while.body ]
- %call = tail call i32 bitcast (i32 (...)* @bar to i32 ()*)()
+ %call = tail call i32 @bar()
%add = add nsw i32 %call, %res.07
%1 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%2 = icmp ne i32 %1, 0
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #1
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { "target-features"="+mve.fp" }
attributes #1 = { noduplicate nounwind }
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define void @non_loop(i16* nocapture %a, i16* nocapture readonly %b, i32 %N) {
+ define void @non_loop(ptr nocapture %a, ptr nocapture readonly %b, i32 %N) {
entry:
%cmp = icmp ugt i32 %N, 2
br i1 %cmp, label %not.preheader, label %while.body.preheader
br i1 %test, label %while.body.preheader, label %while.end
while.body.preheader: ; preds = %not.preheader, %entry
- %scevgep = getelementptr i16, i16* %a, i32 -1
- %scevgep3 = getelementptr i16, i16* %b, i32 -1
+ %scevgep = getelementptr i16, ptr %a, i32 -1
+ %scevgep3 = getelementptr i16, ptr %b, i32 -1
br label %while.body
while.body: ; preds = %while.body, %while.body.preheader
- %lsr.iv4 = phi i16* [ %scevgep3, %while.body.preheader ], [ %scevgep5, %while.body ]
- %lsr.iv = phi i16* [ %scevgep, %while.body.preheader ], [ %scevgep1, %while.body ]
+ %lsr.iv4 = phi ptr [ %scevgep3, %while.body.preheader ], [ %scevgep5, %while.body ]
+ %lsr.iv = phi ptr [ %scevgep, %while.body.preheader ], [ %scevgep1, %while.body ]
%count = phi i32 [ %count.next, %while.body ], [ %N, %while.body.preheader ]
- %scevgep7 = getelementptr i16, i16* %lsr.iv, i32 1
- %scevgep4 = getelementptr i16, i16* %lsr.iv4, i32 1
- %load = load i16, i16* %scevgep4, align 2
- store i16 %load, i16* %scevgep7, align 2
+ %scevgep7 = getelementptr i16, ptr %lsr.iv, i32 1
+ %scevgep4 = getelementptr i16, ptr %lsr.iv4, i32 1
+ %load = load i16, ptr %scevgep4, align 2
+ store i16 %load, ptr %scevgep7, align 2
%count.next = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %count, i32 1)
%cmp1 = icmp ne i32 %count.next, 0
- %scevgep1 = getelementptr i16, i16* %lsr.iv, i32 1
- %scevgep5 = getelementptr i16, i16* %lsr.iv4, i32 1
+ %scevgep1 = getelementptr i16, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i16, ptr %lsr.iv4, i32 1
br i1 %cmp1, label %while.body, label %while.end
while.end: ; preds = %while.body, %not.preheader
declare i1 @llvm.test.set.loop.iterations.i32(i32) #0
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #0
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { noduplicate nounwind }
attributes #1 = { nounwind }
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define void @ne_trip_count(i1 zeroext %t1, i32* nocapture %a, i32* nocapture readonly %b, i32 %N) #0 {
+ define void @ne_trip_count(i1 zeroext %t1, ptr nocapture %a, ptr nocapture readonly %b, i32 %N) #0 {
entry:
%0 = call i1 @llvm.test.set.loop.iterations.i32(i32 %N)
br i1 %0, label %do.body.preheader, label %if.end
do.body.preheader: ; preds = %entry
- %scevgep2 = getelementptr i32, i32* %a, i32 -1
- %scevgep5 = getelementptr i32, i32* %b, i32 -1
+ %scevgep2 = getelementptr i32, ptr %a, i32 -1
+ %scevgep5 = getelementptr i32, ptr %b, i32 -1
br label %do.body
do.body: ; preds = %do.body, %do.body.preheader
- %lsr.iv6 = phi i32* [ %scevgep5, %do.body.preheader ], [ %scevgep7, %do.body ]
- %lsr.iv = phi i32* [ %scevgep2, %do.body.preheader ], [ %scevgep3, %do.body ]
+ %lsr.iv6 = phi ptr [ %scevgep5, %do.body.preheader ], [ %scevgep7, %do.body ]
+ %lsr.iv = phi ptr [ %scevgep2, %do.body.preheader ], [ %scevgep3, %do.body ]
%1 = phi i32 [ %2, %do.body ], [ %N, %do.body.preheader ]
- %scevgep = getelementptr i32, i32* %lsr.iv6, i32 1
- %scevgep1 = getelementptr i32, i32* %lsr.iv, i32 1
+ %scevgep = getelementptr i32, ptr %lsr.iv6, i32 1
+ %scevgep1 = getelementptr i32, ptr %lsr.iv, i32 1
%size = call i32 @llvm.arm.space(i32 4096, i32 undef)
- %tmp = load i32, i32* %scevgep, align 4
- store i32 %tmp, i32* %scevgep1, align 4
+ %tmp = load i32, ptr %scevgep, align 4
+ store i32 %tmp, ptr %scevgep1, align 4
%2 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %1, i32 1)
%3 = icmp ne i32 %2, 0
- %scevgep3 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep7 = getelementptr i32, i32* %lsr.iv6, i32 1
+ %scevgep3 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep7 = getelementptr i32, ptr %lsr.iv6, i32 1
br i1 %3, label %do.body, label %if.end
if.end: ; preds = %do.body, %entry
define i32 @e() optsize {
entry:
- %.pr = load i32, i32* @d, align 4
+ %.pr = load i32, ptr @d, align 4
%cmp13 = icmp sgt i32 %.pr, -1
br i1 %cmp13, label %for.cond1.preheader.preheader, label %for.end9
for.cond1.preheader: ; preds = %for.cond1.preheader.preheader, %for.cond1.preheader
%2 = phi i32 [ %1, %for.cond1.preheader.preheader ], [ %3, %for.cond1.preheader ]
- call void @llvm.memset.p0i8.i32(i8* nonnull align 4 dereferenceable(24) bitcast ([1 x i32]* @c to i8*), i8 0, i32 24, i1 false)
+ call void @llvm.memset.p0.i32(ptr nonnull align 4 dereferenceable(24) @c, i8 0, i32 24, i1 false)
%3 = call i32 @llvm.loop.decrement.reg.i32(i32 %2, i32 1)
%4 = icmp ne i32 %3, 0
br i1 %4, label %for.cond1.preheader, label %for.cond.for.end9_crit_edge
for.cond.for.end9_crit_edge: ; preds = %for.cond1.preheader
- store i32 -1, i32* @d, align 4
+ store i32 -1, ptr @d, align 4
br label %for.end9
for.end9: ; preds = %for.cond.for.end9_crit_edge, %entry
ret i32 undef
}
- declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg)
+ declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1 immarg)
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32(i32, i32)
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define i32 @do_copy(i32 %n, i32* nocapture %p, i32* nocapture readonly %q) {
+ define i32 @do_copy(i32 %n, ptr nocapture %p, ptr nocapture readonly %q) {
entry:
- %scevgep = getelementptr i32, i32* %q, i32 -1
- %scevgep3 = getelementptr i32, i32* %p, i32 -1
+ %scevgep = getelementptr i32, ptr %q, i32 -1
+ %scevgep3 = getelementptr i32, ptr %p, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %n)
br label %preheader
br label %while.body
while.body: ; preds = %while.body, %entry
- %lsr.iv4 = phi i32* [ %scevgep5, %while.body ], [ %scevgep3, %preheader ]
- %lsr.iv = phi i32* [ %scevgep1, %while.body ], [ %scevgep, %preheader ]
+ %lsr.iv4 = phi ptr [ %scevgep5, %while.body ], [ %scevgep3, %preheader ]
+ %lsr.iv = phi ptr [ %scevgep1, %while.body ], [ %scevgep, %preheader ]
%0 = phi i32 [ %start, %preheader ], [ %2, %while.body ]
- %scevgep6 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep2 = getelementptr i32, i32* %lsr.iv4, i32 1
- %1 = load i32, i32* %scevgep6, align 4
- store i32 %1, i32* %scevgep2, align 4
- %scevgep1 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep5 = getelementptr i32, i32* %lsr.iv4, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep2 = getelementptr i32, ptr %lsr.iv4, i32 1
+ %1 = load i32, ptr %scevgep6, align 4
+ store i32 %1, ptr %scevgep2, align 4
+ %scevgep1 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i32, ptr %lsr.iv4, i32 1
%2 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%3 = icmp ne i32 %2, 0
br i1 %3, label %while.body, label %while.end
# RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve -run-pass=arm-low-overhead-loops %s -o - | FileCheck %s
--- |
- define arm_aapcs_vfpcc void @test_vqrshruntq_n_s32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c, i32 %elts, i32 %iters) {
+ define arm_aapcs_vfpcc void @test_vqrshruntq_n_s32(ptr %a, ptr %b, ptr %c, i32 %elts, i32 %iters) {
entry:
%cmp = icmp slt i32 %elts, 1
br i1 %cmp, label %exit, label %loop.ph
loop.body: ; preds = %loop.body, %loop.ph
%lsr.iv = phi i32 [ %lsr.iv.next, %loop.body ], [ %start, %loop.ph ]
%count = phi i32 [ %elts, %loop.ph ], [ %elts.rem, %loop.body ]
- %addr.a = phi <4 x i32>* [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
- %addr.b = phi <4 x i32>* [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
- %addr.c = phi <4 x i32>* [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
+ %addr.a = phi ptr [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
+ %addr.b = phi ptr [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
+ %addr.c = phi ptr [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
%pred = call <4 x i1> @llvm.arm.mve.vctp32(i32 %count)
%elts.rem = sub i32 %count, 4
- %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
- %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
%bitcast.a = bitcast <4 x i32> %masked.load.a to <8 x i16>
%shrn = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> %bitcast.a, <4 x i32> %masked.load.b, i32 3, i32 1, i32 0, i32 1, i32 0, i32 1)
%bitcast = bitcast <8 x i16> %shrn to <4 x i32>
- call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %bitcast, <4 x i32>* %addr.c, i32 4, <4 x i1> %pred)
- %addr.a.next = getelementptr <4 x i32>, <4 x i32>* %addr.a, i32 1
- %addr.b.next = getelementptr <4 x i32>, <4 x i32>* %addr.b, i32 1
- %addr.c.next = getelementptr <4 x i32>, <4 x i32>* %addr.c, i32 1
+ call void @llvm.masked.store.v4i32.p0(<4 x i32> %bitcast, ptr %addr.c, i32 4, <4 x i1> %pred)
+ %addr.a.next = getelementptr <4 x i32>, ptr %addr.a, i32 1
+ %addr.b.next = getelementptr <4 x i32>, ptr %addr.b, i32 1
+ %addr.c.next = getelementptr <4 x i32>, ptr %addr.c, i32 1
%loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%end = icmp ne i32 %loop.dec, 0
%lsr.iv.next = add i32 %lsr.iv, -1
ret void
}
- define arm_aapcs_vfpcc void @test_vqrshruntq_n_s16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c, i32 %elts, i32 %iters) {
+ define arm_aapcs_vfpcc void @test_vqrshruntq_n_s16(ptr %a, ptr %b, ptr %c, i32 %elts, i32 %iters) {
entry:
%cmp = icmp slt i32 %elts, 1
br i1 %cmp, label %exit, label %loop.ph
loop.body: ; preds = %loop.body, %loop.ph
%lsr.iv = phi i32 [ %lsr.iv.next, %loop.body ], [ %start, %loop.ph ]
%count = phi i32 [ %elts, %loop.ph ], [ %elts.rem, %loop.body ]
- %addr.a = phi <8 x i16>* [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
- %addr.b = phi <8 x i16>* [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
- %addr.c = phi <8 x i16>* [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
+ %addr.a = phi ptr [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
+ %addr.b = phi ptr [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
+ %addr.c = phi ptr [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
%pred = call <8 x i1> @llvm.arm.mve.vctp16(i32 %count)
%elts.rem = sub i32 %count, 8
- %masked.load.a = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %addr.a, i32 2, <8 x i1> %pred, <8 x i16> undef)
- %masked.load.b = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %addr.b, i32 2, <8 x i1> %pred, <8 x i16> undef)
+ %masked.load.a = call <8 x i16> @llvm.masked.load.v8i16.p0(ptr %addr.a, i32 2, <8 x i1> %pred, <8 x i16> undef)
+ %masked.load.b = call <8 x i16> @llvm.masked.load.v8i16.p0(ptr %addr.b, i32 2, <8 x i1> %pred, <8 x i16> undef)
%bitcast.a = bitcast <8 x i16> %masked.load.a to <16 x i8>
%shrn = call <16 x i8> @llvm.arm.mve.vshrn.v16i8.v8i16(<16 x i8> %bitcast.a, <8 x i16> %masked.load.b, i32 1, i32 1, i32 0, i32 1, i32 0, i32 1)
%bitcast = bitcast <16 x i8> %shrn to <8 x i16>
- call void @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %bitcast, <8 x i16>* %addr.c, i32 2, <8 x i1> %pred)
- %addr.a.next = getelementptr <8 x i16>, <8 x i16>* %addr.b, i32 1
- %addr.b.next = getelementptr <8 x i16>, <8 x i16>* %addr.b, i32 1
- %addr.c.next = getelementptr <8 x i16>, <8 x i16>* %addr.c, i32 1
+ call void @llvm.masked.store.v8i16.p0(<8 x i16> %bitcast, ptr %addr.c, i32 2, <8 x i1> %pred)
+ %addr.a.next = getelementptr <8 x i16>, ptr %addr.b, i32 1
+ %addr.b.next = getelementptr <8 x i16>, ptr %addr.b, i32 1
+ %addr.c.next = getelementptr <8 x i16>, ptr %addr.c, i32 1
%loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%end = icmp ne i32 %loop.dec, 0
%lsr.iv.next = add i32 %lsr.iv, -1
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
declare <4 x i1> @llvm.arm.mve.vctp32(i32)
- declare <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>*, i32 immarg, <4 x i1>, <4 x i32>)
- declare void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>, <4 x i32>*, i32 immarg, <4 x i1>)
+ declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>)
+ declare void @llvm.masked.store.v4i32.p0(<4 x i32>, ptr, i32 immarg, <4 x i1>)
declare <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16>, <4 x i32>, i32, i32, i32, i32, i32, i32)
declare <8 x i1> @llvm.arm.mve.vctp16(i32)
- declare <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>*, i32 immarg, <8 x i1>, <8 x i16>)
- declare void @llvm.masked.store.v8i16.p0v8i16(<8 x i16>, <8 x i16>*, i32 immarg, <8 x i1>)
+ declare <8 x i16> @llvm.masked.load.v8i16.p0(ptr, i32 immarg, <8 x i1>, <8 x i16>)
+ declare void @llvm.masked.store.v8i16.p0(<8 x i16>, ptr, i32 immarg, <8 x i1>)
declare <16 x i8> @llvm.arm.mve.vshrn.v16i8.v8i16(<16 x i8>, <8 x i16>, i32, i32, i32, i32, i32, i32)
...
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define dso_local arm_aapcscc void @size_limit(i32* nocapture %a, i32* nocapture readonly %b, i32* nocapture readonly %c, i32 %N) {
+ define dso_local arm_aapcscc void @size_limit(ptr nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) {
entry:
%cmp8 = icmp eq i32 %N, 0
br i1 %cmp8, label %for.cond.cleanup, label %for.body.preheader
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr i32, i32* %a, i32 -1
- %scevgep4 = getelementptr i32, i32* %c, i32 -1
- %scevgep8 = getelementptr i32, i32* %b, i32 -1
+ %scevgep = getelementptr i32, ptr %a, i32 -1
+ %scevgep4 = getelementptr i32, ptr %c, i32 -1
+ %scevgep8 = getelementptr i32, ptr %b, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %N)
br label %for.body
ret void
for.body: ; preds = %for.body, %for.body.preheader
- %lsr.iv9 = phi i32* [ %scevgep8, %for.body.preheader ], [ %scevgep10, %for.body ]
- %lsr.iv5 = phi i32* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi i32* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv9 = phi ptr [ %scevgep8, %for.body.preheader ], [ %scevgep10, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%0 = phi i32 [ %start, %for.body.preheader ], [ %3, %for.body ]
%size = call i32 @llvm.arm.space(i32 4070, i32 undef)
- %scevgep3 = getelementptr i32, i32* %lsr.iv9, i32 1
- %1 = load i32, i32* %scevgep3, align 4
- %scevgep7 = getelementptr i32, i32* %lsr.iv5, i32 1
- %2 = load i32, i32* %scevgep7, align 4
+ %scevgep3 = getelementptr i32, ptr %lsr.iv9, i32 1
+ %1 = load i32, ptr %scevgep3, align 4
+ %scevgep7 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %2 = load i32, ptr %scevgep7, align 4
%mul = mul nsw i32 %2, %1
- %scevgep11 = getelementptr i32, i32* %lsr.iv1, i32 1
- store i32 %mul, i32* %scevgep11, align 4
- %scevgep2 = getelementptr i32, i32* %lsr.iv1, i32 1
- %scevgep6 = getelementptr i32, i32* %lsr.iv5, i32 1
- %scevgep10 = getelementptr i32, i32* %lsr.iv9, i32 1
+ %scevgep11 = getelementptr i32, ptr %lsr.iv1, i32 1
+ store i32 %mul, ptr %scevgep11, align 4
+ %scevgep2 = getelementptr i32, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %scevgep10 = getelementptr i32, ptr %lsr.iv9, i32 1
%3 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%4 = icmp ne i32 %3, 0
br i1 %4, label %for.body, label %for.cond.cleanup
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #1
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
attributes #1 = { noduplicate nounwind }
--- |
%struct.arm_2d_size_t = type { i16, i16 }
- define void @none(i16* noalias nocapture %phwTargetBase, i16 signext %iTargetStride, %struct.arm_2d_size_t* noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
+ define void @none(ptr noalias nocapture %phwTargetBase, i16 signext %iTargetStride, ptr noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
unreachable
}
- define void @copyin(i16* noalias nocapture %phwTargetBase, i16 signext %iTargetStride, %struct.arm_2d_size_t* noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
+ define void @copyin(ptr noalias nocapture %phwTargetBase, i16 signext %iTargetStride, ptr noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
unreachable
}
- define void @copyout(i16* noalias nocapture %phwTargetBase, i16 signext %iTargetStride, %struct.arm_2d_size_t* noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
+ define void @copyout(ptr noalias nocapture %phwTargetBase, i16 signext %iTargetStride, ptr noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
unreachable
}
...
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define dso_local arm_aapcscc i32 @search(i8* nocapture readonly %c, i32 %N) {
+ define dso_local arm_aapcscc i32 @search(ptr nocapture readonly %c, i32 %N) {
entry:
%cmp11 = icmp eq i32 %N, 0
br i1 %cmp11, label %for.cond.cleanup, label %for.body.preheader
ret i32 %sub
for.body: ; preds = %for.inc, %for.body.preheader
- %lsr.iv1 = phi i8* [ %c, %for.body.preheader ], [ %scevgep, %for.inc ]
+ %lsr.iv1 = phi ptr [ %c, %for.body.preheader ], [ %scevgep, %for.inc ]
%spaces.013 = phi i32 [ %spaces.1, %for.inc ], [ 0, %for.body.preheader ]
%found.012 = phi i32 [ %found.1, %for.inc ], [ 0, %for.body.preheader ]
%0 = phi i32 [ %start, %for.body.preheader ], [ %3, %for.inc ]
- %1 = load i8, i8* %lsr.iv1, align 1
+ %1 = load i8, ptr %lsr.iv1, align 1
%2 = zext i8 %1 to i32
switch i32 %2, label %for.inc [
i32 108, label %sw.bb
for.inc: ; preds = %sw.bb1, %sw.bb, %for.body
%found.1 = phi i32 [ %found.012, %for.body ], [ %found.012, %sw.bb1 ], [ %inc, %sw.bb ]
%spaces.1 = phi i32 [ %spaces.013, %for.body ], [ %inc2, %sw.bb1 ], [ %spaces.013, %sw.bb ]
- %scevgep = getelementptr i8, i8* %lsr.iv1, i32 1
+ %scevgep = getelementptr i8, ptr %lsr.iv1, i32 1
%3 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%4 = icmp ne i32 %3, 0
br i1 %4, label %for.body, label %for.cond.cleanup
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { noduplicate nounwind }
attributes #1 = { nounwind }
# Check that subs isn't used during the revert because there's a def after LoopDec.
--- |
- define i32 @do_copy(i32 %n, i32* nocapture %p, i32* nocapture readonly %q) {
+ define i32 @do_copy(i32 %n, ptr nocapture %p, ptr nocapture readonly %q) {
entry:
- %scevgep = getelementptr i32, i32* %q, i32 -1
- %scevgep3 = getelementptr i32, i32* %p, i32 -1
+ %scevgep = getelementptr i32, ptr %q, i32 -1
+ %scevgep3 = getelementptr i32, ptr %p, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %n)
%limit = lshr i32 %n, 1
br label %while.body
while.body: ; preds = %while.body, %entry
- %lsr.iv4 = phi i32* [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
- %lsr.iv = phi i32* [ %scevgep1, %while.body ], [ %scevgep, %entry ]
+ %lsr.iv4 = phi ptr [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
+ %lsr.iv = phi ptr [ %scevgep1, %while.body ], [ %scevgep, %entry ]
%tmp = phi i32 [ %start, %entry ], [ %tmp2, %while.body ]
- %scevgep7 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep4 = getelementptr i32, i32* %lsr.iv4, i32 1
- %tmp1 = load i32, i32* %scevgep7, align 4
+ %scevgep7 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep4 = getelementptr i32, ptr %lsr.iv4, i32 1
+ %tmp1 = load i32, ptr %scevgep7, align 4
%tmp2 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %tmp, i32 1)
%half = lshr i32 %tmp1, 1
%cmp = icmp ult i32 %tmp, %limit
%res = select i1 %cmp, i32 %tmp1, i32 %half
- store i32 %res, i32* %scevgep4, align 4
- %scevgep1 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep5 = getelementptr i32, i32* %lsr.iv4, i32 1
+ store i32 %res, ptr %scevgep4, align 4
+ %scevgep1 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i32, ptr %lsr.iv4, i32 1
%tmp3 = icmp ne i32 %tmp2, 0
br i1 %tmp3, label %while.body, label %while.end
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { noduplicate nounwind }
attributes #1 = { nounwind }
# Check that subs isn't used during the revert because there's a cpsr use after it.
--- |
- define i32 @do_copy(i32 %n, i32* nocapture %p, i32* nocapture readonly %q) {
+ define i32 @do_copy(i32 %n, ptr nocapture %p, ptr nocapture readonly %q) {
entry:
- %scevgep = getelementptr i32, i32* %q, i32 -1
- %scevgep3 = getelementptr i32, i32* %p, i32 -1
+ %scevgep = getelementptr i32, ptr %q, i32 -1
+ %scevgep3 = getelementptr i32, ptr %p, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %n)
%limit = lshr i32 %n, 1
br label %while.body
while.body: ; preds = %while.body, %entry
- %lsr.iv4 = phi i32* [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
- %lsr.iv = phi i32* [ %scevgep1, %while.body ], [ %scevgep, %entry ]
+ %lsr.iv4 = phi ptr [ %scevgep5, %while.body ], [ %scevgep3, %entry ]
+ %lsr.iv = phi ptr [ %scevgep1, %while.body ], [ %scevgep, %entry ]
%tmp = phi i32 [ %start, %entry ], [ %tmp2, %while.body ]
- %scevgep7 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep4 = getelementptr i32, i32* %lsr.iv4, i32 1
- %tmp1 = load i32, i32* %scevgep7, align 4
+ %scevgep7 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep4 = getelementptr i32, ptr %lsr.iv4, i32 1
+ %tmp1 = load i32, ptr %scevgep7, align 4
%tmp2 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %tmp, i32 1)
%half = lshr i32 %tmp1, 1
%cmp = icmp ult i32 %tmp, %limit
%res = select i1 %cmp, i32 %tmp1, i32 %half
- store i32 %res, i32* %scevgep4, align 4
- %scevgep1 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep5 = getelementptr i32, i32* %lsr.iv4, i32 1
+ store i32 %res, ptr %scevgep4, align 4
+ %scevgep1 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i32, ptr %lsr.iv4, i32 1
%tmp3 = icmp ne i32 %tmp2, 0
br i1 %tmp3, label %while.body, label %while.end
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32) #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { noduplicate nounwind }
attributes #1 = { nounwind }
# RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve -run-pass=arm-low-overhead-loops %s -o - | FileCheck %s
--- |
- define arm_aapcs_vfpcc void @test_vmvn(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c, i32 %elts, i32 %iters) #0 {
+ define arm_aapcs_vfpcc void @test_vmvn(ptr %a, ptr %b, ptr %c, i32 %elts, i32 %iters) #0 {
entry:
%cmp = icmp slt i32 %elts, 1
br i1 %cmp, label %exit, label %loop.ph
loop.body: ; preds = %loop.body, %loop.ph
%lsr.iv = phi i32 [ %lsr.iv.next, %loop.body ], [ %start, %loop.ph ]
%count = phi i32 [ %elts, %loop.ph ], [ %elts.rem, %loop.body ]
- %addr.a = phi <4 x i32>* [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
- %addr.b = phi <4 x i32>* [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
- %addr.c = phi <4 x i32>* [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
+ %addr.a = phi ptr [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
+ %addr.b = phi ptr [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
+ %addr.c = phi ptr [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
%pred = call <4 x i1> @llvm.arm.mve.vctp32(i32 %count)
%elts.rem = sub i32 %count, 4
- %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
- %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
%not = xor <4 x i32> %masked.load.b, <i32 -1, i32 -1, i32 -1, i32 -1>
%bitcast.a = bitcast <4 x i32> %masked.load.a to <8 x i16>
%shrn = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> %bitcast.a, <4 x i32> %not, i32 15, i32 1, i32 0, i32 0, i32 0, i32 0)
%bitcast = bitcast <8 x i16> %shrn to <4 x i32>
- call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %bitcast, <4 x i32>* %addr.c, i32 4, <4 x i1> %pred)
- %addr.a.next = getelementptr <4 x i32>, <4 x i32>* %addr.a, i32 1
- %addr.b.next = getelementptr <4 x i32>, <4 x i32>* %addr.b, i32 1
- %addr.c.next = getelementptr <4 x i32>, <4 x i32>* %addr.c, i32 1
+ call void @llvm.masked.store.v4i32.p0(<4 x i32> %bitcast, ptr %addr.c, i32 4, <4 x i1> %pred)
+ %addr.a.next = getelementptr <4 x i32>, ptr %addr.a, i32 1
+ %addr.b.next = getelementptr <4 x i32>, ptr %addr.b, i32 1
+ %addr.c.next = getelementptr <4 x i32>, ptr %addr.c, i32 1
%loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%end = icmp ne i32 %loop.dec, 0
%lsr.iv.next = add i32 %lsr.iv, -1
ret void
}
- define arm_aapcs_vfpcc void @test_vorn(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c, i32 %elts, i32 %iters) #0 {
+ define arm_aapcs_vfpcc void @test_vorn(ptr %a, ptr %b, ptr %c, i32 %elts, i32 %iters) #0 {
entry:
%cmp = icmp slt i32 %elts, 1
br i1 %cmp, label %exit, label %loop.ph
loop.body: ; preds = %loop.body, %loop.ph
%lsr.iv = phi i32 [ %lsr.iv.next, %loop.body ], [ %start, %loop.ph ]
%count = phi i32 [ %elts, %loop.ph ], [ %elts.rem, %loop.body ]
- %addr.a = phi <4 x i32>* [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
- %addr.b = phi <4 x i32>* [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
- %addr.c = phi <4 x i32>* [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
+ %addr.a = phi ptr [ %a, %loop.ph ], [ %addr.a.next, %loop.body ]
+ %addr.b = phi ptr [ %b, %loop.ph ], [ %addr.b.next, %loop.body ]
+ %addr.c = phi ptr [ %c, %loop.ph ], [ %addr.c.next, %loop.body ]
%pred = call <4 x i1> @llvm.arm.mve.vctp32(i32 %count)
%elts.rem = sub i32 %count, 4
- %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
- %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.a = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.a, i32 4, <4 x i1> %pred, <4 x i32> undef)
+ %masked.load.b = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %addr.b, i32 4, <4 x i1> %pred, <4 x i32> undef)
%not = xor <4 x i32> %masked.load.b, <i32 -1, i32 -1, i32 -1, i32 -1>
%or = or <4 x i32> %not, %masked.load.a
%bitcast.a = bitcast <4 x i32> %masked.load.a to <8 x i16>
%shrn = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> %bitcast.a, <4 x i32> %or, i32 3, i32 1, i32 0, i32 1, i32 0, i32 1)
%bitcast = bitcast <8 x i16> %shrn to <4 x i32>
- call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %bitcast, <4 x i32>* %addr.c, i32 4, <4 x i1> %pred)
- %addr.a.next = getelementptr <4 x i32>, <4 x i32>* %addr.a, i32 1
- %addr.b.next = getelementptr <4 x i32>, <4 x i32>* %addr.b, i32 1
- %addr.c.next = getelementptr <4 x i32>, <4 x i32>* %addr.c, i32 1
+ call void @llvm.masked.store.v4i32.p0(<4 x i32> %bitcast, ptr %addr.c, i32 4, <4 x i1> %pred)
+ %addr.a.next = getelementptr <4 x i32>, ptr %addr.a, i32 1
+ %addr.b.next = getelementptr <4 x i32>, ptr %addr.b, i32 1
+ %addr.c.next = getelementptr <4 x i32>, ptr %addr.c, i32 1
%loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv, i32 1)
%end = icmp ne i32 %loop.dec, 0
%lsr.iv.next = add i32 %lsr.iv, -1
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
declare <4 x i1> @llvm.arm.mve.vctp32(i32)
- declare <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>*, i32 immarg, <4 x i1>, <4 x i32>)
- declare void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>, <4 x i32>*, i32 immarg, <4 x i1>)
+ declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>)
+ declare void @llvm.masked.store.v4i32.p0(<4 x i32>, ptr, i32 immarg, <4 x i1>)
declare <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16>, <4 x i32>, i32, i32, i32, i32, i32, i32)
...
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define i32 @do_copy(i32 %n, i32* nocapture %p, i32* nocapture readonly %q) {
+ define i32 @do_copy(i32 %n, ptr nocapture %p, ptr nocapture readonly %q) {
entry:
- %scevgep = getelementptr i32, i32* %q, i32 -1
- %scevgep3 = getelementptr i32, i32* %p, i32 -1
+ %scevgep = getelementptr i32, ptr %q, i32 -1
+ %scevgep3 = getelementptr i32, ptr %p, i32 -1
%start = call i32 @llvm.start.loop.iterations.i32(i32 %n)
br label %preheader
br label %while.body
while.body: ; preds = %while.body, %entry
- %lsr.iv4 = phi i32* [ %scevgep5, %while.body ], [ %scevgep3, %preheader ]
- %lsr.iv = phi i32* [ %scevgep1, %while.body ], [ %scevgep, %preheader ]
+ %lsr.iv4 = phi ptr [ %scevgep5, %while.body ], [ %scevgep3, %preheader ]
+ %lsr.iv = phi ptr [ %scevgep1, %while.body ], [ %scevgep, %preheader ]
%0 = phi i32 [ %start, %preheader ], [ %2, %while.body ]
- %scevgep6 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep2 = getelementptr i32, i32* %lsr.iv4, i32 1
- %1 = load i32, i32* %scevgep6, align 4
- store i32 %1, i32* %scevgep2, align 4
- %scevgep1 = getelementptr i32, i32* %lsr.iv, i32 1
- %scevgep5 = getelementptr i32, i32* %lsr.iv4, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep2 = getelementptr i32, ptr %lsr.iv4, i32 1
+ %1 = load i32, ptr %scevgep6, align 4
+ store i32 %1, ptr %scevgep2, align 4
+ %scevgep1 = getelementptr i32, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i32, ptr %lsr.iv4, i32 1
%2 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%3 = icmp ne i32 %2, 0
br i1 %3, label %while.body, label %while.end
@_ZL3arr = internal global [10 x i32] [i32 1, i32 2, i32 3, i32 5, i32 5, i32 5, i32 -2, i32 0, i32 -8, i32 -1], align 4
@.str = private unnamed_addr constant [5 x i8] c"%d, \00", align 1
- define arm_aapcs_vfpcc void @vpt_block(i32* nocapture %A, i32 %n, i32 %x) {
+ define arm_aapcs_vfpcc void @vpt_block(ptr nocapture %A, i32 %n, i32 %x) {
entry:
%cmp9 = icmp sgt i32 %n, 0
%0 = add i32 %n, 3
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
- %lsr.iv1 = phi i32* [ %scevgep, %vector.body ], [ %A, %vector.ph ]
+ %lsr.iv1 = phi ptr [ %scevgep, %vector.body ], [ %A, %vector.ph ]
%6 = phi i32 [ %start, %vector.ph ], [ %18, %vector.body ]
%7 = phi i32 [ %n, %vector.ph ], [ %9, %vector.body ]
- %lsr.iv12 = bitcast i32* %lsr.iv1 to <4 x i32>*
%8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %7)
%9 = sub i32 %7, 4
- %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %lsr.iv12, i32 4, <4 x i1> %8, <4 x i32> undef)
+ %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv1, i32 4, <4 x i1> %8, <4 x i32> undef)
%10 = insertelement <4 x i32> undef, i32 %x, i32 0
%11 = shufflevector <4 x i32> %10, <4 x i32> undef, <4 x i32> zeroinitializer
%12 = icmp slt <4 x i32> %wide.masked.load, %11
%15 = icmp sgt <4 x i32> %wide.masked.load, %14
%16 = and <4 x i1> %12, %15
%17 = and <4 x i1> %16, %8
- call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> zeroinitializer, <4 x i32>* %lsr.iv12, i32 4, <4 x i1> %17)
- %scevgep = getelementptr i32, i32* %lsr.iv1, i32 4
+ call void @llvm.masked.store.v4i32.p0(<4 x i32> zeroinitializer, ptr %lsr.iv1, i32 4, <4 x i1> %17)
+ %scevgep = getelementptr i32, ptr %lsr.iv1, i32 4
%18 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %6, i32 1)
%19 = icmp ne i32 %18, 0
br i1 %19, label %vector.body, label %for.cond.cleanup
ret void
}
- define arm_aapcs_vfpcc void @different_vcpt_reaching_def(i32* nocapture %A, i32 %n, i32 %x) {
+ define arm_aapcs_vfpcc void @different_vcpt_reaching_def(ptr nocapture %A, i32 %n, i32 %x) {
; Intentionally left blank - see MIR sequence below.
entry:
unreachable
unreachable
}
- define arm_aapcs_vfpcc void @different_vcpt_operand(i32* nocapture %A, i32 %n, i32 %x) {
+ define arm_aapcs_vfpcc void @different_vcpt_operand(ptr nocapture %A, i32 %n, i32 %x) {
; Intentionally left blank - see MIR sequence below.
entry:
unreachable
unreachable
}
- define arm_aapcs_vfpcc void @else_vcpt(i32* nocapture %data, i32 %N, i32 %T) {
+ define arm_aapcs_vfpcc void @else_vcpt(ptr nocapture %data, i32 %N, i32 %T) {
entry:
%cmp9 = icmp sgt i32 %N, 0
%0 = add i32 %N, 3
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
- %lsr.iv1 = phi i32* [ %scevgep, %vector.body ], [ %data, %vector.ph ]
+ %lsr.iv1 = phi ptr [ %scevgep, %vector.body ], [ %data, %vector.ph ]
%6 = phi i32 [ %start, %vector.ph ], [ %18, %vector.body ]
%7 = phi i32 [ %N, %vector.ph ], [ %9, %vector.body ]
- %lsr.iv12 = bitcast i32* %lsr.iv1 to <4 x i32>*
%8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %7)
%9 = sub i32 %7, 4
- %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %lsr.iv12, i32 4, <4 x i1> %8, <4 x i32> undef)
+ %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv1, i32 4, <4 x i1> %8, <4 x i32> undef)
%10 = insertelement <4 x i32> undef, i32 %T, i32 0
%11 = shufflevector <4 x i32> %10, <4 x i32> undef, <4 x i32> zeroinitializer
%12 = icmp slt <4 x i32> %wide.masked.load, %11
%15 = icmp sgt <4 x i32> %wide.masked.load, %14
%16 = or <4 x i1> %12, %15
%17 = and <4 x i1> %16, %8
- call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> zeroinitializer, <4 x i32>* %lsr.iv12, i32 4, <4 x i1> %17)
- %scevgep = getelementptr i32, i32* %lsr.iv1, i32 4
+ call void @llvm.masked.store.v4i32.p0(<4 x i32> zeroinitializer, ptr %lsr.iv1, i32 4, <4 x i1> %17)
+ %scevgep = getelementptr i32, ptr %lsr.iv1, i32 4
%18 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %6, i32 1)
%19 = icmp ne i32 %18, 0
br i1 %19, label %vector.body, label %for.cond.cleanup
ret void
}
- define arm_aapcs_vfpcc void @loop_invariant_vpt_operands(i32* nocapture %A, i32 %n, i32 %x) {
+ define arm_aapcs_vfpcc void @loop_invariant_vpt_operands(ptr nocapture %A, i32 %n, i32 %x) {
; Intentionally left blank - see MIR sequence below.
entry:
unreachable
unreachable
}
- define arm_aapcs_vfpcc void @vctp_before_vpt(i32* nocapture %A, i32 %n, i32 %x) {
+ define arm_aapcs_vfpcc void @vctp_before_vpt(ptr nocapture %A, i32 %n, i32 %x) {
; Intentionally left blank - see MIR sequence below.
entry:
unreachable
unreachable
}
- define arm_aapcs_vfpcc void @vpt_load_vctp_store(i32* nocapture %A, i32 %n, i32 %x) {
+ define arm_aapcs_vfpcc void @vpt_load_vctp_store(ptr nocapture %A, i32 %n, i32 %x) {
; Intentionally left blank - see MIR sequence below.
entry:
unreachable
unreachable
}
- declare <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>*, i32 immarg, <4 x i1>, <4 x i32>)
- declare void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>, <4 x i32>*, i32 immarg, <4 x i1>)
+ declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>)
+ declare void @llvm.masked.store.v4i32.p0(<4 x i32>, ptr, i32 immarg, <4 x i1>)
declare i32 @llvm.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
declare <4 x i1> @llvm.arm.mve.vctp32(i32)
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define void @size_limit(i32* nocapture %a, i32* nocapture readonly %b, i32* nocapture readonly %c, i32 %N) #0 {
+ define void @size_limit(ptr nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) #0 {
entry:
br label %while
ret void
for.body.preheader: ; preds = %while
- %scevgep = getelementptr i32, i32* %a, i32 -1
- %scevgep4 = getelementptr i32, i32* %c, i32 -1
- %scevgep8 = getelementptr i32, i32* %b, i32 -1
+ %scevgep = getelementptr i32, ptr %a, i32 -1
+ %scevgep4 = getelementptr i32, ptr %c, i32 -1
+ %scevgep8 = getelementptr i32, ptr %b, i32 -1
br label %for.body
for.body: ; preds = %for.body, %for.body.preheader
- %lsr.iv9 = phi i32* [ %scevgep8, %for.body.preheader ], [ %scevgep10, %for.body ]
- %lsr.iv5 = phi i32* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi i32* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv9 = phi ptr [ %scevgep8, %for.body.preheader ], [ %scevgep10, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%0 = phi i32 [ %N, %for.body.preheader ], [ %3, %for.body ]
- %scevgep11 = getelementptr i32, i32* %lsr.iv9, i32 1
- %1 = load i32, i32* %scevgep11, align 4
- %scevgep7 = getelementptr i32, i32* %lsr.iv5, i32 1
- %2 = load i32, i32* %scevgep7, align 4
+ %scevgep11 = getelementptr i32, ptr %lsr.iv9, i32 1
+ %1 = load i32, ptr %scevgep11, align 4
+ %scevgep7 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %2 = load i32, ptr %scevgep7, align 4
%mul = mul nsw i32 %2, %1
- %scevgep3 = getelementptr i32, i32* %lsr.iv1, i32 1
- store i32 %mul, i32* %scevgep3, align 4
- %scevgep2 = getelementptr i32, i32* %lsr.iv1, i32 1
- %scevgep6 = getelementptr i32, i32* %lsr.iv5, i32 1
- %scevgep10 = getelementptr i32, i32* %lsr.iv9, i32 1
+ %scevgep3 = getelementptr i32, ptr %lsr.iv1, i32 1
+ store i32 %mul, ptr %scevgep3, align 4
+ %scevgep2 = getelementptr i32, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr i32, ptr %lsr.iv5, i32 1
+ %scevgep10 = getelementptr i32, ptr %lsr.iv9, i32 1
%3 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %0, i32 1)
%4 = icmp ne i32 %3, 0
br i1 %4, label %for.body, label %for.cond.cleanup
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main"
- define dso_local arm_aapcscc void @copy(i16* nocapture %a, i16* nocapture readonly %b, i32 %N) {
+ define dso_local arm_aapcscc void @copy(ptr nocapture %a, ptr nocapture readonly %b, i32 %N) {
entry:
%0 = call i1 @llvm.test.set.loop.iterations.i32(i32 %N)
br i1 %0, label %while.body.preheader, label %while.end
while.body.preheader: ; preds = %entry
- %scevgep = getelementptr i16, i16* %a, i32 -1
- %scevgep3 = getelementptr i16, i16* %b, i32 -1
+ %scevgep = getelementptr i16, ptr %a, i32 -1
+ %scevgep3 = getelementptr i16, ptr %b, i32 -1
br label %while.body
while.body: ; preds = %while.body, %while.body.preheader
- %lsr.iv4 = phi i16* [ %scevgep3, %while.body.preheader ], [ %scevgep5, %while.body ]
- %lsr.iv = phi i16* [ %scevgep, %while.body.preheader ], [ %scevgep1, %while.body ]
+ %lsr.iv4 = phi ptr [ %scevgep3, %while.body.preheader ], [ %scevgep5, %while.body ]
+ %lsr.iv = phi ptr [ %scevgep, %while.body.preheader ], [ %scevgep1, %while.body ]
%1 = phi i32 [ %3, %while.body ], [ %N, %while.body.preheader ]
- %scevgep7 = getelementptr i16, i16* %lsr.iv, i32 1
- %scevgep4 = getelementptr i16, i16* %lsr.iv4, i32 1
- %2 = load i16, i16* %scevgep4, align 2
- store i16 %2, i16* %scevgep7, align 2
+ %scevgep7 = getelementptr i16, ptr %lsr.iv, i32 1
+ %scevgep4 = getelementptr i16, ptr %lsr.iv4, i32 1
+ %2 = load i16, ptr %scevgep4, align 2
+ store i16 %2, ptr %scevgep7, align 2
%3 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %1, i32 1)
%4 = icmp ne i32 %3, 0
- %scevgep1 = getelementptr i16, i16* %lsr.iv, i32 1
- %scevgep5 = getelementptr i16, i16* %lsr.iv4, i32 1
+ %scevgep1 = getelementptr i16, ptr %lsr.iv, i32 1
+ %scevgep5 = getelementptr i16, ptr %lsr.iv4, i32 1
br i1 %4, label %while.body, label %while.end
while.end: ; preds = %while.body, %entry
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main-none-eabi"
- define i32 @test(i64* nocapture %x, i32 %n, i64 %a, i32 %m) {
+ define i32 @test(ptr nocapture %x, i32 %n, i64 %a, i32 %m) {
entry:
%cmp.not = icmp eq i32 %n, 0
%0 = call { i32, i1 } @llvm.test.start.loop.iterations.i32(i32 %n)
if.then: ; preds = %entry
%conv = sext i32 %m to i64
%div = sdiv i64 %a, %conv
- %scevgep = getelementptr i64, i64* %x, i32 %m
+ %scevgep = getelementptr i64, ptr %x, i32 %m
br label %do.body
do.body: ; preds = %do.body, %if.then
- %lsr.iv = phi i64* [ %scevgep1, %do.body ], [ %scevgep, %if.then ]
+ %lsr.iv = phi ptr [ %scevgep1, %do.body ], [ %scevgep, %if.then ]
%3 = phi i32 [ %2, %if.then ], [ %4, %do.body ]
- store i64 %div, i64* %lsr.iv, align 8
- %scevgep1 = getelementptr i64, i64* %lsr.iv, i32 1
+ store i64 %div, ptr %lsr.iv, align 8
+ %scevgep1 = getelementptr i64, ptr %lsr.iv, i32 1
%4 = call i32 @llvm.loop.decrement.reg.i32(i32 %3, i32 1)
%5 = icmp ne i32 %4, 0
br i1 %5, label %do.body, label %if.end
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main-none-unknown-eabihf"
- define void @test_memset_preheader(i8* %x, i8* %y, i32 %n) {
+ define void @test_memset_preheader(ptr %x, ptr %y, i32 %n) {
entry:
%cmp6 = icmp ne i32 %n, 0
%0 = call { i32, i1 } @llvm.test.start.loop.iterations.i32(i32 %n)
br i1 %1, label %prehead, label %for.cond.cleanup
prehead: ; preds = %entry
- call void @llvm.memset.p0i8.i32(i8* align 1 %x, i8 0, i32 %n, i1 false)
+ call void @llvm.memset.p0.i32(ptr align 1 %x, i8 0, i32 %n, i1 false)
br label %for.body
for.body: ; preds = %for.body, %prehead
- %x.addr.08 = phi i8* [ %add.ptr, %for.body ], [ %x, %prehead ]
- %y.addr.07 = phi i8* [ %add.ptr1, %for.body ], [ %y, %prehead ]
+ %x.addr.08 = phi ptr [ %add.ptr, %for.body ], [ %x, %prehead ]
+ %y.addr.07 = phi ptr [ %add.ptr1, %for.body ], [ %y, %prehead ]
%3 = phi i32 [ %2, %prehead ], [ %4, %for.body ]
- %add.ptr = getelementptr inbounds i8, i8* %x.addr.08, i32 1
- %add.ptr1 = getelementptr inbounds i8, i8* %y.addr.07, i32 1
- %l = load i8, i8* %x.addr.08, align 1
- store i8 %l, i8* %y.addr.07, align 1
+ %add.ptr = getelementptr inbounds i8, ptr %x.addr.08, i32 1
+ %add.ptr1 = getelementptr inbounds i8, ptr %y.addr.07, i32 1
+ %l = load i8, ptr %x.addr.08, align 1
+ store i8 %l, ptr %y.addr.07, align 1
%4 = call i32 @llvm.loop.decrement.reg.i32(i32 %3, i32 1)
%5 = icmp ne i32 %4, 0
br i1 %5, label %for.body, label %for.cond.cleanup
ret void
}
- declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg)
+ declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1 immarg)
declare { i32, i1 } @llvm.test.start.loop.iterations.i32(i32)
declare i32 @llvm.loop.decrement.reg.i32(i32, i32)
# bb.1.bb42.i.
--- |
- declare noalias i8* @calloc(i32, i32)
+ declare noalias ptr @calloc(i32, i32)
- define internal i32 @test(i32 %argc, i8** nocapture %argv) {
+ define internal i32 @test(i32 %argc, ptr nocapture %argv) {
entry:
br label %bb42.i
br label %bb42.i
bb35.i:
- %1 = call noalias i8* @calloc(i32 20, i32 1)
+ %1 = call noalias ptr @calloc(i32 20, i32 1)
unreachable
bb37.i:
- %2 = call noalias i8* @calloc(i32 14, i32 1)
+ %2 = call noalias ptr @calloc(i32 14, i32 1)
unreachable
bb39.i:
- %3 = call noalias i8* @calloc(i32 17, i32 1)
+ %3 = call noalias ptr @calloc(i32 17, i32 1)
unreachable
bb42.i:
# RUN: llc -mtriple=thumbv7m-none-eabi -run-pass=arm-cp-islands -o - %s | FileCheck %s
--- |
- define i32* @test_simple(i32* %x, i32 %y) { ret i32* %x }
- define i32* @test_notfirst(i32* %x, i32 %y) { ret i32* %x }
- define i32* @test_redefined(i32* %x, i32 %y) { ret i32* %x }
- define i32* @test_notredefined(i32* %x, i32 %y) { ret i32* %x }
- define i32* @test_notcmp(i32* %x, i32 %y) { ret i32* %x }
- define i32* @test_killflag_1(i32* %x, i32 %y) { ret i32* %x }
- define i32* @test_killflag_2(i32* %x, i32 %y) { ret i32* %x }
- define i32* @test_cpsr(i32* %x, i32 %y) { ret i32* %x }
+ define ptr @test_simple(ptr %x, i32 %y) { ret ptr %x }
+ define ptr @test_notfirst(ptr %x, i32 %y) { ret ptr %x }
+ define ptr @test_redefined(ptr %x, i32 %y) { ret ptr %x }
+ define ptr @test_notredefined(ptr %x, i32 %y) { ret ptr %x }
+ define ptr @test_notcmp(ptr %x, i32 %y) { ret ptr %x }
+ define ptr @test_killflag_1(ptr %x, i32 %y) { ret ptr %x }
+ define ptr @test_killflag_2(ptr %x, i32 %y) { ret ptr %x }
+ define ptr @test_cpsr(ptr %x, i32 %y) { ret ptr %x }
declare dso_local i32 @c(i32 %x)
...
define dso_local i64 @f() #0 {
entry:
%a = alloca [10 x i64], align 8
- %arrayidx = getelementptr inbounds [10 x i64], [10 x i64]* %a, i32 0, i32 1
- store volatile i64 1, i64* %arrayidx, align 8
- %arrayidx1 = getelementptr inbounds [10 x i64], [10 x i64]* %a, i32 0, i32 1
- %0 = load volatile i64, i64* %arrayidx1, align 8
+ %arrayidx = getelementptr inbounds [10 x i64], ptr %a, i32 0, i32 1
+ store volatile i64 1, ptr %arrayidx, align 8
+ %arrayidx1 = getelementptr inbounds [10 x i64], ptr %a, i32 0, i32 1
+ %0 = load volatile i64, ptr %arrayidx1, align 8
ret i64 %0
}
define dso_local void @constraint_h() {
entry:
%i = alloca i32, align 4
- %0 = load i32, i32* %i, align 4
+ %0 = load i32, ptr %i, align 4
call void asm sideeffect "@ $0", "h,~{r12}"(i32 %0)
ret void
}
target triple = "thumbv7-unknown-linux-android16"
; Function Attrs: minsize nounwind optsize ssp uwtable
- define hidden zeroext i1 @branch_entry(i32* %command_set, i8* %requested_filename, i8** %filename_to_use) local_unnamed_addr #0 {
+ define hidden zeroext i1 @branch_entry(ptr %command_set, ptr %requested_filename, ptr %filename_to_use) local_unnamed_addr #0 {
entry:
- %0 = load i32, i32* %command_set, align 4
+ %0 = load i32, ptr %command_set, align 4
%and.i.i = and i32 %0, 128
%tobool.i.i.not = icmp eq i32 %and.i.i, 0
br i1 %tobool.i.i.not, label %land.end, label %land.rhs
land.rhs: ; preds = %entry
- %call1 = tail call zeroext i1 @branch_target(i8* %requested_filename, i8** %filename_to_use)
+ %call1 = tail call zeroext i1 @branch_target(ptr %requested_filename, ptr %filename_to_use)
ret i1 %call1
land.end: ; preds = %entry
}
; Function Attrs: minsize optsize
- declare zeroext i1 @branch_target(i8*, i8**) local_unnamed_addr #1
+ declare zeroext i1 @branch_target(ptr, ptr) local_unnamed_addr #1
attributes #0 = { minsize nounwind optsize ssp uwtable }
attributes #1 = { minsize optsize }
target triple = "thumbv7em-arm-none-eabi"
; Function Attrs: norecurse nounwind optsize readonly
- define dso_local i32 @test(i32* nocapture readonly %a, i32* nocapture readonly %b) local_unnamed_addr #0 {
+ define dso_local i32 @test(ptr nocapture readonly %a, ptr nocapture readonly %b) local_unnamed_addr #0 {
entry:
- %0 = load i32, i32* %a, align 4
+ %0 = load i32, ptr %a, align 4
%add = add nsw i32 %0, 10
- %1 = load i32, i32* %b, align 4
+ %1 = load i32, ptr %b, align 4
%add1 = add nsw i32 %1, 20
%mul = mul nsw i32 %add1, %add
ret i32 %mul
# RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve.fp -run-pass arm-prera-ldst-opt %s -o - -verify-machineinstrs | FileCheck %s
--- |
- define i32* @MVE_VLDRWU32(i32* %x) { unreachable }
- define i32* @MVE_VLDRHU16(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU8(i32* %x) { unreachable }
- define i32* @MVE_VLDRBS32(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU32(i32* %x) { unreachable }
- define i32* @MVE_VLDRHS32(i32* %x) { unreachable }
- define i32* @MVE_VLDRHU32(i32* %x) { unreachable }
- define i32* @MVE_VLDRBS16(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU16(i32* %x) { unreachable }
- define i32* @MVE_VSTRWU32(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRHU16(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRBU8(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRH32(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRB32(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRB16(i32* %x, <4 x i32> %y) { unreachable }
-
- define i32* @ld0ld4(i32* %x) { unreachable }
- define i32* @ld4ld0(i32* %x) { unreachable }
- define i32* @ld0ld4ld0(i32* %x) { unreachable }
- define i32* @ld4ld0ld4(i32* %x) { unreachable }
- define i32* @addload(i32* %x) { unreachable }
- define i32* @sub(i32* %x) { unreachable }
- define i32* @otherUse(i32* %x) { unreachable }
- define i32* @postincUse(i32* %x) { unreachable }
- define i32* @badScale(i32* %x) { unreachable }
- define i32* @badRange(i32* %x) { unreachable }
-
- define i32* @addUseOK(i32* %x) { unreachable }
- define i32* @addUseDom(i32* %x) { unreachable }
- define i32* @addUseKilled(i32* %x) { unreachable }
-
- define i32* @MVE_VLDRWU32_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRHU16_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU8_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRBS32_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU32_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRHS32_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRHU32_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRBS16_post(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU16_post(i32* %x) { unreachable }
- define i32* @MVE_VSTRWU32_post(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRHU16_post(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRBU8_post(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRH32_post(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRB32_post(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRB16_post(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VLDRWU32_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRHU16_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU8_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRBS32_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU32_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRHS32_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRHU32_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRBS16_pre(i32* %x) { unreachable }
- define i32* @MVE_VLDRBU16_pre(i32* %x) { unreachable }
- define i32* @MVE_VSTRWU32_pre(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRHU16_pre(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRBU8_pre(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRH32_pre(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRB32_pre(i32* %x, <4 x i32> %y) { unreachable }
- define i32* @MVE_VSTRB16_pre(i32* %x, <4 x i32> %y) { unreachable }
-
- define i32* @multiple2(i32* %x) { unreachable }
- define i32* @multiple3(i32* %x) { unreachable }
- define i32* @multiple4(i32* %x) { unreachable }
- define i32* @badScale2(i32* %x) { unreachable }
- define i32* @badRange2(i32* %x) { unreachable }
- define i32* @regtype(i32* %x) { unreachable }
+ define ptr @MVE_VLDRWU32(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHU16(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU8(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBS32(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU32(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHS32(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHU32(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBS16(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU16(ptr %x) { unreachable }
+ define ptr @MVE_VSTRWU32(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRHU16(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRBU8(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRH32(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRB32(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRB16(ptr %x, <4 x i32> %y) { unreachable }
+
+ define ptr @ld0ld4(ptr %x) { unreachable }
+ define ptr @ld4ld0(ptr %x) { unreachable }
+ define ptr @ld0ld4ld0(ptr %x) { unreachable }
+ define ptr @ld4ld0ld4(ptr %x) { unreachable }
+ define ptr @addload(ptr %x) { unreachable }
+ define ptr @sub(ptr %x) { unreachable }
+ define ptr @otherUse(ptr %x) { unreachable }
+ define ptr @postincUse(ptr %x) { unreachable }
+ define ptr @badScale(ptr %x) { unreachable }
+ define ptr @badRange(ptr %x) { unreachable }
+
+ define ptr @addUseOK(ptr %x) { unreachable }
+ define ptr @addUseDom(ptr %x) { unreachable }
+ define ptr @addUseKilled(ptr %x) { unreachable }
+
+ define ptr @MVE_VLDRWU32_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHU16_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU8_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBS32_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU32_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHS32_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHU32_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBS16_post(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU16_post(ptr %x) { unreachable }
+ define ptr @MVE_VSTRWU32_post(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRHU16_post(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRBU8_post(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRH32_post(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRB32_post(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRB16_post(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VLDRWU32_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHU16_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU8_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBS32_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU32_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHS32_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRHU32_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBS16_pre(ptr %x) { unreachable }
+ define ptr @MVE_VLDRBU16_pre(ptr %x) { unreachable }
+ define ptr @MVE_VSTRWU32_pre(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRHU16_pre(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRBU8_pre(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRH32_pre(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRB32_pre(ptr %x, <4 x i32> %y) { unreachable }
+ define ptr @MVE_VSTRB16_pre(ptr %x, <4 x i32> %y) { unreachable }
+
+ define ptr @multiple2(ptr %x) { unreachable }
+ define ptr @multiple3(ptr %x) { unreachable }
+ define ptr @multiple4(ptr %x) { unreachable }
+ define ptr @badScale2(ptr %x) { unreachable }
+ define ptr @badRange2(ptr %x) { unreachable }
+ define ptr @regtype(ptr %x) { unreachable }
...
---
target triple = "arm-arm-none-eabi"
; Function Attrs: argmemonly nofree nosync nounwind willreturn
- declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg)
+ declare void @llvm.memcpy.p0.p0.i32(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly
- declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg)
+ declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1 immarg)
- define void @test1(i32* noalias %X, i32* noalias readonly %Y, i32 %n) {
+ define void @test1(ptr noalias %X, ptr noalias readonly %Y, i32 %n) {
entry:
- %0 = bitcast i32* %X to i8*
- %1 = bitcast i32* %Y to i8*
- call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %0, i8* align 4 %1, i32 %n, i1 false)
+ call void @llvm.memcpy.p0.p0.i32(ptr align 4 %X, ptr align 4 %Y, i32 %n, i1 false)
ret void
}
- define void @test2(i32* noalias %X, i32* noalias readonly %Y, i32 %n) {
+ define void @test2(ptr noalias %X, ptr noalias readonly %Y, i32 %n) {
entry:
%cmp6 = icmp sgt i32 %n, 0
br i1 %cmp6, label %for.body.preheader, label %for.cond.cleanup
for.body.preheader: ; preds = %entry
- %X.bits = bitcast i32* %X to i8*
- %Y.bits = bitcast i32* %Y to i8*
- call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %X.bits, i8* align 4 %Y.bits, i32 %n, i1 false)
+ call void @llvm.memcpy.p0.p0.i32(ptr align 4 %X, ptr align 4 %Y, i32 %n, i1 false)
br label %for.cond.cleanup
for.cond.cleanup: ; preds = %for.body.preheader, %entry
ret void
}
- define void @test3(i32* nocapture %X, i8 zeroext %c, i32 %n) {
+ define void @test3(ptr nocapture %X, i8 zeroext %c, i32 %n) {
entry:
- %0 = bitcast i32* %X to i8*
- tail call void @llvm.memset.p0i8.i32(i8* align 4 %0, i8 %c, i32 %n, i1 false)
+ tail call void @llvm.memset.p0.i32(ptr align 4 %X, i8 %c, i32 %n, i1 false)
ret void
}
- define void @test4(i8* nocapture %X, i8 zeroext %c, i32 %n) {
+ define void @test4(ptr nocapture %X, i8 zeroext %c, i32 %n) {
entry:
%cmp4 = icmp sgt i32 %n, 0
br i1 %cmp4, label %for.body.preheader, label %for.cond.cleanup
for.body.preheader: ; preds = %entry
- call void @llvm.memset.p0i8.i32(i8* align 1 %X, i8 %c, i32 %n, i1 false)
+ call void @llvm.memset.p0.i32(ptr align 1 %X, i8 %c, i32 %n, i1 false)
br label %for.cond.cleanup
for.cond.cleanup: ; preds = %for.body.preheader, %entry
--- |
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main-arm-unknown-eabihf"
- define dso_local <4 x i32> @foo(<4 x i32>* %src, <4 x i32>* %src2, <4 x i32>* %src3, <4 x i32>* %dest, <4 x i32>* %dest2, <4 x i32>* %dest3, <4 x float> %a1) local_unnamed_addr #0 {
+ define dso_local <4 x i32> @foo(ptr %src, ptr %src2, ptr %src3, ptr %dest, ptr %dest2, ptr %dest3, <4 x float> %a1) local_unnamed_addr #0 {
entry:
%c = fcmp one <4 x float> %a1, zeroinitializer
- %w = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %src, i32 4, <4 x i1> %c, <4 x i32> undef)
- tail call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %w, <4 x i32>* %dest, i32 4, <4 x i1> %c)
- %w2 = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %src2, i32 4, <4 x i1> %c, <4 x i32> undef)
- tail call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %w2, <4 x i32>* %dest2, i32 4, <4 x i1> %c)
- %w3 = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %src3, i32 4, <4 x i1> %c, <4 x i32> undef)
- tail call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %w3, <4 x i32>* %dest3, i32 4, <4 x i1> %c)
+ %w = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %src, i32 4, <4 x i1> %c, <4 x i32> undef)
+ tail call void @llvm.masked.store.v4i32.p0(<4 x i32> %w, ptr %dest, i32 4, <4 x i1> %c)
+ %w2 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %src2, i32 4, <4 x i1> %c, <4 x i32> undef)
+ tail call void @llvm.masked.store.v4i32.p0(<4 x i32> %w2, ptr %dest2, i32 4, <4 x i1> %c)
+ %w3 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %src3, i32 4, <4 x i1> %c, <4 x i32> undef)
+ tail call void @llvm.masked.store.v4i32.p0(<4 x i32> %w3, ptr %dest3, i32 4, <4 x i1> %c)
ret <4 x i32> %w3
}
- declare <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>*, i32 immarg, <4 x i1>, <4 x i32>) #2
- declare void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>, <4 x i32>*, i32 immarg, <4 x i1>) #3
+ declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>) #2
+ declare void @llvm.masked.store.v4i32.p0(<4 x i32>, ptr, i32 immarg, <4 x i1>) #3
attributes #0 = { nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="128" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv8.1-m.main,+fp-armv8d16sp,+fp16,+fpregs,+fullfp16,+hwdiv,+lob,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2sp,+vfp3d16sp,+vfp4d16sp" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind readnone }
--- |
; Checks that Predecessor gets moved (to before the LoopExit) if it contains a backward WLS.
- define void @backwards_branch(i32 %N, i32* nocapture %a, i32* nocapture readonly %b) {
+ define void @backwards_branch(i32 %N, ptr nocapture %a, ptr nocapture readonly %b) {
entry:
unreachable
}
; Checks that Predecessor (containing a backwards WLS) does not get moved to before the loopExit if it is the entry block.
- define void @backwards_branch_entry_block(i32 %N, i32* nocapture %a, i32* nocapture readonly %b) {
+ define void @backwards_branch_entry_block(i32 %N, ptr nocapture %a, ptr nocapture readonly %b) {
entry:
unreachable
}
; Checks that Predecessor (to which a forward WLS exists) is not moved if moving it would cause the WLS to become backwards branching.
- define void @backwards_branch_backwards_wls(i32 %N, i32 %M, i32* nocapture %a, i32* nocapture %b, i32* nocapture %c) {
+ define void @backwards_branch_backwards_wls(i32 %N, i32 %M, ptr nocapture %a, ptr nocapture %b, ptr nocapture %c) {
entry:
unreachable
}
; Checks that a MachineFunction is unaffected if it doesn't contain any WLS (pseudo) instruction.
- define void @no_predecessor(i32 %N, i32 %M, i32* nocapture %a, i32* nocapture %b, i32* nocapture %c) {
+ define void @no_predecessor(i32 %N, i32 %M, ptr nocapture %a, ptr nocapture %b, ptr nocapture %c) {
entry:
unreachable
}
; Within a nested (Both the WLS and loopExit are at depth=3 here) loop, checks that Predecessor
; gets moved (in backward direction) if there exists a backdwards WLS from it to the LoopExit.
- define void @nested_loops(i32 %n, i32 %m, i32 %l, i8* noalias %X, i8* noalias %Y) {
+ define void @nested_loops(i32 %n, i32 %m, i32 %l, ptr noalias %X, ptr noalias %Y) {
entry:
unreachable
}
; Checks that Predecessor (to which a forward WLS exists) is moved if moving it would NOT cause the WLS
; to become backwards branching.
- define void @backwards_branch_forwards_wls(i32 %N, i32 %M, i32* nocapture %a, i32* nocapture %b, i32* nocapture %c) {
+ define void @backwards_branch_forwards_wls(i32 %N, i32 %M, ptr nocapture %a, ptr nocapture %b, ptr nocapture %c) {
entry:
unreachable
}
target triple = "arm-arm-none-eabi"
; Function Attrs: nofree norecurse nounwind
- define void @test(i8* noalias nocapture %X, i8* noalias nocapture readonly %Y, i32 %n) {
+ define void @test(ptr noalias nocapture %X, ptr noalias nocapture readonly %Y, i32 %n) {
entry:
%cmp6 = icmp sgt i32 %n, 0
br i1 %cmp6, label %for.body.preheader, label %for.cond.cleanup
for.body.preheader: ; preds = %entry
- call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %X, i8* align 4 %Y, i32 %n, i1 false)
+ call void @llvm.memcpy.p0.p0.i32(ptr align 4 %X, ptr align 4 %Y, i32 %n, i1 false)
br label %for.cond.cleanup
for.cond.cleanup: ; preds = %for.body.preheader, %entry
}
; Function Attrs: argmemonly nofree nosync nounwind willreturn
- declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg)
+ declare void @llvm.memcpy.p0.p0.i32(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
...
---
# RUN: llc -mtriple=thumbv7m-none-eabi -mcpu=cortex-m7 -run-pass=pipeliner --pipeliner-force-issue-width=10 -o - %s | FileCheck %s --check-prefix=CHECK
--- |
- define hidden float @dot(float* nocapture noundef readonly %a, float* nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
+ define hidden float @dot(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
entry:
%cmp8 = icmp sgt i32 %sz, 0
br i1 %cmp8, label %for.body.preheader, label %for.end
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr float, float* %b, i32 -1
- %scevgep4 = getelementptr float, float* %a, i32 -1
+ %scevgep = getelementptr float, ptr %b, i32 -1
+ %scevgep4 = getelementptr float, ptr %a, i32 -1
br label %for.body
for.body: ; preds = %for.body.preheader, %for.body
- %lsr.iv5 = phi float* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi float* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%lsr.iv = phi i32 [ %sz, %for.body.preheader ], [ %lsr.iv.next, %for.body ]
%sum.010 = phi float [ %add, %for.body ], [ 0.000000e+00, %for.body.preheader ]
- %scevgep7 = getelementptr float, float* %lsr.iv5, i32 1
- %0 = load float, float* %scevgep7, align 4
- %scevgep3 = getelementptr float, float* %lsr.iv1, i32 1
- %1 = load float, float* %scevgep3, align 4
+ %scevgep7 = getelementptr float, ptr %lsr.iv5, i32 1
+ %0 = load float, ptr %scevgep7, align 4
+ %scevgep3 = getelementptr float, ptr %lsr.iv1, i32 1
+ %1 = load float, ptr %scevgep3, align 4
%mul = fmul fast float %1, %0
%add = fadd fast float %mul, %sum.010
%lsr.iv.next = add i32 %lsr.iv, -1
- %scevgep2 = getelementptr float, float* %lsr.iv1, i32 1
- %scevgep6 = getelementptr float, float* %lsr.iv5, i32 1
+ %scevgep2 = getelementptr float, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr float, ptr %lsr.iv5, i32 1
%exitcond.not = icmp ne i32 %lsr.iv.next, 0
br i1 %exitcond.not, label %for.body, label %for.end, !llvm.loop !0
# RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve.fp -run-pass arm-prera-ldst-opt %s -o - -verify-machineinstrs | FileCheck %s
--- |
- define i32* @t2LDRi12(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRHi12(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRSHi12(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRBi12(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRSBi12(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRi12(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRHi12(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRBi12(i32* %x, i32 %y) { unreachable }
-
- define i32* @storedadd(i32* %x, i32 %y) { unreachable }
- define i32* @minsize2(i32* %x, i32 %y) minsize optsize { unreachable }
- define i32* @minsize3(i32* %x, i32 %y) minsize optsize { unreachable }
-
- define i32* @t2LDRi12_posoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRHi12_posoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRBi12_posoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRi12_posoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRHi12_posoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRBi12_posoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRi12_negoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRHi12_negoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2LDRBi12_negoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRi12_negoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRHi12_negoff(i32* %x, i32 %y) { unreachable }
- define i32* @t2STRBi12_negoff(i32* %x, i32 %y) { unreachable }
+ define ptr @t2LDRi12(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRHi12(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRSHi12(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRBi12(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRSBi12(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRi12(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRHi12(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRBi12(ptr %x, i32 %y) { unreachable }
+
+ define ptr @storedadd(ptr %x, i32 %y) { unreachable }
+ define ptr @minsize2(ptr %x, i32 %y) minsize optsize { unreachable }
+ define ptr @minsize3(ptr %x, i32 %y) minsize optsize { unreachable }
+
+ define ptr @t2LDRi12_posoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRHi12_posoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRBi12_posoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRi12_posoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRHi12_posoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRBi12_posoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRi12_negoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRHi12_negoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2LDRBi12_negoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRi12_negoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRHi12_negoff(ptr %x, i32 %y) { unreachable }
+ define ptr @t2STRBi12_negoff(ptr %x, i32 %y) { unreachable }
...
---
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv7m-none-unknown-eabi"
- define i8* @STR_pre4(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre8(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre255(i8* %p, i32 %v) { unreachable }
- define i8* @STR_pre256(i8* %p, i32 %v) { unreachable }
-
- define i8* @STRD_pre4(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_pre8(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_pre255(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_pre256(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_pre1020(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_pre1024(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_prem4(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_prem8(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_prem255(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_prem256(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_prem1020(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_prem1024(i8* %p, i32 %v) { unreachable }
-
- define i8* @STR_post4(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post8(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post255(i8* %p, i32 %v) { unreachable }
- define i8* @STR_post256(i8* %p, i32 %v) { unreachable }
-
- define i8* @STRD_post4(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_post8(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_post255(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_post256(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_post1020(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_post1024(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_postm4(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_postm8(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_postm255(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_postm256(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_postm1020(i8* %p, i32 %v) { unreachable }
- define i8* @STRD_postm1024(i8* %p, i32 %v) { unreachable }
+ define ptr @STR_pre4(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre8(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre255(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_pre256(ptr %p, i32 %v) { unreachable }
+
+ define ptr @STRD_pre4(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_pre8(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_pre255(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_pre256(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_pre1020(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_pre1024(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_prem4(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_prem8(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_prem255(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_prem256(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_prem1020(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_prem1024(ptr %p, i32 %v) { unreachable }
+
+ define ptr @STR_post4(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post8(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post255(ptr %p, i32 %v) { unreachable }
+ define ptr @STR_post256(ptr %p, i32 %v) { unreachable }
+
+ define ptr @STRD_post4(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_post8(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_post255(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_post256(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_post1020(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_post1024(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_postm4(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_postm8(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_postm255(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_postm256(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_postm1020(ptr %p, i32 %v) { unreachable }
+ define ptr @STRD_postm1024(ptr %p, i32 %v) { unreachable }
...
---
# RUN: llc -mtriple=thumbv7m-none-eabi -mcpu=cortex-m7 -run-pass=pipeliner --pipeliner-force-issue-width=10 -o - %s | FileCheck %s --check-prefix=CHECK
--- |
- define hidden float @dot(float* nocapture noundef readonly %a, float* nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
+ define hidden float @dot(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
entry:
%cmp8 = icmp sgt i32 %sz, 0
br i1 %cmp8, label %for.body.preheader, label %for.end
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr float, float* %b, i32 -1
- %scevgep4 = getelementptr float, float* %a, i32 -1
+ %scevgep = getelementptr float, ptr %b, i32 -1
+ %scevgep4 = getelementptr float, ptr %a, i32 -1
br label %for.body
for.body: ; preds = %for.body.preheader, %for.body
- %lsr.iv5 = phi float* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi float* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%lsr.iv = phi i32 [ %sz, %for.body.preheader ], [ %lsr.iv.next, %for.body ]
%sum.010 = phi float [ %add, %for.body ], [ 0.000000e+00, %for.body.preheader ]
- %scevgep7 = getelementptr float, float* %lsr.iv5, i32 1
- %0 = load float, float* %scevgep7, align 4
- %scevgep3 = getelementptr float, float* %lsr.iv1, i32 1
- %1 = load float, float* %scevgep3, align 4
+ %scevgep7 = getelementptr float, ptr %lsr.iv5, i32 1
+ %0 = load float, ptr %scevgep7, align 4
+ %scevgep3 = getelementptr float, ptr %lsr.iv1, i32 1
+ %1 = load float, ptr %scevgep3, align 4
%mul = fmul fast float %1, %0
%add = fadd fast float %mul, %sum.010
%lsr.iv.next = add i32 %lsr.iv, -1
- %scevgep2 = getelementptr float, float* %lsr.iv1, i32 1
- %scevgep6 = getelementptr float, float* %lsr.iv5, i32 1
+ %scevgep2 = getelementptr float, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr float, ptr %lsr.iv5, i32 1
%exitcond.not = icmp ne i32 %lsr.iv.next, 0
br i1 %exitcond.not, label %for.body, label %for.end, !llvm.loop !0
# RUN: llc -mtriple=thumbv8.1m.main-none-eabi -mcpu=cortex-m85 -mattr=+use-mipipeliner -run-pass=pipeliner --pipeliner-force-issue-width=10 -o - %s | FileCheck %s --check-prefix=CHECK
--- |
- define hidden float @dot(float* nocapture noundef readonly %a, float* nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
+ define hidden float @dot(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
entry:
%cmp8 = icmp sgt i32 %sz, 0
br i1 %cmp8, label %for.body.preheader, label %for.end
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr float, float* %b, i32 -1
- %scevgep4 = getelementptr float, float* %a, i32 -1
+ %scevgep = getelementptr float, ptr %b, i32 -1
+ %scevgep4 = getelementptr float, ptr %a, i32 -1
br label %for.body
for.body: ; preds = %for.body.preheader, %for.body
- %lsr.iv5 = phi float* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi float* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%lsr.iv = phi i32 [ %sz, %for.body.preheader ], [ %lsr.iv.next, %for.body ]
%sum.010 = phi float [ %add, %for.body ], [ 0.000000e+00, %for.body.preheader ]
- %scevgep7 = getelementptr float, float* %lsr.iv5, i32 1
- %0 = load float, float* %scevgep7, align 4
- %scevgep3 = getelementptr float, float* %lsr.iv1, i32 1
- %1 = load float, float* %scevgep3, align 4
+ %scevgep7 = getelementptr float, ptr %lsr.iv5, i32 1
+ %0 = load float, ptr %scevgep7, align 4
+ %scevgep3 = getelementptr float, ptr %lsr.iv1, i32 1
+ %1 = load float, ptr %scevgep3, align 4
%mul = fmul fast float %1, %0
%add = fadd fast float %mul, %sum.010
%lsr.iv.next = add i32 %lsr.iv, -1
- %scevgep2 = getelementptr float, float* %lsr.iv1, i32 1
- %scevgep6 = getelementptr float, float* %lsr.iv5, i32 1
+ %scevgep2 = getelementptr float, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr float, ptr %lsr.iv5, i32 1
%exitcond.not = icmp eq i32 %lsr.iv.next, 0
br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !0
# RUN: llc -mtriple=thumbv8.1m.main-none-eabi -mcpu=cortex-m85 -mattr=+use-mipipeliner -run-pass=pipeliner --pipeliner-force-issue-width=10 -o - %s | FileCheck %s --check-prefix=CHECK
--- |
- define hidden float @dot(float* nocapture noundef readonly %a, float* nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
+ define hidden float @dot(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
entry:
%cmp8 = icmp sgt i32 %sz, 0
br i1 %cmp8, label %for.body.preheader, label %for.end
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr float, float* %b, i32 -1
- %scevgep4 = getelementptr float, float* %a, i32 -1
+ %scevgep = getelementptr float, ptr %b, i32 -1
+ %scevgep4 = getelementptr float, ptr %a, i32 -1
br label %for.body
for.body: ; preds = %for.body.preheader, %for.body
- %lsr.iv5 = phi float* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi float* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%lsr.iv = phi i32 [ %sz, %for.body.preheader ], [ %lsr.iv.next, %for.body ]
%sum.010 = phi float [ %add, %for.body ], [ 0.000000e+00, %for.body.preheader ]
- %scevgep7 = getelementptr float, float* %lsr.iv5, i32 1
- %0 = load float, float* %scevgep7, align 4
- %scevgep3 = getelementptr float, float* %lsr.iv1, i32 1
- %1 = load float, float* %scevgep3, align 4
+ %scevgep7 = getelementptr float, ptr %lsr.iv5, i32 1
+ %0 = load float, ptr %scevgep7, align 4
+ %scevgep3 = getelementptr float, ptr %lsr.iv1, i32 1
+ %1 = load float, ptr %scevgep3, align 4
%mul = fmul fast float %1, %0
%add = fadd fast float %mul, %sum.010
%lsr.iv.next = add i32 %lsr.iv, -1
- %scevgep2 = getelementptr float, float* %lsr.iv1, i32 1
- %scevgep6 = getelementptr float, float* %lsr.iv5, i32 1
+ %scevgep2 = getelementptr float, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr float, ptr %lsr.iv5, i32 1
%exitcond.not = icmp eq i32 %lsr.iv.next, 0
br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !0
# but without register pressure is not rejected.
--- |
- define hidden float @high_pressure(float* nocapture noundef readonly %a, float* nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
+ define hidden float @high_pressure(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
entry:
%cmp8 = icmp sgt i32 %sz, 0
br i1 %cmp8, label %for.body.preheader, label %for.end
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr float, float* %b, i32 -1
- %scevgep4 = getelementptr float, float* %a, i32 -1
+ %scevgep = getelementptr float, ptr %b, i32 -1
+ %scevgep4 = getelementptr float, ptr %a, i32 -1
br label %for.body
for.body: ; preds = %for.body.preheader, %for.body
- %lsr.iv5 = phi float* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi float* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%lsr.iv = phi i32 [ %sz, %for.body.preheader ], [ %lsr.iv.next, %for.body ]
%sum.010 = phi float [ %add, %for.body ], [ 0.000000e+00, %for.body.preheader ]
- %scevgep7 = getelementptr float, float* %lsr.iv5, i32 1
- %0 = load float, float* %scevgep7, align 4
- %scevgep3 = getelementptr float, float* %lsr.iv1, i32 1
- %1 = load float, float* %scevgep3, align 4
+ %scevgep7 = getelementptr float, ptr %lsr.iv5, i32 1
+ %0 = load float, ptr %scevgep7, align 4
+ %scevgep3 = getelementptr float, ptr %lsr.iv1, i32 1
+ %1 = load float, ptr %scevgep3, align 4
%mul = fmul fast float %1, %0
%add = fadd fast float %mul, %sum.010
%lsr.iv.next = add i32 %lsr.iv, -1
- %scevgep2 = getelementptr float, float* %lsr.iv1, i32 1
- %scevgep6 = getelementptr float, float* %lsr.iv5, i32 1
+ %scevgep2 = getelementptr float, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr float, ptr %lsr.iv5, i32 1
%exitcond.not = icmp eq i32 %lsr.iv.next, 0
br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !0
!3 = !{!"llvm.loop.pipeline.initiationinterval", i32 3}
- define hidden float @low_pressure(float* nocapture noundef readonly %a, float* nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
+ define hidden float @low_pressure(ptr nocapture noundef readonly %a, ptr nocapture noundef readonly %b, i32 noundef %sz) local_unnamed_addr #0 {
entry:
%cmp8 = icmp sgt i32 %sz, 0
br i1 %cmp8, label %for.body.preheader, label %for.end
for.body.preheader: ; preds = %entry
- %scevgep = getelementptr float, float* %b, i32 -1
- %scevgep4 = getelementptr float, float* %a, i32 -1
+ %scevgep = getelementptr float, ptr %b, i32 -1
+ %scevgep4 = getelementptr float, ptr %a, i32 -1
br label %for.body
for.body: ; preds = %for.body.preheader, %for.body
- %lsr.iv5 = phi float* [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
- %lsr.iv1 = phi float* [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
+ %lsr.iv5 = phi ptr [ %scevgep4, %for.body.preheader ], [ %scevgep6, %for.body ]
+ %lsr.iv1 = phi ptr [ %scevgep, %for.body.preheader ], [ %scevgep2, %for.body ]
%lsr.iv = phi i32 [ %sz, %for.body.preheader ], [ %lsr.iv.next, %for.body ]
%sum.010 = phi float [ %add, %for.body ], [ 0.000000e+00, %for.body.preheader ]
- %scevgep7 = getelementptr float, float* %lsr.iv5, i32 1
- %0 = load float, float* %scevgep7, align 4
- %scevgep3 = getelementptr float, float* %lsr.iv1, i32 1
- %1 = load float, float* %scevgep3, align 4
+ %scevgep7 = getelementptr float, ptr %lsr.iv5, i32 1
+ %0 = load float, ptr %scevgep7, align 4
+ %scevgep3 = getelementptr float, ptr %lsr.iv1, i32 1
+ %1 = load float, ptr %scevgep3, align 4
%mul = fmul fast float %1, %0
%add = fadd fast float %mul, %sum.010
%lsr.iv.next = add i32 %lsr.iv, -1
- %scevgep2 = getelementptr float, float* %lsr.iv1, i32 1
- %scevgep6 = getelementptr float, float* %lsr.iv5, i32 1
+ %scevgep2 = getelementptr float, ptr %lsr.iv1, i32 1
+ %scevgep6 = getelementptr float, ptr %lsr.iv5, i32 1
%exitcond.not = icmp eq i32 %lsr.iv.next, 0
br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !4
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8r-arm-none-eabi"
- define void @Func(i32 %i, i32* nocapture %p) local_unnamed_addr {
+ define void @Func(i32 %i, ptr nocapture %p) local_unnamed_addr {
entry:
switch i32 %i, label %sw.epilog [
i32 0, label %sw.bb
br label %sw.epilog.sink.split
sw.bb1: ; preds = %entry
- store i32 0, i32* %p, align 4
+ store i32 0, ptr %p, align 4
br label %sw.epilog.sink.split
sw.bb3: ; preds = %entry
sw.epilog.sink.split: ; preds = %sw.bb3, %sw.bb1, %sw.bb, %entry
%.sink = phi i32 [ 2, %sw.bb3 ], [ 0, %sw.bb ], [ 1, %entry ], [ 1, %sw.bb1 ]
- store i32 %.sink, i32* %p, align 4
+ store i32 %.sink, ptr %p, align 4
br label %sw.epilog
sw.epilog: ; preds = %sw.epilog.sink.split, %entry
declare i32 @__gxx_wasm_personality_v0(...)
declare void @foo()
- define void @rethrow_arg_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
+ define void @rethrow_arg_test() personality ptr @__gxx_wasm_personality_v0 {
ret void
}
- define i32 @fix_end_function_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
+ define i32 @fix_end_function_test() personality ptr @__gxx_wasm_personality_v0 {
ret i32 0
}
...
declare i32 @__gxx_wasm_personality_v0(...)
declare void @foo()
- define void @eh_label_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
+ define void @eh_label_test() personality ptr @__gxx_wasm_personality_v0 {
ret void
}
- define void @unreachable_ehpad_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
+ define void @unreachable_ehpad_test() personality ptr @__gxx_wasm_personality_v0 {
ret void
}
- define void @empty_cleanuppad_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
+ define void @empty_cleanuppad_test() personality ptr @__gxx_wasm_personality_v0 {
ret void
}
...
define void @function_property_test() {
ret void
}
- define void @wasm_eh_info_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
+ define void @wasm_eh_info_test() personality ptr @__gxx_wasm_personality_v0 {
ret void
}
br i1 %tobool.not, label %if.else, label %if.then
if.then: ; preds = %entry
- %0 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 8, i8* getelementptr inbounds ([1024 x i8], [1024 x i8]* @buf, i64 0, i64 0), i64 32)
- %1 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 8, i16 %col, i8* getelementptr inbounds ([1024 x i8], [1024 x i8]* @buf, i64 0, i64 0), i64 32)
- %2 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 %col, i8* getelementptr inbounds ([1024 x i8], [1024 x i8]* @buf, i64 0, i64 0), i64 32)
+ %0 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 8, ptr @buf, i64 32)
+ %1 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 8, i16 %col, ptr @buf, i64 32)
+ %2 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 %col, ptr @buf, i64 32)
br label %if.end
if.else: ; preds = %entry
- %3 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 8, i8* getelementptr inbounds ([1024 x i8], [1024 x i8]* @buf2, i64 0, i64 0), i64 32)
- %4 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 8, i16 %col, i8* getelementptr inbounds ([1024 x i8], [1024 x i8]* @buf2, i64 0, i64 0), i64 32)
- %5 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 %col, i8* getelementptr inbounds ([1024 x i8], [1024 x i8]* @buf2, i64 0, i64 0), i64 32)
+ %3 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 8, ptr @buf2, i64 32)
+ %4 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 8, i16 %col, ptr @buf2, i64 32)
+ %5 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 %col, ptr @buf2, i64 32)
br label %if.end
if.end: ; preds = %if.else, %if.then
%b.sroa.1069.0.in = phi x86_amx [ %4, %if.else ], [ %1, %if.then ]
%c.sroa.1044.0.in = phi x86_amx [ %5, %if.else ], [ %2, %if.then ]
%6 = tail call x86_amx @llvm.x86.tdpbssd.internal(i16 %row, i16 %col, i16 8, x86_amx %c.sroa.1044.0.in, x86_amx %a.sroa.1094.0.in, x86_amx %b.sroa.1069.0.in)
- tail call void @llvm.x86.tilestored64.internal(i16 %row, i16 %col, i8* getelementptr inbounds ([1024 x i8], [1024 x i8]* @buf, i64 0, i64 0), i64 32, x86_amx %6)
+ tail call void @llvm.x86.tilestored64.internal(i16 %row, i16 %col, ptr @buf, i64 32, x86_amx %6)
ret void
}
- declare x86_amx @llvm.x86.tileloadd64.internal(i16, i16, i8*, i64) #1
+ declare x86_amx @llvm.x86.tileloadd64.internal(i16, i16, ptr, i64) #1
declare x86_amx @llvm.x86.tdpbssd.internal(i16, i16, i16, x86_amx, x86_amx, x86_amx) #1
- declare void @llvm.x86.tilestored64.internal(i16, i16, i8*, i64, x86_amx) #1
+ declare void @llvm.x86.tilestored64.internal(i16, i16, ptr, i64, x86_amx) #1
attributes #0 = { "target-features"="+amx-int8,+avx512f" }
attributes #1 = { nounwind "target-features"="+amx-int8,+avx512f" }
ret i32 %res
}
- define i32 @test_cmp_p0(i32* %a, i32* %b) {
- %r = icmp ult i32* %a, %b
+ define i32 @test_cmp_p0(ptr %a, ptr %b) {
+ %r = icmp ult ptr %a, %b
%res = zext i1 %r to i32
ret i32 %res
}
# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s
--- |
- define void @test_gep_i8(i8* %addr) {
- %arrayidx = getelementptr i32, i32* undef, i8 5
+ define void @test_gep_i8(ptr %addr) {
+ %arrayidx = getelementptr i32, ptr undef, i8 5
ret void
}
- define void @test_gep_i16(i8* %addr) {
- %arrayidx = getelementptr i32, i32* undef, i16 5
+ define void @test_gep_i16(ptr %addr) {
+ %arrayidx = getelementptr i32, ptr undef, i16 5
ret void
}
- define void @test_gep_i32(i8* %addr) {
- %arrayidx = getelementptr i32, i32* undef, i32 5
+ define void @test_gep_i32(ptr %addr) {
+ %arrayidx = getelementptr i32, ptr undef, i32 5
ret void
}
- define void @test_gep_i64(i8* %addr) {
- %arrayidx = getelementptr i32, i32* undef, i64 5
+ define void @test_gep_i64(ptr %addr) {
+ %arrayidx = getelementptr i32, ptr undef, i64 5
ret void
}
...
ret void
}
- define <8 x i32> @test_load_v8i32_noalign(<8 x i32>* %p1) {
- %r = load <8 x i32>, <8 x i32>* %p1, align 1
+ define <8 x i32> @test_load_v8i32_noalign(ptr %p1) {
+ %r = load <8 x i32>, ptr %p1, align 1
ret <8 x i32> %r
}
- define void @test_store_v8i32_noalign(<8 x i32> %val, <8 x i32>* %p1) {
- store <8 x i32> %val, <8 x i32>* %p1, align 1
+ define void @test_store_v8i32_noalign(<8 x i32> %val, ptr %p1) {
+ store <8 x i32> %val, ptr %p1, align 1
ret void
}
ret void
}
- define <16 x i32> @test_load_v16i32_noalign(<16 x i32>* %p1) {
- %r = load <16 x i32>, <16 x i32>* %p1, align 1
+ define <16 x i32> @test_load_v16i32_noalign(ptr %p1) {
+ %r = load <16 x i32>, ptr %p1, align 1
ret <16 x i32> %r
}
- define void @test_store_v16i32_noalign(<16 x i32> %val, <16 x i32>* %p1) {
- store <16 x i32> %val, <16 x i32>* %p1, align 1
+ define void @test_store_v16i32_noalign(<16 x i32> %val, ptr %p1) {
+ store <16 x i32> %val, ptr %p1, align 1
ret void
}
ret <4 x float> %ret
}
- define i8 @test_load_i8(i8* %p1) {
- %r = load i8, i8* %p1
+ define i8 @test_load_i8(ptr %p1) {
+ %r = load i8, ptr %p1
ret i8 %r
}
- define i16 @test_load_i16(i16* %p1) {
- %r = load i16, i16* %p1
+ define i16 @test_load_i16(ptr %p1) {
+ %r = load i16, ptr %p1
ret i16 %r
}
- define i32 @test_load_i32(i32* %p1) {
- %r = load i32, i32* %p1
+ define i32 @test_load_i32(ptr %p1) {
+ %r = load i32, ptr %p1
ret i32 %r
}
- define i64 @test_load_i64(i64* %p1) {
- %r = load i64, i64* %p1
+ define i64 @test_load_i64(ptr %p1) {
+ %r = load i64, ptr %p1
ret i64 %r
}
- define float @test_load_float(float* %p1) {
- %r = load float, float* %p1
+ define float @test_load_float(ptr %p1) {
+ %r = load float, ptr %p1
ret float %r
}
- define double @test_load_double(double* %p1) {
- %r = load double, double* %p1
+ define double @test_load_double(ptr %p1) {
+ %r = load double, ptr %p1
ret double %r
}
- define <4 x i32> @test_load_v4i32(<4 x i32>* %p1) {
- %r = load <4 x i32>, <4 x i32>* %p1, align 16
+ define <4 x i32> @test_load_v4i32(ptr %p1) {
+ %r = load <4 x i32>, ptr %p1, align 16
ret <4 x i32> %r
}
- define i32* @test_store_i32(i32 %val, i32* %p1) {
- store i32 %val, i32* %p1
- ret i32* %p1
+ define ptr @test_store_i32(i32 %val, ptr %p1) {
+ store i32 %val, ptr %p1
+ ret ptr %p1
}
- define i64* @test_store_i64(i64 %val, i64* %p1) {
- store i64 %val, i64* %p1
- ret i64* %p1
+ define ptr @test_store_i64(i64 %val, ptr %p1) {
+ store i64 %val, ptr %p1
+ ret ptr %p1
}
- define float* @test_store_float(float %val, float* %p1) {
- store float %val, float* %p1
- ret float* %p1
+ define ptr @test_store_float(float %val, ptr %p1) {
+ store float %val, ptr %p1
+ ret ptr %p1
}
- define double* @test_store_double(double %val, double* %p1) {
- store double %val, double* %p1
- ret double* %p1
+ define ptr @test_store_double(double %val, ptr %p1) {
+ store double %val, ptr %p1
+ ret ptr %p1
}
define void @constInt_check() {
}
define void @test_gep() {
- %p1 = getelementptr i32, i32* undef, i32 5
- %p2 = getelementptr i32, i32* undef, i64 5
+ %p1 = getelementptr i32, ptr undef, i32 5
+ %p2 = getelementptr i32, ptr undef, i64 5
ret void
}
@g_int = global i32 0, align 4
- define i32* @test_global_ptrv() {
+ define ptr @test_global_ptrv() {
entry:
- ret i32* @g_int
+ ret ptr @g_int
}
define i8 @test_undef() {
define dso_local void @test_global_ptrv() {
entry:
- store i32* @g_int, i32** undef
+ store ptr @g_int, ptr undef
ret void
}
define dso_local i32 @test_global_valv() {
entry:
- %0 = load i32, i32* @g_int, align 4
+ %0 = load i32, ptr @g_int, align 4
ret i32 %0
}
- { id: 1, class: gpr, preferred-register: '' }
# X32: %0:gr32 = IMPLICIT_DEF
# X32-NEXT: %1:gr32 = LEA32r $noreg, 1, $noreg, @g_int, $noreg
-# X32-NEXT: MOV32mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `i32** undef`)
+# X32-NEXT: MOV32mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `ptr undef`)
# X32-NEXT: RET 0
#
# X32ABI: %0:low32_addr_access = IMPLICIT_DEF
# X32ABI-NEXT: %1:gr32 = LEA64_32r $noreg, 1, $noreg, @g_int, $noreg
-# X32ABI-NEXT: MOV32mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `i32** undef`)
+# X32ABI-NEXT: MOV32mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `ptr undef`)
# X32ABI-NEXT: RET 0
body: |
bb.1.entry:
%0(p0) = IMPLICIT_DEF
%1(p0) = G_GLOBAL_VALUE @g_int
- G_STORE %1(p0), %0(p0) :: (store (p0) into `i32** undef`)
+ G_STORE %1(p0), %0(p0) :: (store (p0) into `ptr undef`)
RET 0
...
define dso_local void @test_global_ptrv() {
entry:
- store i32* @g_int, i32** undef
+ store ptr @g_int, ptr undef
ret void
}
define dso_local i32 @test_global_valv() {
entry:
- %0 = load i32, i32* @g_int, align 4
+ %0 = load i32, ptr @g_int, align 4
ret i32 %0
}
- { id: 1, class: gpr, preferred-register: '' }
# X64: %0:gr64 = IMPLICIT_DEF
# X64-NEXT: %1:gr64 = LEA64r $noreg, 1, $noreg, @g_int, $noreg
-# X64-NEXT: MOV64mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `i32** undef`)
+# X64-NEXT: MOV64mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `ptr undef`)
# X64-NEXT: RET 0
#
# X64_DARWIN_PIC: %0:gr64 = IMPLICIT_DEF
# X64_DARWIN_PIC-NEXT: %1:gr64 = LEA64r $rip, 1, $noreg, @g_int, $noreg
-# X64_DARWIN_PIC-NEXT: MOV64mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `i32** undef`)
+# X64_DARWIN_PIC-NEXT: MOV64mr %0, 1, $noreg, 0, $noreg, %1 :: (store (p0) into `ptr undef`)
# X64_DARWIN_PIC-NEXT: RET 0
#
body: |
%0(p0) = IMPLICIT_DEF
%1(p0) = G_GLOBAL_VALUE @g_int
- G_STORE %1(p0), %0(p0) :: (store (p0) into `i32** undef`)
+ G_STORE %1(p0), %0(p0) :: (store (p0) into `ptr undef`)
RET 0
...
ret i64 -1
}
- define void @main(i32** %data) {
- store i32* null, i32** %data, align 8
+ define void @main(ptr %data) {
+ store ptr null, ptr %data, align 8
ret void
}
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -mattr=+avx512vl -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=AVX512VL
--- |
- define i8 @test_load_i8(i8* %p1) {
- %r = load atomic i8, i8* %p1 unordered, align 1
+ define i8 @test_load_i8(ptr %p1) {
+ %r = load atomic i8, ptr %p1 unordered, align 1
ret i8 %r
}
- define i16 @test_load_i16(i16* %p1) {
- %r = load atomic i16, i16* %p1 unordered, align 2
+ define i16 @test_load_i16(ptr %p1) {
+ %r = load atomic i16, ptr %p1 unordered, align 2
ret i16 %r
}
- define i32 @test_load_i32(i32* %p1) {
- %r = load atomic i32, i32* %p1 unordered, align 4
+ define i32 @test_load_i32(ptr %p1) {
+ %r = load atomic i32, ptr %p1 unordered, align 4
ret i32 %r
}
- define i64 @test_load_i64(i64* %p1) {
- %r = load atomic i64, i64* %p1 unordered, align 8
+ define i64 @test_load_i64(ptr %p1) {
+ %r = load atomic i64, ptr %p1 unordered, align 8
ret i64 %r
}
- define float @test_load_float(float* %p1) {
- %r = load atomic float, float* %p1 unordered, align 4
+ define float @test_load_float(ptr %p1) {
+ %r = load atomic float, ptr %p1 unordered, align 4
ret float %r
}
- define float @test_load_float_vecreg(float* %p1) {
- %r = load atomic float, float* %p1 unordered, align 8
+ define float @test_load_float_vecreg(ptr %p1) {
+ %r = load atomic float, ptr %p1 unordered, align 8
ret float %r
}
- define double @test_load_double(double* %p1) {
- %r = load atomic double, double* %p1 unordered, align 8
+ define double @test_load_double(ptr %p1) {
+ %r = load atomic double, ptr %p1 unordered, align 8
ret double %r
}
- define double @test_load_double_vecreg(double* %p1) {
- %r = load atomic double, double* %p1 unordered, align 8
+ define double @test_load_double_vecreg(ptr %p1) {
+ %r = load atomic double, ptr %p1 unordered, align 8
ret double %r
}
- define i32* @test_store_i32(i32 %val, i32* %p1) {
- store atomic i32 %val, i32* %p1 unordered, align 4
- ret i32* %p1
+ define ptr @test_store_i32(i32 %val, ptr %p1) {
+ store atomic i32 %val, ptr %p1 unordered, align 4
+ ret ptr %p1
}
- define i64* @test_store_i64(i64 %val, i64* %p1) {
- store atomic i64 %val, i64* %p1 unordered, align 8
- ret i64* %p1
+ define ptr @test_store_i64(i64 %val, ptr %p1) {
+ store atomic i64 %val, ptr %p1 unordered, align 8
+ ret ptr %p1
}
- define float* @test_store_float(float %val, float* %p1) {
- store atomic float %val, float* %p1 unordered, align 4
- ret float* %p1
+ define ptr @test_store_float(float %val, ptr %p1) {
+ store atomic float %val, ptr %p1 unordered, align 4
+ ret ptr %p1
}
- define float* @test_store_float_vec(float %val, float* %p1) {
- store atomic float %val, float* %p1 unordered, align 4
- ret float* %p1
+ define ptr @test_store_float_vec(float %val, ptr %p1) {
+ store atomic float %val, ptr %p1 unordered, align 4
+ ret ptr %p1
}
- define double* @test_store_double(double %val, double* %p1) {
- store atomic double %val, double* %p1 unordered, align 8
- ret double* %p1
+ define ptr @test_store_double(double %val, ptr %p1) {
+ store atomic double %val, ptr %p1 unordered, align 8
+ ret ptr %p1
}
- define double* @test_store_double_vec(double %val, double* %p1) {
- store atomic double %val, double* %p1 unordered, align 8
- ret double* %p1
+ define ptr @test_store_double_vec(double %val, ptr %p1) {
+ store atomic double %val, ptr %p1 unordered, align 8
+ ret ptr %p1
}
- define i32* @test_load_ptr(i32** %ptr1) {
- %p = load atomic i32*, i32** %ptr1 unordered, align 8
- ret i32* %p
+ define ptr @test_load_ptr(ptr %ptr1) {
+ %p = load atomic ptr, ptr %ptr1 unordered, align 8
+ ret ptr %p
}
- define void @test_store_ptr(i32** %ptr1, i32* %a) {
- store atomic i32* %a, i32** %ptr1 unordered, align 8
+ define void @test_store_ptr(ptr %ptr1, ptr %a) {
+ store atomic ptr %a, ptr %ptr1 unordered, align 8
ret void
}
- define i32 @test_gep_folding(i32* %arr, i32 %val) {
- %arrayidx = getelementptr i32, i32* %arr, i32 5
- store atomic i32 %val, i32* %arrayidx unordered, align 8
- %r = load atomic i32, i32* %arrayidx unordered, align 8
+ define i32 @test_gep_folding(ptr %arr, i32 %val) {
+ %arrayidx = getelementptr i32, ptr %arr, i32 5
+ store atomic i32 %val, ptr %arrayidx unordered, align 8
+ %r = load atomic i32, ptr %arrayidx unordered, align 8
ret i32 %r
}
- define i32 @test_gep_folding_largeGepIndex(i32* %arr, i32 %val) #0 {
- %arrayidx = getelementptr i32, i32* %arr, i64 57179869180
- store atomic i32 %val, i32* %arrayidx unordered, align 8
- %r = load atomic i32, i32* %arrayidx unordered, align 8
+ define i32 @test_gep_folding_largeGepIndex(ptr %arr, i32 %val) #0 {
+ %arrayidx = getelementptr i32, ptr %arr, i64 57179869180
+ store atomic i32 %val, ptr %arrayidx unordered, align 8
+ %r = load atomic i32, ptr %arrayidx unordered, align 8
ret i32 %r
}
...
# RUN: llc -mtriple=i386-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL
--- |
- define i8 @test_load_i8(i8* %p1) {
- %r = load i8, i8* %p1
+ define i8 @test_load_i8(ptr %p1) {
+ %r = load i8, ptr %p1
ret i8 %r
}
- define i16 @test_load_i16(i16* %p1) {
- %r = load i16, i16* %p1
+ define i16 @test_load_i16(ptr %p1) {
+ %r = load i16, ptr %p1
ret i16 %r
}
- define i32 @test_load_i32(i32* %p1) {
- %r = load i32, i32* %p1
+ define i32 @test_load_i32(ptr %p1) {
+ %r = load i32, ptr %p1
ret i32 %r
}
- define i8* @test_store_i8(i8 %val, i8* %p1) {
- store i8 %val, i8* %p1
- ret i8* %p1
+ define ptr @test_store_i8(i8 %val, ptr %p1) {
+ store i8 %val, ptr %p1
+ ret ptr %p1
}
- define i16* @test_store_i16(i16 %val, i16* %p1) {
- store i16 %val, i16* %p1
- ret i16* %p1
+ define ptr @test_store_i16(i16 %val, ptr %p1) {
+ store i16 %val, ptr %p1
+ ret ptr %p1
}
- define i32* @test_store_i32(i32 %val, i32* %p1) {
- store i32 %val, i32* %p1
- ret i32* %p1
+ define ptr @test_store_i32(i32 %val, ptr %p1) {
+ store i32 %val, ptr %p1
+ ret ptr %p1
}
- define i32* @test_load_ptr(i32** %ptr1) {
- %p = load i32*, i32** %ptr1
- ret i32* %p
+ define ptr @test_load_ptr(ptr %ptr1) {
+ %p = load ptr, ptr %ptr1
+ ret ptr %p
}
- define void @test_store_ptr(i32** %ptr1, i32* %a) {
- store i32* %a, i32** %ptr1
+ define void @test_store_ptr(ptr %ptr1, ptr %a) {
+ store ptr %a, ptr %ptr1
ret void
}
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -mattr=+avx512vl -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=AVX512VL
--- |
- define i8 @test_load_i8(i8* %p1) {
- %r = load i8, i8* %p1
+ define i8 @test_load_i8(ptr %p1) {
+ %r = load i8, ptr %p1
ret i8 %r
}
- define i16 @test_load_i16(i16* %p1) {
- %r = load i16, i16* %p1
+ define i16 @test_load_i16(ptr %p1) {
+ %r = load i16, ptr %p1
ret i16 %r
}
- define i32 @test_load_i32(i32* %p1) {
- %r = load i32, i32* %p1
+ define i32 @test_load_i32(ptr %p1) {
+ %r = load i32, ptr %p1
ret i32 %r
}
- define i64 @test_load_i64(i64* %p1) {
- %r = load i64, i64* %p1
+ define i64 @test_load_i64(ptr %p1) {
+ %r = load i64, ptr %p1
ret i64 %r
}
- define float @test_load_float(float* %p1) {
- %r = load float, float* %p1
+ define float @test_load_float(ptr %p1) {
+ %r = load float, ptr %p1
ret float %r
}
- define float @test_load_float_vecreg(float* %p1) {
- %r = load float, float* %p1
+ define float @test_load_float_vecreg(ptr %p1) {
+ %r = load float, ptr %p1
ret float %r
}
- define double @test_load_double(double* %p1) {
- %r = load double, double* %p1
+ define double @test_load_double(ptr %p1) {
+ %r = load double, ptr %p1
ret double %r
}
- define double @test_load_double_vecreg(double* %p1) {
- %r = load double, double* %p1
+ define double @test_load_double_vecreg(ptr %p1) {
+ %r = load double, ptr %p1
ret double %r
}
- define i32* @test_store_i32(i32 %val, i32* %p1) {
- store i32 %val, i32* %p1
- ret i32* %p1
+ define ptr @test_store_i32(i32 %val, ptr %p1) {
+ store i32 %val, ptr %p1
+ ret ptr %p1
}
- define i64* @test_store_i64(i64 %val, i64* %p1) {
- store i64 %val, i64* %p1
- ret i64* %p1
+ define ptr @test_store_i64(i64 %val, ptr %p1) {
+ store i64 %val, ptr %p1
+ ret ptr %p1
}
- define float* @test_store_float(float %val, float* %p1) {
- store float %val, float* %p1
- ret float* %p1
+ define ptr @test_store_float(float %val, ptr %p1) {
+ store float %val, ptr %p1
+ ret ptr %p1
}
- define float* @test_store_float_vec(float %val, float* %p1) {
- store float %val, float* %p1
- ret float* %p1
+ define ptr @test_store_float_vec(float %val, ptr %p1) {
+ store float %val, ptr %p1
+ ret ptr %p1
}
- define double* @test_store_double(double %val, double* %p1) {
- store double %val, double* %p1
- ret double* %p1
+ define ptr @test_store_double(double %val, ptr %p1) {
+ store double %val, ptr %p1
+ ret ptr %p1
}
- define double* @test_store_double_vec(double %val, double* %p1) {
- store double %val, double* %p1
- ret double* %p1
+ define ptr @test_store_double_vec(double %val, ptr %p1) {
+ store double %val, ptr %p1
+ ret ptr %p1
}
- define i32* @test_load_ptr(i32** %ptr1) {
- %p = load i32*, i32** %ptr1
- ret i32* %p
+ define ptr @test_load_ptr(ptr %ptr1) {
+ %p = load ptr, ptr %ptr1
+ ret ptr %p
}
- define void @test_store_ptr(i32** %ptr1, i32* %a) {
- store i32* %a, i32** %ptr1
+ define void @test_store_ptr(ptr %ptr1, ptr %a) {
+ store ptr %a, ptr %ptr1
ret void
}
- define i32 @test_gep_folding(i32* %arr, i32 %val) {
- %arrayidx = getelementptr i32, i32* %arr, i32 5
- store i32 %val, i32* %arrayidx
- %r = load i32, i32* %arrayidx
+ define i32 @test_gep_folding(ptr %arr, i32 %val) {
+ %arrayidx = getelementptr i32, ptr %arr, i32 5
+ store i32 %val, ptr %arrayidx
+ %r = load i32, ptr %arrayidx
ret i32 %r
}
- define i32 @test_gep_folding_largeGepIndex(i32* %arr, i32 %val) #0 {
- %arrayidx = getelementptr i32, i32* %arr, i64 57179869180
- store i32 %val, i32* %arrayidx
- %r = load i32, i32* %arrayidx
+ define i32 @test_gep_folding_largeGepIndex(ptr %arr, i32 %val) #0 {
+ %arrayidx = getelementptr i32, ptr %arr, i64 57179869180
+ store i32 %val, ptr %arrayidx
+ %r = load i32, ptr %arrayidx
ret i32 %r
}
...
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -mattr=+avx512vl -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=ALL,AVX512ALL,AVX512VL
--- |
- define <4 x i32> @test_load_v4i32_noalign(<4 x i32>* %p1) {
- %r = load <4 x i32>, <4 x i32>* %p1, align 1
+ define <4 x i32> @test_load_v4i32_noalign(ptr %p1) {
+ %r = load <4 x i32>, ptr %p1, align 1
ret <4 x i32> %r
}
- define <4 x i32> @test_load_v4i32_align(<4 x i32>* %p1) {
- %r = load <4 x i32>, <4 x i32>* %p1, align 16
+ define <4 x i32> @test_load_v4i32_align(ptr %p1) {
+ %r = load <4 x i32>, ptr %p1, align 16
ret <4 x i32> %r
}
- define <4 x i32>* @test_store_v4i32_align(<4 x i32> %val, <4 x i32>* %p1) {
- store <4 x i32> %val, <4 x i32>* %p1, align 16
- ret <4 x i32>* %p1
+ define ptr @test_store_v4i32_align(<4 x i32> %val, ptr %p1) {
+ store <4 x i32> %val, ptr %p1, align 16
+ ret ptr %p1
}
- define <4 x i32>* @test_store_v4i32_noalign(<4 x i32> %val, <4 x i32>* %p1) {
- store <4 x i32> %val, <4 x i32>* %p1, align 1
- ret <4 x i32>* %p1
+ define ptr @test_store_v4i32_noalign(<4 x i32> %val, ptr %p1) {
+ store <4 x i32> %val, ptr %p1, align 1
+ ret ptr %p1
}
...
--- |
- define <8 x i32> @test_load_v8i32_noalign(<8 x i32>* %p1) {
- %r = load <8 x i32>, <8 x i32>* %p1, align 1
+ define <8 x i32> @test_load_v8i32_noalign(ptr %p1) {
+ %r = load <8 x i32>, ptr %p1, align 1
ret <8 x i32> %r
}
- define <8 x i32> @test_load_v8i32_align(<8 x i32>* %p1) {
- %r = load <8 x i32>, <8 x i32>* %p1, align 32
+ define <8 x i32> @test_load_v8i32_align(ptr %p1) {
+ %r = load <8 x i32>, ptr %p1, align 32
ret <8 x i32> %r
}
- define void @test_store_v8i32_noalign(<8 x i32> %val, <8 x i32>* %p1) {
- store <8 x i32> %val, <8 x i32>* %p1, align 1
+ define void @test_store_v8i32_noalign(<8 x i32> %val, ptr %p1) {
+ store <8 x i32> %val, ptr %p1, align 1
ret void
}
- define void @test_store_v8i32_align(<8 x i32> %val, <8 x i32>* %p1) {
- store <8 x i32> %val, <8 x i32>* %p1, align 32
+ define void @test_store_v8i32_align(<8 x i32> %val, ptr %p1) {
+ store <8 x i32> %val, ptr %p1, align 32
ret void
}
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=AVX512F
--- |
- define <16 x i32> @test_load_v16i32_noalign(<16 x i32>* %p1) {
- %r = load <16 x i32>, <16 x i32>* %p1, align 1
+ define <16 x i32> @test_load_v16i32_noalign(ptr %p1) {
+ %r = load <16 x i32>, ptr %p1, align 1
ret <16 x i32> %r
}
- define <16 x i32> @test_load_v16i32_align(<16 x i32>* %p1) {
- %r = load <16 x i32>, <16 x i32>* %p1, align 32
+ define <16 x i32> @test_load_v16i32_align(ptr %p1) {
+ %r = load <16 x i32>, ptr %p1, align 32
ret <16 x i32> %r
}
- define void @test_store_v16i32_noalign(<16 x i32> %val, <16 x i32>* %p1) {
- store <16 x i32> %val, <16 x i32>* %p1, align 1
+ define void @test_store_v16i32_noalign(<16 x i32> %val, ptr %p1) {
+ store <16 x i32> %val, ptr %p1, align 1
ret void
}
- define void @test_store_v16i32_align(<16 x i32> %val, <16 x i32>* %p1) {
- store <16 x i32> %val, <16 x i32>* %p1, align 32
+ define void @test_store_v16i32_align(<16 x i32> %val, ptr %p1) {
+ store <16 x i32> %val, ptr %p1, align 32
ret void
}
# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK
--- |
- define i32* @test_gep_i32(i32* %arr) {
- %arrayidx = getelementptr i32, i32* %arr, i32 5
- ret i32* %arrayidx
+ define ptr @test_gep_i32(ptr %arr) {
+ %arrayidx = getelementptr i32, ptr %arr, i32 5
+ ret ptr %arrayidx
}
...
---
# RUN: llc -mtriple=x86_64-linux-gnux32 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK
--- |
- define i32* @allocai32() {
+ define ptr @allocai32() {
%ptr1 = alloca i32
- ret i32* %ptr1
+ ret ptr %ptr1
}
...
@g_int = global i32 0, align 4
- define i32* @test_global_ptrv() {
+ define ptr @test_global_ptrv() {
entry:
- ret i32* @g_int
+ ret ptr @g_int
}
...
---
--- |
- define i32* @inttoptr_p0_s32(i32 %val) {
+ define ptr @inttoptr_p0_s32(i32 %val) {
entry:
- %0 = inttoptr i32 %val to i32*
- ret i32* %0
+ %0 = inttoptr i32 %val to ptr
+ ret ptr %0
}
...
--- |
- define i1 @ptrtoint_s1_p0(i64* %p) {
+ define i1 @ptrtoint_s1_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i1
+ %0 = ptrtoint ptr %p to i1
ret i1 %0
}
- define i8 @ptrtoint_s8_p0(i64* %p) {
+ define i8 @ptrtoint_s8_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i8
+ %0 = ptrtoint ptr %p to i8
ret i8 %0
}
- define i16 @ptrtoint_s16_p0(i64* %p) {
+ define i16 @ptrtoint_s16_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i16
+ %0 = ptrtoint ptr %p to i16
ret i16 %0
}
- define i32 @ptrtoint_s32_p0(i64* %p) {
+ define i32 @ptrtoint_s32_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i32
+ %0 = ptrtoint ptr %p to i32
ret i32 %0
}
# RUN: llc -mtriple=i386-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK
--- |
- define i32* @allocai32() {
+ define ptr @allocai32() {
%ptr1 = alloca i32
- ret i32* %ptr1
+ ret ptr %ptr1
}
...
--- |
- define i32* @inttoptr_p0_s32(i32 %val) {
+ define ptr @inttoptr_p0_s32(i32 %val) {
entry:
- %0 = inttoptr i32 %val to i32*
- ret i32* %0
+ %0 = inttoptr i32 %val to ptr
+ ret ptr %0
}
...
--- |
- define i1 @ptrtoint_s1_p0(i64* %p) {
+ define i1 @ptrtoint_s1_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i1
+ %0 = ptrtoint ptr %p to i1
ret i1 %0
}
- define i8 @ptrtoint_s8_p0(i64* %p) {
+ define i8 @ptrtoint_s8_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i8
+ %0 = ptrtoint ptr %p to i8
ret i8 %0
}
- define i16 @ptrtoint_s16_p0(i64* %p) {
+ define i16 @ptrtoint_s16_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i16
+ %0 = ptrtoint ptr %p to i16
ret i16 %0
}
- define i32 @ptrtoint_s32_p0(i64* %p) {
+ define i32 @ptrtoint_s32_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i32
+ %0 = ptrtoint ptr %p to i32
ret i32 %0
}
@g_int = global i32 0, align 4
- define i32* @test_global_ptrv() {
+ define ptr @test_global_ptrv() {
entry:
- ret i32* @g_int
+ ret ptr @g_int
}
...
---
--- |
- define i64* @inttoptr_p0_s64(i64 %val) {
+ define ptr @inttoptr_p0_s64(i64 %val) {
entry:
- %0 = inttoptr i64 %val to i64*
- ret i64* %0
+ %0 = inttoptr i64 %val to ptr
+ ret ptr %0
}
...
--- |
- define i1 @ptrtoint_s1_p0(i64* %p) {
+ define i1 @ptrtoint_s1_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i1
+ %0 = ptrtoint ptr %p to i1
ret i1 %0
}
- define i8 @ptrtoint_s8_p0(i64* %p) {
+ define i8 @ptrtoint_s8_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i8
+ %0 = ptrtoint ptr %p to i8
ret i8 %0
}
- define i16 @ptrtoint_s16_p0(i64* %p) {
+ define i16 @ptrtoint_s16_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i16
+ %0 = ptrtoint ptr %p to i16
ret i16 %0
}
- define i32 @ptrtoint_s32_p0(i64* %p) {
+ define i32 @ptrtoint_s32_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i32
+ %0 = ptrtoint ptr %p to i32
ret i32 %0
}
- define i64 @ptrtoint_s64_p0(i64* %p) {
+ define i64 @ptrtoint_s64_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i64
+ %0 = ptrtoint ptr %p to i64
ret i64 %0
}
# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK
--- |
- define i32* @allocai32() {
+ define ptr @allocai32() {
%ptr1 = alloca i32
- ret i32* %ptr1
+ ret ptr %ptr1
}
...
--- |
- define i64* @inttoptr_p0_s64(i64 %val) {
+ define ptr @inttoptr_p0_s64(i64 %val) {
entry:
- %0 = inttoptr i64 %val to i64*
- ret i64* %0
+ %0 = inttoptr i64 %val to ptr
+ ret ptr %0
}
...
--- |
- define i1 @ptrtoint_s1_p0(i64* %p) {
+ define i1 @ptrtoint_s1_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i1
+ %0 = ptrtoint ptr %p to i1
ret i1 %0
}
- define i8 @ptrtoint_s8_p0(i64* %p) {
+ define i8 @ptrtoint_s8_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i8
+ %0 = ptrtoint ptr %p to i8
ret i8 %0
}
- define i16 @ptrtoint_s16_p0(i64* %p) {
+ define i16 @ptrtoint_s16_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i16
+ %0 = ptrtoint ptr %p to i16
ret i16 %0
}
- define i32 @ptrtoint_s32_p0(i64* %p) {
+ define i32 @ptrtoint_s32_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i32
+ %0 = ptrtoint ptr %p to i32
ret i32 %0
}
- define i64 @ptrtoint_s64_p0(i64* %p) {
+ define i64 @ptrtoint_s64_p0(ptr %p) {
entry:
- %0 = ptrtoint i64* %p to i64
+ %0 = ptrtoint ptr %p to i64
ret i64 %0
}
target triple = "x86_64-apple-macosx10.8.0"
; Function Attrs: argmemonly nofree nosync nounwind willreturn
- declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #0
+ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0
; Function Attrs: argmemonly nofree nosync nounwind willreturn
- declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #0
+ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0
define i32 @test_1(i32 %in) #1 !dbg !5 {
entry:
- %a1 = alloca [14 x i8*], align 8
- %a4 = alloca [11 x i8*], align 8
- call void @llvm.dbg.value(metadata [11 x i8*]* %a4, metadata !9, metadata !DIExpression()), !dbg !11
+ %a1 = alloca [14 x ptr], align 8
+ %a4 = alloca [11 x ptr], align 8
+ call void @llvm.dbg.value(metadata ptr %a4, metadata !9, metadata !DIExpression()), !dbg !11
ret i32 0
}
define i32 @test_2(i32 %in) #1 !dbg !12 {
entry:
- %a1 = alloca [14 x i8*], align 8
- %a4 = alloca [11 x i8*], align 8
+ %a1 = alloca [14 x ptr], align 8
+ %a4 = alloca [11 x ptr], align 8
ret i32 0
}
source_filename = "test.ll"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
- define void @adcx32_commute(i8 %cf, i32 %a, i32 %b, i32* %res) #0 {
+ define void @adcx32_commute(i8 %cf, i32 %a, i32 %b, ptr %res) #0 {
%ret = call { i8, i32 } @llvm.x86.addcarry.32(i8 %cf, i32 %a, i32 %b)
%1 = extractvalue { i8, i32 } %ret, 1
%2 = mul i32 %a, %1
- store i32 %2, i32* %res
+ store i32 %2, ptr %res
ret void
}
- define void @adcx64_commute(i8 %cf, i64 %a, i64 %b, i64* %res) #0 {
+ define void @adcx64_commute(i8 %cf, i64 %a, i64 %b, ptr %res) #0 {
%ret = call { i8, i64 } @llvm.x86.addcarry.64(i8 %cf, i64 %a, i64 %b)
%1 = extractvalue { i8, i64 } %ret, 1
%2 = mul i64 %a, %1
- store i64 %2, i64* %res
+ store i64 %2, ptr %res
ret void
}
- define void @adox32_commute(i8 %cf, i32 %a, i32 %b, i32* %res) #0 {
+ define void @adox32_commute(i8 %cf, i32 %a, i32 %b, ptr %res) #0 {
%ret = call { i8, i32 } @llvm.x86.addcarry.32(i8 %cf, i32 %a, i32 %b)
%1 = extractvalue { i8, i32 } %ret, 1
%2 = mul i32 %a, %1
- store i32 %2, i32* %res
+ store i32 %2, ptr %res
ret void
}
- define void @adox64_commute(i8 %cf, i64 %a, i64 %b, i64* %res) #0 {
+ define void @adox64_commute(i8 %cf, i64 %a, i64 %b, ptr %res) #0 {
%ret = call { i8, i64 } @llvm.x86.addcarry.64(i8 %cf, i64 %a, i64 %b)
%1 = extractvalue { i8, i64 } %ret, 1
%2 = mul i64 %a, %1
- store i64 %2, i64* %res
+ store i64 %2, ptr %res
ret void
}
declare { i8, i64 } @llvm.x86.addcarry.64(i8, i64, i64) #1
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { "target-features"="+adx" }
attributes #1 = { nounwind readnone "target-features"="+adx" }
%2 = alloca i32, align 4
%3 = alloca i8, align 1
%4 = zext i1 %0 to i8
- store i8 %4, i8* %3, align 1
- %5 = load i8, i8* %3, align 1
+ store i8 %4, ptr %3, align 1
+ %5 = load i8, ptr %3, align 1
%6 = trunc i8 %5 to i1
br i1 %6, label %7, label %8
7: ; preds = %1
- store i32 1, i32* %2, align 4
+ store i32 1, ptr %2, align 4
br label %9
8: ; preds = %1
- store i32 0, i32* %2, align 4
+ store i32 0, ptr %2, align 4
br label %9
9: ; preds = %8, %7
- %10 = load i32, i32* %2, align 4
+ %10 = load i32, ptr %2, align 4
ret i32 %10
}
source_filename = "test.ll"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
- declare void @stub(i32*)
+ declare void @stub(ptr)
- define i32 @f(i32* %ptr, i1 %cond) {
+ define i32 @f(ptr %ptr, i1 %cond) {
entry:
br i1 %cond, label %left, label %right
left: ; preds = %entry
- %is_null = icmp eq i32* %ptr, null
+ %is_null = icmp eq ptr %ptr, null
br i1 %is_null, label %null, label %not_null, !prof !0, !make.implicit !1
not_null: ; preds = %left
- %val = load i32, i32* %ptr
+ %val = load i32, ptr %ptr
ret i32 %val
null: ; preds = %left
- call void @stub(i32* %ptr)
+ call void @stub(ptr %ptr)
unreachable
right: ; preds = %entry
- call void @stub(i32* null)
+ call void @stub(ptr null)
unreachable
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
- declare void @foo(i8*)
+ declare void @foo(ptr)
; Function Attrs: nounwind
- define void @test1(i8* %arg, i8** %mem) #0 {
+ define void @test1(ptr %arg, ptr %mem) #0 {
entry:
br label %loop
loop: ; preds = %loop, %entry
- %a = phi i8* [ %arg, %entry ], [ %b, %loop ]
- %b = load i8*, i8** %mem, align 8
- call void @foo(i8* %a)
- callbr void asm sideeffect "", "*m,!i"(i8* elementtype(i8) %b)
+ %a = phi ptr [ %arg, %entry ], [ %b, %loop ]
+ %b = load ptr, ptr %mem, align 8
+ call void @foo(ptr %a)
+ callbr void asm sideeffect "", "*m,!i"(ptr elementtype(i8) %b)
to label %end [label %loop]
end: ; preds = %loop
define dso_local void @initoutput() local_unnamed_addr {
entry:
- %call1 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
+ %call1 = tail call i32 (ptr, ...) @printf(ptr nonnull dereferenceable(1) @.str.8, ptr @.str.9, ptr @.str.10, ptr @.str.11, ptr @.str.12, ptr @.str.13, ptr @.str.14, ptr @.str.15, ptr @.str.16)
ret void
}
- declare dso_local i32 @printf(i8* nocapture readonly, ...) local_unnamed_addr
+ declare dso_local i32 @printf(ptr nocapture readonly, ...) local_unnamed_addr
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
--- |
define void @f1() {
entry:
- %arrayidx = getelementptr inbounds [2 x i16], [2 x i16]* undef, i16 0, i16 2
- %0 = bitcast i16* %arrayidx to i32*
- %1 = bitcast [2 x i16]* undef to i32*
+ %arrayidx = getelementptr inbounds [2 x i16], ptr undef, i16 0, i16 2
br label %for.cond
for.cond:
- %2 = phi i32* [ %0, %entry ], [ %7, %cleanup ]
- %3 = phi i32* [ %0, %entry ], [ %9, %cleanup ]
+ %0 = phi ptr [ %arrayidx, %entry ], [ %5, %cleanup ]
+ %1 = phi ptr [ %arrayidx, %entry ], [ %7, %cleanup ]
br label %for.body
for.body:
- %4 = phi i32* [ %3, %for.cond ], [ %9, %cleanup ]
- %5 = phi i32* [ %2, %for.cond ], [ %9, %cleanup ]
- %6 = phi i32* [ %2, %for.cond ], [ %9, %cleanup ]
+ %2 = phi ptr [ %1, %for.cond ], [ %7, %cleanup ]
+ %3 = phi ptr [ %0, %for.cond ], [ %7, %cleanup ]
+ %4 = phi ptr [ %0, %for.cond ], [ %7, %cleanup ]
br i1 false, label %for.cond2, label %if.then
if.then:
- store i32 undef, i32* %4, align 1
+ store i32 undef, ptr %2, align 1
unreachable
for.cond2:
- %7 = phi i32* [ %6, %for.body ], [ %7, %if.then5 ], [ %1, %for.cond2 ]
- %8 = phi i32* [ %5, %for.body ], [ %8, %if.then5 ], [ %1, %for.cond2 ]
- %9 = phi i32* [ %4, %for.body ], [ %8, %if.then5 ], [ %1, %for.cond2 ]
+ %5 = phi ptr [ %4, %for.body ], [ %5, %if.then5 ], [ undef, %for.cond2 ]
+ %6 = phi ptr [ %3, %for.body ], [ %6, %if.then5 ], [ undef, %for.cond2 ]
+ %7 = phi ptr [ %2, %for.body ], [ %6, %if.then5 ], [ undef, %for.cond2 ]
br i1 undef, label %for.cond2, label %if.then5
if.then5:
define void @f1() {
entry:
- %arrayidx = getelementptr inbounds [2 x i16], [2 x i16]* undef, i16 0, i16 2
- %0 = bitcast i16* %arrayidx to i32*
- %1 = bitcast [2 x i16]* undef to i32*
+ %arrayidx = getelementptr inbounds [2 x i16], ptr undef, i16 0, i16 2
br label %for.cond
for.cond.loopexit:
br label %for.cond
for.cond:
- %2 = phi i32* [ %0, %entry ], [ %12, %for.cond.loopexit ]
- %3 = phi i32* [ %0, %entry ], [ %14, %for.cond.loopexit ]
+ %0 = phi ptr [ %arrayidx, %entry ], [ %10, %for.cond.loopexit ]
+ %1 = phi ptr [ %arrayidx, %entry ], [ %12, %for.cond.loopexit ]
br label %for.body
for.body:
- %4 = phi i32* [ %3, %for.cond ], [ %14, %cleanup ]
- %5 = phi i32* [ %2, %for.cond ], [ %13, %cleanup ]
- %6 = phi i32* [ %2, %for.cond ], [ %12, %cleanup ]
+ %2 = phi ptr [ %1, %for.cond ], [ %12, %cleanup ]
+ %3 = phi ptr [ %0, %for.cond ], [ %11, %cleanup ]
+ %4 = phi ptr [ %0, %for.cond ], [ %10, %cleanup ]
br i1 undef, label %for.cond2.preheader, label %if.then
for.cond2.preheader:
br label %for.cond2
if.then:
- store i32 undef, i32* %4, align 1
+ store i32 undef, ptr %2, align 1
br label %cleanup
for.cond2:
- %7 = phi i32* [ %10, %for.inc ], [ %6, %for.cond2.preheader ]
- %8 = phi i32* [ %11, %for.inc ], [ %5, %for.cond2.preheader ]
- %9 = phi i32* [ %11, %for.inc ], [ %4, %for.cond2.preheader ]
+ %5 = phi ptr [ %8, %for.inc ], [ %4, %for.cond2.preheader ]
+ %6 = phi ptr [ %9, %for.inc ], [ %3, %for.cond2.preheader ]
+ %7 = phi ptr [ %9, %for.inc ], [ %2, %for.cond2.preheader ]
br i1 undef, label %for.inc, label %if.then5
if.then5:
br label %for.inc
for.inc:
- %10 = phi i32* [ %7, %if.end ], [ %1, %for.cond2 ]
- %11 = phi i32* [ %8, %if.end ], [ %1, %for.cond2 ]
+ %8 = phi ptr [ %5, %if.end ], [ undef, %for.cond2 ]
+ %9 = phi ptr [ %6, %if.end ], [ undef, %for.cond2 ]
br label %for.cond2
cleanup.loopexit:
br label %cleanup
cleanup:
- %12 = phi i32* [ %6, %if.then ], [ %7, %cleanup.loopexit ]
- %13 = phi i32* [ %5, %if.then ], [ %8, %cleanup.loopexit ]
- %14 = phi i32* [ %4, %if.then ], [ %9, %cleanup.loopexit ]
+ %10 = phi ptr [ %4, %if.then ], [ %5, %cleanup.loopexit ]
+ %11 = phi ptr [ %3, %if.then ], [ %6, %cleanup.loopexit ]
+ %12 = phi ptr [ %2, %if.then ], [ %7, %cleanup.loopexit ]
br i1 true, label %for.cond.loopexit, label %for.body
}
# CHECK-NOT: liveins: $eflags
--- |
- define void @fun(i16 %arg, i64 %arg1, i8 %arg2, i8* %arg3, i32 %arg4) { ret void}
+ define void @fun(i16 %arg, i64 %arg1, i8 %arg2, ptr %arg3, i32 %arg4) { ret void}
...
---
name: fun
br i1 1, label %for.cond.cleanup, label %for.body.11
for.body.11:
- %d.0.d.0..12 = load volatile i8, i8* %d, align 1
+ %d.0.d.0..12 = load volatile i8, ptr %d, align 1
call void @llvm.dbg.value(metadata i8 %d.0.d.0..12, metadata !16, metadata !DIExpression()), !dbg !19
br label %for.cond.cleanup
}
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-unknown"
- define void @test_fcmp_storefloat(i1 %cond, float* %fptr, float %f1, float %f2, float %f3, float %f4, float %f5, float %f6) #0 {
+ define void @test_fcmp_storefloat(i1 %cond, ptr %fptr, float %f1, float %f2, float %f3, float %f4, float %f5, float %f6) #0 {
entry:
br i1 %cond, label %if, label %else
exit: ; preds = %else, %if
%val = phi i1 [ %cmp1, %if ], [ %cmp2, %else ]
%selected = select i1 %val, float %f1, float %f2
- store float %selected, float* %fptr
+ store float %selected, ptr %fptr
ret void
}
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx11.0.0"
- declare i8* @objc_retainAutoreleasedReturnValue(i8*)
- declare i8* @objc_unsafeClaimAutoreleasedReturnValue(i8*)
- declare i8* @fn()
+ declare ptr @objc_retainAutoreleasedReturnValue(ptr)
+ declare ptr @objc_unsafeClaimAutoreleasedReturnValue(ptr)
+ declare ptr @fn()
define void @test_objc_retainAutoreleaseReturnedValue() {
ret void
define dso_local i32 @foo(i32 %a) #0 !dbg !6 {
entry:
%a.addr = alloca i32, align 4
- %saved_stack = alloca i8*, align 8
+ %saved_stack = alloca ptr, align 8
%__vla_expr0 = alloca i64, align 8
%i = alloca i32, align 4
- store i32 %a, i32* %a.addr, align 4
- call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !11, metadata !DIExpression()), !dbg !12
- %0 = load i32, i32* %a.addr, align 4, !dbg !13
+ store i32 %a, ptr %a.addr, align 4
+ call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !11, metadata !DIExpression()), !dbg !12
+ %0 = load i32, ptr %a.addr, align 4, !dbg !13
%1 = zext i32 %0 to i64, !dbg !14
- %2 = call i8* @llvm.stacksave(), !dbg !14
- store i8* %2, i8** %saved_stack, align 8, !dbg !14
+ %2 = call ptr @llvm.stacksave(), !dbg !14
+ store ptr %2, ptr %saved_stack, align 8, !dbg !14
%vla = alloca i32, i64 %1, align 16, !dbg !14
- store i64 %1, i64* %__vla_expr0, align 8, !dbg !14
- call void @llvm.dbg.declare(metadata i64* %__vla_expr0, metadata !15, metadata !DIExpression()), !dbg !17
- call void @llvm.dbg.declare(metadata i32* %vla, metadata !18, metadata !DIExpression()), !dbg !22
- call void @llvm.dbg.declare(metadata i32* %i, metadata !23, metadata !DIExpression()), !dbg !25
- store i32 0, i32* %i, align 4, !dbg !25
+ store i64 %1, ptr %__vla_expr0, align 8, !dbg !14
+ call void @llvm.dbg.declare(metadata ptr %__vla_expr0, metadata !15, metadata !DIExpression()), !dbg !17
+ call void @llvm.dbg.declare(metadata ptr %vla, metadata !18, metadata !DIExpression()), !dbg !22
+ call void @llvm.dbg.declare(metadata ptr %i, metadata !23, metadata !DIExpression()), !dbg !25
+ store i32 0, ptr %i, align 4, !dbg !25
br label %for.cond, !dbg !26
for.cond: ; preds = %for.inc, %entry
- %3 = load i32, i32* %i, align 4, !dbg !27
- %4 = load i32, i32* %a.addr, align 4, !dbg !29
+ %3 = load i32, ptr %i, align 4, !dbg !27
+ %4 = load i32, ptr %a.addr, align 4, !dbg !29
%cmp = icmp slt i32 %3, %4, !dbg !30
br i1 %cmp, label %for.body, label %for.end, !dbg !31
for.body: ; preds = %for.cond
- %5 = load i32, i32* %a.addr, align 4, !dbg !32
- %6 = load i32, i32* %i, align 4, !dbg !33
+ %5 = load i32, ptr %a.addr, align 4, !dbg !32
+ %6 = load i32, ptr %i, align 4, !dbg !33
%sub = sub nsw i32 %5, %6, !dbg !34
- %7 = load i32, i32* %i, align 4, !dbg !35
+ %7 = load i32, ptr %i, align 4, !dbg !35
%idxprom = sext i32 %7 to i64, !dbg !36
- %arrayidx = getelementptr inbounds i32, i32* %vla, i64 %idxprom, !dbg !36
- store i32 %sub, i32* %arrayidx, align 4, !dbg !37
+ %arrayidx = getelementptr inbounds i32, ptr %vla, i64 %idxprom, !dbg !36
+ store i32 %sub, ptr %arrayidx, align 4, !dbg !37
br label %for.inc, !dbg !36
for.inc: ; preds = %for.body
- %8 = load i32, i32* %i, align 4, !dbg !38
+ %8 = load i32, ptr %i, align 4, !dbg !38
%inc = add nsw i32 %8, 1, !dbg !38
- store i32 %inc, i32* %i, align 4, !dbg !38
+ store i32 %inc, ptr %i, align 4, !dbg !38
br label %for.cond, !dbg !39, !llvm.loop !40
for.end: ; preds = %for.cond
- %9 = load i32, i32* %a.addr, align 4, !dbg !42
+ %9 = load i32, ptr %a.addr, align 4, !dbg !42
%sub1 = sub nsw i32 %9, 1, !dbg !43
%idxprom2 = sext i32 %sub1 to i64, !dbg !44
- %arrayidx3 = getelementptr inbounds i32, i32* %vla, i64 %idxprom2, !dbg !44
- %10 = load i32, i32* %arrayidx3, align 4, !dbg !44
- %11 = load i8*, i8** %saved_stack, align 8, !dbg !45
- call void @llvm.stackrestore(i8* %11), !dbg !45
+ %arrayidx3 = getelementptr inbounds i32, ptr %vla, i64 %idxprom2, !dbg !44
+ %10 = load i32, ptr %arrayidx3, align 4, !dbg !44
+ %11 = load ptr, ptr %saved_stack, align 8, !dbg !45
+ call void @llvm.stackrestore(ptr %11), !dbg !45
ret i32 %10, !dbg !45
}
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
- declare i8* @llvm.stacksave() #2
- declare void @llvm.stackrestore(i8*) #2
+ declare ptr @llvm.stacksave() #2
+ declare void @llvm.stackrestore(ptr) #2
attributes #0 = { noinline nounwind optnone uwtable }
attributes #1 = { nounwind readnone speculatable willreturn }
define void @test1() { ret void }
define void @test2() { ret void }
- define i16 @test3(i16* readonly %p) {
+ define i16 @test3(ptr readonly %p) {
; Keep original IR to show how the situation like this might happen
; due to preceding CG passes.
;
; the movw into movzwl because EAX is not live before the load (which
; can be seen by the fact that implicit EAX flag is missing).
entry:
- %tobool = icmp eq i16* %p, null
+ %tobool = icmp eq ptr %p, null
br i1 %tobool, label %if.end, label %if.then
if.then: ; preds = %entry
- %0 = load i16, i16* %p, align 2
+ %0 = load i16, ptr %p, align 2
br label %if.end
if.end: ; preds = %if.then, %entry
# Test the emission of heap alloc site instruction labels.
--- |
- declare i8* @alloc(i32) nounwind
+ declare ptr @alloc(i32) nounwind
define i32 @test(i32 %x) nounwind !dbg !6 {
entry:
- call i8* @alloc(i32 %x), !dbg !11, !heapallocsite !2
+ call ptr @alloc(i32 %x), !dbg !11, !heapallocsite !2
ret i32 0, !dbg !12
}
target triple = "x86_64-apple-macosx"
;; Positive test
- define i32 @imp_null_check_with_bitwise_op_0(i32* %x, i32 %val) {
+ define i32 @imp_null_check_with_bitwise_op_0(ptr %x, i32 %val) {
entry:
br i1 undef, label %is_null, label %not_null, !make.implicit !0
;; Negative test. The regalloc is such that we cannot hoist the
;; instruction materializing 2200000 into $eax
- define i32 @imp_null_check_with_bitwise_op_1(i32* %x, i32 %val, i32* %ptr) {
+ define i32 @imp_null_check_with_bitwise_op_1(ptr %x, i32 %val, ptr %ptr) {
entry:
br i1 undef, label %is_null, label %not_null, !make.implicit !0
;; Negative test: IR is identical to
;; @imp_null_check_with_bitwise_op_0 but MIR differs.
- define i32 @imp_null_check_with_bitwise_op_2(i32* %x, i32 %val) {
+ define i32 @imp_null_check_with_bitwise_op_2(ptr %x, i32 %val) {
entry:
br i1 undef, label %is_null, label %not_null, !make.implicit !0
;; Negative test: IR is identical to
;; @imp_null_check_with_bitwise_op_0 but MIR differs.
- define i32 @imp_null_check_with_bitwise_op_3(i32* %x, i32 %val) {
+ define i32 @imp_null_check_with_bitwise_op_3(ptr %x, i32 %val) {
entry:
br i1 undef, label %is_null, label %not_null, !make.implicit !0
}
;; Positive test
- define i32 @imp_null_check_with_bitwise_op_4(i32* %x, i32 %val) {
+ define i32 @imp_null_check_with_bitwise_op_4(ptr %x, i32 %val) {
entry:
br i1 undef, label %is_null, label %not_null, !make.implicit !0
declare void @f() readonly
- define i32 @no_hoist_across_call(i32* %ptr) {
+ define i32 @no_hoist_across_call(ptr %ptr) {
entry:
- %is_null = icmp eq i32* %ptr, null
+ %is_null = icmp eq ptr %ptr, null
br i1 %is_null, label %leave, label %stay, !make.implicit !0
stay:
call void @f()
- %val = load i32, i32* %ptr
+ %val = load i32, ptr %ptr
ret i32 %val
leave:
ret i32 0
}
- define i32 @dependency_live_in_hazard(i32* %ptr, i32** %ptr2, i32* %ptr3) #0 {
+ define i32 @dependency_live_in_hazard(ptr %ptr, ptr %ptr2, ptr %ptr3) #0 {
entry:
- %val = load i32*, i32** %ptr2
- %ptr_is_null = icmp eq i32* %ptr, null
+ %val = load ptr, ptr %ptr2
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null: ; preds = %entry
- %addend = load i32, i32* %val
- %result = load i32, i32* %ptr
+ %addend = load i32, ptr %val
+ %result = load i32, ptr %ptr
%result.shr = lshr i32 %result, 4
%result.and = and i32 %result.shr, 4095
%result.add = add i32 %addend, %result.and
ret i32 0
}
- define i32 @use_alternate_load_op(i32* %ptr, i32* %ptr2) {
+ define i32 @use_alternate_load_op(ptr %ptr, ptr %ptr2) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 0
}
- define i32 @imp_null_check_gep_load_with_use_dep(i32* %x, i32 %a) {
+ define i32 @imp_null_check_gep_load_with_use_dep(ptr %x, i32 %a) {
entry:
- %c = icmp eq i32* %x, null
+ %c = icmp eq ptr %x, null
br i1 %c, label %is_null, label %not_null, !make.implicit !0
is_null: ; preds = %entry
ret i32 42
not_null: ; preds = %entry
- %x.loc = getelementptr i32, i32* %x, i32 1
- %y = ptrtoint i32* %x.loc to i32
+ %x.loc = getelementptr i32, ptr %x, i32 1
+ %y = ptrtoint ptr %x.loc to i32
%b = add i32 %a, %y
- %t = load i32, i32* %x
+ %t = load i32, ptr %x
%z = add i32 %t, %b
ret i32 %z
}
- define i32 @imp_null_check_load_with_base_sep(i32* %x, i32 %a) {
+ define i32 @imp_null_check_load_with_base_sep(ptr %x, i32 %a) {
entry:
- %c = icmp eq i32* %x, null
+ %c = icmp eq ptr %x, null
br i1 %c, label %is_null, label %not_null, !make.implicit !0
is_null: ; preds = %entry
ret i32 undef
}
- define void @inc_store(i32* %ptr, i32 %val) {
+ define void @inc_store(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define void @inc_store_plus_offset(i32* %ptr, i32 %val) {
+ define void @inc_store_plus_offset(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define void @inc_store_with_dep(i32* %ptr, i32 %val) {
+ define void @inc_store_with_dep(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define i32 @inc_store_with_dep_in_null(i32* %ptr, i32 %val) {
+ define i32 @inc_store_with_dep_in_null(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define void @inc_store_with_volatile(i32* %ptr, i32 %val) {
+ define void @inc_store_with_volatile(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define void @inc_store_with_two_dep(i32* %ptr, i32 %val) {
+ define void @inc_store_with_two_dep(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define void @inc_store_with_redefined_base(i32* %ptr, i32 %val) {
+ define void @inc_store_with_redefined_base(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define i32 @inc_store_with_reused_base(i32* %ptr, i32 %val) {
+ define i32 @inc_store_with_reused_base(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define i32 @inc_store_across_call(i32* %ptr) {
+ define i32 @inc_store_across_call(ptr %ptr) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define i32 @inc_store_with_dep_in_dep(i32* %ptr, i32 %val) {
+ define i32 @inc_store_with_dep_in_dep(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define i32 @inc_store_with_load_over_store(i32* %ptr, i32* %ptr2) {
+ define i32 @inc_store_with_load_over_store(ptr %ptr, ptr %ptr2) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define i32 @inc_store_with_store_over_load(i32* %ptr, i32* %ptr2) {
+ define i32 @inc_store_with_store_over_load(ptr %ptr, ptr %ptr2) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define void @inc_store_with_store_over_store(i32* %ptr, i32* %ptr2) {
+ define void @inc_store_with_store_over_store(ptr %ptr, ptr %ptr2) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define void @inc_store_with_load_and_store(i32* %ptr, i32* %ptr2) {
+ define void @inc_store_with_load_and_store(ptr %ptr, ptr %ptr2) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret void
}
- define i32 @inc_store_and_load_no_alias(i32* noalias %ptr, i32* noalias %ptr2) {
+ define i32 @inc_store_and_load_no_alias(ptr noalias %ptr, ptr noalias %ptr2) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define i32 @inc_store_and_load_alias(i32* %ptr, i32* %ptr2) {
+ define i32 @inc_store_and_load_alias(ptr %ptr, ptr %ptr2) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define i32 @inc_spill_dep(i32* %ptr, i32 %val) {
+ define i32 @inc_spill_dep(ptr %ptr, i32 %val) {
entry:
- %ptr_is_null = icmp eq i32* %ptr, null
+ %ptr_is_null = icmp eq ptr %ptr, null
br i1 %ptr_is_null, label %is_null, label %not_null, !make.implicit !0
not_null:
ret i32 undef
}
- define i32 @imp_null_check_address_mul_overflow(i32* %x, i32 %a) {
+ define i32 @imp_null_check_address_mul_overflow(ptr %x, i32 %a) {
entry:
- %c = icmp eq i32* %x, null
+ %c = icmp eq ptr %x, null
br i1 %c, label %is_null, label %not_null, !make.implicit !0
is_null: ; preds = %entry
ret i32 42
not_null: ; preds = %entry
- %y = ptrtoint i32* %x to i32
+ %y = ptrtoint ptr %x to i32
%y64 = zext i32 %y to i64
%b = mul i64 %y64, 9223372036854775807 ; 0X0FFFF.. i.e. 2^63 - 1
%z = trunc i64 %b to i32
# RUN: llc -mtriple=x86_64 -run-pass=implicit-null-checks %s -o - | FileCheck %s
--- |
- define i32 @reg-rewrite(i32* %x) {
+ define i32 @reg-rewrite(ptr %x) {
entry:
br i1 undef, label %is_null, label %not_null, !make.implicit !0
declare void @_Z3gooi(i32) local_unnamed_addr #1
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { noreturn uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
%struct.A = type { i32, i32, i32 }
- @c = common local_unnamed_addr global %struct.A* null, align 8
+ @c = common local_unnamed_addr global ptr null, align 8
@a = common local_unnamed_addr global i32 0, align 4
@d = common local_unnamed_addr global i32 0, align 4
@b = common local_unnamed_addr global i32 0, align 4
define i32 @fn1() local_unnamed_addr !dbg !8 {
- %1 = load %struct.A*, %struct.A** @c, align 8, !dbg !13
- %2 = load i32, i32* @a, align 4, !dbg !13
+ %1 = load ptr, ptr @c, align 8, !dbg !13
+ %2 = load i32, ptr @a, align 4, !dbg !13
%3 = sext i32 %2 to i64, !dbg !13
- %4 = getelementptr inbounds %struct.A, %struct.A* %1, i64 %3, !dbg !13
- %5 = ptrtoint %struct.A* %4 to i64, !dbg !13
+ %4 = getelementptr inbounds %struct.A, ptr %1, i64 %3, !dbg !13
+ %5 = ptrtoint ptr %4 to i64, !dbg !13
%6 = trunc i64 %5 to i32, !dbg !13
- store i32 %6, i32* @d, align 4, !dbg !13
- %7 = getelementptr inbounds %struct.A, %struct.A* %1, i64 %3, i32 2, !dbg !14
- tail call void @llvm.dbg.value(metadata i32* %7, i64 0, metadata !11, metadata !DIExpression()), !dbg !15
+ store i32 %6, ptr @d, align 4, !dbg !13
+ %7 = getelementptr inbounds %struct.A, ptr %1, i64 %3, i32 2, !dbg !14
+ tail call void @llvm.dbg.value(metadata ptr %7, i64 0, metadata !11, metadata !DIExpression()), !dbg !15
br label %8, !dbg !16
; <label>:8: ; preds = %8, %0
- %9 = load i32, i32* %7, align 4, !dbg !17
- store i32 %9, i32* @d, align 4, !dbg !17
+ %9 = load i32, ptr %7, align 4, !dbg !17
+ store i32 %9, ptr @d, align 4, !dbg !17
br label %8, !dbg !18
}
]
sw.bb: ; preds = %do.body
- tail call void @_Z3gooPKc(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
+ tail call void @_Z3gooPKc(ptr @.str)
br label %sw.bb1
sw.bb1: ; preds = %sw.bb, %do.body
- tail call void @_Z3gooPKc(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
+ tail call void @_Z3gooPKc(ptr @.str.1)
br label %sw.bb2
sw.bb2: ; preds = %sw.bb1, %do.body
- tail call void @_Z3gooPKc(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
+ tail call void @_Z3gooPKc(ptr @.str.2)
br label %do.cond
do.cond: ; preds = %sw.bb2, %do.body
- %0 = load i32, i32* @m, align 4, !tbaa !4
+ %0 = load i32, ptr @m, align 4, !tbaa !4
%cmp = icmp eq i32 %0, 5
br i1 %cmp, label %do.end, label %do.body
ret void
}
- declare void @_Z3gooPKc(i8*) local_unnamed_addr #1
+ declare void @_Z3gooPKc(ptr) local_unnamed_addr #1
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #2
+ declare void @llvm.stackprotector(ptr, ptr) #2
attributes #0 = { uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
source_filename = "test.ll"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
- define i8 @foo(<64 x i8> %x, i64* %y, i64 %z) #0 {
+ define i8 @foo(<64 x i8> %x, ptr %y, i64 %z) #0 {
%a = icmp eq <64 x i8> %x, zeroinitializer
%b = bitcast <64 x i1> %a to i64
%c = add i64 %b, %z
- store i64 %c, i64* %y, align 8
+ store i64 %c, ptr %y, align 8
%d = extractelement <64 x i1> %a, i32 0
%e = zext i1 %d to i8
ret i8 %e
declare void @good(i32, i32, i32, i32)
- declare void @struct(%struct.s* byval(%struct.s), i32, i32, i32)
+ declare void @struct(ptr byval(%struct.s), i32, i32, i32)
; Function Attrs: optsize
define void @test9() #0 {
%q = alloca i32, align 4
%s = alloca %struct.s, align 4
call void @good(i32 1, i32 2, i32 3, i32 4)
- %pv = ptrtoint i32* %p to i32
- %qv = ptrtoint i32* %q to i32
- call void @struct(%struct.s* byval(%struct.s) %s, i32 6, i32 %qv, i32 %pv)
+ %pv = ptrtoint ptr %p to i32
+ %qv = ptrtoint ptr %q to i32
+ call void @struct(ptr byval(%struct.s) %s, i32 6, i32 %qv, i32 %pv)
ret void
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { optsize }
attributes #1 = { nounwind }
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
- define i32 @atomic(i8** %arg) {
- %load = load atomic i8*, i8** %arg unordered, align 8
- %cmp = icmp eq i8* %load, null
+ define i32 @atomic(ptr %arg) {
+ %load = load atomic ptr, ptr %arg unordered, align 8
+ %cmp = icmp eq ptr %load, null
%zext = zext i1 %cmp to i32
ret i32 %zext
}
- define i32 @nonatomic_unoptimized(i8** %arg) {
- %load = load i8*, i8** %arg, align 8
- %cmp = icmp eq i8* %load, null
+ define i32 @nonatomic_unoptimized(ptr %arg) {
+ %load = load ptr, ptr %arg, align 8
+ %cmp = icmp eq ptr %load, null
%zext = zext i1 %cmp to i32
ret i32 %zext
}
ret i32 0
}
- define i32 @bar(i32 %a, i32* %p) {
+ define i32 @bar(i32 %a, ptr %p) {
bb0:
br label %bb1
bb7: ; preds = %bb4, %bb6
%vreg1 = phi i32 [ 2, %bb6 ], [ 1, %bb4 ]
%vreg2 = add i32 %vreg5, %vreg0
- store i32 %vreg0, i32* %p
+ store i32 %vreg0, ptr %p
%vreg3 = add i32 %vreg1, %vreg2
%cond2 = icmp slt i32 %vreg3, 10
br i1 %cond2, label %bb1, label %bb8
define dso_local void @x1(i32) !dbg !11 {
%2 = alloca i32, align 4
- store i32 %0, i32* %2, align 4
- call void @llvm.dbg.declare(metadata i32* %2, metadata !14, metadata !DIExpression()), !dbg !16
- %3 = load i32, i32* @x0, align 4, !dbg !16
+ store i32 %0, ptr %2, align 4
+ call void @llvm.dbg.declare(metadata ptr %2, metadata !14, metadata !DIExpression()), !dbg !16
+ %3 = load i32, ptr @x0, align 4, !dbg !16
%4 = icmp ne i32 %3, 0, !dbg !16
br i1 %4, label %5, label %7, !dbg !16
; <label>:5: ; preds = %1
- %6 = load i32, i32* %2, align 4, !dbg !16
+ %6 = load i32, ptr %2, align 4, !dbg !16
call void @x3(i32 0, i32 %6), !dbg !16
br label %7, !dbg !16
target triple = "x86_64-unknown-linux-gnu"
; Function Attrs: noinline norecurse nounwind uwtable
- define dso_local i32 @main(i32 %argc, i8** nocapture readnone %argv) local_unnamed_addr #0 {
+ define dso_local i32 @main(i32 %argc, ptr nocapture readnone %argv) local_unnamed_addr #0 {
entry:
br label %if.end
if.end:
br label %for.body
for.body: ; preds = %for.body, %entry
- %0 = load i32, i32* @a, align 4
+ %0 = load i32, ptr @a, align 4
%conv = sext i32 %0 to i64
- %1 = load i64, i64* undef, align 8
+ %1 = load i64, ptr undef, align 8
%or = or i64 %1, %conv
- store i64 %or, i64* undef, align 8
+ store i64 %or, ptr undef, align 8
call void @e()
%cmp4 = icmp eq i64 %or, 0
%conv5 = zext i1 %cmp4 to i32
%conv6 = trunc i32 %conv5 to i8
- store i8 %conv6, i8* undef, align 1
+ store i8 %conv6, ptr undef, align 1
%conv7 = sext i8 %conv6 to i32
%bf.cast = trunc i40 undef to i32
%xor = xor i32 %conv7, %bf.cast
%conv8 = sext i32 %xor to i64
- store i64 %conv8, i64* undef, align 8
+ store i64 %conv8, ptr undef, align 8
br label %for.body
}
; CHECK: [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @a, $noreg :: (load (s64) from got)
; CHECK: [[MOVSX64rm32_:%[0-9]+]]:gr64 = MOVSX64rm32 killed [[MOV64rm]], 1, $noreg, 0, $noreg :: (dereferenceable load (s32) from @a)
; CHECK: [[DEF:%[0-9]+]]:gr64 = IMPLICIT_DEF
- ; CHECK: OR64mr [[DEF]], 1, $noreg, 0, $noreg, [[MOVSX64rm32_]], implicit-def $eflags :: (store (s64) into `i64* undef`), (load (s64) from `i64* undef`)
+ ; CHECK: OR64mr [[DEF]], 1, $noreg, 0, $noreg, [[MOVSX64rm32_]], implicit-def $eflags :: (store (s64) into `ptr undef`), (load (s64) from `ptr undef`)
; CHECK: [[SETCCr:%[0-9]+]]:gr8 = SETCCr 4, implicit $eflags
; CHECK: ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
; CHECK: CALL64pcrel32 target-flags(x86-plt) @e, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
; CHECK: ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
; CHECK: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[SETCCr]]
; CHECK: [[DEF1:%[0-9]+]]:gr64 = IMPLICIT_DEF
- ; CHECK: MOV8mr [[DEF1]], 1, $noreg, 0, $noreg, [[SETCCr]] :: (store (s8) into `i8* undef`)
+ ; CHECK: MOV8mr [[DEF1]], 1, $noreg, 0, $noreg, [[SETCCr]] :: (store (s8) into `ptr undef`)
; CHECK: [[DEF2:%[0-9]+]]:gr32 = IMPLICIT_DEF
; CHECK: [[XOR32rr:%[0-9]+]]:gr32 = XOR32rr [[MOVZX32rr8_]], [[DEF2]], implicit-def $eflags
; CHECK: [[MOVSX64rr32_:%[0-9]+]]:gr64 = MOVSX64rr32 [[XOR32rr]]
; CHECK: [[DEF3:%[0-9]+]]:gr64 = IMPLICIT_DEF
- ; CHECK: MOV64mr [[DEF3]], 1, $noreg, 0, $noreg, [[MOVSX64rr32_]] :: (store (s64) into `i64* undef`)
+ ; CHECK: MOV64mr [[DEF3]], 1, $noreg, 0, $noreg, [[MOVSX64rr32_]] :: (store (s64) into `ptr undef`)
; CHECK: JMP_1 %bb.1
bb.0.entry:
JMP_1 %bb.1
%7:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @a, $noreg :: (load (s64) from got)
%8:gr64 = MOVSX64rm32 killed %7, 1, $noreg, 0, $noreg :: (dereferenceable load (s32) from @a)
%9:gr64 = IMPLICIT_DEF
- OR64mr %9, 1, $noreg, 0, $noreg, %8, implicit-def $eflags :: (store (s64) into `i64* undef`), (load (s64) from `i64* undef`)
+ OR64mr %9, 1, $noreg, 0, $noreg, %8, implicit-def $eflags :: (store (s64) into `ptr undef`), (load (s64) from `ptr undef`)
%10:gr64 = COPY $eflags
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
CALL64pcrel32 target-flags(x86-plt) @e, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
%11:gr8 = SETCCr 4, implicit $eflags
%4:gr32 = MOVZX32rr8 killed %11
%12:gr64 = IMPLICIT_DEF
- SETCCm %12, 1, $noreg, 0, $noreg, 4, implicit $eflags :: (store (s8) into `i8* undef`)
+ SETCCm %12, 1, $noreg, 0, $noreg, 4, implicit $eflags :: (store (s8) into `ptr undef`)
%5:gr32 = IMPLICIT_DEF
%6:gr32 = XOR32rr %4, %5, implicit-def $eflags
%3:gr64 = MOVSX64rr32 %6
%0:gr64 = IMPLICIT_DEF
- MOV64mr %0, 1, $noreg, 0, $noreg, %3 :: (store (s64) into `i64* undef`)
+ MOV64mr %0, 1, $noreg, 0, $noreg, %3 :: (store (s64) into `ptr undef`)
JMP_1 %bb.1
...
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
- @b = common local_unnamed_addr global i8* null, align 8
+ @b = common local_unnamed_addr global ptr null, align 8
@a = common local_unnamed_addr global i32 0, align 4
define i32 @foo() local_unnamed_addr {
entry:
- %t0 = load i8*, i8** @b, align 8
- %t1 = load i8, i8* %t0, align 1
+ %t0 = load ptr, ptr @b, align 8
+ %t1 = load i8, ptr %t0, align 1
%cmp4 = icmp eq i8 %t1, 0
- %t2 = load i32, i32* @a, align 4
+ %t2 = load i32, ptr @a, align 4
br i1 %cmp4, label %while.end, label %while.body.preheader
while.body.preheader: ; preds = %entry
%conv = sext i8 %t4 to i32
%add = mul i32 %t3, 33
%add3 = add nsw i32 %add, %conv
- store i32 %add3, i32* @a, align 4
- %t5 = load i8, i8* %t0, align 1
+ store i32 %add3, ptr @a, align 4
+ %t5 = load i8, ptr %t0, align 1
%cmp = icmp eq i8 %t5, 0
br i1 %cmp, label %while.end, label %while.body
--- |
define void @fun() { ret void }
- declare noalias nonnull i8* @_Znwj()
+ declare noalias nonnull ptr @_Znwj()
declare void @_ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_()
declare zeroext i1 @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private14_end__commentsEv()
declare zeroext i1 @_ZN15COLLADASaxFWL1429ColladaParserAutoGen14Private15_preEnd__authorEv()
%c.addr = alloca i32, align 4
tail call void @llvm.dbg.value(metadata i32 %d, metadata !13, metadata !DIExpression()), !dbg !19
tail call void @llvm.dbg.value(metadata i32 %c, metadata !14, metadata !DIExpression()), !dbg !20
- store i32 %c, i32* %c.addr, align 4, !tbaa !21
+ store i32 %c, ptr %c.addr, align 4, !tbaa !21
tail call void @llvm.dbg.value(metadata i32 %b, metadata !15, metadata !DIExpression()), !dbg !25
tail call void @llvm.dbg.value(metadata i32 %a, metadata !16, metadata !DIExpression()), !dbg !26
%cmp = icmp slt i32 %a, %b, !dbg !27
for.cond: ; preds = %for.cond, %for.cond.preheader
%lsr.iv = phi i32 [ %lsr.iv.next, %for.cond ], [ %0, %for.cond.preheader ]
call void @llvm.dbg.value(metadata i32 undef, metadata !17, metadata !DIExpression()), !dbg !32
- call void @llvm.dbg.value(metadata i32* %c.addr, metadata !14, metadata !DIExpression()), !dbg !20
- %call = call i32 @doSomething(i32* nonnull %c.addr) #3, !dbg !33
+ call void @llvm.dbg.value(metadata ptr %c.addr, metadata !14, metadata !DIExpression()), !dbg !20
+ %call = call i32 @doSomething(ptr nonnull %c.addr) #3, !dbg !33
call void @llvm.dbg.value(metadata !2, metadata !17, metadata !DIExpression()), !dbg !32
%lsr.iv.next = add i32 %lsr.iv, 1, !dbg !30
%cmp1 = icmp slt i32 %lsr.iv.next, %d, !dbg !30
ret i32 %retval.0, !dbg !37
}
- declare i32 @doSomething(i32*) local_unnamed_addr
+ declare i32 @doSomething(ptr) local_unnamed_addr
; Function Attrs: nounwind readnone speculatable
declare void @llvm.dbg.value(metadata, metadata, metadata) #2
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #3
+ declare void @llvm.stackprotector(ptr, ptr) #3
attributes #0 = { nounwind }
attributes #2 = { nounwind readnone speculatable }
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { nounwind "target-features"="+bmi2" }
attributes #1 = { nounwind }
ret <2 x double> %1
}
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #0
+ declare void @llvm.stackprotector(ptr, ptr) #0
attributes #0 = { nounwind }
declare void @foo()
- define i8 addrspace(1)* @test_one(i8 addrspace(1)* %p) gc "statepoint-example" {
+ define ptr addrspace(1) @test_one(ptr addrspace(1) %p) gc "statepoint-example" {
entry:
- %token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(i8 addrspace(1)* %p) ]
- %p2 = call i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %token, i32 0, i32 0) ; (%p, %p)
- ret i8 addrspace(1)* %p2
+ %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %p) ]
+ %p2 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 0, i32 0) ; (%p, %p)
+ ret ptr addrspace(1) %p2
}
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 immarg, i32 immarg, void ()*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
; Function Attrs: nounwind readonly
- declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { nounwind readonly }
attributes #1 = { nounwind }
declare void @foo(i64)
- define i8 addrspace(1)* @test(i64 %a, i64 %b, i64 %c, i8 addrspace(1)* %p) gc "statepoint-example" {
+ define ptr addrspace(1) @test(i64 %a, i64 %b, i64 %c, ptr addrspace(1) %p) gc "statepoint-example" {
entry:
- %token = call token (i64, i32, void (i64)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi64f(i64 0, i32 0, void (i64)* elementtype(void (i64)) @foo, i32 1, i32 0, i64 %b, i3 0, i32 0) [ "deopt"(i64 %b), "gc-live"(i8 addrspace(1)* %p) ]
- %p2 = call i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %token, i32 0, i32 0) ; (%p, %p)
- ret i8 addrspace(1)* %p2
+ %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (i64)) @foo, i32 1, i32 0, i64 %b, i3 0, i32 0) [ "deopt"(i64 %b), "gc-live"(ptr addrspace(1) %p) ]
+ %p2 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 0, i32 0) ; (%p, %p)
+ ret ptr addrspace(1) %p2
}
; Function Attrs: nounwind readonly
- declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidi64f(i64 immarg, i32 immarg, void (i64)*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
attributes #0 = { nounwind readonly }
declare void @foo(i64)
- define i8 addrspace(1)* @test_cp(i64 %a, i64 %b, i64 %c, i8 addrspace(1)* %p) gc "statepoint-example" {
- ret i8 addrspace(1)* undef
+ define ptr addrspace(1) @test_cp(i64 %a, i64 %b, i64 %c, ptr addrspace(1) %p) gc "statepoint-example" {
+ ret ptr addrspace(1) undef
}
...
---
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
- declare void @some_call(i64 addrspace(1)*)
+ declare void @some_call(ptr addrspace(1))
declare i32 @personality_function()
- define i64 addrspace(1)* @test_basic(i64 addrspace(1)* %obj, i64 addrspace(1)* %obj1) gc "statepoint-example" personality i32 ()* @personality_function {
+ define ptr addrspace(1) @test_basic(ptr addrspace(1) %obj, ptr addrspace(1) %obj1) gc "statepoint-example" personality ptr @personality_function {
entry:
- %0 = invoke token (i64, i32, void (i64 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 0, i32 0, void (i64 addrspace(1)*)* elementtype(void (i64 addrspace(1)*)) @some_call, i32 1, i32 0, i64 addrspace(1)* %obj, i32 0, i32 0) [ "gc-live"(i64 addrspace(1)* %obj, i64 addrspace(1)* %obj1), "deopt"(i32 0, i32 -1, i32 0, i32 0, i32 0) ]
+ %0 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (ptr addrspace(1))) @some_call, i32 1, i32 0, ptr addrspace(1) %obj, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %obj, ptr addrspace(1) %obj1), "deopt"(i32 0, i32 -1, i32 0, i32 0, i32 0) ]
to label %invoke_safepoint_normal_dest unwind label %exceptional_return
invoke_safepoint_normal_dest: ; preds = %entry
- %obj.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %0, i32 0, i32 0) ; (%obj, %obj)
- %obj1.relocated = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %0, i32 1, i32 1) ; (%obj1, %obj1)
+ %obj.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %0, i32 0, i32 0) ; (%obj, %obj)
+ %obj1.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %0, i32 1, i32 1) ; (%obj1, %obj1)
br label %normal_return
normal_return: ; preds = %invoke_safepoint_normal_dest
- ret i64 addrspace(1)* %obj.relocated
+ ret ptr addrspace(1) %obj.relocated
exceptional_return: ; preds = %entry
%landing_pad = landingpad token
cleanup
- %obj.relocated1 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 0, i32 0) ; (%obj, %obj)
- %obj1.relocated1 = call coldcc i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token %landing_pad, i32 1, i32 1) ; (%obj1, %obj1)
- ret i64 addrspace(1)* %obj1.relocated1
+ %obj.relocated1 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 0, i32 0) ; (%obj, %obj)
+ %obj1.relocated1 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 1, i32 1) ; (%obj1, %obj1)
+ ret ptr addrspace(1) %obj1.relocated1
}
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidp1i64f(i64 immarg, i32 immarg, void (i64 addrspace(1)*)*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
; Function Attrs: nounwind readonly
- declare i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { nounwind readonly }
attributes #1 = { nounwind }
declare i32 @personality_function()
- define i8 addrspace(1)* @test_one(i32 %a, i8 addrspace(1)* %p, i8 addrspace(1)* %q) gc "statepoint-example" personality i32 ()* @personality_function {
+ define ptr addrspace(1) @test_one(i32 %a, ptr addrspace(1) %p, ptr addrspace(1) %q) gc "statepoint-example" personality ptr @personality_function {
entry:
%cmp = icmp eq i32 %a, 0
br i1 %cmp, label %zero, label %nonzero
zero: ; preds = %entry
- %token = invoke token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(i8 addrspace(1)* %p, i8 addrspace(1)* %q) ]
+ %token = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %p, ptr addrspace(1) %q) ]
to label %normal_dest_a unwind label %exceptional_return_a
nonzero: ; preds = %entry
- %token2 = invoke token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* elementtype(void ()) @bar, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(i8 addrspace(1)* %p, i8 addrspace(1)* %q) ]
+ %token2 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @bar, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %p, ptr addrspace(1) %q) ]
to label %normal_dest_b unwind label %exceptional_return_b
normal_dest_a: ; preds = %zero
- %p2 = call i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %token, i32 0, i32 0) ; (%p, %p)
- ret i8 addrspace(1)* %p2
+ %p2 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 0, i32 0) ; (%p, %p)
+ ret ptr addrspace(1) %p2
exceptional_return_a: ; preds = %zero
%landing_pad = landingpad token
cleanup
- %q2 = call i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %landing_pad, i32 1, i32 1) ; (%q, %q)
- ret i8 addrspace(1)* %q2
+ %q2 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 1, i32 1) ; (%q, %q)
+ ret ptr addrspace(1) %q2
normal_dest_b: ; preds = %nonzero
- %p3 = call i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %token2, i32 0, i32 0) ; (%p, %p)
- ret i8 addrspace(1)* %p3
+ %p3 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token2, i32 0, i32 0) ; (%p, %p)
+ ret ptr addrspace(1) %p3
exceptional_return_b: ; preds = %nonzero
%landing_pad2 = landingpad token
cleanup
- %q3 = call i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %landing_pad2, i32 1, i32 1) ; (%q, %q)
- ret i8 addrspace(1)* %q3
+ %q3 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad2, i32 1, i32 1) ; (%q, %q)
+ ret ptr addrspace(1) %q3
}
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 immarg, i32 immarg, void ()*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
; Function Attrs: nounwind readonly
- declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
attributes #0 = { nounwind readonly }
attributes #1 = { nounwind }
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
- define void @test_undef(i8 addrspace(1)* %arg1, i8 addrspace(1)* %arg2, i8 addrspace(1)* %arg3, i8 addrspace(1)* %arg4) #0 gc "statepoint-example" {
+ define void @test_undef(ptr addrspace(1) %arg1, ptr addrspace(1) %arg2, ptr addrspace(1) %arg3, ptr addrspace(1) %arg4) #0 gc "statepoint-example" {
bb:
%tmp1 = lshr i32 0, undef
- %tmp2 = load atomic i32, i32 addrspace(1)* undef unordered, align 8
- %tmp3 = load atomic i32, i32 addrspace(1)* undef unordered, align 8
- %tmp19 = inttoptr i64 undef to i8 addrspace(1)*
+ %tmp2 = load atomic i32, ptr addrspace(1) undef unordered, align 8
+ %tmp3 = load atomic i32, ptr addrspace(1) undef unordered, align 8
+ %tmp19 = inttoptr i64 undef to ptr addrspace(1)
br label %bb7
bb7: ; preds = %bb
%tmp4 = icmp slt i32 %tmp3, undef
%tmp5 = select i1 %tmp4, i32 6, i32 undef
%tmp6 = add i32 %tmp5, %tmp2
- %tmp7 = call i8 addrspace(1)* @wombat()
- %tmp20 = call token (i64, i32, void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8i32i32p1i8i32f(i64 2, i32 5, void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)* nonnull elementtype(void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)) @hoge, i32 5, i32 0, i8 addrspace(1)* %tmp19, i32 %tmp2, i32 %tmp6, i8 addrspace(1)* %tmp7, i32 0, i32 0, i32 0) [ "deopt"(i8 addrspace(1)* %tmp19, i8 addrspace(1)* %arg1, i8 addrspace(1)* %arg3, i8 addrspace(1)* %arg4, i32 %tmp2, i32 %tmp1, i32 %tmp5), "gc-live"(i8 addrspace(1)* %tmp19, i8 addrspace(1)* %arg2) ]
- %tmp21 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp20, i32 0, i32 0) ; (%tmp19, %tmp19)
- %tmp22 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp20, i32 1, i32 1) ; (%arg2, %arg2)
+ %tmp7 = call ptr addrspace(1) @wombat()
+ %tmp20 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1), i32, i32, ptr addrspace(1), i32)) @hoge, i32 5, i32 0, ptr addrspace(1) %tmp19, i32 %tmp2, i32 %tmp6, ptr addrspace(1) %tmp7, i32 0, i32 0, i32 0) [ "deopt"(ptr addrspace(1) %tmp19, ptr addrspace(1) %arg1, ptr addrspace(1) %arg3, ptr addrspace(1) %arg4, i32 %tmp2, i32 %tmp1, i32 %tmp5), "gc-live"(ptr addrspace(1) %tmp19, ptr addrspace(1) %arg2) ]
+ %tmp21 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 0, i32 0) ; (%tmp19, %tmp19)
+ %tmp22 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 1, i32 1) ; (%arg2, %arg2)
ret void
}
- declare void @hoge(i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32) #0
+ declare void @hoge(ptr addrspace(1), i32, i32, ptr addrspace(1), i32) #0
- declare i8 addrspace(1)* @wombat() #0
+ declare ptr addrspace(1) @wombat() #0
; Function Attrs: nounwind readonly
- declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #1
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #1
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidp1i8i32i32p1i8i32f(i64 immarg, i32 immarg, void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
attributes #0 = { "target-cpu"="broadwell" }
attributes #1 = { nounwind readonly }
; CHECK: renamable $r12 = COPY $rdx
; CHECK: renamable $r14 = COPY $rsi
; CHECK: renamable $r13 = COPY $rdi
- ; CHECK: renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
+ ; CHECK: renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
; CHECK: bb.1.bb7:
; CHECK: liveins: $rbx, $r12, $r13, $r14, $r15
; CHECK: renamable $ebp = LEA64_32r renamable $rbx, 1, $noreg, 6, $noreg
renamable $r12 = COPY $rdx
renamable $r14 = COPY $rsi
renamable $r13 = COPY $rdi
- renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
+ renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
bb.1.bb7:
liveins: $rbx, $r12, $r13, $r14, $r15
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
- define void @test_undef(i8 addrspace(1)* %arg1, i8 addrspace(1)* %arg2, i8 addrspace(1)* %arg3, i8 addrspace(1)* %arg4) #0 gc "statepoint-example" {
+ define void @test_undef(ptr addrspace(1) %arg1, ptr addrspace(1) %arg2, ptr addrspace(1) %arg3, ptr addrspace(1) %arg4) #0 gc "statepoint-example" {
bb:
%tmp1 = lshr i32 0, undef
- %tmp2 = load atomic i32, i32 addrspace(1)* undef unordered, align 8
- %tmp3 = load atomic i32, i32 addrspace(1)* undef unordered, align 8
+ %tmp2 = load atomic i32, ptr addrspace(1) undef unordered, align 8
+ %tmp3 = load atomic i32, ptr addrspace(1) undef unordered, align 8
br label %bb7
bb7: ; preds = %bb
%tmp4 = icmp slt i32 %tmp3, undef
%tmp5 = select i1 %tmp4, i32 6, i32 undef
%tmp6 = add i32 %tmp5, %tmp2
- %tmp7 = call i8 addrspace(1)* @wombat()
- %tmp20 = call token (i64, i32, void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8i32i32p1i8i32f(i64 2, i32 5, void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)* nonnull elementtype(void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)) @hoge, i32 5, i32 0, i8 addrspace(1)* %arg3, i32 %tmp2, i32 %tmp6, i8 addrspace(1)* %tmp7, i32 0, i32 0, i32 0) [ "deopt"(i8 addrspace(1)* %arg2, i8 addrspace(1)* %arg1, i8 addrspace(1)* %arg3, i8 addrspace(1)* %arg4, i32 %tmp2, i32 %tmp1, i32 %tmp5), "gc-live"() ]
+ %tmp7 = call ptr addrspace(1) @wombat()
+ %tmp20 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1), i32, i32, ptr addrspace(1), i32)) @hoge, i32 5, i32 0, ptr addrspace(1) %arg3, i32 %tmp2, i32 %tmp6, ptr addrspace(1) %tmp7, i32 0, i32 0, i32 0) [ "deopt"(ptr addrspace(1) %arg2, ptr addrspace(1) %arg1, ptr addrspace(1) %arg3, ptr addrspace(1) %arg4, i32 %tmp2, i32 %tmp1, i32 %tmp5), "gc-live"() ]
ret void
}
- declare void @hoge(i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32) #0
+ declare void @hoge(ptr addrspace(1), i32, i32, ptr addrspace(1), i32) #0
- declare i8 addrspace(1)* @wombat() #0
+ declare ptr addrspace(1) @wombat() #0
; Function Attrs: nounwind readonly
- declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #1
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #1
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidp1i8i32i32p1i8i32f(i64 immarg, i32 immarg, void (i8 addrspace(1)*, i32, i32, i8 addrspace(1)*, i32)*, i32 immarg, i32 immarg, ...) #0
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...) #0
attributes #0 = { "target-cpu"="broadwell" }
attributes #1 = { nounwind readonly "target-cpu"="broadwell" }
; CHECK: renamable $r14 = COPY $rdx
; CHECK: renamable $r13 = COPY $rsi
; CHECK: renamable $r12 = COPY $rdi
- ; CHECK: renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
+ ; CHECK: renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
; CHECK: bb.1.bb7:
; CHECK: liveins: $rbx, $r12, $r13, $r14, $r15
; CHECK: renamable $ebp = LEA64_32r renamable $rbx, 1, $noreg, 6, $noreg
renamable $r14 = COPY $rdx
renamable $r13 = COPY $rsi
renamable $r12 = COPY $rdi
- renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
+ renamable $ebx = MOV32rm undef renamable $rax, 1, $noreg, 0, $noreg, implicit-def $rbx :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
bb.1.bb7:
liveins: $rbx, $r12, $r13, $r14, $r15
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
- @global = external global i8 addrspace(1)*, align 8
- @global.1 = external global i8 addrspace(1)*, align 8
+ @global = external global ptr addrspace(1), align 8
+ @global.1 = external global ptr addrspace(1), align 8
- define void @bar(i8 addrspace(1)* %arg) gc "statepoint-example" personality i32* ()* @zot {
+ define void @bar(ptr addrspace(1) %arg) gc "statepoint-example" personality ptr @zot {
bb:
- %tmp = inttoptr i64 undef to i8 addrspace(1)*
+ %tmp = inttoptr i64 undef to ptr addrspace(1)
br label %bb1
bb1: ; preds = %bb64, %bb
- %tmp3 = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2, i32 5, void ()* nonnull elementtype(void ()) @wibble, i32 0, i32 0, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 1, i32 0, i32 0, i32 5, i32 0, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null), "gc-live"(i8 addrspace(1)* %tmp) ]
- %tmp4 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp3, i32 0, i32 0) ; (%tmp, %tmp)
- %tmp5 = call token (i64, i32, void (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8f(i64 2882400000, i32 0, void (i8 addrspace(1)*)* nonnull elementtype(void (i8 addrspace(1)*)) @barney, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 9, i32 1, i32 9, i32 0, i32 5, i32 1, i32 7, i8* null, i32 8, i32 2, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 8, i32 2), "gc-live"(i8 addrspace(1)* undef, i8 addrspace(1)* %tmp4) ]
- %tmp6 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp5, i32 1, i32 1) ; (%tmp4, %tmp4)
- %tmp7 = call token (i64, i32, i8 addrspace(1)* ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i8f(i64 2, i32 5, i8 addrspace(1)* ()* nonnull elementtype(i8 addrspace(1)* ()) @blam, i32 0, i32 0, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 10, i32 1, i32 9, i32 0, i32 5, i32 1, i32 7, i8* null, i32 8, i32 2, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 8, i32 2), "gc-live"(i8 addrspace(1)* %tmp6, i8 addrspace(1)* undef) ]
- %tmp8 = call align 8 "java-type-kid"="69" i8 addrspace(1)* @llvm.experimental.gc.result.p1i8(token %tmp7)
- %tmp9 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp7, i32 0, i32 0) ; (%tmp6, %tmp6)
+ %tmp3 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void ()) @wibble, i32 0, i32 0, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 0, i32 0, i32 5, i32 0, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null), "gc-live"(ptr addrspace(1) %tmp) ]
+ %tmp4 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp3, i32 0, i32 0) ; (%tmp, %tmp)
+ %tmp5 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (ptr addrspace(1))) @barney, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 9, i32 1, i32 9, i32 0, i32 5, i32 1, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) undef, ptr addrspace(1) %tmp4) ]
+ %tmp6 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp5, i32 1, i32 1) ; (%tmp4, %tmp4)
+ %tmp7 = call token (i64, i32, ptr addrspace(1) ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr addrspace(1) ()* nonnull elementtype(ptr addrspace(1) ()) @blam, i32 0, i32 0, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 9, i32 0, i32 5, i32 1, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) %tmp6, ptr addrspace(1) undef) ]
+ %tmp8 = call align 8 "java-type-kid"="69" ptr addrspace(1) @llvm.experimental.gc.result.p1(token %tmp7)
+ %tmp9 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp7, i32 0, i32 0) ; (%tmp6, %tmp6)
br i1 undef, label %bb64, label %bb10
bb10: ; preds = %bb1
- %tmp11 = inttoptr i64 undef to i8 addrspace(1)*
- %tmp12 = call i8 addrspace(1)* @wobble.3(i8 addrspace(1)* undef, i8 addrspace(1)* addrspace(1)* undef)
- %tmp13 = select i1 false, i8 addrspace(1)* null, i8 addrspace(1)* %tmp12
+ %tmp11 = inttoptr i64 undef to ptr addrspace(1)
+ %tmp12 = call ptr addrspace(1) @wobble.3(ptr addrspace(1) undef, ptr addrspace(1) undef)
+ %tmp13 = select i1 false, ptr addrspace(1) null, ptr addrspace(1) %tmp12
%tmp14 = extractvalue { i32, i1 } undef, 1
br i1 %tmp14, label %bb17, label %bb15
bb15: ; preds = %bb10
- %tmp16 = call token (i64, i32, void (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8f(i64 2882400000, i32 0, void (i8 addrspace(1)*)* nonnull elementtype(void (i8 addrspace(1)*)) @barney, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, i8 addrspace(1)* %tmp13, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 2, i32 5, i32 1, i32 0, i32 2, i32 0, i32 0, i8 addrspace(1)* %tmp8, i32 7, i8* null, i32 1, i32 6, i32 0, i32 0, i32 1, i32 1, i32 0, i8 addrspace(1)* %tmp8, i32 8, i32 10), "gc-live"(i8 addrspace(1)* %tmp9, i8 addrspace(1)* %tmp13, i8 addrspace(1)* %tmp11, i8 addrspace(1)* undef, i8 addrspace(1)* %tmp8) ]
+ %tmp16 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (ptr addrspace(1))) @barney, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) %tmp13, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 2, i32 5, i32 1, i32 0, i32 2, i32 0, i32 0, ptr addrspace(1) %tmp8, i32 7, ptr null, i32 1, i32 6, i32 0, i32 0, i32 1, i32 1, i32 0, ptr addrspace(1) %tmp8, i32 8, i32 10), "gc-live"(ptr addrspace(1) %tmp9, ptr addrspace(1) %tmp13, ptr addrspace(1) %tmp11, ptr addrspace(1) undef, ptr addrspace(1) %tmp8) ]
unreachable
bb17: ; preds = %bb10
- %tmp18 = load atomic i32, i32 addrspace(1)* undef unordered, align 4
+ %tmp18 = load atomic i32, ptr addrspace(1) undef unordered, align 4
%tmp19 = and i32 %tmp18, 33554431
- %tmp20 = invoke token (i64, i32, void (i32, i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8f(i64 1, i32 16, void (i32, i8 addrspace(1)*)* nonnull elementtype(void (i32, i8 addrspace(1)*)) @spam, i32 2, i32 0, i32 %tmp19, i8 addrspace(1)* nonnull undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, i8 addrspace(1)* %tmp13, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 8, i32 5, i32 12, i32 0, i32 2, i32 0, i32 0, i8 addrspace(1)* %tmp8, i32 7, i8* null), "gc-live"(i8 addrspace(1)* %tmp9, i8 addrspace(1)* %tmp13, i8 addrspace(1)* %tmp13, i8 addrspace(1)* %tmp11, i8 addrspace(1)* %tmp8, i8 addrspace(1)* undef) ]
+ %tmp20 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 1, i32 16, ptr nonnull elementtype(void (i32, ptr addrspace(1))) @spam, i32 2, i32 0, i32 %tmp19, ptr addrspace(1) nonnull undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) %tmp13, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 5, i32 12, i32 0, i32 2, i32 0, i32 0, ptr addrspace(1) %tmp8, i32 7, ptr null), "gc-live"(ptr addrspace(1) %tmp9, ptr addrspace(1) %tmp13, ptr addrspace(1) %tmp13, ptr addrspace(1) %tmp11, ptr addrspace(1) %tmp8, ptr addrspace(1) undef) ]
to label %bb21 unwind label %bb59
bb21: ; preds = %bb17
- %tmp22 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp20, i32 0, i32 0) ; (%tmp9, %tmp9)
- %tmp23 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp20, i32 1, i32 1) ; (%tmp13, %tmp13)
- %tmp24 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp20, i32 3, i32 3) ; (%tmp11, %tmp11)
- %tmp25 = load atomic i8 addrspace(1)*, i8 addrspace(1)** @global unordered, align 8
- %tmp26 = ptrtoint i8 addrspace(1)* %tmp25 to i64
+ %tmp22 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 0, i32 0) ; (%tmp9, %tmp9)
+ %tmp23 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 1, i32 1) ; (%tmp13, %tmp13)
+ %tmp24 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 3, i32 3) ; (%tmp11, %tmp11)
+ %tmp25 = load atomic ptr addrspace(1), ptr @global unordered, align 8
+ %tmp26 = ptrtoint ptr addrspace(1) %tmp25 to i64
%tmp27 = xor i64 %tmp26, -1
- %tmp28 = inttoptr i64 %tmp27 to i8 addrspace(1)*
- %tmp29 = call token (i64, i32, void (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8f(i64 2, i32 5, void (i8 addrspace(1)*)* nonnull elementtype(void (i8 addrspace(1)*)) @baz, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 10, i32 1, i32 83, i32 0, i32 5, i32 1, i32 0, i8 addrspace(1)* %tmp23, i32 7, i8* null, i32 8, i32 2, i32 7, i8* null, i32 7, i8* null, i32 8, i32 2), "gc-live"(i8 addrspace(1)* %tmp22, i8 addrspace(1)* %tmp23, i8 addrspace(1)* %tmp23, i8 addrspace(1)* %tmp24, i8 addrspace(1)* %tmp28) ]
- %tmp30 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp29, i32 1, i32 2) ; (%tmp23, %tmp23)
- %tmp31 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp29, i32 4, i32 4) ; (%tmp28, %tmp28)
- %tmp45 = load atomic i8 addrspace(1)*, i8 addrspace(1)** @global.1 unordered, align 8
- %tmp49 = load i32, i32 addrspace(256)* inttoptr (i64 660 to i32 addrspace(256)*), align 4
- %tmp32 = icmp eq i8 addrspace(1)* %tmp30, null
+ %tmp28 = inttoptr i64 %tmp27 to ptr addrspace(1)
+ %tmp29 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1))) @baz, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 83, i32 0, i32 5, i32 1, i32 0, ptr addrspace(1) %tmp23, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) %tmp22, ptr addrspace(1) %tmp23, ptr addrspace(1) %tmp23, ptr addrspace(1) %tmp24, ptr addrspace(1) %tmp28) ]
+ %tmp30 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp29, i32 1, i32 2) ; (%tmp23, %tmp23)
+ %tmp31 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp29, i32 4, i32 4) ; (%tmp28, %tmp28)
+ %tmp45 = load atomic ptr addrspace(1), ptr @global.1 unordered, align 8
+ %tmp49 = load i32, ptr addrspace(256) inttoptr (i64 660 to ptr addrspace(256)), align 4
+ %tmp32 = icmp eq ptr addrspace(1) %tmp30, null
br i1 %tmp32, label %bb64, label %bb33.preheader
bb33.preheader: ; preds = %bb21
br label %bb33
bb33: ; preds = %bb33.preheader, %bb33
- %tmp34 = phi i8 addrspace(1)* [ %tmp57, %bb33 ], [ undef, %bb33.preheader ]
+ %tmp34 = phi ptr addrspace(1) [ %tmp57, %bb33 ], [ undef, %bb33.preheader ]
%tmp35 = phi i64 [ %tmp37, %bb33 ], [ 0, %bb33.preheader ]
%tmp37 = add nuw nsw i64 %tmp35, 1
- %tmp38 = load atomic i8 addrspace(1)*, i8 addrspace(1)* addrspace(1)* undef unordered, align 8
- %tmp39 = ptrtoint i8 addrspace(1)* %tmp38 to i64
+ %tmp38 = load atomic ptr addrspace(1), ptr addrspace(1) undef unordered, align 8
+ %tmp39 = ptrtoint ptr addrspace(1) %tmp38 to i64
%tmp40 = xor i64 %tmp39, -1
- %tmp41 = inttoptr i64 %tmp40 to i8 addrspace(1)*
- %tmp42 = select i1 false, i8 addrspace(1)* null, i8 addrspace(1)* %tmp41
- %tmp43 = icmp eq i8 addrspace(1)* %tmp42, %tmp30
- %tmp44 = select i1 %tmp43, i8 addrspace(1)* null, i8 addrspace(1)* %tmp42
- call void asm sideeffect "lock btsq $0,($1)", "r,r,~{cc},~{dirflag},~{fpsr},~{flags}"(i64 0, i64* undef)
- %tmp46 = ptrtoint i8 addrspace(1)* %tmp45 to i64
+ %tmp41 = inttoptr i64 %tmp40 to ptr addrspace(1)
+ %tmp42 = select i1 false, ptr addrspace(1) null, ptr addrspace(1) %tmp41
+ %tmp43 = icmp eq ptr addrspace(1) %tmp42, %tmp30
+ %tmp44 = select i1 %tmp43, ptr addrspace(1) null, ptr addrspace(1) %tmp42
+ call void asm sideeffect "lock btsq $0,($1)", "r,r,~{cc},~{dirflag},~{fpsr},~{flags}"(i64 0, ptr undef)
+ %tmp46 = ptrtoint ptr addrspace(1) %tmp45 to i64
%tmp47 = xor i64 %tmp46, -1
- %tmp48 = inttoptr i64 %tmp47 to i8 addrspace(1)*
+ %tmp48 = inttoptr i64 %tmp47 to ptr addrspace(1)
%tmp50 = or i32 %tmp49, 268435456
- %tmp51 = cmpxchg i32 addrspace(1)* undef, i32 undef, i32 %tmp50 acquire monotonic, align 4
- call void @wobble(i8 addrspace(1)* nonnull %tmp48)
- %tmp52 = load atomic i8 addrspace(1)*, i8 addrspace(1)** @global unordered, align 8
- %tmp53 = ptrtoint i8 addrspace(1)* %tmp52 to i64
+ %tmp51 = cmpxchg ptr addrspace(1) undef, i32 undef, i32 %tmp50 acquire monotonic, align 4
+ call void @wobble(ptr addrspace(1) nonnull %tmp48)
+ %tmp52 = load atomic ptr addrspace(1), ptr @global unordered, align 8
+ %tmp53 = ptrtoint ptr addrspace(1) %tmp52 to i64
%tmp54 = xor i64 %tmp53, -1
- %tmp55 = inttoptr i64 %tmp54 to i8 addrspace(1)*
- %tmp56 = call token (i64, i32, void (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8f(i64 2, i32 5, void (i8 addrspace(1)*)* nonnull elementtype(void (i8 addrspace(1)*)) @baz, i32 1, i32 0, i8 addrspace(1)* %tmp55, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 10, i32 1, i32 83, i32 0, i32 5, i32 1, i32 0, i8 addrspace(1)* %tmp44, i32 7, i8* null, i32 8, i32 2, i32 7, i8* null, i32 7, i8* null, i32 8, i32 2), "gc-live"(i8 addrspace(1)* undef, i8 addrspace(1)* %tmp44, i8 addrspace(1)* %tmp44, i8 addrspace(1)* %tmp34, i8 addrspace(1)* undef) ]
- %tmp57 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp56, i32 3, i32 3) ; (%tmp34, %tmp34)
+ %tmp55 = inttoptr i64 %tmp54 to ptr addrspace(1)
+ %tmp56 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1))) @baz, i32 1, i32 0, ptr addrspace(1) %tmp55, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 83, i32 0, i32 5, i32 1, i32 0, ptr addrspace(1) %tmp44, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) undef, ptr addrspace(1) %tmp44, ptr addrspace(1) %tmp44, ptr addrspace(1) %tmp34, ptr addrspace(1) undef) ]
+ %tmp57 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp56, i32 3, i32 3) ; (%tmp34, %tmp34)
br label %bb33
bb59: ; preds = %bb17
%tmp60 = landingpad token
cleanup
- %tmp61 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp60, i32 1, i32 2) ; (%tmp13, %tmp13)
- %tmp62 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp60, i32 4, i32 4) ; (%tmp8, %tmp8)
- %tmp63 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* elementtype(void (i32)) bitcast (void (i64)* @barney.2 to void (i32)*), i32 1, i32 2, i32 -13, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, i8 addrspace(1)* %tmp61, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 1, i32 5, i32 21, i32 0, i32 2, i32 0, i32 0, i8 addrspace(1)* %tmp62, i32 0, i8 addrspace(1)* undef), "gc-live"() ]
+ %tmp61 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp60, i32 1, i32 2) ; (%tmp13, %tmp13)
+ %tmp62 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp60, i32 4, i32 4) ; (%tmp8, %tmp8)
+ %tmp63 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr elementtype(void (i32)) @barney.2, i32 1, i32 2, i32 -13, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) %tmp61, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 1, i32 5, i32 21, i32 0, i32 2, i32 0, i32 0, ptr addrspace(1) %tmp62, i32 0, ptr addrspace(1) undef), "gc-live"() ]
unreachable
bb64: ; preds = %bb21, %bb1
%tmp65 = or i32 undef, 268435456
- %tmp66 = cmpxchg i32 addrspace(1)* undef, i32 undef, i32 %tmp65 acquire monotonic, align 4
- %tmp67 = call token (i64, i32, void (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8f(i64 2, i32 5, void (i8 addrspace(1)*)* nonnull elementtype(void (i8 addrspace(1)*)) @baz, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, i8* null, i32 10, i32 1, i32 133, i32 0, i32 5, i32 1, i32 7, i8* null, i32 8, i32 2, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null, i32 8, i32 2), "gc-live"(i8 addrspace(1)* undef, i8 addrspace(1)* undef) ]
+ %tmp66 = cmpxchg ptr addrspace(1) undef, i32 undef, i32 %tmp65 acquire monotonic, align 4
+ %tmp67 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1))) @baz, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 133, i32 0, i32 5, i32 1, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) undef, ptr addrspace(1) undef) ]
br label %bb1
}
- declare i32* @zot()
+ declare ptr @zot()
declare void @wibble() gc "statepoint-example"
- declare i8 addrspace(1)* @blam() gc "statepoint-example"
+ declare ptr addrspace(1) @blam() gc "statepoint-example"
- declare void @baz(i8 addrspace(1)*) gc "statepoint-example"
+ declare void @baz(ptr addrspace(1)) gc "statepoint-example"
- declare void @spam(i32, i8 addrspace(1)*)
+ declare void @spam(i32, ptr addrspace(1))
- declare void @wobble(i8 addrspace(1)*)
+ declare void @wobble(ptr addrspace(1))
- declare void @barney(i8 addrspace(1)*)
+ declare void @barney(ptr addrspace(1))
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 immarg, i32 immarg, void ()*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
; Function Attrs: nounwind readnone
- declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #0
-
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidp1i8f(i64 immarg, i32 immarg, void (i8 addrspace(1)*)*, i32 immarg, i32 immarg, ...)
-
- declare token @llvm.experimental.gc.statepoint.p0f_p1i8f(i64 immarg, i32 immarg, i8 addrspace(1)* ()*, i32 immarg, i32 immarg, ...)
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
+
+
; Function Attrs: nounwind readnone
- declare i8 addrspace(1)* @llvm.experimental.gc.result.p1i8(token) #0
-
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8f(i64 immarg, i32 immarg, void (i32, i8 addrspace(1)*)*, i32 immarg, i32 immarg, ...)
+ declare ptr addrspace(1) @llvm.experimental.gc.result.p1(token) #0
+
declare void @barney.2(i64)
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 immarg, i32 immarg, void (i32)*, i32 immarg, i32 immarg, ...)
-
- declare i8 addrspace(1)* @wobble.3(i8 addrspace(1)*, i8 addrspace(1)* addrspace(1)*)
+
+ declare ptr addrspace(1) @wobble.3(ptr addrspace(1), ptr addrspace(1))
attributes #0 = { nounwind readnone }
; CHECK-NEXT: bb.4.bb17:
; CHECK-NEXT: successors: %bb.5(0x80000000), %bb.8(0x00000000)
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm undef %35:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `i32 addrspace(1)* undef`, addrspace 1)
+ ; CHECK-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm undef %35:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, addrspace 1)
; CHECK-NEXT: [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[AND32ri]], 33554431, implicit-def dead $eflags
; CHECK-NEXT: EH_LABEL <mcsymbol .Ltmp0>
; CHECK-NEXT: ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[MOV64rm1:%[0-9]+]]:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @global.1, $noreg :: (load (s64) from got)
; CHECK-NEXT: [[MOV64rm2:%[0-9]+]]:gr64 = MOV64rm [[MOV64rm1]], 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global.1)
- ; CHECK-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm $noreg, 1, $noreg, 660, $gs :: (load (s32) from `i32 addrspace(256)* inttoptr (i64 660 to i32 addrspace(256)*)`, addrspace 256)
+ ; CHECK-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm $noreg, 1, $noreg, 660, $gs :: (load (s32) from `ptr addrspace(256) inttoptr (i64 660 to ptr addrspace(256))`, addrspace 256)
; CHECK-NEXT: [[NOT64r1:%[0-9]+]]:gr64 = NOT64r [[NOT64r1]]
; CHECK-NEXT: [[COPY4:%[0-9]+]]:gr64 = COPY [[NOT64r1]]
; CHECK-NEXT: [[OR32ri:%[0-9]+]]:gr32 = OR32ri [[OR32ri]], 268435456, implicit-def dead $eflags
; CHECK-NEXT: successors: %bb.7(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[INC64r:%[0-9]+]]:gr64_with_sub_8bit = nuw nsw INC64r [[INC64r]], implicit-def dead $eflags
- ; CHECK-NEXT: [[MOV64rm2:%[0-9]+]]:gr64 = MOV64rm undef %59:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1)
+ ; CHECK-NEXT: [[MOV64rm2:%[0-9]+]]:gr64 = MOV64rm undef %59:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
; CHECK-NEXT: [[NOT64r2:%[0-9]+]]:gr64 = NOT64r [[NOT64r2]]
; CHECK-NEXT: CMP64rr [[NOT64r2]], [[COPY6]], implicit-def $eflags
; CHECK-NEXT: undef %100.sub_32bit:gr64_with_sub_8bit = MOV32ri 0
; CHECK-NEXT: [[CMOV64rr:%[0-9]+]]:gr64 = CMOV64rr [[CMOV64rr]], %100, 4, implicit killed $eflags
; CHECK-NEXT: INLINEASM &"lock btsq $0,($1)", 1 /* sideeffect attdialect */, 4456457 /* reguse:GR64 */, %100, 4456457 /* reguse:GR64 */, undef %56:gr64, 12 /* clobber */, implicit-def dead early-clobber $df, 12 /* clobber */, implicit-def early-clobber $fpsw, 12 /* clobber */, implicit-def dead early-clobber $eflags
- ; CHECK-NEXT: LCMPXCHG32 undef %67:gr64, 1, $noreg, 0, $noreg, [[COPY5]], implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `i32 addrspace(1)* undef`, addrspace 1)
+ ; CHECK-NEXT: LCMPXCHG32 undef %67:gr64, 1, $noreg, 0, $noreg, [[COPY5]], implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
; CHECK-NEXT: ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
; CHECK-NEXT: $rdi = COPY [[COPY4]]
; CHECK-NEXT: CALL64pcrel32 target-flags(x86-plt) @wobble, csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit-def $rsp, implicit-def $ssp
; CHECK-NEXT: bb.9.bb64:
; CHECK-NEXT: successors: %bb.1(0x80000000)
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: LCMPXCHG32 undef %76:gr64, 1, $noreg, 0, $noreg, [[MOV32ri]], implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `i32 addrspace(1)* undef`, addrspace 1)
+ ; CHECK-NEXT: LCMPXCHG32 undef %76:gr64, 1, $noreg, 0, $noreg, [[MOV32ri]], implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
; CHECK-NEXT: ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
; CHECK-NEXT: STATEPOINT 2, 5, 1, undef %79:gr64, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 133, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 0, 2, 0, 2, 0, csr_64, implicit-def $rsp, implicit-def $ssp
; CHECK-NEXT: ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
bb.4.bb17:
successors: %bb.5(0x80000000), %bb.8(0x00000000)
- %36:gr32 = MOV32rm undef %35:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `i32 addrspace(1)* undef`, addrspace 1)
+ %36:gr32 = MOV32rm undef %35:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, addrspace 1)
%36:gr32 = AND32ri %36, 33554431, implicit-def dead $eflags
EH_LABEL <mcsymbol .Ltmp0>
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
successors: %bb.7(0x80000000)
%64:gr64 = MOV64rm %51, 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global.1)
- %65:gr32 = MOV32rm $noreg, 1, $noreg, 660, $gs :: (load (s32) from `i32 addrspace(256)* inttoptr (i64 660 to i32 addrspace(256)*)`, addrspace 256)
+ %65:gr32 = MOV32rm $noreg, 1, $noreg, 660, $gs :: (load (s32) from `ptr addrspace(256) inttoptr (i64 660 to ptr addrspace(256))`, addrspace 256)
undef %53.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
%64:gr64 = NOT64r %64
%65:gr32 = OR32ri %65, 268435456, implicit-def dead $eflags
successors: %bb.7(0x80000000)
%81:gr64_with_sub_8bit = nuw nsw INC64r %81, implicit-def dead $eflags
- %63:gr64 = MOV64rm undef %59:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1)
+ %63:gr64 = MOV64rm undef %59:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
%63:gr64 = NOT64r %63
CMP64rr %63, %31, implicit-def $eflags
%63:gr64 = CMOV64rr %63, %53, 4, implicit killed $eflags
INLINEASM &"lock btsq $0,($1)", 1 /* sideeffect attdialect */, 4456457 /* reguse:GR64 */, %53, 4456457 /* reguse:GR64 */, undef %56:gr64, 12 /* clobber */, implicit-def dead early-clobber $df, 12 /* clobber */, implicit-def early-clobber $fpsw, 12 /* clobber */, implicit-def dead early-clobber $eflags
- LCMPXCHG32 undef %67:gr64, 1, $noreg, 0, $noreg, %65, implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `i32 addrspace(1)* undef`, addrspace 1)
+ LCMPXCHG32 undef %67:gr64, 1, $noreg, 0, $noreg, %65, implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
$rdi = COPY %64
CALL64pcrel32 target-flags(x86-plt) @wobble, csr_64, implicit $rsp, implicit $ssp, implicit killed $rdi, implicit-def $rsp, implicit-def $ssp
bb.9.bb64:
successors: %bb.1(0x80000000)
- LCMPXCHG32 undef %76:gr64, 1, $noreg, 0, $noreg, %74, implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `i32 addrspace(1)* undef`, addrspace 1)
+ LCMPXCHG32 undef %76:gr64, 1, $noreg, 0, $noreg, %74, implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
STATEPOINT 2, 5, 1, undef %79:gr64, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 133, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 0, 2, 0, 2, 0, csr_64, implicit-def $rsp, implicit-def $ssp
ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
- define void @hoge(i8 addrspace(1)* %arg) gc "statepoint-example" personality i32* ()* @widget {
+ define void @hoge(ptr addrspace(1) %arg) gc "statepoint-example" personality ptr @widget {
bb:
- %tmp = call token (i64, i32, void (i8 addrspace(1)*, i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8p1i8f(i64 2, i32 5, void (i8 addrspace(1)*, i8 addrspace(1)*)* nonnull elementtype(void (i8 addrspace(1)*, i8 addrspace(1)*)) @quux, i32 2, i32 0, i8 addrspace(1)* %arg, i8 addrspace(1)* undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 6, i32 0, i32 4, i32 1, i32 0, i8 addrspace(1)* %arg, i32 7, i8* null, i32 0, i8 addrspace(1)* %arg, i32 7, i8* null, i32 0, i8 addrspace(1)* %arg, i32 2, i32 1, i32 5, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null), "gc-live"(i8 addrspace(1)* %arg) ]
- %tmp1 = load atomic i8 addrspace(1)*, i8 addrspace(1)* addrspace(1)* undef unordered, align 8
- %tmp2 = ptrtoint i8 addrspace(1)* %tmp1 to i64
+ %tmp = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1), ptr addrspace(1))) @quux, i32 2, i32 0, ptr addrspace(1) %arg, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 6, i32 0, i32 4, i32 1, i32 0, ptr addrspace(1) %arg, i32 7, ptr null, i32 0, ptr addrspace(1) %arg, i32 7, ptr null, i32 0, ptr addrspace(1) %arg, i32 2, i32 1, i32 5, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null), "gc-live"(ptr addrspace(1) %arg) ]
+ %tmp1 = load atomic ptr addrspace(1), ptr addrspace(1) undef unordered, align 8
+ %tmp2 = ptrtoint ptr addrspace(1) %tmp1 to i64
%tmp3 = xor i64 %tmp2, -1
- %tmp4 = inttoptr i64 %tmp3 to i8 addrspace(1)*
- %tmp5 = select i1 false, i8 addrspace(1)* null, i8 addrspace(1)* %tmp4
+ %tmp4 = inttoptr i64 %tmp3 to ptr addrspace(1)
+ %tmp5 = select i1 false, ptr addrspace(1) null, ptr addrspace(1) %tmp4
br i1 undef, label %bb6, label %bb40
bb6: ; preds = %bb
br label %bb7
bb7: ; preds = %bb27, %bb6
- %tmp9 = phi i8 addrspace(1)* [ undef, %bb6 ], [ %tmp28, %bb27 ]
- %tmp10 = phi i8 addrspace(1)* [ undef, %bb6 ], [ %tmp29, %bb27 ]
- %tmp11 = phi i8 addrspace(1)* [ undef, %bb6 ], [ %tmp30, %bb27 ]
+ %tmp9 = phi ptr addrspace(1) [ undef, %bb6 ], [ %tmp28, %bb27 ]
+ %tmp10 = phi ptr addrspace(1) [ undef, %bb6 ], [ %tmp29, %bb27 ]
+ %tmp11 = phi ptr addrspace(1) [ undef, %bb6 ], [ %tmp30, %bb27 ]
%tmp12 = phi i32 [ 0, %bb6 ], [ %tmp16, %bb27 ]
- %tmp13 = load atomic i32, i32 addrspace(1)* undef unordered, align 8
+ %tmp13 = load atomic i32, ptr addrspace(1) undef unordered, align 8
%tmp14 = sub i32 %tmp13, 0
%tmp15 = select i1 false, i32 %tmp14, i32 undef
%tmp16 = add i32 %tmp15, %tmp12
br i1 undef, label %bb27, label %bb23
bb23: ; preds = %bb20
- %tmp24 = invoke token (i64, i32, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8p1i8i32i32f(i64 1, i32 16, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)* nonnull elementtype(void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)) @barney, i32 5, i32 0, i32 undef, i8 addrspace(1)* nonnull undef, i8 addrspace(1)* null, i32 0, i32 undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp11, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp11, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp11, i32 0, i8 addrspace(1)* %tmp11, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp11, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, i8 addrspace(1)* %tmp10, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp9, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp9, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp10, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef), "gc-live"(i8 addrspace(1)* %tmp11, i8 addrspace(1)* %tmp9, i8 addrspace(1)* undef, i8 addrspace(1)* %tmp10, i8 addrspace(1)* undef, i8 addrspace(1)* %tmp5) ]
+ %tmp24 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 1, i32 16, ptr nonnull elementtype(void (i32, ptr addrspace(1), ptr addrspace(1), i32, i32)) @barney, i32 5, i32 0, i32 undef, ptr addrspace(1) nonnull undef, ptr addrspace(1) null, i32 0, i32 undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp11, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp11, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp11, i32 0, ptr addrspace(1) %tmp11, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp11, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, ptr addrspace(1) %tmp10, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp9, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp9, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp10, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef), "gc-live"(ptr addrspace(1) %tmp11, ptr addrspace(1) %tmp9, ptr addrspace(1) undef, ptr addrspace(1) %tmp10, ptr addrspace(1) undef, ptr addrspace(1) %tmp5) ]
to label %bb25 unwind label %bb35
bb25: ; preds = %bb23
- %tmp26 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp24, i32 5, i32 5) ; (%tmp5, %tmp5)
+ %tmp26 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp24, i32 5, i32 5) ; (%tmp5, %tmp5)
br label %bb27
bb27: ; preds = %bb25, %bb20
- %tmp28 = phi i8 addrspace(1)* [ %tmp9, %bb20 ], [ undef, %bb25 ]
- %tmp29 = phi i8 addrspace(1)* [ %tmp10, %bb20 ], [ undef, %bb25 ]
- %tmp30 = phi i8 addrspace(1)* [ %tmp11, %bb20 ], [ null, %bb25 ]
+ %tmp28 = phi ptr addrspace(1) [ %tmp9, %bb20 ], [ undef, %bb25 ]
+ %tmp29 = phi ptr addrspace(1) [ %tmp10, %bb20 ], [ undef, %bb25 ]
+ %tmp30 = phi ptr addrspace(1) [ %tmp11, %bb20 ], [ null, %bb25 ]
%tmp34 = icmp sgt i32 0, %tmp16
br i1 %tmp34, label %bb7, label %bb44
br i1 undef, label %bb39, label %bb37
bb37: ; preds = %bb35
- %tmp38 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 3, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null), "gc-live"() ]
+ %tmp38 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 3, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null), "gc-live"() ]
unreachable
bb39: ; preds = %bb35
bb41: ; preds = %bb7, %bb40
%tmp42 = phi i32 [ 0, %bb40 ], [ %tmp12, %bb7 ]
- %tmp43 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 -39, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null, i32 10, i32 18, i32 63, i32 0, i32 9, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 3, i32 %tmp42, i32 3, i32 0, i32 3, i32 undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 2, i32 33, i32 6, i32 0, i32 5, i32 0, i32 0, i8 addrspace(1)* undef, i32 3, i32 %tmp42, i32 3, i32 undef, i32 0, i8 addrspace(1)* undef, i32 3, i32 undef, i32 1, i32 34, i32 14, i32 0, i32 3, i32 0, i32 3, i32 %tmp42, i32 3, i32 undef, i32 3, i32 0), "gc-live"() ]
+ %tmp43 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 -39, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null, i32 10, i32 18, i32 63, i32 0, i32 9, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 3, i32 %tmp42, i32 3, i32 0, i32 3, i32 undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 2, i32 33, i32 6, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) undef, i32 3, i32 %tmp42, i32 3, i32 undef, i32 0, ptr addrspace(1) undef, i32 3, i32 undef, i32 1, i32 34, i32 14, i32 0, i32 3, i32 0, i32 3, i32 %tmp42, i32 3, i32 undef, i32 3, i32 0), "gc-live"() ]
unreachable
bb44: ; preds = %bb27
br i1 undef, label %bb56, label %bb46
bb46: ; preds = %bb45
- %tmp47 = invoke token (i64, i32, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8p1i8i32i32f(i64 1, i32 16, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)* nonnull elementtype(void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)) @barney, i32 5, i32 0, i32 undef, i8 addrspace(1)* nonnull undef, i8 addrspace(1)* undef, i32 0, i32 undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp30, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef), "gc-live"(i8 addrspace(1)* %tmp30, i8 addrspace(1)* undef, i8 addrspace(1)* undef) ]
+ %tmp47 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 1, i32 16, ptr nonnull elementtype(void (i32, ptr addrspace(1), ptr addrspace(1), i32, i32)) @barney, i32 5, i32 0, i32 undef, ptr addrspace(1) nonnull undef, ptr addrspace(1) undef, i32 0, i32 undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp30, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef), "gc-live"(ptr addrspace(1) %tmp30, ptr addrspace(1) undef, ptr addrspace(1) undef) ]
to label %bb48 unwind label %bb52
bb48: ; preds = %bb46
- %tmp49 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp47, i32 0, i32 0) ; (%tmp30, %tmp30)
+ %tmp49 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp47, i32 0, i32 0) ; (%tmp30, %tmp30)
br label %bb56
bb50: ; preds = %bb44
- %tmp51 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 10, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp30, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 1, i32 9, i32 6, i32 1, i32 3, i32 0, i32 0, i8 addrspace(1)* null, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* null, i32 7, i8* null), "gc-live"() ]
+ %tmp51 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 10, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp30, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 1, i32 9, i32 6, i32 1, i32 3, i32 0, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) null, i32 7, ptr null), "gc-live"() ]
unreachable
bb52: ; preds = %bb46
%tmp53 = landingpad token
cleanup
- %tmp54 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp53, i32 0, i32 0) ; (%tmp30, %tmp30)
- %tmp55 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 3, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp54, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp54, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp54, i32 0, i8 addrspace(1)* %tmp54, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp54, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null), "gc-live"() ]
+ %tmp54 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp53, i32 0, i32 0) ; (%tmp30, %tmp30)
+ %tmp55 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 3, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp54, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp54, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp54, i32 0, ptr addrspace(1) %tmp54, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp54, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null), "gc-live"() ]
unreachable
bb56: ; preds = %bb48, %bb45
- %tmp57 = phi i8 addrspace(1)* [ %tmp30, %bb45 ], [ %tmp49, %bb48 ]
- %tmp58 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 10, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp57, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp57, i32 9, i32 2, i32 26, i32 1, i32 3, i32 1, i32 0, i8 addrspace(1)* null, i32 0, i8 addrspace(1)* %tmp57, i32 0, i8 addrspace(1)* %tmp57, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp57), "gc-live"() ]
+ %tmp57 = phi ptr addrspace(1) [ %tmp30, %bb45 ], [ %tmp49, %bb48 ]
+ %tmp58 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @ham, i32 1, i32 2, i32 10, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp57, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp57, i32 9, i32 2, i32 26, i32 1, i32 3, i32 1, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) %tmp57, i32 0, ptr addrspace(1) %tmp57, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp57), "gc-live"() ]
unreachable
}
- declare i32* @widget()
+ declare ptr @widget()
- declare void @quux(i8 addrspace(1)*, i8 addrspace(1)*)
+ declare void @quux(ptr addrspace(1), ptr addrspace(1))
declare void @hoge.1()
- declare void @barney(i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)
+ declare void @barney(i32, ptr addrspace(1), ptr addrspace(1), i32, i32)
; Function Attrs: nounwind readnone
- declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidp1i8p1i8f(i64 immarg, i32 immarg, void (i8 addrspace(1)*, i8 addrspace(1)*)*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
declare void @ham(i32)
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 immarg, i32 immarg, void (i32)*, i32 immarg, i32 immarg, ...)
-
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8p1i8i32i32f(i64 immarg, i32 immarg, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)*, i32 immarg, i32 immarg, ...)
-
+
+
declare void @wombat()
attributes #0 = { nounwind readnone }
; CHECK-NEXT: bb.1.bb6:
; CHECK-NEXT: successors: %bb.2(0x80000000)
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1)
+ ; CHECK-NEXT: [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
; CHECK-NEXT: [[NOT64r:%[0-9]+]]:gr64 = NOT64r [[MOV64rm]]
; CHECK-NEXT: MOV64mr %stack.1, 1, $noreg, 0, $noreg, [[NOT64r]] :: (store (s64) into %stack.1)
; CHECK-NEXT: undef %48.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
; CHECK-NEXT: bb.6.bb7:
; CHECK-NEXT: successors: %bb.16(0x00000000), %bb.7(0x80000000)
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
+ ; CHECK-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
; CHECK-NEXT: [[ADD32rr:%[0-9]+]]:gr32 = ADD32rr [[ADD32rr]], [[MOV32r0_1]], implicit-def dead $eflags
; CHECK-NEXT: CMP32rr [[MOV32r0_1]], [[ADD32rr]], implicit-def $eflags
; CHECK-NEXT: JCC_1 %bb.16, 15, implicit $eflags
bb.1.bb6:
successors: %bb.2(0x80000000)
- %0:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1)
+ %0:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
%0:gr64 = NOT64r %0
undef %48.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
%1:gr64 = IMPLICIT_DEF
bb.4.bb7:
successors: %bb.13(0x00000000), %bb.5(0x80000000)
- %5:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
+ %5:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
%5:gr32 = ADD32rr %5, %77, implicit-def dead $eflags
CMP32rr %77, %5, implicit-def $eflags
JCC_1 %bb.13, 15, implicit $eflags
declare void @func()
- define i32 @test_spill(i32 addrspace(1)* %arg00, i32 addrspace(1)* %arg01, i32 addrspace(1)* %arg02, i32 addrspace(1)* %arg03, i32 addrspace(1)* %arg04, i32 addrspace(1)* %arg05, i32 addrspace(1)* %arg06, i32 addrspace(1)* %arg07, i32 addrspace(1)* %arg08) gc "statepoint-example" {
- %token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* elementtype(void ()) @func, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(i32 addrspace(1)* %arg00, i32 addrspace(1)* %arg01, i32 addrspace(1)* %arg02, i32 addrspace(1)* %arg03, i32 addrspace(1)* %arg04, i32 addrspace(1)* %arg05, i32 addrspace(1)* %arg06, i32 addrspace(1)* %arg07, i32 addrspace(1)* %arg08) ]
- %rel00 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 0, i32 0) ; (%arg00, %arg00)
- %rel01 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 1, i32 1) ; (%arg01, %arg01)
- %rel02 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 2, i32 2) ; (%arg02, %arg02)
- %rel03 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 3, i32 3) ; (%arg03, %arg03)
- %rel04 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 4, i32 4) ; (%arg04, %arg04)
- %rel05 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 5, i32 5) ; (%arg05, %arg05)
- %rel06 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 6, i32 6) ; (%arg06, %arg06)
- %rel07 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 7, i32 7) ; (%arg07, %arg07)
- %rel08 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 8, i32 8) ; (%arg08, %arg08)
- %gep00 = getelementptr i32, i32 addrspace(1)* %rel00, i64 1
- %gep01 = getelementptr i32, i32 addrspace(1)* %rel01, i64 2
- %gep02 = getelementptr i32, i32 addrspace(1)* %rel02, i64 3
- %gep03 = getelementptr i32, i32 addrspace(1)* %rel03, i64 4
- %gep04 = getelementptr i32, i32 addrspace(1)* %rel04, i64 5
- %gep05 = getelementptr i32, i32 addrspace(1)* %rel05, i64 6
- %gep06 = getelementptr i32, i32 addrspace(1)* %rel06, i64 7
- %gep07 = getelementptr i32, i32 addrspace(1)* %rel07, i64 8
- %gep08 = getelementptr i32, i32 addrspace(1)* %rel08, i64 9
- %val00 = load i32, i32 addrspace(1)* %gep00, align 4
- %val01 = load i32, i32 addrspace(1)* %gep01, align 4
+ define i32 @test_spill(ptr addrspace(1) %arg00, ptr addrspace(1) %arg01, ptr addrspace(1) %arg02, ptr addrspace(1) %arg03, ptr addrspace(1) %arg04, ptr addrspace(1) %arg05, ptr addrspace(1) %arg06, ptr addrspace(1) %arg07, ptr addrspace(1) %arg08) gc "statepoint-example" {
+ %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @func, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %arg00, ptr addrspace(1) %arg01, ptr addrspace(1) %arg02, ptr addrspace(1) %arg03, ptr addrspace(1) %arg04, ptr addrspace(1) %arg05, ptr addrspace(1) %arg06, ptr addrspace(1) %arg07, ptr addrspace(1) %arg08) ]
+ %rel00 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 0, i32 0) ; (%arg00, %arg00)
+ %rel01 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 1, i32 1) ; (%arg01, %arg01)
+ %rel02 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 2, i32 2) ; (%arg02, %arg02)
+ %rel03 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 3, i32 3) ; (%arg03, %arg03)
+ %rel04 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 4, i32 4) ; (%arg04, %arg04)
+ %rel05 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 5, i32 5) ; (%arg05, %arg05)
+ %rel06 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 6, i32 6) ; (%arg06, %arg06)
+ %rel07 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 7, i32 7) ; (%arg07, %arg07)
+ %rel08 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 8, i32 8) ; (%arg08, %arg08)
+ %gep00 = getelementptr i32, ptr addrspace(1) %rel00, i64 1
+ %gep01 = getelementptr i32, ptr addrspace(1) %rel01, i64 2
+ %gep02 = getelementptr i32, ptr addrspace(1) %rel02, i64 3
+ %gep03 = getelementptr i32, ptr addrspace(1) %rel03, i64 4
+ %gep04 = getelementptr i32, ptr addrspace(1) %rel04, i64 5
+ %gep05 = getelementptr i32, ptr addrspace(1) %rel05, i64 6
+ %gep06 = getelementptr i32, ptr addrspace(1) %rel06, i64 7
+ %gep07 = getelementptr i32, ptr addrspace(1) %rel07, i64 8
+ %gep08 = getelementptr i32, ptr addrspace(1) %rel08, i64 9
+ %val00 = load i32, ptr addrspace(1) %gep00, align 4
+ %val01 = load i32, ptr addrspace(1) %gep01, align 4
%sum01 = add i32 %val00, %val01
- %val02 = load i32, i32 addrspace(1)* %gep02, align 4
+ %val02 = load i32, ptr addrspace(1) %gep02, align 4
%sum02 = add i32 %sum01, %val02
- %val03 = load i32, i32 addrspace(1)* %gep03, align 4
+ %val03 = load i32, ptr addrspace(1) %gep03, align 4
%sum03 = add i32 %sum02, %val03
- %val04 = load i32, i32 addrspace(1)* %gep04, align 4
+ %val04 = load i32, ptr addrspace(1) %gep04, align 4
%sum04 = add i32 %sum03, %val04
- %val05 = load i32, i32 addrspace(1)* %gep05, align 4
+ %val05 = load i32, ptr addrspace(1) %gep05, align 4
%sum05 = add i32 %sum04, %val05
- %val06 = load i32, i32 addrspace(1)* %gep06, align 4
+ %val06 = load i32, ptr addrspace(1) %gep06, align 4
%sum06 = add i32 %sum05, %val06
- %val07 = load i32, i32 addrspace(1)* %gep07, align 4
+ %val07 = load i32, ptr addrspace(1) %gep07, align 4
%sum07 = add i32 %sum06, %val07
- %val08 = load i32, i32 addrspace(1)* %gep08, align 4
+ %val08 = load i32, ptr addrspace(1) %gep08, align 4
%sum08 = add i32 %sum07, %val08
ret i32 %sum08
}
; Function Attrs: nounwind readonly
- declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 immarg, i32 immarg, void ()*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
; Function Attrs: nounwind
- declare void @llvm.stackprotector(i8*, i8**) #1
+ declare void @llvm.stackprotector(ptr, ptr) #1
attributes #0 = { nounwind readonly }
attributes #1 = { nounwind }
declare i1 @return_i1()
- declare void @consume(i32 addrspace(1)*)
- declare void @consume1(i8 addrspace(1)*, i64 addrspace(1)*)
+ declare void @consume(ptr addrspace(1))
+ declare void @consume1(ptr addrspace(1), ptr addrspace(1))
- define i1 @test_relocate(i32 addrspace(1)* %a) gc "statepoint-example" {
+ define i1 @test_relocate(ptr addrspace(1) %a) gc "statepoint-example" {
entry:
- %safepoint_token = tail call token (i64, i32, i1 ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_i1f(i64 0, i32 0, i1 ()* elementtype(i1 ()) @return_i1, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(i32 addrspace(1)* %a) ]
- %rel1 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %safepoint_token, i32 0, i32 0) ; (%a, %a)
+ %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(i1 ()) @return_i1, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %a) ]
+ %rel1 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %safepoint_token, i32 0, i32 0) ; (%a, %a)
%res1 = call zeroext i1 @llvm.experimental.gc.result.i1(token %safepoint_token)
- call void @consume(i32 addrspace(1)* %rel1)
+ call void @consume(ptr addrspace(1) %rel1)
ret i1 %res1
}
- define void @test_duplicate_gcregs(i8 addrspace(1)* %a) gc "statepoint-example" {
+ define void @test_duplicate_gcregs(ptr addrspace(1) %a) gc "statepoint-example" {
ret void
}
; Function Attrs: nounwind readnone
- declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
- declare token @llvm.experimental.gc.statepoint.p0f_i1f(i64 immarg, i32 immarg, i1 ()*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
; Function Attrs: nounwind readnone
declare i1 @llvm.experimental.gc.result.i1(token) #0
declare void @bar()
- define i32 @test_basic(i32 addrspace(1)* %obj1, i32 addrspace(1)* %obj2) gc "statepoint-example" {
+ define i32 @test_basic(ptr addrspace(1) %obj1, ptr addrspace(1) %obj2) gc "statepoint-example" {
; CHECK-LABEL: test_basic:
; CHECK: # %bb.0:
; CHECK-NEXT: pushq %r14
; CHECK-NEXT: popq %r14
; CHECK-NEXT: .cfi_def_cfa_offset 8
; CHECK-NEXT: retq
- %token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* elementtype(void ()) @bar, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(i32 addrspace(1)* %obj1, i32 addrspace(1)* %obj2) ]
- %rel1 = call coldcc i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 0, i32 0) ; (%obj1, %obj1)
- %rel2 = call coldcc i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %token, i32 1, i32 1) ; (%obj2, %obj2)
- %a = load i32, i32 addrspace(1)* %rel1, align 4
- %b = load i32, i32 addrspace(1)* %rel2, align 4
+ %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr elementtype(void ()) @bar, i32 0, i32 0, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %obj1, ptr addrspace(1) %obj2) ]
+ %rel1 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 0, i32 0) ; (%obj1, %obj1)
+ %rel2 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 1, i32 1) ; (%obj2, %obj2)
+ %a = load i32, ptr addrspace(1) %rel1, align 4
+ %b = load i32, ptr addrspace(1) %rel2, align 4
%c = add i32 %a, %b
ret i32 %c
}
; CHECK-NEXT: .short 0
; CHECK-NEXT: .p2align 3
- declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 immarg, i32 immarg, void ()*, i32 immarg, i32 immarg, ...)
+ declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
; Function Attrs: nounwind readonly
- declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token, i32 immarg, i32 immarg) #0
+ declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
attributes #0 = { nounwind readonly }
attributes #1 = { nounwind }
--- |
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
- define i64 @test(i64 %arg, i8* %arg1) optsize {
+ define i64 @test(i64 %arg, ptr %arg1) optsize {
%tmp = icmp ult i64 %arg, 100
br i1 %tmp, label %1, label %4
%tmp3 = icmp ult i64 %arg, 10
br i1 %tmp3, label %2, label %3
- %tmp5 = tail call i64 @f1(i8* %arg1, i64 %arg)
+ %tmp5 = tail call i64 @f1(ptr %arg1, i64 %arg)
ret i64 %tmp5
- %tmp7 = tail call i64 @f2(i8* %arg1, i64 %arg)
+ %tmp7 = tail call i64 @f2(ptr %arg1, i64 %arg)
ret i64 %tmp7
ret i64 123
}
- declare i64 @f1(i8*, i64)
- declare i64 @f2(i8*, i64)
+ declare i64 @f1(ptr, i64)
+ declare i64 @f2(ptr, i64)
...
---
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc19.22.27905"
- define dso_local void @taildupit(i32* readonly %size_ptr) {
+ define dso_local void @taildupit(ptr readonly %size_ptr) {
entry:
- %tobool = icmp eq i32* %size_ptr, null
+ %tobool = icmp eq ptr %size_ptr, null
br i1 %tobool, label %cond.end, label %cond.true
cond.true: ; preds = %entry
- %0 = load i32, i32* %size_ptr, align 4
+ %0 = load i32, ptr %size_ptr, align 4
br label %cond.end
cond.end: ; preds = %cond.true, %entry
%cond = phi i32 [ %0, %cond.true ], [ 1, %entry ]
- %call = tail call i8* @alloc(i32 %cond)
+ %call = tail call ptr @alloc(i32 %cond)
tail call void @f2()
ret void
}
- declare dso_local i8* @alloc(i32)
+ declare dso_local ptr @alloc(i32)
declare dso_local void @f2()
--- |
@x = dso_local global i32 0, align 4
@z = dso_local local_unnamed_addr global [1024 x i32] zeroinitializer, align 16
- @y = dso_local local_unnamed_addr constant i32* null, align 8
+ @y = dso_local local_unnamed_addr constant ptr null, align 8
; Function Attrs: nofree norecurse nosync nounwind uwtable writeonly mustprogress
define dso_local void @_Z3foov() local_unnamed_addr #0 {
- %1 = load i32*, i32** @y, align 8, !tbaa !3
- %2 = icmp eq i32* %1, @x
+ %1 = load ptr, ptr @y, align 8, !tbaa !3
+ %2 = icmp eq ptr %1, @x
%3 = zext i1 %2 to i32
br label %5
4: ; preds = %5
ret void
5: ; preds = %5, %0
%lsr.iv = phi i64 [ %lsr.iv.next, %5 ], [ -4096, %0 ]
- %uglygep = getelementptr i8, i8* bitcast ([1024 x i32]* @z to i8*), i64 %lsr.iv
- %uglygep2 = bitcast i8* %uglygep to i32*
- %scevgep = getelementptr i32, i32* %uglygep2, i64 1024
- store i32 %3, i32* %scevgep, align 4, !tbaa !7
+ %uglygep = getelementptr i8, ptr @z, i64 %lsr.iv
+ %scevgep = getelementptr i32, ptr %uglygep, i64 1024
+ store i32 %3, ptr %scevgep, align 4, !tbaa !7
%lsr.iv.next = add nsw i64 %lsr.iv, 4
%6 = icmp eq i64 %lsr.iv.next, 0
br i1 %6, label %4, label %5, !llvm.loop !9
target triple = "x86_64-unknown-windows-msvc19.11.0"
; Function Attrs: uwtable
- define dso_local i32 @"?multi_throw@@YAH_N00@Z"(i1 zeroext %c1, i1 zeroext %c2, i1 zeroext %c3) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) {
+ define dso_local i32 @"?multi_throw@@YAH_N00@Z"(i1 zeroext %c1, i1 zeroext %c2, i1 zeroext %c3) local_unnamed_addr #0 personality ptr @__CxxFrameHandler3 {
entry:
br i1 %c1, label %if.then, label %if.end
%0 = catchswitch within none [label %catch] unwind to caller
catch: ; preds = %catch.dispatch
- %1 = catchpad within %0 [i8* null, i32 64, i8* null]
+ %1 = catchpad within %0 [ptr null, i32 64, ptr null]
catchret from %1 to label %return
return: ; preds = %catch, %if.end6
--- |
declare float @llvm.sqrt.f32(float)
- define void @f1(float* %a, float* %b) {
- %1 = load float, float* %a, align 4
- %2 = load float, float* %b, align 4
+ define void @f1(ptr %a, ptr %b) {
+ %1 = load float, ptr %a, align 4
+ %2 = load float, ptr %b, align 4
%sub = fsub float %1, %2
- store float %sub, float* %a, align 4
+ store float %sub, ptr %a, align 4
ret void
}
- define void @f2(double* %a, double* %b) {
- %1 = load double, double* %a, align 8
- %2 = load double, double* %b, align 8
+ define void @f2(ptr %a, ptr %b) {
+ %1 = load double, ptr %a, align 8
+ %2 = load double, ptr %b, align 8
%add = fadd double %1, %2
- store double %add, double* %a, align 8
+ store double %add, ptr %a, align 8
ret void
}
- define void @f3(x86_fp80* %a, x86_fp80* %b) {
- %1 = load x86_fp80, x86_fp80* %a, align 16
- %2 = load x86_fp80, x86_fp80* %b, align 16
+ define void @f3(ptr %a, ptr %b) {
+ %1 = load x86_fp80, ptr %a, align 16
+ %2 = load x86_fp80, ptr %b, align 16
%mul = fmul x86_fp80 %1, %2
- store x86_fp80 %mul, x86_fp80* %a, align 16
+ store x86_fp80 %mul, ptr %a, align 16
ret void
}
- define void @f4(float* %a, float* %b) {
- %1 = load float, float* %a, align 4
- %2 = load float, float* %b, align 4
+ define void @f4(ptr %a, ptr %b) {
+ %1 = load float, ptr %a, align 4
+ %2 = load float, ptr %b, align 4
%div = fdiv float %1, %2
- store float %div, float* %a, align 4
+ store float %div, ptr %a, align 4
ret void
}
- define void @f5(float* %val, double* %ret) {
- %1 = load float, float* %val, align 4
+ define void @f5(ptr %val, ptr %ret) {
+ %1 = load float, ptr %val, align 4
%res = fpext float %1 to double
- store double %res, double* %ret, align 8
+ store double %res, ptr %ret, align 8
ret void
}
- define void @f6(double* %val, float* %ret) {
- %1 = load double, double* %val, align 8
+ define void @f6(ptr %val, ptr %ret) {
+ %1 = load double, ptr %val, align 8
%res = fptrunc double %1 to float
- store float %res, float* %ret, align 4
+ store float %res, ptr %ret, align 4
ret void
}
- define void @f7(float* %a) {
- %1 = load float, float* %a, align 4
+ define void @f7(ptr %a) {
+ %1 = load float, ptr %a, align 4
%res = call float @llvm.sqrt.f32(float %1)
- store float %res, float* %a, align 4
+ store float %res, ptr %a, align 4
ret void
}