1*9880d681SAndroid Build Coastguard Worker; Test memory-to-memory ORs. 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Test the simple i8 case. 6*9880d681SAndroid Build Coastguard Workerdefine void @f1(i8 *%ptr1) { 7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 8*9880d681SAndroid Build Coastguard Worker; CHECK: oc 1(1,%r2), 0(%r2) 9*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 10*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr i8, i8 *%ptr1, i64 1 11*9880d681SAndroid Build Coastguard Worker %val = load i8 , i8 *%ptr1 12*9880d681SAndroid Build Coastguard Worker %old = load i8 , i8 *%ptr2 13*9880d681SAndroid Build Coastguard Worker %or = or i8 %val, %old 14*9880d681SAndroid Build Coastguard Worker store i8 %or, i8 *%ptr2 15*9880d681SAndroid Build Coastguard Worker ret void 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker; Test the simple i16 case. 19*9880d681SAndroid Build Coastguard Workerdefine void @f2(i16 *%ptr1) { 20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 21*9880d681SAndroid Build Coastguard Worker; CHECK: oc 2(2,%r2), 0(%r2) 22*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 23*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr i16, i16 *%ptr1, i64 1 24*9880d681SAndroid Build Coastguard Worker %val = load i16 , i16 *%ptr1 25*9880d681SAndroid Build Coastguard Worker %old = load i16 , i16 *%ptr2 26*9880d681SAndroid Build Coastguard Worker %or = or i16 %val, %old 27*9880d681SAndroid Build Coastguard Worker store i16 %or, i16 *%ptr2 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; Test the simple i32 case. 32*9880d681SAndroid Build Coastguard Workerdefine void @f3(i32 *%ptr1) { 33*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 34*9880d681SAndroid Build Coastguard Worker; CHECK: oc 4(4,%r2), 0(%r2) 35*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 36*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr i32, i32 *%ptr1, i64 1 37*9880d681SAndroid Build Coastguard Worker %val = load i32 , i32 *%ptr1 38*9880d681SAndroid Build Coastguard Worker %old = load i32 , i32 *%ptr2 39*9880d681SAndroid Build Coastguard Worker %or = or i32 %old, %val 40*9880d681SAndroid Build Coastguard Worker store i32 %or, i32 *%ptr2 41*9880d681SAndroid Build Coastguard Worker ret void 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker; Test the i64 case. 45*9880d681SAndroid Build Coastguard Workerdefine void @f4(i64 *%ptr1) { 46*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4: 47*9880d681SAndroid Build Coastguard Worker; CHECK: oc 8(8,%r2), 0(%r2) 48*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 49*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr i64, i64 *%ptr1, i64 1 50*9880d681SAndroid Build Coastguard Worker %val = load i64 , i64 *%ptr1 51*9880d681SAndroid Build Coastguard Worker %old = load i64 , i64 *%ptr2 52*9880d681SAndroid Build Coastguard Worker %or = or i64 %old, %val 53*9880d681SAndroid Build Coastguard Worker store i64 %or, i64 *%ptr2 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker; Leave other more complicated tests to and-08.ll. 58