brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.9 KiB · cdbd007 Raw
324 lines · plain
1; RUN: llc < %s -mtriple=msp430 -no-integrated-as2; ModuleID = 'mult-alt-generic.c'3target datalayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16"4target triple = "msp430"5 6@mout0 = common global i16 0, align 27@min1 = common global i16 0, align 28@marray = common global [2 x i16] zeroinitializer, align 29 10define void @single_m() nounwind {11entry:12  call void asm "foo $1,$0", "=*m,*m"(ptr elementtype(i16) @mout0, ptr elementtype(i16) @min1) nounwind13  ret void14}15 16define void @single_o() nounwind {17entry:18  %out0 = alloca i16, align 219  %index = alloca i16, align 220  store i16 0, ptr %out0, align 221  store i16 1, ptr %index, align 222  ret void23}24 25define void @single_V() nounwind {26entry:27  ret void28}29 30define void @single_lt() nounwind {31entry:32  %out0 = alloca i16, align 233  %in1 = alloca i16, align 234  store i16 0, ptr %out0, align 235  store i16 1, ptr %in1, align 236  %tmp = load i16, ptr %in1, align 237  %0 = call i16 asm "foo $1,$0", "=r,<r"(i16 %tmp) nounwind38  store i16 %0, ptr %out0, align 239  %tmp1 = load i16, ptr %in1, align 240  %1 = call i16 asm "foo $1,$0", "=r,r<"(i16 %tmp1) nounwind41  store i16 %1, ptr %out0, align 242  ret void43}44 45define void @single_gt() nounwind {46entry:47  %out0 = alloca i16, align 248  %in1 = alloca i16, align 249  store i16 0, ptr %out0, align 250  store i16 1, ptr %in1, align 251  %tmp = load i16, ptr %in1, align 252  %0 = call i16 asm "foo $1,$0", "=r,>r"(i16 %tmp) nounwind53  store i16 %0, ptr %out0, align 254  %tmp1 = load i16, ptr %in1, align 255  %1 = call i16 asm "foo $1,$0", "=r,r>"(i16 %tmp1) nounwind56  store i16 %1, ptr %out0, align 257  ret void58}59 60define void @single_r() nounwind {61entry:62  %out0 = alloca i16, align 263  %in1 = alloca i16, align 264  store i16 0, ptr %out0, align 265  store i16 1, ptr %in1, align 266  %tmp = load i16, ptr %in1, align 267  %0 = call i16 asm "foo $1,$0", "=r,r"(i16 %tmp) nounwind68  store i16 %0, ptr %out0, align 269  ret void70}71 72define void @single_i() nounwind {73entry:74  %out0 = alloca i16, align 275  store i16 0, ptr %out0, align 276  %0 = call i16 asm "foo $1,$0", "=r,i"(i16 1) nounwind77  store i16 %0, ptr %out0, align 278  ret void79}80 81define void @single_n() nounwind {82entry:83  %out0 = alloca i16, align 284  store i16 0, ptr %out0, align 285  %0 = call i16 asm "foo $1,$0", "=r,n"(i16 1) nounwind86  store i16 %0, ptr %out0, align 287  ret void88}89 90define void @single_E() nounwind {91entry:92  %out0 = alloca double, align 893  store double 0.000000e+000, ptr %out0, align 894; No lowering support.95;  %0 = call double asm "foo $1,$0", "=r,E"(double 1.000000e+001) nounwind96;  store double %0, double* %out0, align 897  ret void98}99 100define void @single_F() nounwind {101entry:102  %out0 = alloca double, align 8103  store double 0.000000e+000, ptr %out0, align 8104; No lowering support.105;  %0 = call double asm "foo $1,$0", "=r,F"(double 1.000000e+000) nounwind106;  store double %0, double* %out0, align 8107  ret void108}109 110define void @single_s() nounwind {111entry:112  %out0 = alloca i16, align 2113  store i16 0, ptr %out0, align 2114  ret void115}116 117define void @single_g() nounwind {118entry:119  %out0 = alloca i16, align 2120  %in1 = alloca i16, align 2121  store i16 0, ptr %out0, align 2122  store i16 1, ptr %in1, align 2123  %tmp = load i16, ptr %in1, align 2124  %0 = call i16 asm "foo $1,$0", "=r,imr"(i16 %tmp) nounwind125  store i16 %0, ptr %out0, align 2126  %tmp1 = load i16, ptr @min1, align 2127  %1 = call i16 asm "foo $1,$0", "=r,imr"(i16 %tmp1) nounwind128  store i16 %1, ptr %out0, align 2129  %2 = call i16 asm "foo $1,$0", "=r,imr"(i16 1) nounwind130  store i16 %2, ptr %out0, align 2131  ret void132}133 134define void @single_X() nounwind {135entry:136  %out0 = alloca i16, align 2137  %in1 = alloca i16, align 2138  store i16 0, ptr %out0, align 2139  store i16 1, ptr %in1, align 2140  %tmp = load i16, ptr %in1, align 2141  %0 = call i16 asm "foo $1,$0", "=r,X"(i16 %tmp) nounwind142  store i16 %0, ptr %out0, align 2143  %tmp1 = load i16, ptr @min1, align 2144  %1 = call i16 asm "foo $1,$0", "=r,X"(i16 %tmp1) nounwind145  store i16 %1, ptr %out0, align 2146  %2 = call i16 asm "foo $1,$0", "=r,X"(i16 1) nounwind147  store i16 %2, ptr %out0, align 2148  %3 = call i16 asm "foo $1,$0", "=r,X"(ptr @marray) nounwind149  store i16 %3, ptr %out0, align 2150; No lowering support.151;  %4 = call i16 asm "foo $1,$0", "=r,X"(double 1.000000e+001) nounwind152;  store i16 %4, i16* %out0, align 2153;  %5 = call i16 asm "foo $1,$0", "=r,X"(double 1.000000e+000) nounwind154;  store i16 %5, i16* %out0, align 2155  ret void156}157 158define void @single_p() nounwind {159entry:160  %out0 = alloca i16, align 2161  store i16 0, ptr %out0, align 2162  %0 = call i16 asm "foo $1,$0", "=r,r"(ptr @marray) nounwind163  store i16 %0, ptr %out0, align 2164  ret void165}166 167define void @multi_m() nounwind {168entry:169  %tmp = load i16, ptr @min1, align 2170  call void asm "foo $1,$0", "=*m|r,m|r"(ptr elementtype(i16) @mout0, i16 %tmp) nounwind171  ret void172}173 174define void @multi_o() nounwind {175entry:176  %out0 = alloca i16, align 2177  %index = alloca i16, align 2178  store i16 0, ptr %out0, align 2179  store i16 1, ptr %index, align 2180  ret void181}182 183define void @multi_V() nounwind {184entry:185  ret void186}187 188define void @multi_lt() nounwind {189entry:190  %out0 = alloca i16, align 2191  %in1 = alloca i16, align 2192  store i16 0, ptr %out0, align 2193  store i16 1, ptr %in1, align 2194  %tmp = load i16, ptr %in1, align 2195  %0 = call i16 asm "foo $1,$0", "=r|r,r|<r"(i16 %tmp) nounwind196  store i16 %0, ptr %out0, align 2197  %tmp1 = load i16, ptr %in1, align 2198  %1 = call i16 asm "foo $1,$0", "=r|r,r|r<"(i16 %tmp1) nounwind199  store i16 %1, ptr %out0, align 2200  ret void201}202 203define void @multi_gt() nounwind {204entry:205  %out0 = alloca i16, align 2206  %in1 = alloca i16, align 2207  store i16 0, ptr %out0, align 2208  store i16 1, ptr %in1, align 2209  %tmp = load i16, ptr %in1, align 2210  %0 = call i16 asm "foo $1,$0", "=r|r,r|>r"(i16 %tmp) nounwind211  store i16 %0, ptr %out0, align 2212  %tmp1 = load i16, ptr %in1, align 2213  %1 = call i16 asm "foo $1,$0", "=r|r,r|r>"(i16 %tmp1) nounwind214  store i16 %1, ptr %out0, align 2215  ret void216}217 218define void @multi_r() nounwind {219entry:220  %out0 = alloca i16, align 2221  %in1 = alloca i16, align 2222  store i16 0, ptr %out0, align 2223  store i16 1, ptr %in1, align 2224  %tmp = load i16, ptr %in1, align 2225  %0 = call i16 asm "foo $1,$0", "=r|r,r|m"(i16 %tmp) nounwind226  store i16 %0, ptr %out0, align 2227  ret void228}229 230define void @multi_i() nounwind {231entry:232  %out0 = alloca i16, align 2233  store i16 0, ptr %out0, align 2234  %0 = call i16 asm "foo $1,$0", "=r|r,r|i"(i16 1) nounwind235  store i16 %0, ptr %out0, align 2236  ret void237}238 239define void @multi_n() nounwind {240entry:241  %out0 = alloca i16, align 2242  store i16 0, ptr %out0, align 2243  %0 = call i16 asm "foo $1,$0", "=r|r,r|n"(i16 1) nounwind244  store i16 %0, ptr %out0, align 2245  ret void246}247 248define void @multi_E() nounwind {249entry:250  %out0 = alloca double, align 8251  store double 0.000000e+000, ptr %out0, align 8252; No lowering support.253;  %0 = call double asm "foo $1,$0", "=r|r,r|E"(double 1.000000e+001) nounwind254;  store double %0, double* %out0, align 8255  ret void256}257 258define void @multi_F() nounwind {259entry:260  %out0 = alloca double, align 8261  store double 0.000000e+000, ptr %out0, align 8262; No lowering support.263;  %0 = call double asm "foo $1,$0", "=r|r,r|F"(double 1.000000e+000) nounwind264;  store double %0, double* %out0, align 8265  ret void266}267 268define void @multi_s() nounwind {269entry:270  %out0 = alloca i16, align 2271  store i16 0, ptr %out0, align 2272  ret void273}274 275define void @multi_g() nounwind {276entry:277  %out0 = alloca i16, align 2278  %in1 = alloca i16, align 2279  store i16 0, ptr %out0, align 2280  store i16 1, ptr %in1, align 2281  %tmp = load i16, ptr %in1, align 2282  %0 = call i16 asm "foo $1,$0", "=r|r,r|imr"(i16 %tmp) nounwind283  store i16 %0, ptr %out0, align 2284  %tmp1 = load i16, ptr @min1, align 2285  %1 = call i16 asm "foo $1,$0", "=r|r,r|imr"(i16 %tmp1) nounwind286  store i16 %1, ptr %out0, align 2287  %2 = call i16 asm "foo $1,$0", "=r|r,r|imr"(i16 1) nounwind288  store i16 %2, ptr %out0, align 2289  ret void290}291 292define void @multi_X() nounwind {293entry:294  %out0 = alloca i16, align 2295  %in1 = alloca i16, align 2296  store i16 0, ptr %out0, align 2297  store i16 1, ptr %in1, align 2298  %tmp = load i16, ptr %in1, align 2299  %0 = call i16 asm "foo $1,$0", "=r|r,r|X"(i16 %tmp) nounwind300  store i16 %0, ptr %out0, align 2301  %tmp1 = load i16, ptr @min1, align 2302  %1 = call i16 asm "foo $1,$0", "=r|r,r|X"(i16 %tmp1) nounwind303  store i16 %1, ptr %out0, align 2304  %2 = call i16 asm "foo $1,$0", "=r|r,r|X"(i16 1) nounwind305  store i16 %2, ptr %out0, align 2306  %3 = call i16 asm "foo $1,$0", "=r|r,r|X"(ptr @marray) nounwind307  store i16 %3, ptr %out0, align 2308; No lowering support.309;  %4 = call i16 asm "foo $1,$0", "=r|r,r|X"(double 1.000000e+001) nounwind310;  store i16 %4, i16* %out0, align 2311;  %5 = call i16 asm "foo $1,$0", "=r|r,r|X"(double 1.000000e+000) nounwind312;  store i16 %5, i16* %out0, align 2313  ret void314}315 316define void @multi_p() nounwind {317entry:318  %out0 = alloca i16, align 2319  store i16 0, ptr %out0, align 2320  %0 = call i16 asm "foo $1,$0", "=r|r,r|r"(ptr @marray) nounwind321  store i16 %0, ptr %out0, align 2322  ret void323}324