| Saleem Abdulrasool | 905b6d19 | 2014-04-03 23:47:24 +0000 | [diff] [blame] | 1 | ; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 2 |  | 
|  | 3 | define i8 @f1(i8 %a, i8* %v) { | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 4 | ; CHECK-LABEL: f1: | 
| Evan Cheng | 806845d | 2009-08-11 09:37:40 +0000 | [diff] [blame] | 5 | ; CHECK: strb r0, [r1] | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 6 | store i8 %a, i8* %v | 
|  | 7 | ret i8 %a | 
|  | 8 | } | 
|  | 9 |  | 
|  | 10 | define i8 @f2(i8 %a, i8* %v) { | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 11 | ; CHECK-LABEL: f2: | 
| Johnny Chen | 8f3004c | 2010-03-17 17:52:21 +0000 | [diff] [blame] | 12 | ; CHECK: strb.w r0, [r1, #4092] | 
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame^] | 13 | %tmp2 = getelementptr i8, i8* %v, i32 4092 | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 14 | store i8 %a, i8* %tmp2 | 
|  | 15 | ret i8 %a | 
|  | 16 | } | 
|  | 17 |  | 
|  | 18 | define i8 @f2a(i8 %a, i8* %v) { | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 19 | ; CHECK-LABEL: f2a: | 
| Evan Cheng | 806845d | 2009-08-11 09:37:40 +0000 | [diff] [blame] | 20 | ; CHECK: strb r0, [r1, #-128] | 
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame^] | 21 | %tmp2 = getelementptr i8, i8* %v, i32 -128 | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 22 | store i8 %a, i8* %tmp2 | 
|  | 23 | ret i8 %a | 
|  | 24 | } | 
|  | 25 |  | 
|  | 26 | define i8 @f3(i8 %a, i8* %v) { | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 27 | ; CHECK-LABEL: f3: | 
| Evan Cheng | 806845d | 2009-08-11 09:37:40 +0000 | [diff] [blame] | 28 | ; CHECK: mov.w r2, #4096 | 
|  | 29 | ; CHECK: strb r0, [r1, r2] | 
| David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame^] | 30 | %tmp2 = getelementptr i8, i8* %v, i32 4096 | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 31 | store i8 %a, i8* %tmp2 | 
|  | 32 | ret i8 %a | 
|  | 33 | } | 
|  | 34 |  | 
|  | 35 | define i8 @f4(i8 %a, i32 %base) { | 
|  | 36 | entry: | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 37 | ; CHECK-LABEL: f4: | 
| Evan Cheng | 806845d | 2009-08-11 09:37:40 +0000 | [diff] [blame] | 38 | ; CHECK: strb r0, [r1, #-128] | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 39 | %tmp1 = sub i32 %base, 128 | 
|  | 40 | %tmp2 = inttoptr i32 %tmp1 to i8* | 
|  | 41 | store i8 %a, i8* %tmp2 | 
|  | 42 | ret i8 %a | 
|  | 43 | } | 
|  | 44 |  | 
|  | 45 | define i8 @f5(i8 %a, i32 %base, i32 %offset) { | 
|  | 46 | entry: | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 47 | ; CHECK-LABEL: f5: | 
| Evan Cheng | 806845d | 2009-08-11 09:37:40 +0000 | [diff] [blame] | 48 | ; CHECK: strb r0, [r1, r2] | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 49 | %tmp1 = add i32 %base, %offset | 
|  | 50 | %tmp2 = inttoptr i32 %tmp1 to i8* | 
|  | 51 | store i8 %a, i8* %tmp2 | 
|  | 52 | ret i8 %a | 
|  | 53 | } | 
|  | 54 |  | 
|  | 55 | define i8 @f6(i8 %a, i32 %base, i32 %offset) { | 
|  | 56 | entry: | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 57 | ; CHECK-LABEL: f6: | 
| Evan Cheng | 806845d | 2009-08-11 09:37:40 +0000 | [diff] [blame] | 58 | ; CHECK: strb.w r0, [r1, r2, lsl #2] | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 59 | %tmp1 = shl i32 %offset, 2 | 
|  | 60 | %tmp2 = add i32 %base, %tmp1 | 
|  | 61 | %tmp3 = inttoptr i32 %tmp2 to i8* | 
|  | 62 | store i8 %a, i8* %tmp3 | 
|  | 63 | ret i8 %a | 
|  | 64 | } | 
|  | 65 |  | 
|  | 66 | define i8 @f7(i8 %a, i32 %base, i32 %offset) { | 
|  | 67 | entry: | 
| Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 68 | ; CHECK-LABEL: f7: | 
| Evan Cheng | 806845d | 2009-08-11 09:37:40 +0000 | [diff] [blame] | 69 | ; CHECK: lsrs r2, r2, #2 | 
|  | 70 | ; CHECK: strb r0, [r1, r2] | 
| David Goodwin | d0890a2 | 2009-06-30 22:11:34 +0000 | [diff] [blame] | 71 | %tmp1 = lshr i32 %offset, 2 | 
|  | 72 | %tmp2 = add i32 %base, %tmp1 | 
|  | 73 | %tmp3 = inttoptr i32 %tmp2 to i8* | 
|  | 74 | store i8 %a, i8* %tmp3 | 
|  | 75 | ret i8 %a | 
|  | 76 | } |