-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "strh .*\[.*], #-4" | wc -l | grep 1 &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "str .*\[.*]," | wc -l | grep 1
+; RUN: llc -mtriple=arm-eabi %s -o - | FileCheck %s
-short %test1(int *%X, short *%A) {
- %Y = load int* %X
- %tmp1 = cast int %Y to short
- store short %tmp1, short* %A
- %tmp2 = cast short* %A to short
- %tmp3 = sub short %tmp2, 4
- ret short %tmp3
+define i16 @test1(i32* %X, i16* %A) {
+; CHECK-LABEL: test1:
+; CHECK: strh {{.*}}[{{.*}}], #-4
+ %Y = load i32, i32* %X ; <i32> [#uses=1]
+ %tmp1 = trunc i32 %Y to i16 ; <i16> [#uses=1]
+ store i16 %tmp1, i16* %A
+ %tmp2 = ptrtoint i16* %A to i16 ; <i16> [#uses=1]
+ %tmp3 = sub i16 %tmp2, 4 ; <i16> [#uses=1]
+ ret i16 %tmp3
}
-int %test2(int *%X, int *%A) {
- %Y = load int* %X
- store int %Y, int* %A
- %tmp1 = cast int* %A to int
- %tmp2 = sub int %tmp1, 4
- ret int %tmp2
+define i32 @test2(i32* %X, i32* %A) {
+; CHECK-LABEL: test2:
+; CHECK: str {{.*}}[{{.*}}],
+ %Y = load i32, i32* %X ; <i32> [#uses=1]
+ store i32 %Y, i32* %A
+ %tmp1 = ptrtoint i32* %A to i32 ; <i32> [#uses=1]
+ %tmp2 = sub i32 %tmp1, 4 ; <i32> [#uses=1]
+ ret i32 %tmp2
}