@@ -1076,6 +1076,90 @@ test "alignment of vectors" {
1076
1076
try expect (@alignOf (@Vector (2 , u1 )) == 1 );
1077
1077
try expect (@alignOf (@Vector (1 , u1 )) == 1 );
1078
1078
try expect (@alignOf (@Vector (2 , u16 )) == 4 );
1079
+
1080
+ try expect (@alignOf (@Vector (7 , i8 )) == 8 );
1081
+ try expect (@alignOf (@Vector (8 , i8 )) == 8 );
1082
+ try expect (@alignOf (@Vector (9 , i8 )) == 16 );
1083
+
1084
+ const specialcase_16_bytes = switch (builtin .target .cpu .arch ) {
1085
+ .arm , .armeb , .thumb , .thumbeb = > true ,
1086
+ else = > false ,
1087
+ };
1088
+
1089
+ try expect (@alignOf (@Vector (15 , i8 )) == 16 );
1090
+ if (specialcase_16_bytes ) {
1091
+ if (builtin .zig_backend == .stage1 ) {
1092
+ try expect (@alignOf (@Vector (16 , i8 )) == 8 );
1093
+ } else {
1094
+ // TODO
1095
+ // https://github.com/ziglang/zig/issues/12137
1096
+ }
1097
+ } else {
1098
+ try expect (@alignOf (@Vector (16 , i8 )) == 16 );
1099
+ }
1100
+ try expect (@alignOf (@Vector (17 , i8 )) == 32 );
1101
+
1102
+ try expect (@alignOf (@Vector (31 , i8 )) == 32 );
1103
+ try expect (@alignOf (@Vector (32 , i8 )) == 32 );
1104
+ try expect (@alignOf (@Vector (33 , i8 )) == 64 );
1105
+
1106
+ try expect (@alignOf (@Vector (3 , u16 )) == 8 );
1107
+ try expect (@alignOf (@Vector (3 , u64 )) == 32 );
1108
+ try expect (@alignOf (@Vector (1 , * u8 )) == @sizeOf (* u8 ) * 1 );
1109
+ try expect (@alignOf (@Vector (2 , * u8 )) == @sizeOf (* u8 ) * 2 );
1110
+ try expect (@alignOf (@Vector (3 , * u8 )) == @sizeOf (* u8 ) * 4 );
1111
+
1112
+ try expect (@alignOf (@Vector (3 , f32 )) == 16 );
1113
+ if (specialcase_16_bytes ) {
1114
+ if (builtin .zig_backend == .stage1 ) {
1115
+ try expect (@alignOf (@Vector (4 , f32 )) == 8 );
1116
+ } else {
1117
+ // TODO
1118
+ // https://github.com/ziglang/zig/issues/12137
1119
+ }
1120
+ } else {
1121
+ try expect (@alignOf (@Vector (4 , f32 )) == 16 );
1122
+ }
1123
+ try expect (@alignOf (@Vector (5 , f32 )) == 32 );
1124
+
1125
+ try expect (@alignOf (@Vector (8 , bool )) == 1 );
1126
+ try expect (@alignOf (@Vector (8 , u1 )) == 1 );
1127
+ try expect (@alignOf (@Vector (9 , u1 )) == 2 );
1128
+ try expect (@alignOf (@Vector (32 , u1 )) == 4 );
1129
+ try expect (@alignOf (@Vector (33 , u1 )) == 8 );
1130
+ }
1131
+
1132
+ test "size of vectors" {
1133
+ try expect (@sizeOf (@Vector (2 , u8 )) == 2 );
1134
+ try expect (@sizeOf (@Vector (2 , u1 )) == 1 );
1135
+ try expect (@sizeOf (@Vector (1 , u1 )) == 1 );
1136
+ try expect (@sizeOf (@Vector (2 , u16 )) == 4 );
1137
+
1138
+ try expect (@sizeOf (@Vector (7 , i8 )) == 8 );
1139
+ try expect (@sizeOf (@Vector (8 , i8 )) == 8 );
1140
+ try expect (@sizeOf (@Vector (9 , i8 )) == 16 );
1141
+ try expect (@sizeOf (@Vector (15 , i8 )) == 16 );
1142
+ try expect (@sizeOf (@Vector (16 , i8 )) == 16 );
1143
+ try expect (@sizeOf (@Vector (17 , i8 )) == 32 );
1144
+ try expect (@sizeOf (@Vector (31 , i8 )) == 32 );
1145
+ try expect (@sizeOf (@Vector (32 , i8 )) == 32 );
1146
+ try expect (@sizeOf (@Vector (33 , i8 )) == 64 );
1147
+
1148
+ try expect (@sizeOf (@Vector (3 , u16 )) == 8 );
1149
+ try expect (@sizeOf (@Vector (3 , u64 )) == 32 );
1150
+ try expect (@sizeOf (@Vector (1 , * u8 )) == @sizeOf (* u8 ) * 1 );
1151
+ try expect (@sizeOf (@Vector (2 , * u8 )) == @sizeOf (* u8 ) * 2 );
1152
+ try expect (@sizeOf (@Vector (3 , * u8 )) == @sizeOf (* u8 ) * 4 );
1153
+
1154
+ try expect (@sizeOf (@Vector (3 , f32 )) == 16 );
1155
+ try expect (@sizeOf (@Vector (4 , f32 )) == 16 );
1156
+ try expect (@sizeOf (@Vector (5 , f32 )) == 32 );
1157
+
1158
+ try expect (@sizeOf (@Vector (8 , bool )) == 1 );
1159
+ try expect (@sizeOf (@Vector (8 , u1 )) == 1 );
1160
+ try expect (@sizeOf (@Vector (9 , u1 )) == 2 );
1161
+ try expect (@sizeOf (@Vector (32 , u1 )) == 4 );
1162
+ try expect (@sizeOf (@Vector (33 , u1 )) == 8 );
1079
1163
}
1080
1164
1081
1165
test "loading the second vector from a slice of vectors" {
0 commit comments