|
79 | 79 | // |
80 | 80 | // define void @foo({i32*, i32*}* byval %input) { |
81 | 81 | // %b_param = addrspacecat ptr %input to ptr addrspace(101) |
82 | | -// %b_ptr = getelementptr {ptr, ptr}, ptr addrspace(101) %b_param, i64 0, |
83 | | -// i32 1 %b = load ptr, ptr addrspace(101) %b_ptr %b_global = addrspacecast |
84 | | -// ptr %b to ptr addrspace(1) ; use %b_generic |
| 82 | +// %b_ptr = getelementptr {ptr, ptr}, ptr addrspace(101) %b_param, i64 0, i32 1 |
| 83 | +// %b = load ptr, ptr addrspace(101) %b_ptr |
| 84 | +// %b_global = addrspacecast ptr %b to ptr addrspace(1) |
| 85 | +// ; use %b_generic |
85 | 86 | // } |
86 | 87 | // |
87 | | -// Create a local copy of kernel byval parameters used in a way that *might* |
88 | | -// mutate the parameter, by storing it in an alloca. Mutations to |
89 | | -// "grid_constant" parameters are undefined behaviour, and don't require |
90 | | -// local copies. |
| 88 | +// Create a local copy of kernel byval parameters used in a way that *might* mutate |
| 89 | +// the parameter, by storing it in an alloca. Mutations to "grid_constant" parameters |
| 90 | +// are undefined behaviour, and don't require local copies. |
91 | 91 | // |
92 | 92 | // define void @foo(ptr byval(%struct.s) align 4 %input) { |
93 | 93 | // store i32 42, ptr %input |
|
124 | 124 | // |
125 | 125 | // define void @foo(ptr byval(%struct.s) %input) { |
126 | 126 | // %input1 = addrspacecast ptr %input to ptr addrspace(101) |
127 | | -// ; the following intrinsic converts pointer to generic. We don't use an |
128 | | -// addrspacecast ; to prevent generic -> param -> generic from getting |
129 | | -// cancelled out %input1.gen = call ptr |
130 | | -// @llvm.nvvm.ptr.param.to.gen.p0.p101(ptr addrspace(101) %input1) %call = |
131 | | -// call i32 @escape(ptr %input1.gen) ret void |
| 127 | +// ; the following intrinsic converts pointer to generic. We don't use an addrspacecast |
| 128 | +// ; to prevent generic -> param -> generic from getting cancelled out |
| 129 | +// %input1.gen = call ptr @llvm.nvvm.ptr.param.to.gen.p0.p101(ptr addrspace(101) %input1) |
| 130 | +// %call = call i32 @escape(ptr %input1.gen) |
| 131 | +// ret void |
132 | 132 | // } |
133 | 133 | // |
134 | 134 | // TODO: merge this pass with NVPTXInferAddressSpaces so that other passes don't |
|
0 commit comments