brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.8 KiB · d896a58 Raw
359 lines · plain
1; RUN: llc < %s -mattr=+mmx,+sse2 -no-integrated-as2; ModuleID = 'mult-alt-x86.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-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"4target triple = "i686-pc-win32"5 6@mout0 = common global i32 0, align 47@min1 = common global i32 0, align 48@dout0 = common global double 0.000000e+000, align 89@din1 = common global double 0.000000e+000, align 810@marray = common global [2 x i32] zeroinitializer, align 411 12define void @single_R() nounwind {13entry:14  %tmp = load i32, ptr @min1, align 415  %0 = call i32 asm "foo $1,$0", "=R,R,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind16  store i32 %0, ptr @mout0, align 417  ret void18}19 20define void @single_q() nounwind {21entry:22  %tmp = load i32, ptr @min1, align 423  %0 = call i32 asm "foo $1,$0", "=q,q,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind24  store i32 %0, ptr @mout0, align 425  ret void26}27 28define void @single_Q() nounwind {29entry:30  %tmp = load i32, ptr @min1, align 431  %0 = call i32 asm "foo $1,$0", "=Q,Q,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind32  store i32 %0, ptr @mout0, align 433  ret void34}35 36define void @single_a() nounwind {37entry:38  %tmp = load i32, ptr @min1, align 439  %0 = call i32 asm "foo $1,$0", "={ax},{ax},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind40  store i32 %0, ptr @mout0, align 441  ret void42}43 44define void @single_b() nounwind {45entry:46  %tmp = load i32, ptr @min1, align 447  %0 = call i32 asm "foo $1,$0", "={bx},{bx},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind48  store i32 %0, ptr @mout0, align 449  ret void50}51 52define void @single_c() nounwind {53entry:54  %tmp = load i32, ptr @min1, align 455  %0 = call i32 asm "foo $1,$0", "={cx},{cx},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind56  store i32 %0, ptr @mout0, align 457  ret void58}59 60define void @single_d() nounwind {61entry:62  %tmp = load i32, ptr @min1, align 463  %0 = call i32 asm "foo $1,$0", "={dx},{dx},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind64  store i32 %0, ptr @mout0, align 465  ret void66}67 68define void @single_S() nounwind {69entry:70  %tmp = load i32, ptr @min1, align 471  %0 = call i32 asm "foo $1,$0", "={si},{si},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind72  store i32 %0, ptr @mout0, align 473  ret void74}75 76define void @single_D() nounwind {77entry:78  %tmp = load i32, ptr @min1, align 479  %0 = call i32 asm "foo $1,$0", "={di},{di},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind80  store i32 %0, ptr @mout0, align 481  ret void82}83 84define void @single_A() nounwind {85entry:86  %tmp = load i32, ptr @min1, align 487  %0 = call i32 asm "foo $1,$0", "=A,A,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind88  store i32 %0, ptr @mout0, align 489  ret void90}91 92define void @single_f() nounwind {93entry:94  ret void95}96 97define void @single_t() nounwind {98entry:99  ret void100}101 102define void @single_u() nounwind {103entry:104  ret void105}106 107define void @single_y() nounwind {108entry:109  %tmp = load double, ptr @din1, align 8110  %0 = call double asm "foo $1,$0", "=y,y,~{dirflag},~{fpsr},~{flags}"(double %tmp) nounwind111  store double %0, ptr @dout0, align 8112  ret void113}114 115define void @single_x() nounwind {116entry:117  %tmp = load double, ptr @din1, align 8118  %0 = call double asm "foo $1,$0", "=x,x,~{dirflag},~{fpsr},~{flags}"(double %tmp) nounwind119  store double %0, ptr @dout0, align 8120  ret void121}122 123define void @single_Y0() nounwind {124entry:125  ret void126}127 128define void @single_I() nounwind {129entry:130  call void asm "foo $1,$0", "=*m,I,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind131  ret void132}133 134define void @single_J() nounwind {135entry:136  call void asm "foo $1,$0", "=*m,J,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind137  ret void138}139 140define void @single_K() nounwind {141entry:142  call void asm "foo $1,$0", "=*m,K,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind143  ret void144}145 146define void @single_L() nounwind {147entry:148; Missing lowering support for 'L'.149;  call void asm "foo $1,$0", "=*m,L,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind150  ret void151}152 153define void @single_M() nounwind {154entry:155; Missing lowering support for 'M'.156;  call void asm "foo $1,$0", "=*m,M,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind157  ret void158}159 160define void @single_N() nounwind {161entry:162  call void asm "foo $1,$0", "=*m,N,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind163  ret void164}165 166define void @single_G() nounwind {167entry:168; Missing lowering support for 'G'.169;  call void asm "foo $1,$0", "=*m,G,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, double 1.000000e+000) nounwind170  ret void171}172 173define void @single_C() nounwind {174entry:175; Missing lowering support for 'C'.176;  call void asm "foo $1,$0", "=*m,C,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, double 1.000000e+000) nounwind177  ret void178}179 180define void @single_e() nounwind {181entry:182  call void asm "foo $1,$0", "=*m,e,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind183  ret void184}185 186define void @single_Z() nounwind {187entry:188  call void asm "foo $1,$0", "=*m,Z,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind189  ret void190}191 192define void @multi_R() nounwind {193entry:194  %tmp = load i32, ptr @min1, align 4195  call void asm "foo $1,$0", "=*r|R|m,r|R|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind196  ret void197}198 199define void @multi_q() nounwind {200entry:201  %tmp = load i32, ptr @min1, align 4202  call void asm "foo $1,$0", "=*r|q|m,r|q|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind203  ret void204}205 206define void @multi_Q() nounwind {207entry:208  %tmp = load i32, ptr @min1, align 4209  call void asm "foo $1,$0", "=*r|Q|m,r|Q|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind210  ret void211}212 213define void @multi_a() nounwind {214entry:215  %tmp = load i32, ptr @min1, align 4216  call void asm "foo $1,$0", "=*r|{ax}|m,r|{ax}|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind217  ret void218}219 220define void @multi_b() nounwind {221entry:222  %tmp = load i32, ptr @min1, align 4223  call void asm "foo $1,$0", "=*r|{bx}|m,r|{bx}|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind224  ret void225}226 227define void @multi_c() nounwind {228entry:229  %tmp = load i32, ptr @min1, align 4230  call void asm "foo $1,$0", "=*r|{cx}|m,r|{cx}|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind231  ret void232}233 234define void @multi_d() nounwind {235entry:236  %tmp = load i32, ptr @min1, align 4237  call void asm "foo $1,$0", "=*r|{dx}|m,r|{dx},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind238  ret void239}240 241define void @multi_S() nounwind {242entry:243  %tmp = load i32, ptr @min1, align 4244  call void asm "foo $1,$0", "=*r|{si}|m,r|{si}|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind245  ret void246}247 248define void @multi_D() nounwind {249entry:250  %tmp = load i32, ptr @min1, align 4251  call void asm "foo $1,$0", "=*r|{di}|m,r|{di}|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind252  ret void253}254 255define void @multi_A() nounwind {256entry:257  %tmp = load i32, ptr @min1, align 4258  call void asm "foo $1,$0", "=*r|A|m,r|A|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 %tmp) nounwind259  ret void260}261 262define void @multi_f() nounwind {263entry:264  ret void265}266 267define void @multi_t() nounwind {268entry:269  ret void270}271 272define void @multi_u() nounwind {273entry:274  ret void275}276 277define void @multi_y() nounwind {278entry:279  %tmp = load double, ptr @din1, align 8280  call void asm "foo $1,$0", "=*r|y|m,r|y|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(double) @dout0, double %tmp) nounwind281  ret void282}283 284define void @multi_x() nounwind {285entry:286  %tmp = load double, ptr @din1, align 8287  call void asm "foo $1,$0", "=*r|x|m,r|x|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(double) @dout0, double %tmp) nounwind288  ret void289}290 291define void @multi_Y0() nounwind {292entry:293  ret void294}295 296define void @multi_I() nounwind {297entry:298  call void asm "foo $1,$0", "=*r|m|m,r|I|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind299  ret void300}301 302define void @multi_J() nounwind {303entry:304  call void asm "foo $1,$0", "=*r|m|m,r|J|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind305  ret void306}307 308define void @multi_K() nounwind {309entry:310  call void asm "foo $1,$0", "=*r|m|m,r|K|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind311  ret void312}313 314define void @multi_L() nounwind {315entry:316; Missing lowering support for 'L'.317;  call void asm "foo $1,$0", "=*r|m|m,r|L|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind318  ret void319}320 321define void @multi_M() nounwind {322entry:323; Missing lowering support for 'M'.324;  call void asm "foo $1,$0", "=*r|m|m,r|M|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind325  ret void326}327 328define void @multi_N() nounwind {329entry:330  call void asm "foo $1,$0", "=*r|m|m,r|N|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind331  ret void332}333 334define void @multi_G() nounwind {335entry:336; Missing lowering support for 'G'.337;  call void asm "foo $1,$0", "=*r|m|m,r|G|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, double 1.000000e+000) nounwind338  ret void339}340 341define void @multi_C() nounwind {342entry:343; Missing lowering support for 'C'.344;  call void asm "foo $1,$0", "=*r|m|m,r|C|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, double 1.000000e+000) nounwind345  ret void346}347 348define void @multi_e() nounwind {349entry:350  call void asm "foo $1,$0", "=*r|m|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind351  ret void352}353 354define void @multi_Z() nounwind {355entry:356  call void asm "foo $1,$0", "=*r|m|m,r|Z|m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) @mout0, i32 1) nounwind357  ret void358}359