pru: Implement c and n asm operand modifiers
Fix c-c++-common/toplevel-asm-1.c failure for PRU backend, caused by missing implementation of the "c" asm operand modifier. gcc/ChangeLog: * config/pru/pru.cc (pru_print_operand): Implement c and n inline assembly operand modifiers. gcc/testsuite/ChangeLog: * gcc.target/pru/asm-op-modifier.c: New test. Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
This commit is contained in:
parent
e119083466
commit
89d19ab91a
2 changed files with 43 additions and 1 deletions
|
@ -1858,12 +1858,22 @@ pru_print_operand (FILE *file, rtx op, int letter)
|
|||
fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (op) & 0xff);
|
||||
return;
|
||||
}
|
||||
else if (letter == 'c')
|
||||
{
|
||||
fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (op));
|
||||
return;
|
||||
}
|
||||
else if (letter == 'n')
|
||||
{
|
||||
fprintf (file, HOST_WIDE_INT_PRINT_DEC, -INTVAL (op));
|
||||
return;
|
||||
}
|
||||
/* Else, fall through. */
|
||||
|
||||
case CONST:
|
||||
case LABEL_REF:
|
||||
case SYMBOL_REF:
|
||||
if (letter == 0)
|
||||
if (letter == 0 || letter == 'c')
|
||||
{
|
||||
output_addr_const (file, op);
|
||||
return;
|
||||
|
|
32
gcc/testsuite/gcc.target/pru/asm-op-modifier.c
Normal file
32
gcc/testsuite/gcc.target/pru/asm-op-modifier.c
Normal file
|
@ -0,0 +1,32 @@
|
|||
/* Test ASM operand modifiers. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1" } */
|
||||
|
||||
struct S {
|
||||
char b;
|
||||
int a;
|
||||
short c;
|
||||
};
|
||||
|
||||
void
|
||||
test_const_int (void)
|
||||
{
|
||||
/* { dg-final { scan-assembler "# printing 7 and -5" } } */
|
||||
asm volatile ("# printing %c0 and %n1"
|
||||
: :
|
||||
"i" (sizeof(struct S)),
|
||||
"i" (__builtin_offsetof (struct S, c)));
|
||||
}
|
||||
|
||||
extern int g;
|
||||
|
||||
void
|
||||
test_sym (void)
|
||||
{
|
||||
/* { dg-final { scan-assembler "# outputting g and test_sym" } } */
|
||||
asm volatile ("# outputting %c0 and %c1"
|
||||
: :
|
||||
"i" (&g),
|
||||
"i" (&test_sym));
|
||||
}
|
Loading…
Add table
Reference in a new issue