Get top working with the PowerPC; use it to eliminate useless branches and
moves.
This commit is contained in:
		
							parent
							
								
									a8c4dac67c
								
							
						
					
					
						commit
						8c3670483f
					
				
					 5 changed files with 34 additions and 14 deletions
				
			
		|  | @ -1,4 +1,9 @@ | ||||||
| for _, plat in ipairs(vars.plats) do | for _, plat in ipairs(vars.plats) do | ||||||
|  | 	acklibrary { | ||||||
|  | 		name = "headers_"..plat, | ||||||
|  | 		hdrs = { "./*.h" } | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	acklibrary { | 	acklibrary { | ||||||
| 		name = "lib_"..plat, | 		name = "lib_"..plat, | ||||||
| 		srcs = { | 		srcs = { | ||||||
|  | @ -6,7 +11,8 @@ for _, plat in ipairs(vars.plats) do | ||||||
| 		}, | 		}, | ||||||
| 		vars = { plat = plat }, | 		vars = { plat = plat }, | ||||||
| 		deps = { | 		deps = { | ||||||
| 			"h+emheaders" | 			"h+emheaders", | ||||||
|  | 			"+headers_"..plat, | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -1,7 +1,8 @@ | ||||||
| 
 | 
 | ||||||
| /* 68020 desciptor table for ACK target optimizer */ | /* PowerPC desciptor table for ACK target optimizer */ | ||||||
| 
 | 
 | ||||||
| MAXOP 3; | MAXOP 3; | ||||||
|  | LABEL_STARTER '.'; | ||||||
| 
 | 
 | ||||||
| %%; | %%; | ||||||
| 
 | 
 | ||||||
|  | @ -15,6 +16,14 @@ X, Y, Z             { TRUE }; | ||||||
| addi  X, X, 0                -> ; | addi  X, X, 0                -> ; | ||||||
| addis X, X, 0                -> ; | addis X, X, 0                -> ; | ||||||
| 
 | 
 | ||||||
|  | mr X, X                      -> ; | ||||||
|  | fmr X, X                     -> ; | ||||||
|  | 
 | ||||||
| or X, Y, Z : or. X, X, X     -> or. X, Y, Z ; | or X, Y, Z : or. X, X, X     -> or. X, Y, Z ; | ||||||
| 
 | 
 | ||||||
|  | b X : labdef X               -> labdef X ; | ||||||
|  | 
 | ||||||
|  | /* IFFALSE=4, IFTRUE=12, ALWAYS=20 */ | ||||||
|  | /* LT=0, GT=1, EQ=2, OV=3 */ | ||||||
|  | 
 | ||||||
| %%; | %%; | ||||||
|  |  | ||||||
|  | @ -51,12 +51,12 @@ static void unknown_type(const char* s) | ||||||
| static const char* ilabel_to_str(label l) | static const char* ilabel_to_str(label l) | ||||||
| { | { | ||||||
|     assert(current_proc != NULL); |     assert(current_proc != NULL); | ||||||
|     return aprintf("__%s_I%d", current_proc->name, l); |     return aprintf(".%s_I%d", current_proc->name, l); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static const char* dlabel_to_str(label l) | static const char* dlabel_to_str(label l) | ||||||
| { | { | ||||||
|     return aprintf("__D%d", l); |     return aprintf(".D%d", l); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void terminate_block(void) | static void terminate_block(void) | ||||||
|  |  | ||||||
|  | @ -15,12 +15,18 @@ build_ncg { | ||||||
| 	arch = "powerpc", | 	arch = "powerpc", | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | build_top { | ||||||
|  | 	name = "top", | ||||||
|  | 	arch = "powerpc", | ||||||
|  | } | ||||||
|  | 
 | ||||||
| return installable { | return installable { | ||||||
| 	name = "tools", | 	name = "tools", | ||||||
| 	map = { | 	map = { | ||||||
| 		["$(PLATDEP)/linuxppc/as"] = "+as", | 		["$(PLATDEP)/linuxppc/as"] = "+as", | ||||||
| 		["$(PLATDEP)/linuxppc/ncg"] = "+ncg", | 		["$(PLATDEP)/linuxppc/ncg"] = "+ncg", | ||||||
| 		["$(PLATDEP)/linuxppc/mcg"] = "+mcg", | 		["$(PLATDEP)/linuxppc/mcg"] = "+mcg", | ||||||
|  | 		["$(PLATDEP)/linuxppc/top"] = "+top", | ||||||
| 		["$(PLATIND)/descr/linuxppc"] = "./descr", | 		["$(PLATIND)/descr/linuxppc"] = "./descr", | ||||||
| 		"util/opt+pkg", | 		"util/opt+pkg", | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -40,16 +40,15 @@ name be | ||||||
| 	stdout | 	stdout | ||||||
| 	need .e | 	need .e | ||||||
| end | end | ||||||
| # FIXME(dtrg): not working yet | name asopt | ||||||
| #name asopt | 	from .s | ||||||
| #	from .s | 	to .so | ||||||
| #	to .so | 	program {EM}/lib/ack/{PLATFORM}/top | ||||||
| #	program {EM}/lib/ack/{PLATFORM}/top | 	args | ||||||
| #	args | 	optimizer | ||||||
| #	optimizer | 	stdin | ||||||
| #	stdin | 	stdout | ||||||
| #	stdout | end | ||||||
| #end |  | ||||||
| name as | name as | ||||||
| 	from .s.so | 	from .s.so | ||||||
| 	to .o | 	to .o | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue