13527e1abSAlistair Popple/* SPDX-License-Identifier: GPL-2.0-or-later 23527e1abSAlistair Popple * 33527e1abSAlistair Popple * Test basic matrix multiply assist (MMA) functionality if available. 43527e1abSAlistair Popple * 53527e1abSAlistair Popple * Copyright 2020, Alistair Popple, IBM Corp. 63527e1abSAlistair Popple */ 73527e1abSAlistair Popple .global test_mma 83527e1abSAlistair Poppletest_mma: 93527e1abSAlistair Popple /* Load accumulator via VSX registers from image passed in r3 */ 103527e1abSAlistair Popple lxvh8x 4,0,3 113527e1abSAlistair Popple lxvh8x 5,0,4 123527e1abSAlistair Popple 133527e1abSAlistair Popple /* Clear and prime the accumulator (xxsetaccz) */ 143527e1abSAlistair Popple .long 0x7c030162 153527e1abSAlistair Popple 163527e1abSAlistair Popple /* Prime the accumulator with MMA VSX move to accumulator 173527e1abSAlistair Popple * X-form (xxmtacc) (not needed due to above zeroing) */ 183527e1abSAlistair Popple //.long 0x7c010162 193527e1abSAlistair Popple 203527e1abSAlistair Popple /* xvi16ger2s */ 213527e1abSAlistair Popple .long 0xec042958 223527e1abSAlistair Popple 23*cd1e6493SRashmica Gupta /* Deprime the accumulator - xxmfacc 0 */ 24*cd1e6493SRashmica Gupta .long 0x7c000162 25*cd1e6493SRashmica Gupta 263527e1abSAlistair Popple /* Store result in image passed in r5 */ 273527e1abSAlistair Popple stxvw4x 0,0,5 283527e1abSAlistair Popple addi 5,5,16 293527e1abSAlistair Popple stxvw4x 1,0,5 303527e1abSAlistair Popple addi 5,5,16 313527e1abSAlistair Popple stxvw4x 2,0,5 323527e1abSAlistair Popple addi 5,5,16 333527e1abSAlistair Popple stxvw4x 3,0,5 343527e1abSAlistair Popple addi 5,5,16 353527e1abSAlistair Popple 363527e1abSAlistair Popple blr 37