From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32589 invoked by alias); 5 Aug 2011 18:51:39 -0000 Received: (qmail 32572 invoked by uid 22791); 5 Aug 2011 18:51:38 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_ZJ,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-pz0-f49.google.com (HELO mail-pz0-f49.google.com) (209.85.210.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 05 Aug 2011 18:51:24 +0000 Received: by pzk6 with SMTP id 6so4308822pzk.8 for ; Fri, 05 Aug 2011 11:51:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.48.10 with SMTP id v10mr2365674wfv.185.1312570283531; Fri, 05 Aug 2011 11:51:23 -0700 (PDT) Received: by 10.143.34.2 with HTTP; Fri, 5 Aug 2011 11:51:23 -0700 (PDT) Date: Fri, 05 Aug 2011 18:51:00 -0000 Message-ID: Subject: [RFC PATCH, i386]: Allow zero_extended addresses (+ problems with reload and offsetable address, "o" constraint) From: Uros Bizjak To: gcc-patches@gcc.gnu.org Cc: GCC Development Content-Type: multipart/mixed; boundary=000e0cd171b87e1f5804a9c6951d Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2011-08/txt/msg00129.txt.bz2 --000e0cd171b87e1f5804a9c6951d Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Content-length: 2384 Hello! Attached patch introduces generation of addr32 prefixed addresses, mainly intended to merge ZERO_EXTRACTed LEA calculations into address. After fixing various inconsistencies with "o" constraints, the patch works surprisingly well (in its current form fixes all reported problems in the PR [1]), but one problem remains w.r.t. handling of "o" constraint. Patched gcc ICEs on gcc.dg/torture/pr47744-2.c with: $ ~/gcc-build-fast/gcc/cc1 -O2 -mx32 -std=3Dgnu99 -quiet pr47744-2.c pr47744-2.c: In function =91matmul_i16=92: pr47744-2.c:40:1: error: insn does not satisfy its constraints: (insn 116 66 67 4 (set (reg:TI 0 ax) (mem:TI (zero_extend:DI (plus:SI (reg:SI 4 si [orig:114 ivtmp.26 ] [114]) (reg:SI 5 di [orig:101 dest_y ] [101]))) [6 MEM[base: dest_y_18, index: ivtmp.26_53, offset: 0B]+0 S16 A128])) pr47744-2.c:34 60 {*movti_internal_rex64} (nil)) pr47744-2.c:40:1: internal compiler error: in reload_cse_simplify_operands, at postreload.c:403 Please submit a full bug report, ... ... due to the fact that the address is not offsetable, and plus ((zero_extend (...)) (const_int ...)) gets rejected from ix86_legitimate_address_p. However, the section "16.8.1 Simple Constraints" of the documentation claim= s: --quote-- * A nonoffsettable memory reference can be reloaded by copying the address into a register. So if the constraint uses the letter `o', all memory references are taken care of. --/quote-- As I read this sentence, the RTX is forced into a temporary register, and reload tries to satisfy "o" constraint with plus ((reg ...) (const_int ...)), as said at the introduction of "o" constraint a couple of pages earlier. Unfortunately, this does not seem to be the case. Is there anything wrong with my approach, or is there something wrong in re= load? 2011-08-05 Uros Bizjak PR target/49781 * config/i386/i386.c (ix86_decompose_address): Allow zero-extended SImode addresses. (ix86_print_operand_address): Handle zero-extended addresses. (memory_address_length): Add length of addr32 prefix for zero-extended addresses. * config/i386/predicates.md (lea_address_operand): Reject zero-extended operands. Patch is otherwise bootstrapped and tested on x86_64-pc-linux-gnu {,-m32} without regressions. [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D49781 Thanks, Uros. --000e0cd171b87e1f5804a9c6951d Content-Type: text/plain; charset=US-ASCII; name="p.diff.txt" Content-Disposition: attachment; filename="p.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqzibntp0 Content-length: 3213 SW5kZXg6IGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZAkocmV2 aXNpb24gMTc3NDU2KQorKysgY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZAko d29ya2luZyBjb3B5KQpAQCAtODAxLDYgKzgwMSwxMCBAQAogICBzdHJ1Y3Qg aXg4Nl9hZGRyZXNzIHBhcnRzOwogICBpbnQgb2s7CiAKKyAgLyogIExFQSBo YW5kbGVzIHplcm8tZXh0ZW5kIGJ5IGl0c2VsZi4gICovCisgIGlmIChHRVRf Q09ERSAob3ApID09IFpFUk9fRVhURU5EKQorICAgIHJldHVybiBmYWxzZTsK KwogICBvayA9IGl4ODZfZGVjb21wb3NlX2FkZHJlc3MgKG9wLCAmcGFydHMp OwogICBnY2NfYXNzZXJ0IChvayk7CiAgIHJldHVybiBwYXJ0cy5zZWcgPT0g U0VHX0RFRkFVTFQ7CkluZGV4OiBjb25maWcvaTM4Ni9pMzg2LmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gY29uZmlnL2kzODYvaTM4Ni5jCShyZXZp c2lvbiAxNzc0NTYpCisrKyBjb25maWcvaTM4Ni9pMzg2LmMJKHdvcmtpbmcg Y29weSkKQEAgLTExMTQ2LDYgKzExMTQ2LDE0IEBAIGl4ODZfZGVjb21wb3Nl X2FkZHJlc3MgKHJ0eCBhZGRyLCBzdHJ1Y3QgaXg4Nl9hZGRyCiAgIGludCBy ZXR2YWwgPSAxOwogICBlbnVtIGl4ODZfYWRkcmVzc19zZWcgc2VnID0gU0VH X0RFRkFVTFQ7CiAKKyAgLyogQWxsb3cgemVyby1leHRlbmRlZCBTSW1vZGUg YWRkcmVzc2VzLAorICAgICB0aGV5IHdpbGwgYmUgZW1pdHRlZCB3aXRoIGFk ZHIzMiBwcmVmaXguICAqLworICBpZiAoVEFSR0VUXzY0QklUCisgICAgICAm JiBHRVRfQ09ERSAoYWRkcikgPT0gWkVST19FWFRFTkQKKyAgICAgICYmIEdF VF9NT0RFIChhZGRyKSA9PSBESW1vZGUKKyAgICAgICYmIEdFVF9NT0RFIChY RVhQIChhZGRyLCAwKSkgPT0gU0ltb2RlKQorICAgIGFkZHIgPSBYRVhQIChh ZGRyLCAwKTsKKyAKICAgaWYgKFJFR19QIChhZGRyKSkKICAgICBiYXNlID0g YWRkcjsKICAgZWxzZSBpZiAoR0VUX0NPREUgKGFkZHIpID09IFNVQlJFRykK QEAgLTE0MTYzLDkgKzE0MTcxLDEzIEBAIGl4ODZfcHJpbnRfb3BlcmFuZF9h ZGRyZXNzIChGSUxFICpmaWxlLCBydHggYWRkcikKICAgICB9CiAgIGVsc2UK ICAgICB7Ci0gICAgICAvKiBQcmludCBESW1vZGUgcmVnaXN0ZXJzIG9uIDY0 Yml0IHRhcmdldHMgdG8gYXZvaWQgYWRkcjMyIHByZWZpeGVzLiAgKi8KLSAg ICAgIGludCBjb2RlID0gVEFSR0VUXzY0QklUID8gJ3EnIDogMDsKKyAgICAg IGludCBjb2RlID0gMDsKIAorICAgICAgLyogUHJpbnQgU0ltb2RlIHJlZ2lz dGVycyBmb3IgemVyby1leHRlbmRlZCBhZGRyZXNzZXMgdG8gZm9yY2UKKwkg YWRkcjMyIHByZWZpeC4gIE90aGVyd2lzZSBwcmludCBESW1vZGUgcmVnaXN0 ZXJzIHRvIGF2b2lkIGl0LiAgKi8KKyAgICAgIGlmIChUQVJHRVRfNjRCSVQp CisJY29kZSA9IChHRVRfQ09ERSAoYWRkcikgPT0gWkVST19FWFRFTkQpID8g J2wnIDogJ3EnOworCiAgICAgICBpZiAoQVNTRU1CTEVSX0RJQUxFQ1QgPT0g QVNNX0FUVCkKIAl7CiAJICBpZiAoZGlzcCkKQEAgLTIxNzc2LDcgKzIxNzg4 LDggQEAgYXNzaWduXzM4Nl9zdGFja19sb2NhbCAoZW51bSBtYWNoaW5lX21v ZGUgbW9kZSwgZW4KIH0KIAwKIC8qIENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9m IHRoZSBtZW1vcnkgYWRkcmVzcyBpbiB0aGUgaW5zdHJ1Y3Rpb24KLSAgIGVu Y29kaW5nLiAgRG9lcyBub3QgaW5jbHVkZSB0aGUgb25lLWJ5dGUgbW9kcm0s IG9wY29kZSwgb3IgcHJlZml4LiAgKi8KKyAgIGVuY29kaW5nLiAgSW5jbHVk ZXMgYWRkcjMyIHByZWZpeCwgZG9lcyBub3QgaW5jbHVkZSB0aGUgb25lLWJ5 dGUgbW9kcm0sCisgICBvcGNvZGUsIG9yIG90aGVyIHByZWZpeGVzLiAgKi8K IAogaW50CiBtZW1vcnlfYWRkcmVzc19sZW5ndGggKHJ0eCBhZGRyKQpAQCAt MjE4MDMsOCArMjE4MTYsMTAgQEAgbWVtb3J5X2FkZHJlc3NfbGVuZ3RoIChy dHggYWRkcikKICAgYmFzZSA9IHBhcnRzLmJhc2U7CiAgIGluZGV4ID0gcGFy dHMuaW5kZXg7CiAgIGRpc3AgPSBwYXJ0cy5kaXNwOwotICBsZW4gPSAwOwog CisgIC8qIEFkZCBsZW5ndGggb2YgYWRkcjMyIHByZWZpeC4gICovCisgIGxl biA9IChHRVRfQ09ERSAoYWRkcikgPT0gWkVST19FWFRFTkQpOworCiAgIC8q IFJ1bGUgb2YgdGh1bWI6CiAgICAgICAgLSBlc3AgYXMgdGhlIGJhc2UgYWx3 YXlzIHdhbnRzIGFuIGluZGV4LAogICAgICAgIC0gZWJwIGFzIHRoZSBiYXNl IGFsd2F5cyB3YW50cyBhIGRpc3BsYWNlbWVudCwK --000e0cd171b87e1f5804a9c6951d--