[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / ARM / cmpxchg-O0-be.ll
blob9e9a93e19b6a4de203e1a9613c3bc281e322f178
1 ; RUN: llc -verify-machineinstrs -mtriple=armebv8-linux-gnueabi -O0 %s -o - | FileCheck %s
3 @x = global i64 10, align 8
4 @y = global i64 20, align 8
5 @z = global i64 20, align 8
7 ; CHECK_LABEL:  main:
8 ; CHECK:        ldr [[R2:r[0-9]+]], {{\[}}[[R1:r[0-9]+]]{{\]}}
9 ; CHECK-NEXT:   ldr [[R1]], {{\[}}[[R1]], #4]
10 ; CHECK:        mov [[R4:r[0-9]+]], [[R2]]
11 ; CHECK-NEXT:   mov [[R5:r[0-9]+]], [[R1]]
12 ; CHECK:        ldr [[R2]], {{\[}}[[R1]]{{\]}}
13 ; CHECK-NEXT:   ldr [[R1]], {{\[}}[[R1]], #4]
14 ; CHECK:        mov [[R6:r[0-9]+]], [[R2]]
15 ; CHECK-NEXT:   mov [[R7:r[0-9]+]], [[R1]]
17 define arm_aapcs_vfpcc i32 @main() #0 {
18 entry:
19   %retval = alloca i32, align 4
20   store i32 0, i32* %retval, align 4
21   %0 = load i64, i64* @z, align 8
22   %1 = load i64, i64* @x, align 8
23   %2 = cmpxchg i64* @y, i64 %0, i64 %1 seq_cst seq_cst
24   %3 = extractvalue { i64, i1 } %2, 1
25   ret i32 0