1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
declare i32 @llvm.nvvm.read.ptx.sreg.tid.x()
declare i32 @llvm.nvvm.read.ptx.sreg.tid.y()
declare i32 @llvm.nvvm.read.ptx.sreg.tid.z()
declare i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
declare i32 @llvm.nvvm.read.ptx.sreg.ntid.y()
declare i32 @llvm.nvvm.read.ptx.sreg.ntid.z()
declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.x()
declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.y()
declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.z()
declare i32 @llvm.nvvm.read.ptx.sreg.nctaid.x()
declare i32 @llvm.nvvm.read.ptx.sreg.nctaid.y()
declare i32 @llvm.nvvm.read.ptx.sreg.nctaid.z()
define i32 @get_nvvm_tid_x() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x()
ret i32 %0
}
define i32 @get_nvvm_tid_y() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.tid.y()
ret i32 %0
}
define i32 @get_nvvm_tid_z() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.tid.z()
ret i32 %0
}
define i32 @get_nvvm_ntid_x() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
ret i32 %0
}
define i32 @get_nvvm_ntid_y() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.ntid.y()
ret i32 %0
}
define i32 @get_nvvm_ntid_z() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.ntid.z()
ret i32 %0
}
define i32 @get_nvvm_ctaid_x() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x()
ret i32 %0
}
define i32 @get_nvvm_ctaid_y() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.y()
ret i32 %0
}
define i32 @get_nvvm_ctaid_z() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.z()
ret i32 %0
}
define i32 @get_nvvm_nctaid_x() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.x()
ret i32 %0
}
define i32 @get_nvvm_nctaid_y() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.y()
ret i32 %0
}
define i32 @get_nvvm_nctaid_z() {
entry:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.z()
ret i32 %0
}
declare float @__nv_frexpf(float %a, ptr %b)
define { float, i32 } @frexpf_f32_i32(float %a) {
entry:
%0 = alloca i32, align 4
%1 = call float @__nv_frexpf(float %a, ptr %0)
%2 = load i32, ptr %0
%3 = insertvalue { float, i32 } undef, float %1, 0
%4 = insertvalue { float, i32 } %3, i32 %2, 1
ret { float, i32 } %4
}
declare double @__nv_frexp(double %a, ptr %b)
define { double, i32 } @frexp_f64_i32(double %a) {
entry:
%0 = alloca i32, align 4
%1 = call double @__nv_frexp(double %a, ptr %0)
%2 = load i32, ptr %0
%3 = insertvalue { double, i32 } undef, double %1, 0
%4 = insertvalue { double, i32 } %3, i32 %2, 1
ret { double, i32 } %4
}
|