[prev in list] [next in list] [prev in thread] [next in thread]
List: gcc-bugs
Subject: [Bug target/113180] New: MIPS: bitops on an long long struct uses ins instead dins
From: "syq at gcc dot gnu.org via Gcc-bugs" <gcc-bugs () gcc ! gnu ! org>
Date: 2023-12-30 14:08:29
Message-ID: bug-113180-4 () http ! gcc ! gnu ! org/bugzilla/
[Download RAW message or body]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113180
Bug ID: 113180
Summary: MIPS: bitops on an long long struct uses ins instead
dins
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: syq at gcc dot gnu.org
Target Milestone: ---
```
struct yy {
int x:32;
int a:12;
int b:12;
int c:4;
int d:4;
};
struct yy xx (struct yy a, long long b) {
a.d = b;
return a;
}
```
One DINS is enough for this ops, while currently the result is:
```
dsra $2,$4,32
daddiu $sp,$sp,-32
ins $2,$5,28,4
sd $4,16($sp)
sw $2,20($sp)
ld $3,16($sp)
move $2,$0
sll $4,$3,0
dext $4,$4,0,32
dins $2,$4,0,32
dsrl $3,$3,32
dins $2,$3,32,32
jr $31
daddiu $sp,$sp,32
```=
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic