blob: d46472673cf169ecd4d2ae876a49c5ed53a142a7 [file] [log] [blame]
Reid Spencerd0e30dc2006-12-02 04:23:10 +00001; RUN: llvm-upgrade < %s | llvm-as | llvm-dis > %t1.ll
Tanya Lattner84f7fda2004-11-07 06:08:43 +00002; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
3; RUN: diff %t1.ll %t2.ll
4
Chris Lattner8f40e352004-06-11 02:29:57 +00005
Reid Spencere64af052006-01-19 01:17:06 +00006declare bool %llvm.isunordered.f32(float,float)
7declare bool %llvm.isunordered.f64(double,double)
Alkis Evlogimenos9d740622004-06-12 19:19:14 +00008
Chris Lattner5d43cbc2005-02-28 19:31:42 +00009declare void %llvm.prefetch(sbyte*, uint, uint)
10
Reid Spencerc3d87682007-04-01 07:36:28 +000011declare uint %llvm.ctpop.i8(ubyte)
12declare uint %llvm.ctpop.i16(ushort)
Reid Spencere64af052006-01-19 01:17:06 +000013declare uint %llvm.ctpop.i32(uint)
Reid Spencerc3d87682007-04-01 07:36:28 +000014declare uint %llvm.ctpop.i64(ulong)
Reid Spencere64af052006-01-19 01:17:06 +000015
Reid Spencerc3d87682007-04-01 07:36:28 +000016declare uint %llvm.cttz.i8(ubyte)
17declare uint %llvm.cttz.i16(ushort)
Reid Spencere64af052006-01-19 01:17:06 +000018declare uint %llvm.cttz.i32(uint)
Reid Spencerc3d87682007-04-01 07:36:28 +000019declare uint %llvm.cttz.i64(ulong)
Reid Spencere64af052006-01-19 01:17:06 +000020
Reid Spencerc3d87682007-04-01 07:36:28 +000021declare uint %llvm.ctlz.i8(ubyte)
22declare uint %llvm.ctlz.i16(ushort)
Reid Spencere64af052006-01-19 01:17:06 +000023declare uint %llvm.ctlz.i32(uint)
Reid Spencerc3d87682007-04-01 07:36:28 +000024declare uint %llvm.ctlz.i64(ulong)
Reid Spencere64af052006-01-19 01:17:06 +000025
Reid Spencere64af052006-01-19 01:17:06 +000026declare float %llvm.sqrt.f32(float)
27declare double %llvm.sqrt.f64(double)
Andrew Lenharthbf50ff52005-05-03 16:49:48 +000028
Alkis Evlogimenos2baa85e2004-06-11 01:06:40 +000029implementation
30
31; Test llvm intrinsics
32;
Chris Lattner8f40e352004-06-11 02:29:57 +000033void %libm() {
Reid Spencere64af052006-01-19 01:17:06 +000034 call bool %llvm.isunordered.f32(float 1.0, float 2.0)
35 call bool %llvm.isunordered.f64(double 3.0, double 4.0)
36
Chris Lattner5d43cbc2005-02-28 19:31:42 +000037 call void %llvm.prefetch(sbyte* null, uint 1, uint 3)
Reid Spencere64af052006-01-19 01:17:06 +000038
Reid Spencere64af052006-01-19 01:17:06 +000039 call float %llvm.sqrt.f32(float 5.0)
40 call double %llvm.sqrt.f64(double 6.0)
41
Reid Spencerc3d87682007-04-01 07:36:28 +000042 call uint %llvm.ctpop.i8(ubyte 10)
43 call uint %llvm.ctpop.i16(ushort 11)
Reid Spencere64af052006-01-19 01:17:06 +000044 call uint %llvm.ctpop.i32(uint 12)
Reid Spencerc3d87682007-04-01 07:36:28 +000045 call uint %llvm.ctpop.i64(ulong 13)
Reid Spencere64af052006-01-19 01:17:06 +000046
Reid Spencerc3d87682007-04-01 07:36:28 +000047 call uint %llvm.ctlz.i8(ubyte 14)
48 call uint %llvm.ctlz.i16(ushort 15)
Reid Spencere64af052006-01-19 01:17:06 +000049 call uint %llvm.ctlz.i32(uint 16)
Reid Spencerc3d87682007-04-01 07:36:28 +000050 call uint %llvm.ctlz.i64(ulong 17)
Reid Spencere64af052006-01-19 01:17:06 +000051
Reid Spencerc3d87682007-04-01 07:36:28 +000052 call uint %llvm.cttz.i8(ubyte 18)
53 call uint %llvm.cttz.i16(ushort 19)
Reid Spencere64af052006-01-19 01:17:06 +000054 call uint %llvm.cttz.i32(uint 20)
Reid Spencerc3d87682007-04-01 07:36:28 +000055 call uint %llvm.cttz.i64(ulong 21)
Alkis Evlogimenos2baa85e2004-06-11 01:06:40 +000056 ret void
Chris Lattner8f40e352004-06-11 02:29:57 +000057}
Reid Spencer3992dbd2005-05-09 04:47:32 +000058
59; FIXME: test ALL the intrinsics in this file.