brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.9 KiB · 5005a1a Raw
324 lines · plain
1; RUN: llc < %s -mtriple=sparc -no-integrated-as2; ModuleID = 'mult-alt-generic.c'3target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32"4target triple = "sparc"5 6@mout0 = common global i32 0, align 47@min1 = common global i32 0, align 48@marray = common global [2 x i32] zeroinitializer, align 49 10define void @single_m() nounwind {11entry:12  call void asm "foo $1,$0", "=*m,*m"(ptr elementtype(i32) @mout0, ptr elementtype(i32) @min1) nounwind13  ret void14}15 16define void @single_o() nounwind {17entry:18  %out0 = alloca i32, align 419  %index = alloca i32, align 420  store i32 0, ptr %out0, align 421  store i32 1, ptr %index, align 422  ret void23}24 25define void @single_V() nounwind {26entry:27  ret void28}29 30define void @single_lt() nounwind {31entry:32  %out0 = alloca i32, align 433  %in1 = alloca i32, align 434  store i32 0, ptr %out0, align 435  store i32 1, ptr %in1, align 436  %tmp = load i32, ptr %in1, align 437  %0 = call i32 asm "foo $1,$0", "=r,<r"(i32 %tmp) nounwind38  store i32 %0, ptr %out0, align 439  %tmp1 = load i32, ptr %in1, align 440  %1 = call i32 asm "foo $1,$0", "=r,r<"(i32 %tmp1) nounwind41  store i32 %1, ptr %out0, align 442  ret void43}44 45define void @single_gt() nounwind {46entry:47  %out0 = alloca i32, align 448  %in1 = alloca i32, align 449  store i32 0, ptr %out0, align 450  store i32 1, ptr %in1, align 451  %tmp = load i32, ptr %in1, align 452  %0 = call i32 asm "foo $1,$0", "=r,>r"(i32 %tmp) nounwind53  store i32 %0, ptr %out0, align 454  %tmp1 = load i32, ptr %in1, align 455  %1 = call i32 asm "foo $1,$0", "=r,r>"(i32 %tmp1) nounwind56  store i32 %1, ptr %out0, align 457  ret void58}59 60define void @single_r() nounwind {61entry:62  %out0 = alloca i32, align 463  %in1 = alloca i32, align 464  store i32 0, ptr %out0, align 465  store i32 1, ptr %in1, align 466  %tmp = load i32, ptr %in1, align 467  %0 = call i32 asm "foo $1,$0", "=r,r"(i32 %tmp) nounwind68  store i32 %0, ptr %out0, align 469  ret void70}71 72define void @single_i() nounwind {73entry:74  %out0 = alloca i32, align 475  store i32 0, ptr %out0, align 476  %0 = call i32 asm "foo $1,$0", "=r,i"(i32 1) nounwind77  store i32 %0, ptr %out0, align 478  ret void79}80 81define void @single_n() nounwind {82entry:83  %out0 = alloca i32, align 484  store i32 0, ptr %out0, align 485  %0 = call i32 asm "foo $1,$0", "=r,n"(i32 1) nounwind86  store i32 %0, ptr %out0, align 487  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 i32, align 4113  store i32 0, ptr %out0, align 4114  ret void115}116 117define void @single_g() nounwind {118entry:119  %out0 = alloca i32, align 4120  %in1 = alloca i32, align 4121  store i32 0, ptr %out0, align 4122  store i32 1, ptr %in1, align 4123  %tmp = load i32, ptr %in1, align 4124  %0 = call i32 asm "foo $1,$0", "=r,imr"(i32 %tmp) nounwind125  store i32 %0, ptr %out0, align 4126  %tmp1 = load i32, ptr @min1, align 4127  %1 = call i32 asm "foo $1,$0", "=r,imr"(i32 %tmp1) nounwind128  store i32 %1, ptr %out0, align 4129  %2 = call i32 asm "foo $1,$0", "=r,imr"(i32 1) nounwind130  store i32 %2, ptr %out0, align 4131  ret void132}133 134define void @single_X() nounwind {135entry:136  %out0 = alloca i32, align 4137  %in1 = alloca i32, align 4138  store i32 0, ptr %out0, align 4139  store i32 1, ptr %in1, align 4140  %tmp = load i32, ptr %in1, align 4141  %0 = call i32 asm "foo $1,$0", "=r,X"(i32 %tmp) nounwind142  store i32 %0, ptr %out0, align 4143  %tmp1 = load i32, ptr @min1, align 4144  %1 = call i32 asm "foo $1,$0", "=r,X"(i32 %tmp1) nounwind145  store i32 %1, ptr %out0, align 4146  %2 = call i32 asm "foo $1,$0", "=r,X"(i32 1) nounwind147  store i32 %2, ptr %out0, align 4148  %3 = call i32 asm "foo $1,$0", "=r,X"(ptr @marray) nounwind149  store i32 %3, ptr %out0, align 4150; No lowering support.151;  %4 = call i32 asm "foo $1,$0", "=r,X"(double 1.000000e+001) nounwind152;  store i32 %4, i32* %out0, align 4153;  %5 = call i32 asm "foo $1,$0", "=r,X"(double 1.000000e+000) nounwind154;  store i32 %5, i32* %out0, align 4155  ret void156}157 158define void @single_p() nounwind {159entry:160  %out0 = alloca i32, align 4161  store i32 0, ptr %out0, align 4162  %0 = call i32 asm "foo $1,$0", "=r,r"(ptr @marray) nounwind163  store i32 %0, ptr %out0, align 4164  ret void165}166 167define void @multi_m() nounwind {168entry:169  %tmp = load i32, ptr @min1, align 4170  call void asm "foo $1,$0", "=*m|r,m|r"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind171  ret void172}173 174define void @multi_o() nounwind {175entry:176  %out0 = alloca i32, align 4177  %index = alloca i32, align 4178  store i32 0, ptr %out0, align 4179  store i32 1, ptr %index, align 4180  ret void181}182 183define void @multi_V() nounwind {184entry:185  ret void186}187 188define void @multi_lt() nounwind {189entry:190  %out0 = alloca i32, align 4191  %in1 = alloca i32, align 4192  store i32 0, ptr %out0, align 4193  store i32 1, ptr %in1, align 4194  %tmp = load i32, ptr %in1, align 4195  %0 = call i32 asm "foo $1,$0", "=r|r,r|<r"(i32 %tmp) nounwind196  store i32 %0, ptr %out0, align 4197  %tmp1 = load i32, ptr %in1, align 4198  %1 = call i32 asm "foo $1,$0", "=r|r,r|r<"(i32 %tmp1) nounwind199  store i32 %1, ptr %out0, align 4200  ret void201}202 203define void @multi_gt() nounwind {204entry:205  %out0 = alloca i32, align 4206  %in1 = alloca i32, align 4207  store i32 0, ptr %out0, align 4208  store i32 1, ptr %in1, align 4209  %tmp = load i32, ptr %in1, align 4210  %0 = call i32 asm "foo $1,$0", "=r|r,r|>r"(i32 %tmp) nounwind211  store i32 %0, ptr %out0, align 4212  %tmp1 = load i32, ptr %in1, align 4213  %1 = call i32 asm "foo $1,$0", "=r|r,r|r>"(i32 %tmp1) nounwind214  store i32 %1, ptr %out0, align 4215  ret void216}217 218define void @multi_r() nounwind {219entry:220  %out0 = alloca i32, align 4221  %in1 = alloca i32, align 4222  store i32 0, ptr %out0, align 4223  store i32 1, ptr %in1, align 4224  %tmp = load i32, ptr %in1, align 4225  %0 = call i32 asm "foo $1,$0", "=r|r,r|m"(i32 %tmp) nounwind226  store i32 %0, ptr %out0, align 4227  ret void228}229 230define void @multi_i() nounwind {231entry:232  %out0 = alloca i32, align 4233  store i32 0, ptr %out0, align 4234  %0 = call i32 asm "foo $1,$0", "=r|r,r|i"(i32 1) nounwind235  store i32 %0, ptr %out0, align 4236  ret void237}238 239define void @multi_n() nounwind {240entry:241  %out0 = alloca i32, align 4242  store i32 0, ptr %out0, align 4243  %0 = call i32 asm "foo $1,$0", "=r|r,r|n"(i32 1) nounwind244  store i32 %0, ptr %out0, align 4245  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 i32, align 4271  store i32 0, ptr %out0, align 4272  ret void273}274 275define void @multi_g() nounwind {276entry:277  %out0 = alloca i32, align 4278  %in1 = alloca i32, align 4279  store i32 0, ptr %out0, align 4280  store i32 1, ptr %in1, align 4281  %tmp = load i32, ptr %in1, align 4282  %0 = call i32 asm "foo $1,$0", "=r|r,r|imr"(i32 %tmp) nounwind283  store i32 %0, ptr %out0, align 4284  %tmp1 = load i32, ptr @min1, align 4285  %1 = call i32 asm "foo $1,$0", "=r|r,r|imr"(i32 %tmp1) nounwind286  store i32 %1, ptr %out0, align 4287  %2 = call i32 asm "foo $1,$0", "=r|r,r|imr"(i32 1) nounwind288  store i32 %2, ptr %out0, align 4289  ret void290}291 292define void @multi_X() nounwind {293entry:294  %out0 = alloca i32, align 4295  %in1 = alloca i32, align 4296  store i32 0, ptr %out0, align 4297  store i32 1, ptr %in1, align 4298  %tmp = load i32, ptr %in1, align 4299  %0 = call i32 asm "foo $1,$0", "=r|r,r|X"(i32 %tmp) nounwind300  store i32 %0, ptr %out0, align 4301  %tmp1 = load i32, ptr @min1, align 4302  %1 = call i32 asm "foo $1,$0", "=r|r,r|X"(i32 %tmp1) nounwind303  store i32 %1, ptr %out0, align 4304  %2 = call i32 asm "foo $1,$0", "=r|r,r|X"(i32 1) nounwind305  store i32 %2, ptr %out0, align 4306  %3 = call i32 asm "foo $1,$0", "=r|r,r|X"(ptr @marray) nounwind307  store i32 %3, ptr %out0, align 4308; No lowering support.309;  %4 = call i32 asm "foo $1,$0", "=r|r,r|X"(double 1.000000e+001) nounwind310;  store i32 %4, i32* %out0, align 4311;  %5 = call i32 asm "foo $1,$0", "=r|r,r|X"(double 1.000000e+000) nounwind312;  store i32 %5, i32* %out0, align 4313  ret void314}315 316define void @multi_p() nounwind {317entry:318  %out0 = alloca i32, align 4319  store i32 0, ptr %out0, align 4320  %0 = call i32 asm "foo $1,$0", "=r|r,r|r"(ptr @marray) nounwind321  store i32 %0, ptr %out0, align 4322  ret void323}324