scheduling inline assembler when interlaced with C
john.gill@quadrics.com
john.gill@quadrics.com
Wed Sep 21 11:19:00 GMT 2005
I'm working on a port of gcc (3.3.3) for an embedded processor.
In my md file I have defined:
(define_asm_attributes
[(set_attr "length" "1")
(set_attr "type" "ialu")])
and
(define_insn_reservation "iarith" 1
(eq_attr "type" "ialu")
"AnyInsn+Arith4")
But the dfa scheduler doesn't pick up the scheduling resources
assocatiated with attribute ialu indicated via my
define_insn_reservation statements. This is only a problem
for inline asm, it still schedules the C.
Below is some output from the sched2 pass. When using inline
asm the scheduler currently is noting that asm_operands
use no resources and as a consequence the scheduling could
be better. How can I get the scheduler to note what attributes
inline asm uses?
Cheers for any help
John
;; ======================================================
;; -- basic block 0 from 15 to 61 -- after reload
;; ======================================================
;; 0--> 15 %w7=asm_operands :nothing <<<<<<< No reservations
;; 0--> 77 %w10=0x0|0x1 :(BothInsn+Arith8)
;; 1--> 26 %w3=high(`val') :(AnyInsn+Arith4)
;; 1--> 37 %w8=0x0 :(AnyInsn+Arith4)
;; 2--> 28 %w4=[%w3+low(`val')] :(AnyInsn+Memory+AnyPort),AnyPort,AnyPort,AnyPort
;; 2--> 38 %w6=%w7^0x1 :(AnyInsn+Arith4)
;; 3--> 35 %w3=%w3+low(`val') :(AnyInsn+Arith4)
;; 6--> 30 %w4=%w4+%w10 :(BothInsn+Arith8)
;; 7--> 42 asm_operands :nothing <<<<<<< No reservations
;; 8--> 46 %w2=asm_operands :nothing <<<<<<< No reservations
;; 8--> 48 %w2=%w2+0x1 :(AnyInsn+Arith4)
;; 9--> 50 asm_operands :nothing <<<<<<< No reservations
;; 9--> 72 %w3=high(`val') :(AnyInsn+Arith4)
;; 10--> 74 %w2=high(`fired') :(AnyInsn+Arith4)
;; 10--> 55 %w7=%w7<<0x2 :(AnyInsn+Arith4)
;; 11--> 56 %w6=0x1 :(AnyInsn+Arith4)
;; 11--> 73 %w2=%w2+low(`fired') :(AnyInsn+Arith4)
;; 12--> 57 [%w2+%w7]=%w6 :(AnyInsn+Memory+StorePort)
;; 13--> 61 [%w3+low(`val')]=%w4 :(AnyInsn+Memory+StorePort)
;; Ready list (final):
;; total time = 13
;; new head = 15
;; new tail = 61
More information about the Gcc-help
mailing list