113 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -amdgpu-aa-wrapper -amdgpu-aa -instcombine -o - %s | FileCheck %s3;4; Test AA::pointsToConstantMemory implementation. These should mostly5; turn out to be stores to constant memory, and will therefore be6; deleted as UB.7 8define void @test_constant_addrspace(ptr addrspace(4) %p) {9; CHECK-LABEL: @test_constant_addrspace(10; CHECK-NEXT: ret void11;12 store i8 0, ptr addrspace(4) %p13 ret void14}15 16define void @test_constant32bit_addrspace(ptr addrspace(6) %p) {17; CHECK-LABEL: @test_constant32bit_addrspace(18; CHECK-NEXT: ret void19;20 store i8 0, ptr addrspace(6) %p21 ret void22}23 24define void @test_cast_generic_from_constant_addrspace(ptr addrspace(4) %p) {25; CHECK-LABEL: @test_cast_generic_from_constant_addrspace(26; CHECK-NEXT: ret void27;28 %cast = addrspacecast ptr addrspace(4) %p to ptr29 store i8 0, ptr %cast30 ret void31}32 33define void @test_cast_generic_from_constant32bit_addrspace(ptr addrspace(6) %p) {34; CHECK-LABEL: @test_cast_generic_from_constant32bit_addrspace(35; CHECK-NEXT: ret void36;37 %cast = addrspacecast ptr addrspace(6) %p to ptr38 store i8 0, ptr %cast39 ret void40}41 42define void @test_cast_generic_to_constant_addrspace(ptr %p) {43; CHECK-LABEL: @test_cast_generic_to_constant_addrspace(44; CHECK-NEXT: ret void45;46 %cast = addrspacecast ptr %p to ptr addrspace(4)47 store i8 0, ptr addrspace(4) %cast48 ret void49}50 51define void @test_cast_generic_to_constant32bit_addrspace(ptr %p) {52; CHECK-LABEL: @test_cast_generic_to_constant32bit_addrspace(53; CHECK-NEXT: ret void54;55 %cast = addrspacecast ptr %p to ptr addrspace(6)56 store i8 0, ptr addrspace(6) %cast57 ret void58}59 60define amdgpu_kernel void @noalias_readnone_global_kernarg(ptr addrspace(1) noalias readnone %arg) {61; CHECK-LABEL: @noalias_readnone_global_kernarg(62; CHECK-NEXT: ret void63;64 store i32 0, ptr addrspace(1) %arg65 ret void66}67 68define amdgpu_kernel void @noalias_readonly_global_kernarg(ptr addrspace(1) noalias readonly %arg) {69; CHECK-LABEL: @noalias_readonly_global_kernarg(70; CHECK-NEXT: ret void71;72 store i32 0, ptr addrspace(1) %arg73 ret void74}75 76define amdgpu_kernel void @readnone_global_kernarg(ptr addrspace(1) readnone %arg) {77; CHECK-LABEL: @readnone_global_kernarg(78; CHECK-NEXT: store i32 0, ptr addrspace(1) [[ARG:%.*]], align 479; CHECK-NEXT: ret void80;81 store i32 0, ptr addrspace(1) %arg82 ret void83}84 85define amdgpu_kernel void @readonly_global_kernarg(ptr addrspace(1) readonly %arg) {86; CHECK-LABEL: @readonly_global_kernarg(87; CHECK-NEXT: store i32 0, ptr addrspace(1) [[ARG:%.*]], align 488; CHECK-NEXT: ret void89;90 store i32 0, ptr addrspace(1) %arg91 ret void92}93 94@global_as_constant = external addrspace(1) constant i32, align 495 96define amdgpu_kernel void @constant_gv_global_as() {97; CHECK-LABEL: @constant_gv_global_as(98; CHECK-NEXT: ret void99;100 store i32 0, ptr addrspace(1) @global_as_constant101 ret void102}103 104@global_nonconstant_constant_as = external addrspace(4) global i32, align 4105 106define amdgpu_kernel void @nonconst_gv_constant_as() {107; CHECK-LABEL: @nonconst_gv_constant_as(108; CHECK-NEXT: ret void109;110 store i32 0, ptr addrspace(4) @global_nonconstant_constant_as111 ret void112}113