This patch does three related things for the moxie port...
1. Changes char to be unsigned by default 2. Changes WCHAR_TYPE from long int to unsigned int 3. Zero- and sign-extends values properly, sometimes using the new sign-extension instructions. From-SVN: r209047
This commit is contained in:
parent
db034eacd3
commit
2b9912aa3c
|
@ -1,3 +1,10 @@
|
|||
2014-04-02 Anthony Green <green@moxielogic.com>
|
||||
|
||||
* config/moxie/moxie.md (zero_extendqisi2, zero_extendhisi2)
|
||||
(extendqisi2, extendhisi2): Define.
|
||||
* config/moxie/moxie.h (DEFAULT_SIGNED_CHAR): Change to 0.
|
||||
(WCHAR_TYPE): Change to unsigned int.
|
||||
|
||||
2014-04-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
PR tree-optimization/60733
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
#define DOUBLE_TYPE_SIZE 64
|
||||
#define LONG_DOUBLE_TYPE_SIZE 64
|
||||
|
||||
#define DEFAULT_SIGNED_CHAR 1
|
||||
#define DEFAULT_SIGNED_CHAR 0
|
||||
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE "unsigned int"
|
||||
|
@ -68,7 +68,7 @@
|
|||
#define PTRDIFF_TYPE "int"
|
||||
|
||||
#undef WCHAR_TYPE
|
||||
#define WCHAR_TYPE "long int"
|
||||
#define WCHAR_TYPE "unsigned int"
|
||||
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE BITS_PER_WORD
|
||||
|
|
|
@ -239,6 +239,56 @@
|
|||
ldo.l %0, %1"
|
||||
[(set_attr "length" "2,2,6,2,6,2,6,6,6")])
|
||||
|
||||
(define_insn_and_split "zero_extendqisi2"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
|
||||
(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "0,W,A,B")))]
|
||||
""
|
||||
"@
|
||||
;
|
||||
ld.b %0, %1
|
||||
lda.b %0, %1
|
||||
ldo.b %0, %1
|
||||
"reload_completed"
|
||||
[(set (match_dup 2) (match_dup 1))
|
||||
(set (match_dup 0) (zero_extend:SI (match_dup 2)))]
|
||||
{
|
||||
operands[2] = gen_lowpart (QImode, operands[0]);
|
||||
}
|
||||
[(set_attr "length" "0,2,6,6")])
|
||||
|
||||
(define_insn_and_split "zero_extendhisi2"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
|
||||
(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "0,W,A,B")))]
|
||||
""
|
||||
"@
|
||||
;
|
||||
ld.s %0, %1
|
||||
lda.s %0, %1
|
||||
ldo.s %0, %1
|
||||
"reload_completed"
|
||||
[(set (match_dup 2) (match_dup 1))
|
||||
(set (match_dup 0) (zero_extend:SI (match_dup 2)))]
|
||||
{
|
||||
operands[2] = gen_lowpart (HImode, operands[0]);
|
||||
}
|
||||
[(set_attr "length" "0,2,6,6")])
|
||||
|
||||
(define_insn "extendqisi2"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r")))]
|
||||
""
|
||||
"@
|
||||
sex.b %0, %1"
|
||||
[(set_attr "length" "2")])
|
||||
|
||||
(define_insn "extendhisi2"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r")))]
|
||||
""
|
||||
"@
|
||||
sex.s %0, %1"
|
||||
[(set_attr "length" "2")])
|
||||
|
||||
(define_expand "movqi"
|
||||
[(set (match_operand:QI 0 "general_operand" "")
|
||||
(match_operand:QI 1 "general_operand" ""))]
|
||||
|
|
Loading…
Reference in New Issue