From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 121469 invoked by alias); 31 Aug 2017 19:33:02 -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 121402 invoked by uid 89); 31 Aug 2017 19:33:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy=cf, splitter, U*a X-HELO: mail-ua0-f181.google.com Received: from mail-ua0-f181.google.com (HELO mail-ua0-f181.google.com) (209.85.217.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 31 Aug 2017 19:32:59 +0000 Received: by mail-ua0-f181.google.com with SMTP id g47so60877uad.0 for ; Thu, 31 Aug 2017 12:32:59 -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:from:date:message-id:subject:to; bh=0TUyRgkkXWrTQJcNM+1I/cmfsJJIqM72HeNzdvZAO0M=; b=idvho2INM00JlxtSEFejfLPJSZ8gVD5eKowNXgbmfkNy9lS6bUf/qh3hGlBFCfkk8r k/EQPr24CyqRIn652DAo9sPog1zjvKr3BI4YhJa6MW0H4/YWk04MuXCJPmo3bWN/IgPV TCHX2ep81lGzw9eTBfQffTI/z3/2mDR/UadWV5kkG9QpIwCpEuR/yvrAOZ/W4i+VvgLA 31xjXj81R+Rn7TAAvBkpFxn+7X9HKymLZRkgzHEedaQPkUxPWAM5yohoaJzNuYiiMl+i uTYmfZV7bAV1dOCp5+X6QwYZ14yEfVKtc4m5LK751jHsNU+jYnFoY711RyLP9LTtOsjj qH3A== X-Gm-Message-State: AHYfb5hKH4FLIfvAKMoT6OXpVVEzmL8MdgG/XuyjY524qD184gFTFzdN jHh231P6FlQQPIxrkXIw730uMkuKLxBV X-Google-Smtp-Source: ADKCNb4w77lYvaAv04q2sdRtRiiVwr5Da6P6pB6ttlWXQcwc9v5ajS6mcxndEls+U+8LYaEcYcxj0Sx7FQPXCy0wP1M= X-Received: by 10.176.10.44 with SMTP id q44mr4399829uah.143.1504207977747; Thu, 31 Aug 2017 12:32:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.55.28 with HTTP; Thu, 31 Aug 2017 12:32:57 -0700 (PDT) From: Uros Bizjak Date: Thu, 31 Aug 2017 22:19:00 -0000 Message-ID: Subject: [RFC PATCH, i386]: Convert TLS location to DEFAULT_TLS_SEG_REG address space To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="f403045f6d902ec096055811b6f8" X-SW-Source: 2017-08/txt/msg01793.txt.bz2 --f403045f6d902ec096055811b6f8 Content-Type: text/plain; charset="UTF-8" Content-length: 2404 Hello! Using following testcase: --cut here-- __thread int a; int foo (void) { return a; } --cut here-- Attached patch converts TLS location in the form of: (mem/c:SI (plus:DI (unspec:DI [ (const_int 0 [0]) ] UNSPEC_TP) (const:DI (unspec:DI [ (symbol_ref:DI ("a") [flags 0x2a] ) ] UNSPEC_NTPOFF))) [1 a+0 S4 A32])) "thread.c":5 82 {*movsi_internal} to: (mem/c:SI (const:DI (unspec:DI [ (symbol_ref:DI ("a") [flags 0x2a] ) ] UNSPEC_NTPOFF)) [1 a+0 S4 A32 AS1])) "thread.c":5 -1 avoiding the UNSPEC_TP tag and instead mark the location with AS. This way, address space becomes the property of the memory location, not of the address itself, so we don't need ugly hacks when the address is moved to a register (LEA ignores segment overrides, c.f. split_long_move function in i386.c). Please note that some instructions (e.g. prefetchX) operate on prefixed *address*, so we can't just rip out non-AS code from print_operand. The above amended example: --cut here-- __thread int a; int foo (void) { __builtin_prefetch (&a, 0); return a; } --cut here-- compiles to: prefetcht0 %fs:a@tpoff movl %fs:a@tpoff, %eax where prefetch operand remains: (insn 7 6 16 2 (prefetch (plus:DI (unspec:DI [ (const_int 0 [0]) ] UNSPEC_TP) (const:DI (unspec:DI [ (symbol_ref:DI ("a") [flags 0x2a] ) ] UNSPEC_NTPOFF))) (const_int 0 [0]) (const_int 3 [0x3])) "thread.c":5 1010 {*prefetch_sse} (nil)) 2017-08-31 Uros Bizjak * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype. (ix86_rewrite_tls_address): Ditto. * config/i386/i386.c (ix86_tls_address_pattern_p) New function. (ix86_rewrite_tls_address_1): Ditto. (ix86_rewrite_tls_address): Ditto. * config/i386/predicates.md (tls_address_pattern): New predicate. * config/i386/i386.md (TLS address splitter): New splitter. Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}, all default languages plus go. I plan to commit the patch to the mainline early next week. Uros --f403045f6d902ec096055811b6f8 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_j70ul68n0 Content-length: 5482 SW5kZXg6IGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAkocmV2 aXNpb24gMjUxNTY2KQorKysgY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAko d29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIyNyw4IEBAIGV4dGVybiB1bnNp Z25lZCBpbnQgaXg4Nl9nZXRfY2FsbGN2dCAoY29uc3RfdHJlZSk7CiAjZW5k aWYKIAogZXh0ZXJuIHJ0eCBpeDg2X3Rsc19tb2R1bGVfYmFzZSAodm9pZCk7 CitleHRlcm4gYm9vbCBpeDg2X3Rsc19hZGRyZXNzX3BhdHRlcm5fcCAocnR4 KTsKK2V4dGVybiBydHggaXg4Nl9yZXdyaXRlX3Rsc19hZGRyZXNzIChydHgp OwogCiBleHRlcm4gdm9pZCBpeDg2X2V4cGFuZF92ZWN0b3JfaW5pdCAoYm9v bCwgcnR4LCBydHgpOwogZXh0ZXJuIHZvaWQgaXg4Nl9leHBhbmRfdmVjdG9y X3NldCAoYm9vbCwgcnR4LCBydHgsIGludCk7CkluZGV4OiBjb25maWcvaTM4 Ni9pMzg2LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29uZmlnL2kz ODYvaTM4Ni5jCShyZXZpc2lvbiAyNTE1NjYpCisrKyBjb25maWcvaTM4Ni9p Mzg2LmMJKHdvcmtpbmcgY29weSkKQEAgLTE3NjMxLDYgKzE3NjMxLDg5IEBA IGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MgKHJ0eCB4LCBlbnVtIHRsc19tb2Rl bCBtb2RlCiAgIHJldHVybiBkZXN0OwogfQogCisvKiBSZXR1cm4gdHJ1ZSBp ZiBPUCByZWZlcnMgdG8gYSBUTFMgYWRkcmVzcy4gICovCitib29sCitpeDg2 X3Rsc19hZGRyZXNzX3BhdHRlcm5fcCAocnR4IG9wKQoreworICBzdWJydHhf dmFyX2l0ZXJhdG9yOjphcnJheV90eXBlIGFycmF5OworICBGT1JfRUFDSF9T VUJSVFhfVkFSIChpdGVyLCBhcnJheSwgb3AsIEFMTCkKKyAgICB7CisgICAg ICBydHggb3AgPSAqaXRlcjsKKyAgICAgIGlmIChNRU1fUCAob3ApKQorCXsK KwkgIHJ0eCAqeCA9ICZYRVhQIChvcCwgMCk7CisJICB3aGlsZSAoR0VUX0NP REUgKCp4KSA9PSBQTFVTKQorCSAgICB7CisJICAgICAgaW50IGk7CisJICAg ICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKwkJeworCQkgIHJ0eCB1ID0g WEVYUCAoKngsIGkpOworCQkgIGlmIChHRVRfQ09ERSAodSkgPT0gWkVST19F WFRFTkQpCisJCSAgICB1ID0gWEVYUCAodSwgMCk7CisJCSAgaWYgKEdFVF9D T0RFICh1KSA9PSBVTlNQRUMKKwkJICAgICAgJiYgWElOVCAodSwgMSkgPT0g VU5TUEVDX1RQKQorCQkgICAgcmV0dXJuIHRydWU7CisJCX0KKwkgICAgICB4 ID0gJlhFWFAgKCp4LCAwKTsKKwkgICAgfQorCisJICBpdGVyLnNraXBfc3Vi cnR4ZXMgKCk7CisJfQorICAgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisK Ky8qIFJld3JpdGUgKkxPQyBzbyB0aGF0IGl0IHJlZmVycyB0byBhIGRlZmF1 bHQgVExTIGFkZHJlc3Mgc3BhY2UuICAqLwordm9pZAoraXg4Nl9yZXdyaXRl X3Rsc19hZGRyZXNzXzEgKHJ0eCAqbG9jKQoreworICBzdWJydHhfcHRyX2l0 ZXJhdG9yOjphcnJheV90eXBlIGFycmF5OworICBGT1JfRUFDSF9TVUJSVFhf UFRSIChpdGVyLCBhcnJheSwgbG9jLCBBTEwpCisgICAgeworICAgICAgcnR4 ICpsb2MgPSAqaXRlcjsKKyAgICAgIGlmIChNRU1fUCAoKmxvYykpCisJewor CSAgcnR4IGFkZHIgPSBYRVhQICgqbG9jLCAwKTsKKwkgIHJ0eCAqeCA9ICZh ZGRyOworCSAgd2hpbGUgKEdFVF9DT0RFICgqeCkgPT0gUExVUykKKwkgICAg eworCSAgICAgIGludCBpOworCSAgICAgIGZvciAoaSA9IDA7IGkgPCAyOyBp KyspCisJCXsKKwkJICBydHggdSA9IFhFWFAgKCp4LCBpKTsKKwkJICBpZiAo R0VUX0NPREUgKHUpID09IFpFUk9fRVhURU5EKQorCQkgICAgdSA9IFhFWFAg KHUsIDApOworCQkgIGlmIChHRVRfQ09ERSAodSkgPT0gVU5TUEVDCisJCSAg ICAgICYmIFhJTlQgKHUsIDEpID09IFVOU1BFQ19UUCkKKwkJICAgIHsKKwkJ ICAgICAgYWRkcl9zcGFjZV90IGFzID0gREVGQVVMVF9UTFNfU0VHX1JFRzsK KworCQkgICAgICAqeCA9IFhFWFAgKCp4LCAxIC0gaSk7CisKKwkJICAgICAg KmxvYyA9IHJlcGxhY2VfZXF1aXZfYWRkcmVzc19udiAoKmxvYywgYWRkciwg dHJ1ZSk7CisJCSAgICAgIHNldF9tZW1fYWRkcl9zcGFjZSAoKmxvYywgYXMp OworCQkgICAgICByZXR1cm47CisJCSAgICB9CisJCX0KKwkgICAgICB4ID0g JlhFWFAgKCp4LCAwKTsKKwkgICAgfQorCisJICBpdGVyLnNraXBfc3VicnR4 ZXMgKCk7CisJfQorICAgIH0KK30KKworLyogUmV3cml0ZSBpbnN0cnVjdGlv biBwYXR0ZXJuIGludm9sdm5pbmcgVExTIGFkZHJlc3MKKyAgIHNvIHRoYXQg aXQgcmVmZXJzIHRvIGEgZGVmYXVsdCBUTFMgYWRkcmVzcyBzcGFjZS4gICov CitydHgKK2l4ODZfcmV3cml0ZV90bHNfYWRkcmVzcyAocnR4IHBhdHRlcm4p Cit7CisgIHBhdHRlcm4gPSBjb3B5X2luc24gKHBhdHRlcm4pOworICBpeDg2 X3Jld3JpdGVfdGxzX2FkZHJlc3NfMSAoJnBhdHRlcm4pOworICByZXR1cm4g cGF0dGVybjsKK30KKwogLyogQ3JlYXRlIG9yIHJldHVybiB0aGUgdW5pcXVl IF9faW1wX0RFQ0wgZGxsaW1wb3J0IHN5bWJvbCBjb3JyZXNwb25kaW5nCiAg ICB0byBzeW1ib2wgREVDTCBpZiBCRUlNUE9SVCBpcyB0cnVlLiAgT3RoZXJ3 aXNlIGNyZWF0ZSBvciByZXR1cm4gdGhlCiAgICB1bmlxdWUgcmVmcHRyLURF Q0wgc3ltYm9sIGNvcnJlc3BvbmRpbmcgdG8gc3ltYm9sIERFQ0wuICAqLwpJ bmRleDogY29uZmlnL2kzODYvaTM4Ni5tZAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBjb25maWcvaTM4Ni9pMzg2Lm1kCShyZXZpc2lvbiAyNTE1NjYp CisrKyBjb25maWcvaTM4Ni9pMzg2Lm1kCSh3b3JraW5nIGNvcHkpCkBAIC0x NDE0Myw2ICsxNDE0MywxMyBAQAogICBvcGVyYW5kc1s0XSA9IGNhbl9jcmVh dGVfcHNldWRvX3AgKCkgPyBnZW5fcmVnX3J0eCAoUG1vZGUpIDogb3BlcmFu ZHNbMF07CiAgIGVtaXRfaW5zbiAoZ2VuX3Rsc19keW5hbWljX2dudTJfNjQg KG9wZXJhbmRzWzRdLCBvcGVyYW5kc1sxXSkpOwogfSkKKworKGRlZmluZV9z cGxpdAorICBbKG1hdGNoX29wZXJhbmQgMCAidGxzX2FkZHJlc3NfcGF0dGVy biIpXQorICAiVEFSR0VUX1RMU19ESVJFQ1RfU0VHX1JFRlMiCisgIFsobWF0 Y2hfZHVwIDApXQorICAib3BlcmFuZHNbMF0gPSBpeDg2X3Jld3JpdGVfdGxz X2FkZHJlc3MgKG9wZXJhbmRzWzBdKTsiKQorCiAMCiA7OyBUaGVzZSBwYXR0 ZXJucyBtYXRjaCB0aGUgYmluYXJ5IDM4NyBpbnN0cnVjdGlvbnMgZm9yIGFk ZE0zLCBzdWJNMywKIDs7IG11bE0zIGFuZCBkaXZNMy4gIFRoZXJlIGFyZSB0 aHJlZSBwYXR0ZXJucyBmb3IgZWFjaCBvZiBERm1vZGUgYW5kCkluZGV4OiBj b25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQJKHJldmlzaW9uIDI1 MTU2NikKKysrIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQJKHdvcmtpbmcg Y29weSkKQEAgLTU2Nyw2ICs1NjcsMTAgQEAKICAgKGFuZCAobWF0Y2hfY29k ZSAic3ltYm9sX3JlZiIpCiAgICAgICAgKG1hdGNoX3Rlc3QgIm9wID09IGl4 ODZfdGxzX21vZHVsZV9iYXNlICgpIikpKQogCisoZGVmaW5lX3ByZWRpY2F0 ZSAidGxzX2FkZHJlc3NfcGF0dGVybiIKKyAgKGFuZCAobWF0Y2hfY29kZSAi c2V0LHBhcmFsbGVsLHVuc3BlYyx1bnNwZWNfdm9sYXRpbGUiKQorICAgICAg IChtYXRjaF90ZXN0ICJpeDg2X3Rsc19hZGRyZXNzX3BhdHRlcm5fcCAob3Ap IikpKQorCiA7OyBUZXN0IGZvciBhIHBjLXJlbGF0aXZlIGNhbGwgb3BlcmFu ZAogKGRlZmluZV9wcmVkaWNhdGUgImNvbnN0YW50X2NhbGxfYWRkcmVzc19v cGVyYW5kIgogICAobWF0Y2hfY29kZSAic3ltYm9sX3JlZiIpCg== --f403045f6d902ec096055811b6f8--