| Ehsan Amiri | a538b0f | 2016-08-03 18:17:35 +0000 | [diff] [blame] | 1 | ; RUN: llc -verify-machineinstrs %s -mtriple=powerpc64-unknown-linux-gnu -O2 -o - -optimize-regalloc=false -regalloc=fast | FileCheck %s |
| Chuang-Yu Cheng | 35c6181 | 2016-04-01 02:05:29 +0000 | [diff] [blame] | 2 | |
| 3 | declare void @func(i8*, i64, i64) |
| 4 | |
| 5 | define void @test(i8* %context, i32** %elementArrayPtr, i32 %value) { |
| 6 | entry: |
| 7 | %cmp = icmp eq i32 %value, 0 |
| 8 | br i1 %cmp, label %lreturn, label %lnext |
| 9 | |
| 10 | lnext: |
| 11 | %elementArray = load i32*, i32** %elementArrayPtr, align 8 |
| 12 | ; CHECK: lwz [[LDREG:[0-9]+]], 124(1) # 4-byte Folded Reload |
| Puyan Lotfi | 43e94b1 | 2018-01-31 22:04:26 +0000 | [diff] [blame] | 13 | ; CHECK: # implicit-def: $x[[TEMPREG:[0-9]+]] |
| Chuang-Yu Cheng | 35c6181 | 2016-04-01 02:05:29 +0000 | [diff] [blame] | 14 | %element = load i32, i32* %elementArray, align 4 |
| 15 | ; CHECK: mr [[TEMPREG]], [[LDREG]] |
| 16 | ; CHECK: clrldi 4, [[TEMPREG]], 32 |
| 17 | %element.ext = zext i32 %element to i64 |
| 18 | %value.ext = zext i32 %value to i64 |
| 19 | call void @func(i8* %context, i64 %value.ext, i64 %element.ext) |
| 20 | br label %lreturn |
| 21 | |
| 22 | lreturn: |
| 23 | ret void |
| 24 | } |