| ... | @@ -9224,20 +9224,6 @@ pub fn binValue(self: *Builder, tag: Constant.Tag, lhs: Constant, rhs: Constant) | ... | @@ -9224,20 +9224,6 @@ pub fn binValue(self: *Builder, tag: Constant.Tag, lhs: Constant, rhs: Constant) |
| 9224 | return (try self.binConst(tag, lhs, rhs)).toValue(); | 9224 | return (try self.binConst(tag, lhs, rhs)).toValue(); |
| 9225 | } | 9225 | } |
| 9226 | | 9226 | |
| 9227 | pub fn selectConst( | | |
| 9228 | self: *Builder, | | |
| 9229 | cond: Constant, | | |
| 9230 | lhs: Constant, | | |
| 9231 | rhs: Constant, | | |
| 9232 | ) Allocator.Error!Constant { | | |
| 9233 | try self.ensureUnusedConstantCapacity(1, Constant.Select, 0); | | |
| 9234 | return self.selectConstAssumeCapacity(cond, lhs, rhs); | | |
| 9235 | } | | |
| 9236 | | | |
| 9237 | pub fn selectValue(self: *Builder, cond: Constant, lhs: Constant, rhs: Constant) Allocator.Error!Value { | | |
| 9238 | return (try self.selectConst(cond, lhs, rhs)).toValue(); | | |
| 9239 | } | | |
| 9240 | | | |
| 9241 | pub fn asmConst( | 9227 | pub fn asmConst( |
| 9242 | self: *Builder, | 9228 | self: *Builder, |
| 9243 | ty: Type, | 9229 | ty: Type, |
| ... | @@ -10125,7 +10111,7 @@ fn arrayTypeAssumeCapacity(self: *Builder, len: u64, child: Type) Type { | ... | @@ -10125,7 +10111,7 @@ fn arrayTypeAssumeCapacity(self: *Builder, len: u64, child: Type) Type { |
| 10125 | .data = self.addTypeExtraAssumeCapacity(data), | 10111 | .data = self.addTypeExtraAssumeCapacity(data), |
| 10126 | }); | 10112 | }); |
| 10127 | if (self.useLibLlvm()) self.llvm.types.appendAssumeCapacity( | 10113 | if (self.useLibLlvm()) self.llvm.types.appendAssumeCapacity( |
| 10128 | child.toLlvm(self).arrayType(@intCast(len)), | 10114 | child.toLlvm(self).arrayType2(len), |
| 10129 | ); | 10115 | ); |
| 10130 | } | 10116 | } |
| 10131 | return @enumFromInt(gop.index); | 10117 | return @enumFromInt(gop.index); |
| ... | @@ -10158,7 +10144,7 @@ fn arrayTypeAssumeCapacity(self: *Builder, len: u64, child: Type) Type { | ... | @@ -10158,7 +10144,7 @@ fn arrayTypeAssumeCapacity(self: *Builder, len: u64, child: Type) Type { |
| 10158 | .data = self.addTypeExtraAssumeCapacity(data), | 10144 | .data = self.addTypeExtraAssumeCapacity(data), |
| 10159 | }); | 10145 | }); |
| 10160 | if (self.useLibLlvm()) self.llvm.types.appendAssumeCapacity( | 10146 | if (self.useLibLlvm()) self.llvm.types.appendAssumeCapacity( |
| 10161 | child.toLlvm(self).arrayType(@intCast(len)), | 10147 | child.toLlvm(self).arrayType2(len), |
| 10162 | ); | 10148 | ); |
| 10163 | } | 10149 | } |
| 10164 | return @enumFromInt(gop.index); | 10150 | return @enumFromInt(gop.index); |
| ... | @@ -10823,7 +10809,7 @@ fn arrayConstAssumeCapacity( | ... | @@ -10823,7 +10809,7 @@ fn arrayConstAssumeCapacity( |
| 10823 | for (llvm_vals, vals) |*llvm_val, val| llvm_val.* = val.toLlvm(self); | 10809 | for (llvm_vals, vals) |*llvm_val, val| llvm_val.* = val.toLlvm(self); |
| 10824 | | 10810 | |
| 10825 | self.llvm.constants.appendAssumeCapacity( | 10811 | self.llvm.constants.appendAssumeCapacity( |
| 10826 | type_extra.child.toLlvm(self).constArray(llvm_vals.ptr, @intCast(llvm_vals.len)), | 10812 | type_extra.child.toLlvm(self).constArray2(llvm_vals.ptr, llvm_vals.len), |
| 10827 | ); | 10813 | ); |
| 10828 | } | 10814 | } |
| 10829 | return result.constant; | 10815 | return result.constant; |
| ... | @@ -11536,42 +11522,6 @@ fn binConstAssumeCapacity( | ... | @@ -11536,42 +11522,6 @@ fn binConstAssumeCapacity( |
| 11536 | return @enumFromInt(gop.index); | 11522 | return @enumFromInt(gop.index); |
| 11537 | } | 11523 | } |
| 11538 | | 11524 | |
| 11539 | comptime { | | |
| 11540 | _ = &selectValue; | | |
| 11541 | } | | |
| 11542 | | | |
| 11543 | fn selectConstAssumeCapacity(self: *Builder, cond: Constant, lhs: Constant, rhs: Constant) Constant { | | |
| 11544 | const Adapter = struct { | | |
| 11545 | builder: *const Builder, | | |
| 11546 | pub fn hash(_: @This(), key: Constant.Select) u32 { | | |
| 11547 | return @truncate(std.hash.Wyhash.hash( | | |
| 11548 | std.hash.uint32(@intFromEnum(Constant.Tag.select)), | | |
| 11549 | std.mem.asBytes(&key), | | |
| 11550 | )); | | |
| 11551 | } | | |
| 11552 | pub fn eql(ctx: @This(), lhs_key: Constant.Select, _: void, rhs_index: usize) bool { | | |
| 11553 | if (ctx.builder.constant_items.items(.tag)[rhs_index] != .select) return false; | | |
| 11554 | const rhs_data = ctx.builder.constant_items.items(.data)[rhs_index]; | | |
| 11555 | const rhs_extra = ctx.builder.constantExtraData(Constant.Select, rhs_data); | | |
| 11556 | return std.meta.eql(lhs_key, rhs_extra); | | |
| 11557 | } | | |
| 11558 | }; | | |
| 11559 | const data = Constant.Select{ .cond = cond, .lhs = lhs, .rhs = rhs }; | | |
| 11560 | const gop = self.constant_map.getOrPutAssumeCapacityAdapted(data, Adapter{ .builder = self }); | | |
| 11561 | if (!gop.found_existing) { | | |
| 11562 | gop.key_ptr.* = {}; | | |
| 11563 | gop.value_ptr.* = {}; | | |
| 11564 | self.constant_items.appendAssumeCapacity(.{ | | |
| 11565 | .tag = .select, | | |
| 11566 | .data = self.addConstantExtraAssumeCapacity(data), | | |
| 11567 | }); | | |
| 11568 | if (self.useLibLlvm()) self.llvm.constants.appendAssumeCapacity( | | |
| 11569 | cond.toLlvm(self).constSelect(lhs.toLlvm(self), rhs.toLlvm(self)), | | |
| 11570 | ); | | |
| 11571 | } | | |
| 11572 | return @enumFromInt(gop.index); | | |
| 11573 | } | | |
| 11574 | | | |
| 11575 | fn asmConstAssumeCapacity( | 11525 | fn asmConstAssumeCapacity( |
| 11576 | self: *Builder, | 11526 | self: *Builder, |
| 11577 | ty: Type, | 11527 | ty: Type, |