Lines Matching refs:array
1 // Test array-copy-value pass (copy elision) with array assignment
4 // RUN: fir-opt %s --array-value-copy -split-input-file | FileCheck %s
6 // Test `pointer(:) = array(:)`
7 // TODO: array should have target attribute.
9 // CHECK: %[[ALLOC:.*]] = fir.allocmem !fir.array<100xf32>
13 // CHECK: fir.freemem %[[ALLOC]] : !fir.heap<!fir.array<100xf32>>
14 func.func @maybe_overlap(%arg0: !fir.ptr<!fir.array<100xf32>>, %arg1: !fir.ref<!fir.array<100xf32>>…
21 …%2 = fir.array_load %arg0(%1) : (!fir.ptr<!fir.array<100xf32>>, !fir.shape<1>) -> !fir.array<100xf…
22 …%3 = fir.array_load %arg1(%1) : (!fir.ref<!fir.array<100xf32>>, !fir.shape<1>) -> !fir.array<100xf…
23 …%4 = fir.do_loop %arg2 = %c0 to %c99 step %c1 unordered iter_args(%arg3 = %2) -> (!fir.array<100xf…
24 %5 = fir.array_fetch %3, %arg2 : (!fir.array<100xf32>, index) -> f32
25 … %6 = fir.array_update %arg3, %5, %arg2 : (!fir.array<100xf32>, f32, index) -> !fir.array<100xf32>
26 fir.result %6 : !fir.array<100xf32>
28 …fir.array_merge_store %2, %4 to %arg0 : !fir.array<100xf32>, !fir.array<100xf32>, !fir.ptr<!fir.ar…
41 func.func @no_overlap(%arg0: !fir.ptr<!fir.array<100xf32>>, %arg1: !fir.ref<!fir.array<100xf32>>) {
48 …%2 = fir.array_load %arg0(%1) : (!fir.ptr<!fir.array<100xf32>>, !fir.shape<1>) -> !fir.array<100xf…
49 …%3 = fir.do_loop %arg2 = %c0 to %c99 step %c1 unordered iter_args(%arg3 = %2) -> (!fir.array<100xf…
50 %4 = fir.array_fetch %2, %arg2 : (!fir.array<100xf32>, index) -> f32
51 … %5 = fir.array_update %arg3, %4, %arg2 : (!fir.array<100xf32>, f32, index) -> !fir.array<100xf32>
52 fir.result %5 : !fir.array<100xf32>
54 …fir.array_merge_store %2, %3 to %arg0 : !fir.array<100xf32>, !fir.array<100xf32>, !fir.ptr<!fir.ar…
60 // Test `array(:) = pointer(:)`
61 // TODO: array should have target attribute.
63 // CHECK: %[[ALLOC:.*]] = fir.allocmem !fir.array<100xf32>
67 // CHECK: fir.freemem %[[ALLOC]] : !fir.heap<!fir.array<100xf32>>
68 func.func @maybe_overlap_2(%arg0: !fir.ptr<!fir.array<100xf32>>, %arg1: !fir.ref<!fir.array<100xf32…
75 …%2 = fir.array_load %arg0(%1) : (!fir.ptr<!fir.array<100xf32>>, !fir.shape<1>) -> !fir.array<100xf…
76 …%3 = fir.array_load %arg1(%1) : (!fir.ref<!fir.array<100xf32>>, !fir.shape<1>) -> !fir.array<100xf…
77 …%4 = fir.do_loop %arg2 = %c0 to %c99 step %c1 unordered iter_args(%arg3 = %3) -> (!fir.array<100xf…
78 %5 = fir.array_fetch %2, %arg2 : (!fir.array<100xf32>, index) -> f32
79 … %6 = fir.array_update %arg3, %5, %arg2 : (!fir.array<100xf32>, f32, index) -> !fir.array<100xf32>
80 fir.result %6 : !fir.array<100xf32>
82 …fir.array_merge_store %3, %4 to %arg1 : !fir.array<100xf32>, !fir.array<100xf32>, !fir.ref<!fir.ar…
90 // CHECK: %[[ALLOC:.*]] = fir.allocmem !fir.array<100xf32>
94 // CHECK: fir.freemem %[[ALLOC]] : !fir.heap<!fir.array<100xf32>>
95 func.func @maybe_overlap_3(%arg0: !fir.ptr<!fir.array<100xf32>>, %arg1: !fir.ptr<!fir.array<100xf32…
102 …%2 = fir.array_load %arg0(%1) : (!fir.ptr<!fir.array<100xf32>>, !fir.shape<1>) -> !fir.array<100xf…
103 …%3 = fir.array_load %arg1(%1) : (!fir.ptr<!fir.array<100xf32>>, !fir.shape<1>) -> !fir.array<100xf…
104 …%4 = fir.do_loop %arg2 = %c0 to %c99 step %c1 unordered iter_args(%arg3 = %3) -> (!fir.array<100xf…
105 %5 = fir.array_fetch %2, %arg2 : (!fir.array<100xf32>, index) -> f32
106 … %6 = fir.array_update %arg3, %5, %arg2 : (!fir.array<100xf32>, f32, index) -> !fir.array<100xf32>
107 fir.result %6 : !fir.array<100xf32>
109 …fir.array_merge_store %3, %4 to %arg1 : !fir.array<100xf32>, !fir.array<100xf32>, !fir.ptr<!fir.ar…
118 // CHECK: %[[ALLOC:.*]] = fir.allocmem !fir.array<4x!fir.type<some_type{i:i32}>>
120 // CHECK: fir.freemem %[[ALLOC]] : !fir.heap<!fir.array<4x!fir.type<some_type{i:i32}>>>
121 …liased(%arg0: !fir.box<!fir.array<4x!fir.type<some_type{i:i32}>>> {fir.target}, %arg1: !fir.ref<!f…
126 …fir.array_load %arg0 [%1] : (!fir.box<!fir.array<4x!fir.type<some_type{i:i32}>>>, !fir.slice<1>) -…
127 %3 = fir.load %arg1 : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
129 …%4:3 = fir.box_dims %3, %c0 : (!fir.box<!fir.ptr<!fir.array<?xi32>>>, index) -> (index, index, ind…
131 …%6 = fir.array_load %3(%5) : (!fir.box<!fir.ptr<!fir.array<?xi32>>>, !fir.shift<1>) -> !fir.array<…
133 …%8 = fir.do_loop %arg2 = %c0 to %7 step %c1 unordered iter_args(%arg3 = %2) -> (!fir.array<4xi32>)…
134 %9 = fir.array_fetch %6, %arg2 : (!fir.array<?xi32>, index) -> i32
135 %10 = fir.array_update %arg3, %9, %arg2 : (!fir.array<4xi32>, i32, index) -> !fir.array<4xi32>
136 fir.result %10 : !fir.array<4xi32>
138 …fir.array_merge_store %2, %8 to %arg0[%1] : !fir.array<4xi32>, !fir.array<4xi32>, !fir.box<!fir.ar…
147 // CHECK: %[[ALLOC:.*]] = fir.allocmem !fir.array<?xf32>
149 // CHECK: fir.freemem %[[ALLOC]] : !fir.heap<!fir.array<?xf32>>
150 …x_real_aliasing(%arg0: !fir.ref<!fir.box<!fir.ptr<!fir.array<?xf32>>>>, %arg1: !fir.ref<!fir.array…
152 %0 = fir.load %arg0 : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xf32>>>>
154 …%1:3 = fir.box_dims %0, %c0 : (!fir.box<!fir.ptr<!fir.array<?xf32>>>, index) -> (index, index, ind…
156 …%3 = fir.array_load %0(%2) : (!fir.box<!fir.ptr<!fir.array<?xf32>>>, !fir.shift<1>) -> !fir.array<…
161 …ray_load %arg1(%4) [%5] : (!fir.ref<!fir.array<4x!fir.complex<4>>>, !fir.shape<1>, !fir.slice<1>) …
163 …%8 = fir.do_loop %arg2 = %c0 to %7 step %c1 unordered iter_args(%arg3 = %3) -> (!fir.array<?xf32>)…
164 %9 = fir.array_fetch %6, %arg2 : (!fir.array<4xf32>, index) -> f32
165 %10 = fir.array_update %arg3, %9, %arg2 : (!fir.array<?xf32>, f32, index) -> !fir.array<?xf32>
166 fir.result %10 : !fir.array<?xf32>
168 …fir.array_merge_store %3, %8 to %0 : !fir.array<?xf32>, !fir.array<?xf32>, !fir.box<!fir.ptr<!fir.…