1*9880d681SAndroid Build Coastguard Worker; Test to make sure intrinsics are automatically upgraded. 2*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as < %s | llvm-dis | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; RUN: verify-uselistorder %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.ctlz.i8(i8) 6*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.ctlz.i16(i16) 7*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.ctlz.i32(i32) 8*9880d681SAndroid Build Coastguard Workerdeclare i42 @llvm.ctlz.i42(i42) ; Not a power-of-2 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine void @test.ctlz(i8 %a, i16 %b, i32 %c, i42 %d) { 15*9880d681SAndroid Build Coastguard Worker; CHECK: @test.ctlz 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerentry: 18*9880d681SAndroid Build Coastguard Worker ; CHECK: call i8 @llvm.ctlz.i8(i8 %a, i1 false) 19*9880d681SAndroid Build Coastguard Worker call i8 @llvm.ctlz.i8(i8 %a) 20*9880d681SAndroid Build Coastguard Worker ; CHECK: call i16 @llvm.ctlz.i16(i16 %b, i1 false) 21*9880d681SAndroid Build Coastguard Worker call i16 @llvm.ctlz.i16(i16 %b) 22*9880d681SAndroid Build Coastguard Worker ; CHECK: call i32 @llvm.ctlz.i32(i32 %c, i1 false) 23*9880d681SAndroid Build Coastguard Worker call i32 @llvm.ctlz.i32(i32 %c) 24*9880d681SAndroid Build Coastguard Worker ; CHECK: call i42 @llvm.ctlz.i42(i42 %d, i1 false) 25*9880d681SAndroid Build Coastguard Worker call i42 @llvm.ctlz.i42(i42 %d) 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker ret void 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.cttz.i8(i8) 31*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.cttz.i16(i16) 32*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.cttz.i32(i32) 33*9880d681SAndroid Build Coastguard Workerdeclare i42 @llvm.cttz.i42(i42) ; Not a power-of-2 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine void @test.cttz(i8 %a, i16 %b, i32 %c, i42 %d) { 36*9880d681SAndroid Build Coastguard Worker; CHECK: @test.cttz 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerentry: 39*9880d681SAndroid Build Coastguard Worker ; CHECK: call i8 @llvm.cttz.i8(i8 %a, i1 false) 40*9880d681SAndroid Build Coastguard Worker call i8 @llvm.cttz.i8(i8 %a) 41*9880d681SAndroid Build Coastguard Worker ; CHECK: call i16 @llvm.cttz.i16(i16 %b, i1 false) 42*9880d681SAndroid Build Coastguard Worker call i16 @llvm.cttz.i16(i16 %b) 43*9880d681SAndroid Build Coastguard Worker ; CHECK: call i32 @llvm.cttz.i32(i32 %c, i1 false) 44*9880d681SAndroid Build Coastguard Worker call i32 @llvm.cttz.i32(i32 %c) 45*9880d681SAndroid Build Coastguard Worker ; CHECK: call i42 @llvm.cttz.i42(i42 %d, i1 false) 46*9880d681SAndroid Build Coastguard Worker call i42 @llvm.cttz.i42(i42 %d) 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker@a = private global [60 x i8] zeroinitializer, align 1 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine i32 @test.objectsize() { 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test.objectsize( 56*9880d681SAndroid Build Coastguard Worker; CHECK: @llvm.objectsize.i32.p0i8 57*9880d681SAndroid Build Coastguard Worker %s = call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @a, i32 0, i32 0), i1 false) 58*9880d681SAndroid Build Coastguard Worker ret i32 %s 59*9880d681SAndroid Build Coastguard Worker} 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.masked.load.v2f64(<2 x double>* %ptrs, i32, <2 x i1> %mask, <2 x double> %src0) 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @tests.masked.load(<2 x double>* %ptr, <2 x i1> %mask, <2 x double> %passthru) { 64*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @tests.masked.load( 65*9880d681SAndroid Build Coastguard Worker; CHECK: @llvm.masked.load.v2f64.p0v2f64 66*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.masked.load.v2f64(<2 x double>* %ptr, i32 1, <2 x i1> %mask, <2 x double> %passthru) 67*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 68*9880d681SAndroid Build Coastguard Worker} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.masked.store.v2f64(<2 x double> %val, <2 x double>* %ptrs, i32, <2 x i1> %mask) 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine void @tests.masked.store(<2 x double>* %ptr, <2 x i1> %mask, <2 x double> %val) { 73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @tests.masked.store( 74*9880d681SAndroid Build Coastguard Worker; CHECK: @llvm.masked.store.v2f64.p0v2f64 75*9880d681SAndroid Build Coastguard Worker call void @llvm.masked.store.v2f64(<2 x double> %val, <2 x double>* %ptr, i32 3, <2 x i1> %mask) 76*9880d681SAndroid Build Coastguard Worker ret void 77*9880d681SAndroid Build Coastguard Worker} 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Worker@__stack_chk_guard = external global i8* 80*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.stackprotectorcheck(i8**) 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Workerdefine void @test.stackprotectorcheck() { 83*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test.stackprotectorcheck( 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret void 85*9880d681SAndroid Build Coastguard Worker call void @llvm.stackprotectorcheck(i8** @__stack_chk_guard) 86*9880d681SAndroid Build Coastguard Worker ret void 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; This is part of @test.objectsize(), since llvm.objectsize declaration gets 90*9880d681SAndroid Build Coastguard Worker; emitted at the end. 91*9880d681SAndroid Build Coastguard Worker; CHECK: declare i32 @llvm.objectsize.i32.p0i8 92