components/llvm/patches/032-solaris-LLVM-libTarget-SPARC.patch
author Jay Cotton <Jay.Cotton@Oracle.com>
Mon, 13 Feb 2017 11:35:38 -0800
changeset 7665 a7b902bdb03a
parent 6512 92717ce71105
child 7776 6fbca08cf8d3
permissions -rw-r--r--
24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize 25519458 LLVM getHostCPUName will not work with Fujitsu processor names
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
     1
# 25519458 LLVM getHostCPUName will not work with Fujitsu processor names
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
     2
# 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     3
# 22777179 implement -mtune= | -march= | -mcpu= in clang SPARC
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
# 22778085 LLVM is using %icc when it should be using %xcc
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
# 22778089 the SPARCV9 IS implementation is incomplete
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
# 22778098 LLVM should emit proc identifiers in SPARC assembler (capabilities)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
# 3.9.X for upstream.
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
     8
--- lib/Target/Sparc/Sparc.td	2015-03-27 21:03:51.000000000 -0700
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
     9
+++ lib/Target/Sparc/Sparc.td	2017-02-08 09:22:42.929246156 -0800
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    10
@@ -35,14 +35,16 @@
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
 def FeatureVIS3
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
   : SubtargetFeature<"vis3", "IsVIS3", "true",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
                      "Enable Visual Instruction Set extensions III">;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
-
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
 def FeatureHardQuad
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
   : SubtargetFeature<"hard-quad-float", "HasHardQuad", "true",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
                      "Enable quad-word floating point instructions">;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
+def UsePopc
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
+  : SubtargetFeature<"popc", "UsePopc", "true",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
+                     "Use the popc (population count) instruction">;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
+def UseHWCap
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    22
+  : SubtargetFeature<"hwcap", "UseHWCap", "true",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
+                      "Use SPARC Hardware Capabiliies">;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
 
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    25
-def UsePopc : SubtargetFeature<"popc", "UsePopc", "true",
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    26
-                               "Use the popc (population count) instruction">;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    27
-
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    28
 //===----------------------------------------------------------------------===//
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    29
 // Register File, Calling Conv, Instruction Descriptions
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    30
 //===----------------------------------------------------------------------===//
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
@@ -74,10 +76,46 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
 def : Proc<"sparclite86x",    []>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
 def : Proc<"sparclet",        []>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
 def : Proc<"tsc701",          []>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
-def : Proc<"v9",              [FeatureV9]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
-def : Proc<"ultrasparc",      [FeatureV9, FeatureV8Deprecated, FeatureVIS]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    37
+def : Proc<"generic32",       [FeatureV9, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    38
+                               FeatureVIS, FeatureVIS2]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    39
+def : Proc<"generic64",       [FeatureV9, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    40
+                               FeatureVIS, FeatureVIS2]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    41
+def : Proc<"v8plus",          [FeatureV9, FeatureVIS]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    42
+def : Proc<"v8plusa",         [FeatureV9, FeatureVIS, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    43
+                               FeatureVIS2]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    44
+def : Proc<"v8plusb",         [FeatureV9, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    45
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    46
+def : Proc<"v8plusc",         [FeatureV9, FeatureV8Deprecated, FeatureVIS,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    47
+                               FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    48
+def : Proc<"v8plusd",         [FeatureV9, FeatureV8Deprecated, FeatureVIS,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    49
+                               FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    50
+def : Proc<"v8pluse",         [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    51
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    52
+def : Proc<"v8plusm",         [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    53
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    54
+def : Proc<"v8plusv",         [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    55
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    56
+def : Proc<"v9",              [FeatureV9, FeatureV8Deprecated, FeatureVIS]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    57
+def : Proc<"v9a",             [FeatureV9, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    58
+                               FeatureVIS, FeatureVIS2]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    59
+def : Proc<"v9b",             [FeatureV9, FeatureVIS, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    60
+                               FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    61
+def : Proc<"v9c",             [FeatureV9, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    62
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    63
+def : Proc<"v9d",             [FeatureV9, FeatureV8Deprecated,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    64
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    65
+def : Proc<"v9e",             [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    66
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    67
+def : Proc<"v9m",             [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    68
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    69
+def : Proc<"v9v",             [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    70
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    71
+def : Proc<"ultrasparc",      [FeatureV9, FeatureVIS]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    72
+def : Proc<"ultrasparc2",     [FeatureV9, FeatureV8Deprecated, FeatureVIS]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    73
 def : Proc<"ultrasparc3",     [FeatureV9, FeatureV8Deprecated, FeatureVIS,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    74
                                FeatureVIS2]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    75
+def : Proc<"ultrasparc4",     [FeatureV9, FeatureV8Deprecated, FeatureVIS,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    76
+                               FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    77
 def : Proc<"niagara",         [FeatureV9, FeatureV8Deprecated, FeatureVIS,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    78
                                FeatureVIS2]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    79
 def : Proc<"niagara2",        [FeatureV9, FeatureV8Deprecated, UsePopc,
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    80
@@ -86,8 +124,31 @@
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    81
                                FeatureVIS, FeatureVIS2]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    82
 def : Proc<"niagara4",        [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    83
                                FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    84
+def : Proc<"sparc4",          [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    85
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    86
+def : Proc<"sparc5",          [FeatureV9, FeatureV8Deprecated, UsePopc,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    87
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    88
+def : Proc<"SPARC-T4",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    89
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    90
+def : Proc<"SPARC-T5",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    91
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    92
+def : Proc<"SPARC-M5",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    93
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    94
+def : Proc<"SPARC-M6",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    95
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    96
+def : Proc<"SPARC-T7",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    97
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    98
+def : Proc<"SPARC-S7",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
    99
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   100
+def : Proc<"SPARC-M8",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   101
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   102
+def : Proc<"SPARC64-X",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   103
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   104
+def : Proc<"SPARC64-X+",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   105
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   106
+def : Proc<"SPARC64-XII",        [FeatureV9, FeatureV8Deprecated, UsePopc,
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   107
+                               FeatureVIS, FeatureVIS2, FeatureVIS3]>;
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   108
 
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   109
-
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   110
 //===----------------------------------------------------------------------===//
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   111
 // Declare the target which we are implementing
7665
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   112
 //===----------------------------------------------------------------------===//
a7b902bdb03a 24960500 llvm getHostCPUName() comes up with names that its parser doesn't recognize
Jay Cotton <Jay.Cotton@Oracle.com>
parents: 6512
diff changeset
   113
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   114
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   115
--- lib/Target/Sparc/SparcRegisterInfo.td	2015-10-04 01:11:22.000000000 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   116
+++ lib/Target/Sparc/SparcRegisterInfo.td	2016-06-29 17:37:09.214126550 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   117
@@ -56,7 +56,9 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   118
 }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   119
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   120
 // Control Registers
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   121
-def ICC : SparcCtrlReg<0, "ICC">; // This represents icc and xcc in 64-bit code.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   122
+def ICC : SparcCtrlReg<0, "ICC">; // This represents icc in 32-bit code.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   123
+def XCC : SparcCtrlReg<0, "XCC">; // This represents xcc in 64-bit code.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   124
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   125
 foreach I = 0-3 in
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   126
   def FCC#I : SparcCtrlReg<I, "FCC"#I>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   127
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   128
@@ -64,6 +66,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   129
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   130
 // Y register
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   131
 def Y : SparcCtrlReg<0, "Y">, DwarfRegNum<[64]>;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   132
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   133
 // Ancillary state registers (implementation defined)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   134
 def ASR1 : SparcCtrlReg<1, "ASR1">;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   135
 def ASR2 : SparcCtrlReg<2, "ASR2">;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   136
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   137
--- lib/Target/Sparc/SparcInstrInfo.td	2015-12-11 10:20:16.000000000 -0900
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   138
+++ lib/Target/Sparc/SparcInstrInfo.td	2016-07-02 19:46:36.045655245 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   139
@@ -348,7 +348,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   140
 }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   141
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   142
 // GETPCX for PIC
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   143
-let Defs = [O7] in {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   144
+let Defs = [O7], hasSideEffects = 1 in {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   145
   def GETPCX : Pseudo<(outs getPCX:$getpcseq), (ins), "$getpcseq", [] >;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   146
 }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   147
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   148
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   149
--- lib/Target/Sparc/SparcSubtarget.cpp	2015-09-15 08:17:27.000000000 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   150
+++ lib/Target/Sparc/SparcSubtarget.cpp	2016-06-30 08:32:19.524226970 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   151
@@ -33,11 +33,12 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   152
   IsVIS = false;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   153
   HasHardQuad = false;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   154
   UsePopc = false;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   155
+  UseHWCap = false;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   156
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   157
   // Determine default and user specified characteristics
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   158
   std::string CPUName = CPU;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   159
   if (CPUName.empty())
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   160
-    CPUName = (Is64Bit) ? "v9" : "v8";
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   161
+    CPUName = (Is64Bit) ? "v9a" : "v8plusa";
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   162
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   163
   // Parse features string.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   164
   ParseSubtargetFeatures(CPUName, FS);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   165
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   166
--- lib/Target/Sparc/SparcSubtarget.h	2015-09-10 13:49:06.000000000 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   167
+++ lib/Target/Sparc/SparcSubtarget.h	2016-06-30 08:31:39.266062160 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   168
@@ -37,6 +37,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   169
   bool Is64Bit;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   170
   bool HasHardQuad;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   171
   bool UsePopc;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   172
+  bool UseHWCap;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   173
   SparcInstrInfo InstrInfo;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   174
   SparcTargetLowering TLInfo;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   175
   TargetSelectionDAGInfo TSInfo;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   176
@@ -69,6 +70,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   177
   bool useDeprecatedV8Instructions() const { return V8DeprecatedInsts; }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   178
   bool hasHardQuad() const { return HasHardQuad; }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   179
   bool usePopc() const { return UsePopc; }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   180
+  bool useHWCap() const { return UseHWCap; }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   181
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   182
   /// ParseSubtargetFeatures - Parses features string setting specified
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   183
   /// subtarget options.  Definition of function is auto generated by tblgen.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   184
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   185
--- lib/Target/Sparc/SparcISelLowering.cpp	2015-12-15 14:07:16.000000000 -0900
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   186
+++ lib/Target/Sparc/SparcISelLowering.cpp	2016-07-02 17:42:55.774845330 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   187
@@ -3202,10 +3202,15 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   188
 SparcTargetLowering::getConstraintType(StringRef Constraint) const {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   189
   if (Constraint.size() == 1) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   190
     switch (Constraint[0]) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   191
-    default:  break;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   192
-    case 'r': return C_RegisterClass;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   193
+    default:
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   194
+      break;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   195
+    case 'f':
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   196
+    case 'r':
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   197
+      return C_RegisterClass;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   198
+      break;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   199
     case 'I': // SIMM13
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   200
       return C_Other;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   201
+      break;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   202
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   203
   }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   204
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   205
@@ -3277,11 +3282,22 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   206
                                                   MVT VT) const {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   207
   if (Constraint.size() == 1) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   208
     switch (Constraint[0]) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   209
+    case 'f':
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   210
+      if (VT == MVT::f32)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   211
+        return std::make_pair(0U, &SP::FPRegsRegClass);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   212
+      else if (VT == MVT::f64)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   213
+        return std::make_pair(0U, &SP::DFPRegsRegClass);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   214
+      else if (VT == MVT::f128)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   215
+        return std::make_pair(0U, &SP::QFPRegsRegClass);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   216
+      else
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   217
+        llvm_unreachable("Invalid floating-point MachineValueType!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   218
+      break;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   219
     case 'r':
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   220
       if (VT == MVT::v2i32)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   221
         return std::make_pair(0U, &SP::IntPairRegClass);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   222
       else
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   223
         return std::make_pair(0U, &SP::IntRegsRegClass);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   224
+      break;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   225
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   226
   } else if (!Constraint.empty() && Constraint.size() <= 5
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   227
               && Constraint[0] == '{' && *(Constraint.end()-1) == '}') {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   228
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   229
--- lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp	2015-06-08 16:31:39.000000000 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   230
+++ lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp	2016-07-03 18:29:49.019851395 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   231
@@ -17,9 +17,13 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   232
 #include "llvm/MC/MCInst.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   233
 #include "llvm/MC/MCRegisterInfo.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   234
 #include "llvm/MC/MCSymbol.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   235
+#include "llvm/Target/TargetRegisterInfo.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   236
 #include "llvm/Support/raw_ostream.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   237
 using namespace llvm;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   238
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   239
+#include <algorithm>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   240
+#include <cctype>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   241
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   242
 #define DEBUG_TYPE "asm-printer"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   243
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   244
 // The generated AsmMatcher SparcGenAsmWriter uses "Sparc" as the target
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   245
@@ -170,9 +174,29 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   246
   O << SPARCCondCodeToString((SPCC::CondCodes)CC);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   247
 }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   248
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   249
-bool SparcInstPrinter::printGetPCX(const MCInst *MI, unsigned opNum,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   250
+bool SparcInstPrinter::printGetPCX(const MCInst *MI, unsigned OpNo,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   251
                                    const MCSubtargetInfo &STI,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   252
                                    raw_ostream &O) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   253
-  llvm_unreachable("FIXME: Implement SparcInstPrinter::printGetPCX.");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   254
+  const MCOperand &MO = MI->getOperand(OpNo);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   255
+  assert(MO.isReg() && "MCOperand is not a register!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   256
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   257
+  unsigned RegNum = MO.getReg();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   258
+  assert(TargetRegisterInfo::isPhysicalRegister(RegNum) &&
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   259
+         "MCOperand is not a physical register!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   260
+  assert(RegNum != SP::O7 &&
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   261
+         "Cannot assign %o7 as destination for GetPCX!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   262
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   263
+  std::string Operand = "%";
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   264
+  Operand += getRegisterName(RegNum);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   265
+  std::transform(Operand.begin(), Operand.end(), Operand.begin(), tolower);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   266
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   267
+  O << "\n\tsethi   %hi(_GLOBAL_OFFSET_TABLE_-8), "
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   268
+    << Operand.c_str() << "\n";
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   269
+  O << "\tadd   " << Operand.c_str() << ", %lo(_GLOBAL_OFFSET_TABLE_-4), "
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   270
+    << Operand.c_str() << "\n";
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   271
+  O << "\tadd   " << Operand.c_str() << ", %o7, " << Operand.c_str() << "\n";
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   272
+  O << "\tnop\n";
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   273
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   274
   return true;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   275
 }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   276
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   277
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   278
--- lib/Target/Sparc/SparcAsmPrinter.cpp	2015-10-19 16:59:43.000000000 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   279
+++ lib/Target/Sparc/SparcAsmPrinter.cpp	2016-07-03 18:07:26.477720690 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   280
@@ -173,17 +173,16 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   281
 }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   282
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   283
 void SparcAsmPrinter::LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   284
-                                                const MCSubtargetInfo &STI)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   285
-{
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   286
-  MCSymbol *GOTLabel   =
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   287
+                                                const MCSubtargetInfo &STI) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   288
+  MCSymbol *GOTLabel =
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   289
     OutContext.getOrCreateSymbol(Twine("_GLOBAL_OFFSET_TABLE_"));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   290
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   291
   const MachineOperand &MO = MI->getOperand(0);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   292
-  assert(MO.getReg() != SP::O7 &&
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   293
-         "%o7 is assigned as destination for getpcx!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   294
-
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   295
-  MCOperand MCRegOP = MCOperand::createReg(MO.getReg());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   296
+  unsigned RegNum = MO.getReg();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   297
+  assert((RegNum != SP::O7 && RegNum != SP::L7) &&
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   298
+         "%o7 | %l7 are assigned as destination for getpcx!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   299
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   300
+  MCOperand MCRegOP = MCOperand::createReg(RegNum);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   301
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   302
   if (TM.getRelocationModel() != Reloc::PIC_) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   303
     // Just load the address of GOT to MCRegOP.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   304
@@ -214,6 +213,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   305
       MCOperand imm = MCOperand::createExpr(MCConstantExpr::create(32,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   306
                                                                    OutContext));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   307
       EmitSHL(*OutStreamer, MCRegOP, imm, MCRegOP, STI);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   308
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   309
       // Use register %o7 to load the lower 32 bits.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   310
       MCOperand RegO7 = MCOperand::createReg(SP::O7);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   311
       EmitHiLo(*OutStreamer, GOTLabel,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   312
@@ -225,6 +225,12 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   313
     return;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   314
   }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   315
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   316
+#if 0
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   317
+  MCInst MCI;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   318
+  LowerSparcMachineInstrToMCInst(MI, MCI, *this);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   319
+  const MCInstrDesc &MCID = MI->getDesc();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   320
+#endif
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   321
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   322
   MCSymbol *StartLabel = OutContext.createTempSymbol();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   323
   MCSymbol *EndLabel   = OutContext.createTempSymbol();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   324
   MCSymbol *SethiLabel = OutContext.createTempSymbol();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   325
@@ -417,6 +423,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   326
     default:
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   327
       // See if this is a generic print operand
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   328
       return AsmPrinter::PrintAsmOperand(MI, OpNo, AsmVariant, ExtraCode, O);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   329
+    case 'f':
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   330
     case 'r':
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   331
      break;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   332
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   333
###