; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll


declare bool %llvm.isunordered(float, float)
declare bool %llvm.isunordered(double, double)

declare void %llvm.prefetch(sbyte*, uint, uint)

declare uint %llvm.ctpop(uint)
declare ushort %llvm.cttz(ushort)
declare ulong %llvm.ctlz(ulong)

implementation

; Test llvm intrinsics
;
void %libm() {
        call bool %llvm.isunordered(float 0.0, float 1.0)
        call bool %llvm.isunordered(double 0.0, double 0x7FF8000000000000)
	call void %llvm.prefetch(sbyte* null, uint 1, uint 3)
        call uint %llvm.ctpop(uint 3)
        call ushort %llvm.cttz(ushort 7)
        call ulong %llvm.ctlz(ulong 65000)
	ret void
}


Add note to self to complete the testing of all intrinsic functions as specified in the LangRef document.
; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll


declare bool %llvm.isunordered(float, float)
declare bool %llvm.isunordered(double, double)

declare void %llvm.prefetch(sbyte*, uint, uint)

declare uint %llvm.ctpop(uint)
declare ushort %llvm.cttz(ushort)
declare ulong %llvm.ctlz(ulong)

implementation

; Test llvm intrinsics
;
void %libm() {
        call bool %llvm.isunordered(float 0.0, float 1.0)
        call bool %llvm.isunordered(double 0.0, double 0x7FF8000000000000)
	call void %llvm.prefetch(sbyte* null, uint 1, uint 3)
        call uint %llvm.ctpop(uint 3)
        call ushort %llvm.cttz(ushort 7)
        call ulong %llvm.ctlz(ulong 65000)
	ret void
}

; FIXME: test ALL the intrinsics in this file.