1*9880d681SAndroid Build Coastguard Worker; Test 32-bit XORs in which the second operand is constant. 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; Check the lowest useful XILF value. 6*9880d681SAndroid Build Coastguard Workerdefine i32 @f1(i32 %a) { 7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 8*9880d681SAndroid Build Coastguard Worker; CHECK: xilf %r2, 1 9*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 10*9880d681SAndroid Build Coastguard Worker %xor = xor i32 %a, 1 11*9880d681SAndroid Build Coastguard Worker ret i32 %xor 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; Check the high end of the signed range. 15*9880d681SAndroid Build Coastguard Workerdefine i32 @f2(i32 %a) { 16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 17*9880d681SAndroid Build Coastguard Worker; CHECK: xilf %r2, 2147483647 18*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 19*9880d681SAndroid Build Coastguard Worker %xor = xor i32 %a, 2147483647 20*9880d681SAndroid Build Coastguard Worker ret i32 %xor 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; Check the low end of the signed range, which should be treated 24*9880d681SAndroid Build Coastguard Worker; as a positive value. 25*9880d681SAndroid Build Coastguard Workerdefine i32 @f3(i32 %a) { 26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 27*9880d681SAndroid Build Coastguard Worker; CHECK: xilf %r2, 2147483648 28*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 29*9880d681SAndroid Build Coastguard Worker %xor = xor i32 %a, -2147483648 30*9880d681SAndroid Build Coastguard Worker ret i32 %xor 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; Check the high end of the XILF range. 34*9880d681SAndroid Build Coastguard Workerdefine i32 @f4(i32 %a) { 35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4: 36*9880d681SAndroid Build Coastguard Worker; CHECK: xilf %r2, 4294967295 37*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 38*9880d681SAndroid Build Coastguard Worker %xor = xor i32 %a, 4294967295 39*9880d681SAndroid Build Coastguard Worker ret i32 %xor 40*9880d681SAndroid Build Coastguard Worker} 41