Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
a9ba8a88
Commit
a9ba8a88
authored
Apr 15, 1999
by
Jeff Law
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert accidental checkin of the FCOMI patch that I was testing.
From-SVN: r26486
parent
a14003ee
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
105 deletions
+59
-105
gcc/config/i386/i386.c
+59
-105
No files found.
gcc/config/i386/i386.c
View file @
a9ba8a88
...
...
@@ -3139,8 +3139,7 @@ put_jump_code (code, reverse, file)
FILE
*
file
;
{
int
flags
=
cc_prev_status
.
flags
;
int
ieee
=
(
TARGET_IEEE_FP
&&
(
flags
&
CC_IN_80387
)
&&
!
(
cc_prev_status
.
flags
&
CC_FCOMI
));
int
ieee
=
(
TARGET_IEEE_FP
&&
(
flags
&
CC_IN_80387
));
const
char
*
suffix
;
if
(
flags
&
CC_Z_IN_NOT_C
)
...
...
@@ -3897,7 +3896,7 @@ notice_update_cc (exp)
if
(
stack_regs_mentioned_p
(
SET_SRC
(
XVECEXP
(
exp
,
0
,
0
))))
{
cc_status
.
flags
|=
CC_IN_80387
;
if
(
TARGET_CMOVE
&&
stack_regs_mentioned_p
if
(
0
&&
TARGET_CMOVE
&&
stack_regs_mentioned_p
(
XEXP
(
SET_SRC
(
XVECEXP
(
exp
,
0
,
0
)),
1
)))
cc_status
.
flags
|=
CC_FCOMI
;
}
...
...
@@ -4255,7 +4254,7 @@ output_float_compare (insn, operands)
int
unordered_compare
=
GET_MODE
(
SET_SRC
(
body
))
==
CCFPEQmode
;
rtx
tmp
;
if
(
TARGET_CMOVE
&&
STACK_REG_P
(
operands
[
1
]))
if
(
0
&&
TARGET_CMOVE
&&
STACK_REG_P
(
operands
[
1
]))
{
cc_status
.
flags
|=
CC_FCOMI
;
cc_prev_status
.
flags
&=
~
CC_TEST_AX
;
...
...
@@ -4289,8 +4288,7 @@ output_float_compare (insn, operands)
{
output_asm_insn
(
AS2
(
fucomip
,
%
y1
,
%
0
),
operands
);
output_asm_insn
(
AS1
(
fstp
,
%
y0
),
operands
);
if
(
!
TARGET_IEEE_FP
)
return
""
;
return
""
;
}
else
output_asm_insn
(
"fucompp"
,
operands
);
...
...
@@ -4326,8 +4324,7 @@ output_float_compare (insn, operands)
if
(
cc_status
.
flags
&
CC_FCOMI
)
{
output_asm_insn
(
strcat
(
buf
,
AS2
(
%
z1
,
%
y1
,
%
0
)),
operands
);
if
(
!
TARGET_IEEE_FP
)
return
""
;
return
""
;
}
else
output_asm_insn
(
strcat
(
buf
,
AS1
(
%
z1
,
%
y1
)),
operands
);
...
...
@@ -4351,19 +4348,17 @@ output_fp_cc0_set (insn)
rtx
next
;
enum
rtx_code
code
;
if
(
!
(
cc_status
.
flags
&
CC_FCOMI
))
{
xops
[
0
]
=
gen_rtx_REG
(
HImode
,
0
);
output_asm_insn
(
AS1
(
fnsts
%
W0
,
%
0
),
xops
);
}
xops
[
0
]
=
gen_rtx_REG
(
HImode
,
0
);
output_asm_insn
(
AS1
(
fnsts
%
W0
,
%
0
),
xops
);
if
(
!
TARGET_IEEE_FP
)
{
if
(
!
(
cc_status
.
flags
&
CC_REVERSED
))
{
next
=
next_cc0_user
(
insn
);
if
(
GET_CODE
(
PATTERN
(
next
))
==
SET
if
(
GET_CODE
(
next
)
==
JUMP_INSN
&&
GET_CODE
(
PATTERN
(
next
))
==
SET
&&
SET_DEST
(
PATTERN
(
next
))
==
pc_rtx
&&
GET_CODE
(
SET_SRC
(
PATTERN
(
next
)))
==
IF_THEN_ELSE
)
code
=
GET_CODE
(
XEXP
(
SET_SRC
(
PATTERN
(
next
)),
0
));
...
...
@@ -4388,7 +4383,8 @@ output_fp_cc0_set (insn)
if
(
next
==
NULL_RTX
)
abort
();
if
(
GET_CODE
(
PATTERN
(
next
))
==
SET
if
(
GET_CODE
(
next
)
==
JUMP_INSN
&&
GET_CODE
(
PATTERN
(
next
))
==
SET
&&
SET_DEST
(
PATTERN
(
next
))
==
pc_rtx
&&
GET_CODE
(
SET_SRC
(
PATTERN
(
next
)))
==
IF_THEN_ELSE
)
code
=
GET_CODE
(
XEXP
(
SET_SRC
(
PATTERN
(
next
)),
0
));
...
...
@@ -4411,103 +4407,61 @@ output_fp_cc0_set (insn)
else
abort
();
if
(
cc_status
.
flags
&
CC_FCOMI
)
{
/* It is very tricky. We have to do it right. */
xops
[
0
]
=
gen_rtx_REG
(
QImode
,
0
);
switch
(
code
)
{
case
GT
:
case
GE
:
break
;
case
LT
:
output_asm_insn
(
AS1
(
setb
,
%
b0
),
xops
);
output_asm_insn
(
AS1
(
setp
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
cmp
%
B0
,
%
b0
,
%
h0
),
xops
);
break
;
xops
[
0
]
=
gen_rtx_REG
(
QImode
,
0
);
case
LE
:
output_asm_insn
(
AS1
(
setbe
,
%
b0
),
xops
);
output_asm_insn
(
AS1
(
setnp
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
xor
%
B0
,
%
b0
,
%
h0
),
xops
);
break
;
case
EQ
:
case
NE
:
output_asm_insn
(
AS1
(
setne
,
%
b0
),
xops
);
output_asm_insn
(
AS1
(
setp
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
or
%
B0
,
%
b0
,
%
h0
),
xops
);
break
;
case
GTU
:
case
LTU
:
case
GEU
:
case
LEU
:
default
:
abort
();
}
}
else
switch
(
code
)
{
xops
[
0
]
=
gen_rtx_REG
(
QImode
,
0
);
switch
(
code
)
{
case
GT
:
xops
[
1
]
=
GEN_INT
(
0x45
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
/* je label */
break
;
case
GT
:
xops
[
1
]
=
GEN_INT
(
0x45
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
/* je label */
break
;
case
LT
:
xops
[
1
]
=
GEN_INT
(
0x45
);
xops
[
2
]
=
GEN_INT
(
0x01
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
cmp
%
B0
,
%
2
,
%
h0
),
xops
);
/* je label */
break
;
case
LT
:
xops
[
1
]
=
GEN_INT
(
0x45
);
xops
[
2
]
=
GEN_INT
(
0x01
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
cmp
%
B0
,
%
2
,
%
h0
),
xops
);
/* je label */
break
;
case
GE
:
xops
[
1
]
=
GEN_INT
(
0x05
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
/* je label */
break
;
case
GE
:
xops
[
1
]
=
GEN_INT
(
0x05
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
/* je label */
break
;
case
LE
:
xops
[
1
]
=
GEN_INT
(
0x45
);
xops
[
2
]
=
GEN_INT
(
0x40
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS1
(
dec
%
B0
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
cmp
%
B0
,
%
2
,
%
h0
),
xops
);
/* jb label */
break
;
case
LE
:
xops
[
1
]
=
GEN_INT
(
0x45
);
xops
[
2
]
=
GEN_INT
(
0x40
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS1
(
dec
%
B0
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
cmp
%
B0
,
%
2
,
%
h0
),
xops
);
/* jb label */
break
;
case
EQ
:
xops
[
1
]
=
GEN_INT
(
0x45
);
xops
[
2
]
=
GEN_INT
(
0x40
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
cmp
%
B0
,
%
2
,
%
h0
),
xops
);
/* je label */
break
;
case
EQ
:
xops
[
1
]
=
GEN_INT
(
0x45
);
xops
[
2
]
=
GEN_INT
(
0x40
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
cmp
%
B0
,
%
2
,
%
h0
),
xops
);
/* je label */
break
;
case
NE
:
xops
[
1
]
=
GEN_INT
(
0x44
);
xops
[
2
]
=
GEN_INT
(
0x40
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
xor
%
B0
,
%
2
,
%
h0
),
xops
);
/* jne label */
break
;
case
NE
:
xops
[
1
]
=
GEN_INT
(
0x44
);
xops
[
2
]
=
GEN_INT
(
0x40
);
output_asm_insn
(
AS2
(
and
%
B0
,
%
1
,
%
h0
),
xops
);
output_asm_insn
(
AS2
(
xor
%
B0
,
%
2
,
%
h0
),
xops
);
/* jne label */
break
;
case
GTU
:
case
LTU
:
case
GEU
:
case
LEU
:
default
:
abort
();
}
case
GTU
:
case
LTU
:
case
GEU
:
case
LEU
:
default
:
abort
();
}
return
""
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment