From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9599B6E21F for ; Mon, 20 Aug 2018 13:01:58 +0000 (UTC) From: Chris Wilson Date: Mon, 20 Aug 2018 14:01:45 +0100 Message-Id: <20180820130149.30566-3-chris@chris-wilson.co.uk> In-Reply-To: <20180820130149.30566-1-chris@chris-wilson.co.uk> References: <20180820130149.30566-1-chris@chris-wilson.co.uk> Subject: [igt-dev] [PATCH i-g-t 2/6] igt/shell: Extend Math to perform simple array permutations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0t LQogc2hlbGwvaWd0LW1hdGguYyAgfCA5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogc2hlbGwvbWVzb24uYnVpbGQgfCAgMSArCiAyIGZpbGVzIGNoYW5n ZWQsIDkyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzaGVsbC9pZ3QtbWF0aC5j CgpkaWZmIC0tZ2l0IGEvc2hlbGwvaWd0LW1hdGguYyBiL3NoZWxsL2lndC1tYXRoLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4xOWIzMmE5ZDEKLS0tIC9kZXYvbnVsbAor KysgYi9zaGVsbC9pZ3QtbWF0aC5jCkBAIC0wLDAgKzEsOTEgQEAKKyNpbmNsdWRlICJkdWt0YXBl LmgiCisjaW5jbHVkZSAiaWd0LWJ1aWx0aW5zLmgiCisKK3N0YXRpYyB1aW50MzJfdCBwcm5nID0g MHgxMjM0NTY3ODsKKworc3RhdGljIHVpbnQzMl90IGhhcnNfcGV0cnVza2FfZjU0XzFfcmFuZG9t KHVpbnQzMl90ICpzKQoreworI2RlZmluZSByb2woeCxrKSAoKHggPDwgaykgfCAoeCA+PiAoMzIt aykpKQorICAgICAgICByZXR1cm4gKnMgPSAoKnMgXiByb2woKnMsIDUpIF4gcm9sKCpzLCAyNCkp ICsgMHgzNzc5ODg0OTsKKyN1bmRlZiByb2wKK30KKworc3RhdGljIGlubGluZSB1aW50MzJfdAor aGFyc19wZXRydXNrYV9mNTRfMV9yYW5kb21fbWF4KHVpbnQzMl90ICpzLCB1aW50MzJfdCBlcF9y bykKK3sKKyAgICAgICAgcmV0dXJuICgodWludDY0X3QpaGFyc19wZXRydXNrYV9mNTRfMV9yYW5k b20ocykgKiBlcF9ybykgPj4gMzI7Cit9CisKK3N0YXRpYyBkdWtfcmV0X3QgaWd0X21hdGhfcGVy bXV0ZV9hcnJheShkdWtfY29udGV4dCAqY3R4KQoreworCWR1a19zaXplX3QgY291bnQ7CisKKwlk dWtfZ2V0X3Byb3Bfc3RyaW5nKGN0eCwgLTEsICJsZW5ndGgiKTsKKwljb3VudCA9IGR1a19nZXRf dWludChjdHgsIC0xKTsKKwlkdWtfcG9wKGN0eCk7CisKKwlmb3IgKGR1a19zaXplX3QgaSA9IDA7 IGkgPCBjb3VudDsgaSsrKSB7CisJCWR1a19zaXplX3QgaiA9IGhhcnNfcGV0cnVza2FfZjU0XzFf cmFuZG9tX21heCgmcHJuZywgY291bnQpOworCisJCWR1a19nZXRfcHJvcF9pbmRleChjdHgsIC0x LCBpKTsKKwkJZHVrX2dldF9wcm9wX2luZGV4KGN0eCwgLTIsIGopOworCisJCWR1a19wdXRfcHJv cF9pbmRleChjdHgsIC0zLCBpKTsKKwkJZHVrX3B1dF9wcm9wX2luZGV4KGN0eCwgLTIsIGopOwor CX0KKworCXJldHVybiAxOworfQorCitzdGF0aWMgZHVrX3JldF90IGlndF9tYXRoX3Blcm11dGVf YnVmZmVyKGR1a19jb250ZXh0ICpjdHgpCit7CisJZHVrX3NpemVfdCBzeiwgZWwsIGNvdW50Owor CWNoYXIgdG1wWzhdOworCXZvaWQgKnB0cjsKKworCXB0ciA9IGR1a19yZXF1aXJlX2J1ZmZlcl9k YXRhKGN0eCwgLTEsICZzeik7CisKKwlkdWtfZ2V0X3Byb3Bfc3RyaW5nKGN0eCwgLTEsICJCWVRF U19QRVJfRUxFTUVOVCIpOworCWVsID0gZHVrX2dldF91aW50KGN0eCwgLTEpOworCWNvdW50ID0g c3ogLyBlbDsKKwlkdWtfcG9wKGN0eCk7CisKKwlmb3IgKGR1a19zaXplX3QgaSA9IDA7IGkgPCBj b3VudDsgaSsrKSB7CisJCWR1a19zaXplX3QgaiA9IGhhcnNfcGV0cnVza2FfZjU0XzFfcmFuZG9t X21heCgmcHJuZywgY291bnQpOworCisJCW1lbWNweSh0bXAsIHB0ciArIGogKiBlbCwgZWwpOwor CQltZW1jcHkocHRyICsgaiAqIGVsLCBwdHIgKyBpICogZWwsIGVsKTsKKwkJbWVtY3B5KHB0ciAr IGkgKiBlbCwgdG1wLCBlbCk7CisJfQorCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBkdWtfcmV0 X3QgaWd0X21hdGhfcGVybXV0ZShkdWtfY29udGV4dCAqY3R4KQoreworCWlmIChkdWtfaXNfYXJy YXkoY3R4LCAtMSkpCisJCXJldHVybiBpZ3RfbWF0aF9wZXJtdXRlX2FycmF5KGN0eCk7CisJZWxz ZQorCQlyZXR1cm4gaWd0X21hdGhfcGVybXV0ZV9idWZmZXIoY3R4KTsKK30KKworc3RhdGljIGR1 a19yZXRfdCBpZ3RfbWF0aF9idWlsdGluX2N0b3IoZHVrX2NvbnRleHQgKmN0eCkKK3sKKwlkdWtf Z2V0X2dsb2JhbF9zdHJpbmcoY3R4LCAiTWF0aCIpOworCisJZHVrX3B1c2hfY19mdW5jdGlvbihj dHgsIGlndF9tYXRoX3Blcm11dGUsIDEpOworCWR1a19wdXRfcHJvcF9zdHJpbmcoY3R4LCAtMiwg InBlcm11dGUiKTsKKworCWR1a19wb3AoY3R4KTsKKwlyZXR1cm4gMDsKK30KKworX19hdHRyaWJ1 dGVfXygoY29uc3RydWN0b3IpKQorc3RhdGljIHZvaWQgX19kcm1fcmVnaXN0ZXJfYnVpbHRpbl9f KHZvaWQpCit7CisJc3RhdGljIHN0cnVjdCBpZ3RfYnVpbHRpbiBidWlsdGluID0geworCQkubmFt ZSA9ICJtYXRoIiwKKwkJLmN0b3IgPSBpZ3RfbWF0aF9idWlsdGluX2N0b3IKKwl9OworCWlndF9y ZWdpc3Rlcl9nbG9iYWwoJmJ1aWx0aW4pOworfQpkaWZmIC0tZ2l0IGEvc2hlbGwvbWVzb24uYnVp bGQgYi9zaGVsbC9tZXNvbi5idWlsZAppbmRleCA3ZWIwODFhODUuLjUzYjA3NTRlOSAxMDA2NDQK LS0tIGEvc2hlbGwvbWVzb24uYnVpbGQKKysrIGIvc2hlbGwvbWVzb24uYnVpbGQKQEAgLTEsNiAr MSw3IEBACiBleGVjdXRhYmxlKCdpZ3QnLCBbCiAJICAgICAnZHVrdGFwZS9kdWt0YXBlLmMnLAog CSAgICAgJ2lndC1idWlsdGlucy5jJywKKwkgICAgICdpZ3QtbWF0aC5jJywKIAkgICAgICdpZ3Qt c2hlbGwuYycsCiAJICAgXSwgZGVwZW5kZW5jaWVzIDogWyBtYXRoLCBsaWJrbW9kIF0sCiAJICAg aW5jbHVkZV9kaXJlY3RvcmllcyA6IGluY2x1ZGVfZGlyZWN0b3JpZXMoJ2luY2x1ZGUnLCAnLi4v aW5jbHVkZScpCi0tIAoyLjE4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldgo=