162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci * 362306a36Sopenharmony_ci * Test basic matrix multiply assist (MMA) functionality if available. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2020, Alistair Popple, IBM Corp. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci .global test_mma 862306a36Sopenharmony_citest_mma: 962306a36Sopenharmony_ci /* Load accumulator via VSX registers from image passed in r3 */ 1062306a36Sopenharmony_ci lxvh8x 4,0,3 1162306a36Sopenharmony_ci lxvh8x 5,0,4 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci /* Clear and prime the accumulator (xxsetaccz) */ 1462306a36Sopenharmony_ci .long 0x7c030162 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci /* Prime the accumulator with MMA VSX move to accumulator 1762306a36Sopenharmony_ci * X-form (xxmtacc) (not needed due to above zeroing) */ 1862306a36Sopenharmony_ci //.long 0x7c010162 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci /* xvi16ger2s */ 2162306a36Sopenharmony_ci .long 0xec042958 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci /* Deprime the accumulator - xxmfacc 0 */ 2462306a36Sopenharmony_ci .long 0x7c000162 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci /* Store result in image passed in r5 */ 2762306a36Sopenharmony_ci stxvw4x 0,0,5 2862306a36Sopenharmony_ci addi 5,5,16 2962306a36Sopenharmony_ci stxvw4x 1,0,5 3062306a36Sopenharmony_ci addi 5,5,16 3162306a36Sopenharmony_ci stxvw4x 2,0,5 3262306a36Sopenharmony_ci addi 5,5,16 3362306a36Sopenharmony_ci stxvw4x 3,0,5 3462306a36Sopenharmony_ci addi 5,5,16 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci blr 37