From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v4 05/38] drm: Add a simple generator of random permutations Date: Thu, 22 Dec 2016 08:36:08 +0000 Message-ID: <20161222083641.2691-6-chris@chris-wilson.co.uk> References: <20161222083641.2691-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161222083641.2691-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, Joonas Lahtinen List-Id: dri-devel@lists.freedesktop.org V2hlbiB0ZXN0aW5nLCB3ZSB3YW50IGEgcmFuZG9tIGJ1dCB5ZXQgcmVwcm9kdWNpYmxlIG9yZGVy IGluIHdoaWNoIHRvCnByb2Nlc3MgZWxlbWVudHMuIEhlcmUgd2UgY3JlYXRlIGFuIGFycmF5IHdo aWNoIGlzIGEgcmFuZG9tICh1c2luZyB0aGUKVGF1c3dvcnRoZSBQUk5HKSBwZXJtdXRhdGlvbiBv ZiB0aGUgb3JkZXIgaW4gd2hpY2ggdG8gZXhlY3V0ZS4KCk5vdGUgdGhlc2UgYXJlIHNpbXBsZSBo ZWxwZXJzIGludGVuZGVkIHRvIGJlIG1lcmdlZCB1cHN0cmVhbSBpbiBsaWIvCgp2MjogVGlkaWVy IGNvZGUgYnkgRGF2aWQgSGVycm1hbm4KdjM6IEFkZCByZW1pbmRlciB0aGF0IHRoaXMgY29kZSBp cyBpbnRlbmRlZCB0byBiZSB0ZW1wb3JhcnksIHdpdGggYXQKbGVhc3QgdGhlIGJ1bGsgb2YgdGhl IHByYW5kb20gY2hhbmdlcyBnb2luZyB0byBsaWIvCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFz LmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IERhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFu bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5l bkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAg fCAgNCArKysrCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICB8ICAxICsKIGRyaXZl cnMvZ3B1L2RybS9saWIvZHJtX3JhbmRvbS5jIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2xpYi9kcm1fcmFuZG9tLmggfCAyNSAr KysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9saWIvZHJtX3JhbmRvbS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2xpYi9kcm1fcmFuZG9tLmgKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln CmluZGV4IGViZmU4NDA0YzI1Zi4uNDVhMWM3NDY4ZTg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtMzIxLDMgKzMy MSw3IEBAIGNvbmZpZyBEUk1fU0FWQUdFCiAJICBjaGlwc2V0LiBJZiBNIGlzIHNlbGVjdGVkIHRo ZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2F2YWdlLgogCiBlbmRpZiAjIERSTV9MRUdBQ1kKKwor Y29uZmlnIERSTV9MSUJfUkFORE9NCisJYm9vbAorCWRlZmF1bHQgbgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IGI5 YWU0MjgwZGU5ZC4uNmJiNDE2MzYwYWU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0xOCw2ICsxOCw3IEBAIGRy bS15ICAgICAgIDo9CWRybV9hdXRoLm8gZHJtX2J1ZnMubyBkcm1fY2FjaGUubyBcCiAJCWRybV9w bGFuZS5vIGRybV9jb2xvcl9tZ210Lm8gZHJtX3ByaW50Lm8gXAogCQlkcm1fZHVtYl9idWZmZXJz Lm8gZHJtX21vZGVfY29uZmlnLm8KIAorZHJtLSQoQ09ORklHX0RSTV9MSUJfUkFORE9NKSArPSBs aWIvZHJtX3JhbmRvbS5vCiBkcm0tJChDT05GSUdfQ09NUEFUKSArPSBkcm1faW9jMzIubwogZHJt LSQoQ09ORklHX0RSTV9HRU1fQ01BX0hFTFBFUikgKz0gZHJtX2dlbV9jbWFfaGVscGVyLm8KIGRy bS0kKENPTkZJR19QQ0kpICs9IGF0aV9wY2lnYXJ0Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9saWIvZHJtX3JhbmRvbS5jIGIvZHJpdmVycy9ncHUvZHJtL2xpYi9kcm1fcmFuZG9tLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43YjEyYTY4YzNiNTQKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbGliL2RybV9yYW5kb20uYwpAQCAtMCww ICsxLDQxIEBACisjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+CisjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+CisjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5o PgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNpbmNsdWRlICJkcm1fcmFuZG9tLmgiCisK K3N0YXRpYyBpbmxpbmUgdTMyIGRybV9wcmFuZG9tX3UzMl9tYXhfc3RhdGUodTMyIGVwX3JvLCBz dHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1cm4gdXBwZXJfMzJfYml0cygodTY0KXBy YW5kb21fdTMyX3N0YXRlKHN0YXRlKSAqIGVwX3JvKTsKK30KKwordm9pZCBkcm1fcmFuZG9tX3Jl b3JkZXIodW5zaWduZWQgaW50ICpvcmRlciwgdW5zaWduZWQgaW50IGNvdW50LAorCQkJc3RydWN0 IHJuZF9zdGF0ZSAqc3RhdGUpCit7CisJdW5zaWduZWQgaW50IGksIGo7CisKKwlmb3IgKGkgPSAw OyBpIDwgY291bnQ7ICsraSkgeworCQlCVUlMRF9CVUdfT04oc2l6ZW9mKHVuc2lnbmVkIGludCkg PiBzaXplb2YodTMyKSk7CisJCWogPSBkcm1fcHJhbmRvbV91MzJfbWF4X3N0YXRlKGNvdW50LCBz dGF0ZSk7CisJCXN3YXAob3JkZXJbaV0sIG9yZGVyW2pdKTsKKwl9Cit9CitFWFBPUlRfU1lNQk9M KGRybV9yYW5kb21fcmVvcmRlcik7CisKK3Vuc2lnbmVkIGludCAqZHJtX3JhbmRvbV9vcmRlcih1 bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBybmRfc3RhdGUgKnN0YXRlKQoreworCXVuc2lnbmVk IGludCAqb3JkZXIsIGk7CisKKwlvcmRlciA9IGttYWxsb2NfYXJyYXkoY291bnQsIHNpemVvZigq b3JkZXIpLCBHRlBfVEVNUE9SQVJZKTsKKwlpZiAoIW9yZGVyKQorCQlyZXR1cm4gb3JkZXI7CisK Kwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKwkJb3JkZXJbaV0gPSBpOworCisJZHJtX3Jh bmRvbV9yZW9yZGVyKG9yZGVyLCBjb3VudCwgc3RhdGUpOworCXJldHVybiBvcmRlcjsKK30KK0VY UE9SVF9TWU1CT0woZHJtX3JhbmRvbV9vcmRlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbGliL2RybV9yYW5kb20uaCBiL2RyaXZlcnMvZ3B1L2RybS9saWIvZHJtX3JhbmRvbS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTc4NjQ0YmVhN2Y5Ci0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpYi9kcm1fcmFuZG9tLmgKQEAgLTAsMCAr MSwyNSBAQAorI2lmbmRlZiBfX0RSTV9SQU5ET01fSF9fCisjZGVmaW5lIF9fRFJNX1JBTkRPTV9I X18KKworLyogVGhpcyBpcyBhIHRlbXBvcmFyeSBob21lIGZvciBhIGNvdXBsZSBvZiB1dGlsaXR5 IGZ1bmN0aW9ucyB0aGF0IHNob3VsZAorICogYmUgdHJhbnNwb3NlZCB0byBsaWIvIGF0IHRoZSBl YXJsaWVzdCBjb252ZW5pZW5jZS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+CisK KyNkZWZpbmUgRFJNX1JORF9TVEFURV9JTklUSUFMSVpFUihzZWVkX18pICh7CQkJCVwKKwlzdHJ1 Y3Qgcm5kX3N0YXRlIHN0YXRlX187CQkJCQlcCisJcHJhbmRvbV9zZWVkX3N0YXRlKCZzdGF0ZV9f LCAoc2VlZF9fKSk7CQkJCVwKKwlzdGF0ZV9fOwkJCQkJCQlcCit9KQorCisjZGVmaW5lIERSTV9S TkRfU1RBVEUobmFtZV9fLCBzZWVkX18pIFwKKwlzdHJ1Y3Qgcm5kX3N0YXRlIG5hbWVfXyA9IERS TV9STkRfU1RBVEVfSU5JVElBTElaRVIoc2VlZF9fKQorCit1bnNpZ25lZCBpbnQgKmRybV9yYW5k b21fb3JkZXIodW5zaWduZWQgaW50IGNvdW50LAorCQkJICAgICAgIHN0cnVjdCBybmRfc3RhdGUg KnN0YXRlKTsKK3ZvaWQgZHJtX3JhbmRvbV9yZW9yZGVyKHVuc2lnbmVkIGludCAqb3JkZXIsCisJ CQl1bnNpZ25lZCBpbnQgY291bnQsCisJCQlzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSk7CisKKyNl bmRpZiAvKiAhX19EUk1fUkFORE9NX0hfXyAqLwotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK