|
87 | 87 | primitive type Primitive16 16 end |
88 | 88 | primitive type Primitive24 24 end |
89 | 89 | primitive type Primitive80 80 end |
| 90 | +primitive type Primitive104 104 end |
| 91 | +primitive type Primitive136 136 end |
90 | 92 |
|
91 | | -@testset for PrimitiveType in (Primitive16, Primitive24, Primitive80) |
| 93 | +@testset for PrimitiveType in (Primitive16, Primitive24, Primitive80, Primitive104, Primitive136) |
92 | 94 | sz = sizeof(PrimitiveType) |
93 | 95 | al = Base.datatype_alignment(PrimitiveType) |
94 | 96 | @test MPI.Types.extent(MPI.Datatype(PrimitiveType)) == (0, cld(sz,al)*al) |
95 | 97 |
|
96 | | - if VERSION < v"1.3" && PrimitiveType == Primitive80 |
97 | | - # alignment is broken on earlier Julia versions |
98 | | - continue |
99 | | - end |
| 98 | + conv = sizeof(PrimitiveType) <= sizeof(UInt128) ? Core.Intrinsics.trunc_int : Core.Intrinsics.sext_int |
100 | 99 |
|
101 | | - arr = [Core.Intrinsics.trunc_int(PrimitiveType, UInt128(comm_rank + i)) for i = 1:4] |
| 100 | + arr = [conv(PrimitiveType, UInt128(comm_rank + i)) for i = 1:4] |
102 | 101 | arr_recv = Array{PrimitiveType}(undef,4) |
103 | 102 |
|
104 | 103 | recv_req = MPI.Irecv!(arr_recv, src, 2, MPI.COMM_WORLD) |
105 | 104 | send_req = MPI.Isend(arr, dest, 2, MPI.COMM_WORLD) |
106 | 105 |
|
107 | 106 | MPI.Waitall([recv_req, send_req]) |
108 | 107 |
|
109 | | - @test arr_recv == [Core.Intrinsics.trunc_int(PrimitiveType, UInt128(src + i)) for i = 1:4] |
| 108 | + @test arr_recv == [conv(PrimitiveType, UInt128(src + i)) for i = 1:4] |
110 | 109 | end |
111 | 110 |
|
112 | 111 | @testset "packed non-aligned tuples" begin |
|
0 commit comments