| /* APPLE LOCAL file CW asm blocks */ |
| /* Test asm-syntax blocks within functions. */ |
| |
| /* { dg-do run { target powerpc*-*-darwin* } } */ |
| /* { dg-options "-fasm-blocks" } */ |
| |
| extern "C" void abort (void); |
| |
| int |
| foo (int argx, int argy) |
| { |
| register int locx = argx, locy = argy, rslt; |
| asm { |
| add rslt,locx,locy |
| } |
| return rslt; |
| } |
| |
| /* Exercise corners of syntax. */ |
| |
| int |
| bar () |
| { |
| register int rslt = 100; |
| asm { |
| // Combos of instructions on a line |
| |
| nop |
| ; |
| nop |
| nop ; |
| ; nop |
| nop ; nop |
| ; nop ;;; li r3,95 ; nop ; |
| // '.' in an opcode |
| add. r6,r6,r5 |
| } |
| return rslt; |
| } |
| |
| int baz () |
| { |
| register int rslt = 1; |
| asm { |
| li r8,29+(2 * 3); |
| add rslt,rslt,r8; |
| b @192 |
| @34 |
| nop |
| ble+ @34 |
| b forward |
| abc: |
| b abc |
| @abc: |
| b @abc |
| forward: ; @192: |
| nop |
| ; |
| sameline: nop |
| x1: @x2 @x3: nop ; @x4 x5: |
| } |
| return rslt; |
| } |
| |
| int |
| main () |
| { |
| if (foo (22, 23) != 45) |
| abort (); |
| if (bar () != 100) |
| abort (); |
| if (baz () != 36) |
| abort (); |
| return 0; |
| } |