diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-12-19 12:18:55 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-12-19 12:19:52 +0200 |
| commit | 2926d95e6a7c4d83eb197f78de40718e97bc1f1b (patch) | |
| tree | b3ad8e54eb60e5b4f8eb0e63308a987102369786 /src/codegen | |
| parent | 0eddf0cbc0a88121a67239d5899dca8a39c39cd8 (diff) | |
| download | zig-2926d95e6a7c4d83eb197f78de40718e97bc1f1b.tar.gz zig-2926d95e6a7c4d83eb197f78de40718e97bc1f1b.zip | |
llvm: handle vectors in packed structs
Closes #13201
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm.zig | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 7af987f4d6..d96c38ed13 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -5966,7 +5966,7 @@ pub const FuncGen = struct { const shift_amt = containing_int.typeOf().constInt(bit_offset, .False); const shifted_value = self.builder.buildLShr(containing_int, shift_amt, ""); const elem_llvm_ty = try self.dg.lowerType(field_ty); - if (field_ty.zigTypeTag() == .Float) { + if (field_ty.zigTypeTag() == .Float or field_ty.zigTypeTag() == .Vector) { const elem_bits = @intCast(c_uint, field_ty.bitSize(target)); const same_size_int = self.context.intType(elem_bits); const truncated_int = self.builder.buildTrunc(shifted_value, same_size_int, ""); @@ -5989,7 +5989,7 @@ pub const FuncGen = struct { assert(struct_ty.containerLayout() == .Packed); const containing_int = struct_llvm_val; const elem_llvm_ty = try self.dg.lowerType(field_ty); - if (field_ty.zigTypeTag() == .Float) { + if (field_ty.zigTypeTag() == .Float or field_ty.zigTypeTag() == .Vector) { const elem_bits = @intCast(c_uint, field_ty.bitSize(target)); const same_size_int = self.context.intType(elem_bits); const truncated_int = self.builder.buildTrunc(containing_int, same_size_int, ""); @@ -9889,7 +9889,7 @@ pub const FuncGen = struct { return result_ptr; } - if (info.pointee_type.zigTypeTag() == .Float) { + if (info.pointee_type.zigTypeTag() == .Float or info.pointee_type.zigTypeTag() == .Vector) { const same_size_int = self.context.intType(elem_bits); const truncated_int = self.builder.buildTrunc(shifted_value, same_size_int, ""); return self.builder.buildBitCast(truncated_int, elem_llvm_ty, ""); |
