@@ -133,36 +133,35 @@ identify(::Type{Value}, ::Val{API.LLVMConstantDataArrayValueKind}) = ConstantArr
133
133
ConstantArrayOrAggregateZero (value) = Value (value):: Union{ConstantArray,ConstantAggregateZero}
134
134
135
135
# generic constructor taking an array of constants
136
- function ConstantArray (data:: AbstractArray{<:Constant,N} ,
137
- typ:: LLVMType = llvmtype (first (data))) where {N}
136
+ function ConstantArray (typ:: LLVMType , data:: AbstractArray{T,N} = T[]) where {T<: Constant ,N}
138
137
@assert all (x-> x== typ, llvmtype .(data))
139
138
140
139
if N == 1
141
140
return ConstantArrayOrAggregateZero (API. LLVMConstArray (typ, Array (data), length (data)))
142
141
end
143
142
144
143
if VERSION >= v " 1.1"
145
- ca_vec = map (x-> ConstantArray (x, typ ), eachslice (data, dims= 1 ))
144
+ ca_vec = map (x-> ConstantArray (typ, x ), eachslice (data, dims= 1 ))
146
145
else
147
- ca_vec = map (x-> ConstantArray (x, typ ), (view (data, i, ntuple (d-> (:), N- 1 )... ) for i in axes (data, 1 )))
146
+ ca_vec = map (x-> ConstantArray (typ, x ), (view (data, i, ntuple (d-> (:), N- 1 )... ) for i in axes (data, 1 )))
148
147
end
149
148
ca_typ = llvmtype (first (ca_vec))
150
149
151
150
return ConstantArray (API. LLVMConstArray (ca_typ, ca_vec, length (ca_vec)))
152
151
end
153
152
154
153
# shorthands with arrays of plain Julia data
155
- # FIXME : duplicates the ConstantInt/ConstantFP conversion rules (to support empty arrays)
154
+ # FIXME : duplicates the ConstantInt/ConstantFP conversion rules
156
155
ConstantArray (data:: AbstractArray{T,N} , ctx:: Context = GlobalContext ()) where {T<: Integer ,N} =
157
- ConstantArray (ConstantInt .(data, Ref (ctx)), IntType (sizeof (T)* 8 , ctx))
156
+ ConstantArray (IntType (sizeof (T)* 8 , ctx), ConstantInt .(data, Ref (ctx) ))
158
157
ConstantArray (data:: AbstractArray{Core.Bool,N} , ctx:: Context = GlobalContext ()) where {N} =
159
- ConstantArray (ConstantInt .(data, Ref (ctx)), Int1Type (ctx ))
158
+ ConstantArray (Int1Type (ctx), ConstantInt .(data, Ref (ctx)))
160
159
ConstantArray (data:: AbstractArray{Float16,N} , ctx:: Context = GlobalContext ()) where {N} =
161
- ConstantArray (ConstantFP .(data, Ref (ctx)), HalfType (ctx ))
160
+ ConstantArray (HalfType (ctx), ConstantFP .(data, Ref (ctx)))
162
161
ConstantArray (data:: AbstractArray{Float32,N} , ctx:: Context = GlobalContext ()) where {N} =
163
- ConstantArray (ConstantFP .(data, Ref (ctx)), FloatType (ctx ))
162
+ ConstantArray (FloatType (ctx), ConstantFP .(data, Ref (ctx)))
164
163
ConstantArray (data:: AbstractArray{Float64,N} , ctx:: Context = GlobalContext ()) where {N} =
165
- ConstantArray (ConstantFP .(data, Ref (ctx)), DoubleType (ctx ))
164
+ ConstantArray (DoubleType (ctx), ConstantFP .(data, Ref (ctx)))
166
165
167
166
# convert back to known array types
168
167
function Base. collect (ca:: ConstantArray )
0 commit comments