| 18 | } |
| 19 | |
| 20 | void PSMTXIdentity(register Mtx m) |
| 21 | { |
| 22 | register f32 c_zero = 0.0f; |
| 23 | register f32 c_one = 1.0f; |
| 24 | register f32 c_01; |
| 25 | register f32 c_10; |
| 26 | |
| 27 | asm { |
| 28 | psq_st c_zero, 8(m), 0, 0 |
| 29 | ps_merge01 c_01, c_zero, c_one |
| 30 | psq_st c_zero, 24(m), 0, 0 |
| 31 | ps_merge10 c_10, c_one, c_zero |
| 32 | psq_st c_zero, 32(m), 0, 0 |
| 33 | psq_st c_01, 16(m), 0, 0 |
| 34 | psq_st c_10, 0(m), 0, 0 |
| 35 | psq_st c_10, 40(m), 0, 0 |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | asm void PSMTXConcat(const register Mtx a, const register Mtx b, register Mtx ab) |
| 40 | { |
| 41 | nofralloc; |
| 42 | stwu r1, -64(r1); |
| 43 | psq_l f0, 0(a), 0, 0; |
| 44 | stfd f14, 8(r1); |
| 45 | psq_l f6, 0(b), 0, 0; |
| 46 | lis r6, Unit01 @ha; |
| 47 | psq_l f7, 8(b), 0, 0; |
| 48 | stfd f15, 16(r1); |
| 49 | addi r6, r6, Unit01 @l; |
| 50 | stfd f31, 40(r1); |
| 51 | psq_l f8, 16(b), 0, 0; |
| 52 | ps_muls0 f12, f6, f0; |
| 53 | psq_l f2, 16(a), 0, 0; |
| 54 | ps_muls0 f13, f7, f0; |
| 55 | psq_l f31, 0(r6), 0, 0; |
| 56 | ps_muls0 f14, f6, f2; |
| 57 | psq_l f9, 24(b), 0, 0; |
| 58 | ps_muls0 f15, f7, f2; |
| 59 | psq_l f1, 8(a), 0, 0; |
| 60 | ps_madds1 f12, f8, f0, f12; |
| 61 | psq_l f3, 24(a), 0, 0; |
| 62 | ps_madds1 f14, f8, f2, f14; |
| 63 | psq_l f10, 32(b), 0, 0; |
| 64 | ps_madds1 f13, f9, f0, f13; |
| 65 | psq_l f11, 40(b), 0, 0; |
| 66 | ps_madds1 f15, f9, f2, f15; |
| 67 | psq_l f4, 32(a), 0, 0; |
| 68 | psq_l f5, 40(a), 0, 0; |
| 69 | ps_madds0 f12, f10, f1, f12; |
| 70 | ps_madds0 f13, f11, f1, f13; |
| 71 | ps_madds0 f14, f10, f3, f14; |
| 72 | ps_madds0 f15, f11, f3, f15; |
| 73 | psq_st f12, 0(ab), 0, 0; |
| 74 | ps_muls0 f2, f6, f4; |
| 75 | ps_madds1 f13, f31, f1, f13; |
| 76 | ps_muls0 f0, f7, f4; |
| 77 | psq_st f14, 16(ab), 0, 0; |
no outgoing calls
no test coverage detected