36 lines
1.3 KiB
LLVM
36 lines
1.3 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
|
|
; RUN: opt -S -passes=infer-address-spaces %s | FileCheck %s
|
|
|
|
target triple = "nvptx64-nvidia-cuda"
|
|
|
|
|
|
define ptx_kernel i32 @test_kernel(ptr %a, ptr byval(i32) %b) {
|
|
; CHECK-LABEL: define ptx_kernel i32 @test_kernel(
|
|
; CHECK-SAME: ptr [[A:%.*]], ptr byval(i32) [[B:%.*]]) {
|
|
; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr [[A]] to ptr addrspace(1)
|
|
; CHECK-NEXT: [[V1:%.*]] = load i32, ptr addrspace(1) [[TMP1]], align 4
|
|
; CHECK-NEXT: [[V2:%.*]] = load i32, ptr [[B]], align 4
|
|
; CHECK-NEXT: [[SUM:%.*]] = add i32 [[V1]], [[V2]]
|
|
; CHECK-NEXT: ret i32 [[SUM]]
|
|
;
|
|
%v1 = load i32, ptr %a
|
|
%v2 = load i32, ptr %b
|
|
%sum = add i32 %v1, %v2
|
|
ret i32 %sum
|
|
}
|
|
|
|
define i32 @test_device(ptr %a, ptr byval(i32) %b) {
|
|
; CHECK-LABEL: define i32 @test_device(
|
|
; CHECK-SAME: ptr [[A:%.*]], ptr byval(i32) [[B:%.*]]) {
|
|
; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr [[B]] to ptr addrspace(5)
|
|
; CHECK-NEXT: [[V1:%.*]] = load i32, ptr [[A]], align 4
|
|
; CHECK-NEXT: [[V2:%.*]] = load i32, ptr addrspace(5) [[TMP1]], align 4
|
|
; CHECK-NEXT: [[SUM:%.*]] = add i32 [[V1]], [[V2]]
|
|
; CHECK-NEXT: ret i32 [[SUM]]
|
|
;
|
|
%v1 = load i32, ptr %a
|
|
%v2 = load i32, ptr %b
|
|
%sum = add i32 %v1, %v2
|
|
ret i32 %sum
|
|
}
|