From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 53601 invoked by alias); 25 Aug 2017 17:43:32 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 52136 invoked by uid 89); 25 Aug 2017 17:43:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy=charles, Charles, HX-Envelope-From:sk:charles, divided X-HELO: mail-yw0-f176.google.com Received: from mail-yw0-f176.google.com (HELO mail-yw0-f176.google.com) (209.85.161.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 25 Aug 2017 17:43:28 +0000 Received: by mail-yw0-f176.google.com with SMTP id h127so2723596ywf.3 for ; Fri, 25 Aug 2017 10:43:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=XayOWrKptbQsayAg+FCUvo4CaW5Hz19TRIR/ZeCl5cU=; b=WIfdrkLlbVJtERMuwX4M3tEyAFwqdz572yrp+gLfz8uJXzVjSCLm2YgJ2TpciJZqsz JvJfG55EuP1+q0axf743qo/t0myg/q4qpobNmZFBqSAqfjTXTzN84MqlS7NVtUq321JB sLZzVq6Jw+q7/LtbqYC5nbQTCTTwPuBwDZSZ5ioBlQw96bizQq0kImi3vsPccymt7KgE CxlnOcZMV/oqOFd0+gdYr7IBm40gtZD05Ci5T36nF2Za8b+Z9+tVgXqHiqUMFv6qDI1e N+iU6L2ulp9x6VPXq9Rw/tUl2JQLqfHfgJjO5rRMH94i4t/oHx88PXVukzVVTElGpTNc 3twQ== X-Gm-Message-State: AHYfb5gzBHsqPpD4mfkIm3cV4O06dLPUCJix3sCoQYCPfDVD/rszeEf4 WaSu6oULh6eo1dNvfKxlS+Sa1pi81UXP X-Received: by 10.129.182.78 with SMTP id h14mr2245693ywk.154.1503683006898; Fri, 25 Aug 2017 10:43:26 -0700 (PDT) MIME-Version: 1.0 Received: by 10.129.46.201 with HTTP; Fri, 25 Aug 2017 10:43:26 -0700 (PDT) In-Reply-To: <16a7e0b2-a1d4-424a-5dde-85d32bedcb0a@arm.com> References: <1487696064-3233-1-git-send-email-charles.baylis@linaro.org> <1487696064-3233-2-git-send-email-charles.baylis@linaro.org> <16a7e0b2-a1d4-424a-5dde-85d32bedcb0a@arm.com> From: Charles Baylis Date: Fri, 25 Aug 2017 18:16:00 -0000 Message-ID: Subject: Re: [PATCH 1/2] [ARM] Refactor costs calculation for MEM. To: "Richard Earnshaw (lists)" Cc: Ramana Radhakrishnan , Kyrylo Tkachov , Richard Earnshaw , GCC Patches Content-Type: multipart/mixed; boundary="f403045e5bb47b585d0557977b90" X-IsSubscribed: yes X-SW-Source: 2017-08/txt/msg01522.txt.bz2 --f403045e5bb47b585d0557977b90 Content-Type: text/plain; charset="UTF-8" Content-length: 3376 On 9 June 2017 at 14:59, Richard Earnshaw (lists) wrote: > On 21/02/17 16:54, charles.baylis@linaro.org wrote: >> From: Charles Baylis >> >> This patch moves the calculation of costs for MEM into a >> separate function, and reforms the calculation into two >> parts. Firstly any additional cost of the addressing mode >> is calculated, and then the cost of the memory access itself >> is added. >> >> In this patch, the calculation of the cost of the addressing >> mode is left as a placeholder, to be added in a subsequent >> patch. >> >> gcc/ChangeLog: >> >> Charles Baylis >> >> * config/arm/arm.c (arm_mem_costs): New function. >> (arm_rtx_costs_internal): Use arm_mem_costs. > > I like the idea of this patch, but it needs further work... > > Comments inline. > > R. > >> >> Change-Id: I99e93406ea39ee31f71c7bf428ad3e127b7a618e >> --- >> gcc/config/arm/arm.c | 66 +++++++++++++++++++++++++++++++++------------------- >> 1 file changed, 42 insertions(+), 24 deletions(-) >> >> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c >> index 6cae178..7f002f1 100644 >> --- a/gcc/config/arm/arm.c >> +++ b/gcc/config/arm/arm.c >> @@ -9072,6 +9072,47 @@ arm_unspec_cost (rtx x, enum rtx_code /* outer_code */, bool speed_p, int *cost) >> } \ >> while (0); >> >> +/* Helper function for arm_rtx_costs_internal. Calculates the cost of a MEM, >> + considering the costs of the addressing mode and memory access >> + separately. */ >> +static bool >> +arm_mem_costs (rtx x, const struct cpu_cost_table *extra_cost, >> + int *cost, bool speed_p) >> +{ >> + machine_mode mode = GET_MODE (x); >> + if (flag_pic >> + && GET_CODE (XEXP (x, 0)) == PLUS >> + && will_be_in_index_register (XEXP (XEXP (x, 0), 1))) >> + /* This will be split into two instructions. Add the cost of the >> + additional instruction here. The cost of the memory access is computed >> + below. See arm.md:calculate_pic_address. */ >> + *cost = COSTS_N_INSNS (1); >> + else >> + *cost = 0; >> + >> + /* Calculate cost of the addressing mode. */ >> + if (speed_p) >> + { > > This patch needs to be reformatted in the GNU style (indentation of > braces, braces and else clauses on separate lines etc). Done. >> + /* TODO: Add table-driven costs for addressing modes. */ > > You need to sort out the comment. What's missing here? What's missing is patch 2... I've updated the comment for clarity. >> + } >> + >> + /* cost of memory access */ >> + if (speed_p) >> + { >> + /* data transfer is transfer size divided by bus width. */ >> + int bus_width = arm_arch7 ? 8 : 4; > > Basing bus width on the architecture is a bit too simplistic. Instead > this should be a parameter that comes from the CPU cost tables, based on > the current tune target. This was actually Ramana's suggestion, so I've left it as-is in this patch. If necessary, I think it's better to move this to a table in a separate patch, as I'll need to guess the correct bus width for a number of CPUs and will probably get some wrong. >> + *cost += COSTS_N_INSNS((GET_MODE_SIZE (mode) + bus_width - 1) / bus_width); > > Use CEIL (from system.h) Done. Updated patch attached. --f403045e5bb47b585d0557977b90 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-ARM-Refactor-costs-calculation-for-MEM.patch" Content-Disposition: attachment; filename="0001-ARM-Refactor-costs-calculation-for-MEM.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j6s5mzmk0 Content-length: 5348 RnJvbSAxODYyOTgzNWJhMTJmZGZhNjkzZTJmOTQ5MmE1ZmMyM2Q5NWVmMTY1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFybGVzIEJheWxp cyA8Y2hhcmxlcy5iYXlsaXNAbGluYXJvLm9yZz4KRGF0ZTogV2VkLCA4IEZl YiAyMDE3IDE2OjUyOjEwICswMDAwClN1YmplY3Q6IFtQQVRDSCAxLzNdIFtB Uk1dIFJlZmFjdG9yIGNvc3RzIGNhbGN1bGF0aW9uIGZvciBNRU0uCgpUaGlz IHBhdGNoIG1vdmVzIHRoZSBjYWxjdWxhdGlvbiBvZiBjb3N0cyBmb3IgTUVN IGludG8gYQpzZXBhcmF0ZSBmdW5jdGlvbiwgYW5kIHJlZm9ybXMgdGhlIGNh bGN1bGF0aW9uIGludG8gdHdvCnBhcnRzLiBGaXJzdGx5IGFueSBhZGRpdGlv bmFsIGNvc3Qgb2YgdGhlIGFkZHJlc3NpbmcgbW9kZQppcyBjYWxjdWxhdGVk LCBhbmQgdGhlbiB0aGUgY29zdCBvZiB0aGUgbWVtb3J5IGFjY2VzcyBpdHNl bGYKaXMgYWRkZWQuCgpJbiB0aGlzIHBhdGNoLCB0aGUgY2FsY3VsYXRpb24g b2YgdGhlIGNvc3Qgb2YgdGhlIGFkZHJlc3NpbmcKbW9kZSBpcyBsZWZ0IGFz IGEgcGxhY2Vob2xkZXIsIHRvIGJlIGFkZGVkIGluIGEgc3Vic2VxdWVudApw YXRjaC4KCmdjYy9DaGFuZ2VMb2c6Cgo8ZGF0ZT4gIENoYXJsZXMgQmF5bGlz ICA8Y2hhcmxlcy5iYXlsaXNAbGluYXJvLm9yZz4KCiAgICAgICAgKiBjb25m aWcvYXJtL2FybS5jIChhcm1fbWVtX2Nvc3RzKTogTmV3IGZ1bmN0aW9uLgog ICAgICAgIChhcm1fcnR4X2Nvc3RzX2ludGVybmFsKTogVXNlIGFybV9tZW1f Y29zdHMuCgpDaGFuZ2UtSWQ6IEk5OWU5MzQwNmVhMzllZTMxZjcxYzdiZjQy OGFkM2UxMjdiN2E2MThlCi0tLQogZ2NjL2NvbmZpZy9hcm0vYXJtLmMgfCA2 NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwg MjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0v YXJtLmMgYi9nY2MvY29uZmlnL2FybS9hcm0uYwppbmRleCBmYTNlMmZhLi4x M2NkNDIxIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9hcm0uYworKysg Yi9nY2MvY29uZmlnL2FybS9hcm0uYwpAQCAtOTE5OCw4ICs5MTk4LDQ4IEBA IGFybV91bnNwZWNfY29zdCAocnR4IHgsIGVudW0gcnR4X2NvZGUgLyogb3V0 ZXJfY29kZSAqLywgYm9vbCBzcGVlZF9wLCBpbnQgKmNvc3QpCiAJICB9CQkJ CQkJCQlcCiAJd2hpbGUgKDApOwogCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9y IGFybV9ydHhfY29zdHNfaW50ZXJuYWwuICBDYWxjdWxhdGVzIHRoZSBjb3N0 IG9mIGEgTUVNLAorICAgY29uc2lkZXJpbmcgdGhlIGNvc3RzIG9mIHRoZSBh ZGRyZXNzaW5nIG1vZGUgYW5kIG1lbW9yeSBhY2Nlc3MKKyAgIHNlcGFyYXRl bHkuICAqLworc3RhdGljIGJvb2wKK2FybV9tZW1fY29zdHMgKHJ0eCB4LCBj b25zdCBzdHJ1Y3QgY3B1X2Nvc3RfdGFibGUgKmV4dHJhX2Nvc3QsCisJICAg ICAgIGludCAqY29zdCwgYm9vbCBzcGVlZF9wKQoreworICBtYWNoaW5lX21v ZGUgbW9kZSA9IEdFVF9NT0RFICh4KTsKKyAgaWYgKGZsYWdfcGljCisgICAg ICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFBMVVMKKyAgICAgICYm IHdpbGxfYmVfaW5faW5kZXhfcmVnaXN0ZXIgKFhFWFAgKFhFWFAgKHgsIDAp LCAxKSkpCisgICAgLyogVGhpcyB3aWxsIGJlIHNwbGl0IGludG8gdHdvIGlu c3RydWN0aW9ucy4gIEFkZCB0aGUgY29zdCBvZiB0aGUKKyAgICAgICBhZGRp dGlvbmFsIGluc3RydWN0aW9uIGhlcmUuICBUaGUgY29zdCBvZiB0aGUgbWVt b3J5IGFjY2VzcyBpcyBjb21wdXRlZAorICAgICAgIGJlbG93LiAgU2VlIGFy bS5tZDpjYWxjdWxhdGVfcGljX2FkZHJlc3MuICAqLworICAgICpjb3N0ID0g Q09TVFNfTl9JTlNOUyAoMSk7CisgIGVsc2UKKyAgICAqY29zdCA9IDA7CisK KyAgLyogQ2FsY3VsYXRlIGNvc3Qgb2YgdGhlIGFkZHJlc3NpbmcgbW9kZS4g ICovCisgIGlmIChzcGVlZF9wKQorICAgIHsKKyAgICAgIC8qIFRPRE86IEFk ZCB0YWJsZS1kcml2ZW4gY29zdHMgZm9yIGFkZHJlc3NpbmcgbW9kZXMuICAo U2VlIHBhdGNoIDIpICovCisgICAgfQorCisgIC8qIENhbGN1bGF0ZSBjb3N0 IG9mIG1lbW9yeSBhY2Nlc3MuICAqLworICBpZiAoc3BlZWRfcCkKKyAgICB7 CisgICAgICAvKiBkYXRhIHRyYW5zZmVyIGlzIHRyYW5zZmVyIHNpemUgZGl2 aWRlZCBieSBidXMgd2lkdGguICAqLworICAgICAgaW50IGJ1c193aWR0aCA9 IGFybV9hcmNoNyA/IDggOiA0OworICAgICAgKmNvc3QgKz0gQ0VJTCAoR0VU X01PREVfU0laRSAobW9kZSksIGJ1c193aWR0aCk7CisgICAgICAqY29zdCAr PSBleHRyYV9jb3N0LT5sZHN0LmxvYWQ7CisgICAgfQorICBlbHNlCisgICAg eworICAgICAgKmNvc3QgKz0gQ09TVFNfTl9JTlNOUyAoMSk7CisgICAgfQor CisgIHJldHVybiB0cnVlOworfQorCiAvKiBSVFggY29zdHMuICBNYWtlIGFu IGVzdGltYXRlIG9mIHRoZSBjb3N0IG9mIGV4ZWN1dGluZyB0aGUgb3BlcmF0 aW9uCi0gICBYLCB3aGljaCBpcyBjb250YWluZWQgd2l0aCBhbiBvcGVyYXRp b24gd2l0aCBjb2RlIE9VVEVSX0NPREUuCisgICBYLCB3aGljaCBpcyBjb250 YWluZWQgd2l0aGluIGFuIG9wZXJhdGlvbiB3aXRoIGNvZGUgT1VURVJfQ09E RS4KICAgIFNQRUVEX1AgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvc3QgZGVz aXJlZCBpcyB0aGUgcGVyZm9ybWFuY2UgY29zdCwKICAgIG9yIHRoZSBzaXpl IGNvc3QuICBUaGUgZXN0aW1hdGUgaXMgc3RvcmVkIGluIENPU1QgYW5kIHRo ZSByZXR1cm4KICAgIHZhbHVlIGlzIFRSVUUgaWYgdGhlIGNvc3QgY2FsY3Vs YXRpb24gaXMgZmluYWwsIG9yIEZBTFNFIGlmIHRoZQpAQCAtOTI3OCwzMCAr OTMxOCw3IEBAIGFybV9ydHhfY29zdHNfaW50ZXJuYWwgKHJ0eCB4LCBlbnVt IHJ0eF9jb2RlIGNvZGUsIGVudW0gcnR4X2NvZGUgb3V0ZXJfY29kZSwKICAg ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgTUVNOgotICAgICAgLyog QSBtZW1vcnkgYWNjZXNzIGNvc3RzIDEgaW5zbiBpZiB0aGUgbW9kZSBpcyBz bWFsbCwgb3IgdGhlIGFkZHJlc3MgaXMKLQkgYSBzaW5nbGUgcmVnaXN0ZXIs IG90aGVyd2lzZSBpdCBjb3N0cyBvbmUgaW5zbiBwZXIgd29yZC4gICovCi0g ICAgICBpZiAoUkVHX1AgKFhFWFAgKHgsIDApKSkKLQkqY29zdCA9IENPU1RT X05fSU5TTlMgKDEpOwotICAgICAgZWxzZSBpZiAoZmxhZ19waWMKLQkgICAg ICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBQTFVTCi0JICAgICAg ICYmIHdpbGxfYmVfaW5faW5kZXhfcmVnaXN0ZXIgKFhFWFAgKFhFWFAgKHgs IDApLCAxKSkpCi0JLyogVGhpcyB3aWxsIGJlIHNwbGl0IGludG8gdHdvIGlu c3RydWN0aW9ucy4KLQkgICBTZWUgYXJtLm1kOmNhbGN1bGF0ZV9waWNfYWRk cmVzcy4gICovCi0JKmNvc3QgPSBDT1NUU19OX0lOU05TICgyKTsKLSAgICAg IGVsc2UKLQkqY29zdCA9IENPU1RTX05fSU5TTlMgKEFSTV9OVU1fUkVHUyAo bW9kZSkpOwotCi0gICAgICAvKiBGb3Igc3BlZWQgb3B0aW1pemF0aW9ucywg YWRkIHRoZSBjb3N0cyBvZiB0aGUgYWRkcmVzcyBhbmQKLQkgYWNjZXNzaW5n IG1lbW9yeS4gICovCi0gICAgICBpZiAoc3BlZWRfcCkKLSNpZmRlZiBOT1Rf WUVUCi0JKmNvc3QgKz0gKGV4dHJhX2Nvc3QtPmxkc3QubG9hZAotCQkgICsg YXJtX2FkZHJlc3NfY29zdCAoWEVYUCAoeCwgMCksIG1vZGUsCi0JCQkJICAg ICAgQUREUl9TUEFDRV9HRU5FUklDLCBzcGVlZF9wKSk7Ci0jZWxzZQotICAg ICAgICAqY29zdCArPSBleHRyYV9jb3N0LT5sZHN0LmxvYWQ7Ci0jZW5kaWYK LSAgICAgIHJldHVybiB0cnVlOworICAgICAgcmV0dXJuIGFybV9tZW1fY29z dHMgKHgsIGV4dHJhX2Nvc3QsIGNvc3QsIHNwZWVkX3ApOwogCiAgICAgY2Fz ZSBQQVJBTExFTDoKICAgICB7Ci0tIAoyLjcuNAoK --f403045e5bb47b585d0557977b90--