brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · d05e106 Raw
173 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -mtriple=nvptx64-nvidia-cuda -passes=infer-address-spaces,bdce %s | FileCheck %s3 4target datalayout = "e-p:64:64:64-p3:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"5target triple = "nvptx64-nvidia-cuda"6 7declare i1 @llvm.nvvm.isspacep.const(ptr) readnone noinline8declare i1 @llvm.nvvm.isspacep.global(ptr) readnone noinline9declare i1 @llvm.nvvm.isspacep.local(ptr) readnone noinline10declare i1 @llvm.nvvm.isspacep.shared(ptr) readnone noinline11declare i1 @llvm.nvvm.isspacep.cluster.shared(ptr) readnone noinline12 13define i1 @test_isspacep_const_true(ptr addrspace(4) %addr) {14; CHECK-LABEL: define i1 @test_isspacep_const_true(15; CHECK-SAME: ptr addrspace(4) [[ADDR:%.*]]) {16; CHECK-NEXT:  [[ENTRY:.*:]]17; CHECK-NEXT:    ret i1 true18;19entry:20  %addr0 = addrspacecast ptr addrspace(4) %addr to ptr21  %addr1 = getelementptr i8, ptr %addr0, i32 1022  %val = call i1 @llvm.nvvm.isspacep.const(ptr %addr1)23  ret i1 %val24}25 26define i1 @test_isspacep_const_false(ptr addrspace(1) %addr) {27; CHECK-LABEL: define i1 @test_isspacep_const_false(28; CHECK-SAME: ptr addrspace(1) [[ADDR:%.*]]) {29; CHECK-NEXT:  [[ENTRY:.*:]]30; CHECK-NEXT:    ret i1 false31;32entry:33  %addr0 = addrspacecast ptr addrspace(1) %addr to ptr34  %addr1 = getelementptr i8, ptr %addr0, i32 1035  %val = call i1 @llvm.nvvm.isspacep.const(ptr %addr1)36  ret i1 %val37}38 39define i1 @test_isspacep_global_true(ptr addrspace(1) %addr) {40; CHECK-LABEL: define i1 @test_isspacep_global_true(41; CHECK-SAME: ptr addrspace(1) [[ADDR:%.*]]) {42; CHECK-NEXT:  [[ENTRY:.*:]]43; CHECK-NEXT:    ret i1 true44;45entry:46  %addr0 = addrspacecast ptr addrspace(1) %addr to ptr47  %addr1 = getelementptr i8, ptr %addr0, i32 1048  %val = call i1 @llvm.nvvm.isspacep.global(ptr %addr1)49  ret i1 %val50}51 52define i1 @test_isspacep_global_false(ptr addrspace(4) %addr) {53; CHECK-LABEL: define i1 @test_isspacep_global_false(54; CHECK-SAME: ptr addrspace(4) [[ADDR:%.*]]) {55; CHECK-NEXT:  [[ENTRY:.*:]]56; CHECK-NEXT:    ret i1 false57;58entry:59  %addr0 = addrspacecast ptr addrspace(4) %addr to ptr60  %addr1 = getelementptr i8, ptr %addr0, i32 1061  %val = call i1 @llvm.nvvm.isspacep.global(ptr %addr1)62  ret i1 %val63}64 65define i1 @test_isspacep_local_true(ptr addrspace(5) %addr) {66; CHECK-LABEL: define i1 @test_isspacep_local_true(67; CHECK-SAME: ptr addrspace(5) [[ADDR:%.*]]) {68; CHECK-NEXT:  [[ENTRY:.*:]]69; CHECK-NEXT:    ret i1 true70;71entry:72  %addr0 = addrspacecast ptr addrspace(5) %addr to ptr73  %addr1 = getelementptr i8, ptr %addr0, i32 1074  %val = call i1 @llvm.nvvm.isspacep.local(ptr %addr1)75  ret i1 %val76}77 78define i1 @test_isspacep_local_false(ptr addrspace(1) %addr) {79; CHECK-LABEL: define i1 @test_isspacep_local_false(80; CHECK-SAME: ptr addrspace(1) [[ADDR:%.*]]) {81; CHECK-NEXT:  [[ENTRY:.*:]]82; CHECK-NEXT:    ret i1 false83;84entry:85  %addr0 = addrspacecast ptr addrspace(1) %addr to ptr86  %addr1 = getelementptr i8, ptr %addr0, i32 1087  %val = call i1 @llvm.nvvm.isspacep.local(ptr %addr1)88  ret i1 %val89}90 91define i1 @test_isspacep_shared_true(ptr addrspace(3) %addr) {92; CHECK-LABEL: define i1 @test_isspacep_shared_true(93; CHECK-SAME: ptr addrspace(3) [[ADDR:%.*]]) {94; CHECK-NEXT:  [[ENTRY:.*:]]95; CHECK-NEXT:    ret i1 true96;97entry:98  %addr0 = addrspacecast ptr addrspace(3) %addr to ptr99  %addr1 = getelementptr i8, ptr %addr0, i32 10100  %val = call i1 @llvm.nvvm.isspacep.shared(ptr %addr1)101  ret i1 %val102}103 104define i1 @test_isspacep_shared_false(ptr addrspace(1) %addr) {105; CHECK-LABEL: define i1 @test_isspacep_shared_false(106; CHECK-SAME: ptr addrspace(1) [[ADDR:%.*]]) {107; CHECK-NEXT:  [[ENTRY:.*:]]108; CHECK-NEXT:    ret i1 false109;110entry:111  %addr0 = addrspacecast ptr addrspace(1) %addr to ptr112  %addr1 = getelementptr i8, ptr %addr0, i32 10113  %val = call i1 @llvm.nvvm.isspacep.shared(ptr %addr1)114  ret i1 %val115}116 117define i1 @test_isspacep_shared_cluster_true(ptr addrspace(7) %addr) {118; CHECK-LABEL: define i1 @test_isspacep_shared_cluster_true(119; CHECK-SAME: ptr addrspace(7) [[ADDR:%.*]]) {120; CHECK-NEXT:  [[ENTRY:.*:]]121; CHECK-NEXT:    ret i1 true122;123entry:124  %addr0 = addrspacecast ptr addrspace(7) %addr to ptr125  %addr1 = getelementptr i8, ptr %addr0, i32 10126  %val = call i1 @llvm.nvvm.isspacep.shared.cluster(ptr %addr1)127  ret i1 %val128}129 130define i1 @test_isspacep_shared_cluster_false(ptr addrspace(1) %addr) {131; CHECK-LABEL: define i1 @test_isspacep_shared_cluster_false(132; CHECK-SAME: ptr addrspace(1) [[ADDR:%.*]]) {133; CHECK-NEXT:  [[ENTRY:.*:]]134; CHECK-NEXT:    ret i1 false135;136entry:137  %addr0 = addrspacecast ptr addrspace(1) %addr to ptr138  %addr1 = getelementptr i8, ptr %addr0, i32 10139  %val = call i1 @llvm.nvvm.isspacep.shared.cluster(ptr %addr1)140  ret i1 %val141}142 143; isspacep_shared_cluster returns true for shared144define i1 @test_isspacep_cluster_shared_shared(ptr addrspace(3) %addr) {145; CHECK-LABEL: define i1 @test_isspacep_cluster_shared_shared(146; CHECK-SAME: ptr addrspace(3) [[ADDR:%.*]]) {147; CHECK-NEXT:  [[ENTRY:.*:]]148; CHECK-NEXT:    ret i1 true149;150entry:151  %addr0 = addrspacecast ptr addrspace(3) %addr to ptr152  %addr1 = getelementptr i8, ptr %addr0, i32 10153  %val = call i1 @llvm.nvvm.isspacep.shared.cluster(ptr %addr1)154  ret i1 %val155}156 157; shared cluster cannot be evaluated to shared at compile time158define i1 @test_isspacep_shared_shared_cluster(ptr addrspace(7) %addr) {159; CHECK-LABEL: define i1 @test_isspacep_shared_shared_cluster(160; CHECK-SAME: ptr addrspace(7) [[ADDR:%.*]]) {161; CHECK-NEXT:  [[ENTRY:.*:]]162; CHECK-NEXT:    [[ADDR2:%.*]] = getelementptr i8, ptr addrspace(7) [[ADDR]], i32 10163; CHECK-NEXT:    [[ADDR1:%.*]] = addrspacecast ptr addrspace(7) [[ADDR2]] to ptr164; CHECK-NEXT:    [[VAL:%.*]] = call i1 @llvm.nvvm.isspacep.shared(ptr [[ADDR1]])165; CHECK-NEXT:    ret i1 [[VAL]]166;167entry:168  %addr0 = addrspacecast ptr addrspace(7) %addr to ptr169  %addr1 = getelementptr i8, ptr %addr0, i32 10170  %val = call i1 @llvm.nvvm.isspacep.shared(ptr %addr1)171  ret i1 %val172}173