; RUN: llc -mtriple armv7-apple-darwin %s -o - | FileCheck %s --check-prefix=DARWIN
define signext i16 @f16(i16 signext %a, i16 signext %b) {
-; EABI: f16:
-; GNU: f16:
-; DARWIN: f16:
+; EABI-LABEL: f16:
+; GNU-LABEL: f16:
+; DARWIN-LABEL: f16:
entry:
%conv = sext i16 %a to i32
%conv1 = sext i16 %b to i32
}
define i32 @f32(i32 %a, i32 %b) {
-; EABI: f32:
-; GNU: f32:
-; DARWIN: f32:
+; EABI-LABEL: f32:
+; GNU-LABEL: f32:
+; DARWIN-LABEL: f32:
entry:
%div = sdiv i32 %a, %b
%rem = srem i32 %a, %b
}
define i32 @uf(i32 %a, i32 %b) {
-; EABI: uf:
-; GNU: uf:
-; DARWIN: uf:
+; EABI-LABEL: uf:
+; GNU-LABEL: uf:
+; DARWIN-LABEL: uf:
entry:
%div = udiv i32 %a, %b
%rem = urem i32 %a, %b
; FIXME: AEABI is not lowering long u/srem into u/ldivmod
define i64 @longf(i64 %a, i64 %b) {
-; EABI: longf:
-; GNU: longf:
-; DARWIN: longf:
+; EABI-LABEL: longf:
+; GNU-LABEL: longf:
+; DARWIN-LABEL: longf:
entry:
%div = sdiv i64 %a, %b
%rem = srem i64 %a, %b
}
define i32 @g1(i32 %a, i32 %b) {
-; EABI: g1:
-; GNU: g1:
-; DARWIN: g1:
+; EABI-LABEL: g1:
+; GNU-LABEL: g1:
+; DARWIN-LABEL: g1:
entry:
%div = sdiv i32 %a, %b
%rem = srem i32 %a, %b
; On both Darwin and Gnu, this is just a call to __modsi3
define i32 @g2(i32 %a, i32 %b) {
-; EABI: g2:
-; GNU: g2:
-; DARWIN: g2:
+; EABI-LABEL: g2:
+; GNU-LABEL: g2:
+; DARWIN-LABEL: g2:
entry:
%rem = srem i32 %a, %b
; EABI: __aeabi_idivmod
}
define i32 @g3(i32 %a, i32 %b) {
-; EABI: g3:
-; GNU: g3:
-; DARWIN: g3:
+; EABI-LABEL: g3:
+; GNU-LABEL: g3:
+; DARWIN-LABEL: g3:
entry:
%rem = srem i32 %a, %b
; EABI: __aeabi_idivmod
}
define i32 @g4(i32 %a, i32 %b) {
-; EABI: g4:
-; GNU: g4:
-; DARWIN: g4:
+; EABI-LABEL: g4:
+; GNU-LABEL: g4:
+; DARWIN-LABEL: g4:
entry:
%div = sdiv i32 %a, %b
; EABI: __aeabi_idivmod
%0 = type { i32, i32 }
-; CHECK: f0:
+; CHECK-LABEL: f0:
; CHECK: ldrexd
define i64 @f0(i8* %p) nounwind readonly {
entry:
ret i64 %4
}
-; CHECK: f1:
+; CHECK-LABEL: f1:
; CHECK: strexd
define i32 @f1(i8* %ptr, i64 %val) nounwind {
entry:
declare %0 @llvm.arm.ldrexd(i8*) nounwind readonly
declare i32 @llvm.arm.strexd(i32, i32, i8*) nounwind
-; CHECK: test_load_i8:
+; CHECK-LABEL: test_load_i8:
; CHECK: ldrexb r0, [r0]
; CHECK-NOT: uxtb
define i32 @test_load_i8(i8* %addr) {
ret i32 %val
}
-; CHECK: test_load_i16:
+; CHECK-LABEL: test_load_i16:
; CHECK: ldrexh r0, [r0]
; CHECK-NOT: uxth
define i32 @test_load_i16(i16* %addr) {
ret i32 %val
}
-; CHECK: test_load_i32:
+; CHECK-LABEL: test_load_i32:
; CHECK: ldrex r0, [r0]
define i32 @test_load_i32(i32* %addr) {
%val = call i32 @llvm.arm.ldrex.p0i32(i32* %addr)
declare i32 @llvm.arm.ldrex.p0i16(i16*) nounwind readonly
declare i32 @llvm.arm.ldrex.p0i32(i32*) nounwind readonly
-; CHECK: test_store_i8:
+; CHECK-LABEL: test_store_i8:
; CHECK-NOT: uxtb
; CHECK: strexb r0, r1, [r2]
define i32 @test_store_i8(i32, i8 %val, i8* %addr) {
ret i32 %res
}
-; CHECK: test_store_i16:
+; CHECK-LABEL: test_store_i16:
; CHECK-NOT: uxth
; CHECK: strexh r0, r1, [r2]
define i32 @test_store_i16(i32, i16 %val, i16* %addr) {
ret i32 %res
}
-; CHECK: test_store_i32:
+; CHECK-LABEL: test_store_i32:
; CHECK: strex r0, r1, [r2]
define i32 @test_store_i32(i32, i32 %val, i32* %addr) {
%res = call i32 @llvm.arm.strex.p0i32(i32 %val, i32* %addr)
declare i32 @llvm.arm.strex.p0i16(i32, i16*) nounwind
declare i32 @llvm.arm.strex.p0i32(i32, i32*) nounwind
-; CHECK: test_clear:
+; CHECK-LABEL: test_clear:
; CHECK: clrex
define void @test_clear() {
call void @llvm.arm.clrex()
@base = global i32* null
define void @excl_addrmode() {
-; CHECK-T2ADDRMODE: excl_addrmode:
+; CHECK-T2ADDRMODE-LABEL: excl_addrmode:
%base1020 = load i32** @base
%offset1020 = getelementptr i32* %base1020, i32 255
call i32 @llvm.arm.ldrex.p0i32(i32* %offset1020)