Revision afcb7375 target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
525 | 525 |
uint16_t w[4]; |
526 | 526 |
int16_t sw[4]; |
527 | 527 |
uint32_t l[2]; |
528 |
uint64_t ll; |
|
528 | 529 |
float64 d; |
529 | 530 |
} vis64; |
530 | 531 |
|
... | ... | |
789 | 790 |
VIS_HELPER(helper_fpsub, FSUB) |
790 | 791 |
|
791 | 792 |
#define VIS_CMPHELPER(name, F) \ |
792 |
void name##16(void) \
|
|
793 |
uint64_t name##16(void) \
|
|
793 | 794 |
{ \ |
794 | 795 |
vis64 s, d; \ |
795 | 796 |
\ |
796 | 797 |
s.d = DT0; \ |
797 | 798 |
d.d = DT1; \ |
798 | 799 |
\ |
799 |
d.VIS_W64(0) = F(d.VIS_W64(0), s.VIS_W64(0))? 1: 0; \ |
|
800 |
d.VIS_W64(0) |= F(d.VIS_W64(1), s.VIS_W64(1))? 2: 0; \ |
|
801 |
d.VIS_W64(0) |= F(d.VIS_W64(2), s.VIS_W64(2))? 4: 0; \ |
|
802 |
d.VIS_W64(0) |= F(d.VIS_W64(3), s.VIS_W64(3))? 8: 0; \ |
|
800 |
d.VIS_W64(0) = F(s.VIS_W64(0), d.VIS_W64(0)) ? 1 : 0; \ |
|
801 |
d.VIS_W64(0) |= F(s.VIS_W64(1), d.VIS_W64(1)) ? 2 : 0; \ |
|
802 |
d.VIS_W64(0) |= F(s.VIS_W64(2), d.VIS_W64(2)) ? 4 : 0; \ |
|
803 |
d.VIS_W64(0) |= F(s.VIS_W64(3), d.VIS_W64(3)) ? 8 : 0; \ |
|
804 |
d.VIS_W64(1) = d.VIS_W64(2) = d.VIS_W64(3) = 0; \ |
|
803 | 805 |
\ |
804 |
DT0 = d.d; \
|
|
806 |
return d.ll; \
|
|
805 | 807 |
} \ |
806 | 808 |
\ |
807 |
void name##32(void) \
|
|
809 |
uint64_t name##32(void) \
|
|
808 | 810 |
{ \ |
809 | 811 |
vis64 s, d; \ |
810 | 812 |
\ |
811 | 813 |
s.d = DT0; \ |
812 | 814 |
d.d = DT1; \ |
813 | 815 |
\ |
814 |
d.VIS_L64(0) = F(d.VIS_L64(0), s.VIS_L64(0))? 1: 0; \ |
|
815 |
d.VIS_L64(0) |= F(d.VIS_L64(1), s.VIS_L64(1))? 2: 0; \ |
|
816 |
d.VIS_L64(0) = F(s.VIS_L64(0), d.VIS_L64(0)) ? 1 : 0; \ |
|
817 |
d.VIS_L64(0) |= F(s.VIS_L64(1), d.VIS_L64(1)) ? 2 : 0; \ |
|
818 |
d.VIS_L64(1) = 0; \ |
|
816 | 819 |
\ |
817 |
DT0 = d.d; \
|
|
820 |
return d.ll; \
|
|
818 | 821 |
} |
819 | 822 |
|
820 | 823 |
#define FCMPGT(a, b) ((a) > (b)) |
Also available in: Unified diff