mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-30 15:32:52 +01:00
36be5dd1e8
intrinsic syntax. Now that this is explicitly covered, I plan to upgrade the existing test suite to use an explicit immediate. Note that I plan to specify 'true' in most places rather than the auto-upgraded value as that is the far more common value to end up here as that is the value coming from GCC's builtins. The only place I'm likely to put a 'false' in is when testing x86 which actually has different instructions for the two variants. llvm-svn: 146369
45 lines
1.2 KiB
LLVM
45 lines
1.2 KiB
LLVM
; Test to make sure intrinsics are automatically upgraded.
|
|
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
|
|
|
|
declare i8 @llvm.ctlz.i8(i8)
|
|
declare i16 @llvm.ctlz.i16(i16)
|
|
declare i32 @llvm.ctlz.i32(i32)
|
|
declare i42 @llvm.ctlz.i42(i42) ; Not a power-of-2
|
|
|
|
define void @test.ctlz(i8 %a, i16 %b, i32 %c, i42 %d) {
|
|
; CHECK: @test.ctlz
|
|
|
|
entry:
|
|
; CHECK: call i8 @llvm.ctlz.i8(i8 %a, i1 false)
|
|
call i8 @llvm.ctlz.i8(i8 %a)
|
|
; CHECK: call i16 @llvm.ctlz.i16(i16 %b, i1 false)
|
|
call i16 @llvm.ctlz.i16(i16 %b)
|
|
; CHECK: call i32 @llvm.ctlz.i32(i32 %c, i1 false)
|
|
call i32 @llvm.ctlz.i32(i32 %c)
|
|
; CHECK: call i42 @llvm.ctlz.i42(i42 %d, i1 false)
|
|
call i42 @llvm.ctlz.i42(i42 %d)
|
|
|
|
ret void
|
|
}
|
|
|
|
declare i8 @llvm.cttz.i8(i8)
|
|
declare i16 @llvm.cttz.i16(i16)
|
|
declare i32 @llvm.cttz.i32(i32)
|
|
declare i42 @llvm.cttz.i42(i42) ; Not a power-of-2
|
|
|
|
define void @test.cttz(i8 %a, i16 %b, i32 %c, i42 %d) {
|
|
; CHECK: @test.cttz
|
|
|
|
entry:
|
|
; CHECK: call i8 @llvm.cttz.i8(i8 %a, i1 false)
|
|
call i8 @llvm.cttz.i8(i8 %a)
|
|
; CHECK: call i16 @llvm.cttz.i16(i16 %b, i1 false)
|
|
call i16 @llvm.cttz.i16(i16 %b)
|
|
; CHECK: call i32 @llvm.cttz.i32(i32 %c, i1 false)
|
|
call i32 @llvm.cttz.i32(i32 %c)
|
|
; CHECK: call i42 @llvm.cttz.i42(i42 %d, i1 false)
|
|
call i42 @llvm.cttz.i42(i42 %d)
|
|
|
|
ret void
|
|
}
|