1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s 2 3define signext i8 @func8s(i8 signext %a, i8 signext %b) { 4; CHECK-LABEL: func8s: 5; CHECK: # %bb.0: 6; CHECK-NEXT: xor %s0, %s0, %s1 7; CHECK-NEXT: b.l.t (, %s10) 8 %res = xor i8 %a, %b 9 ret i8 %res 10} 11 12define zeroext i8 @func8z(i8 zeroext %a, i8 zeroext %b) { 13; CHECK-LABEL: func8z: 14; CHECK: # %bb.0: 15; CHECK-NEXT: xor %s0, %s1, %s0 16; CHECK-NEXT: b.l.t (, %s10) 17 %res = xor i8 %b, %a 18 ret i8 %res 19} 20 21define signext i8 @funci8s(i8 signext %a) { 22; CHECK-LABEL: funci8s: 23; CHECK: # %bb.0: 24; CHECK-NEXT: xor %s0, 5, %s0 25; CHECK-NEXT: b.l.t (, %s10) 26 %res = xor i8 %a, 5 27 ret i8 %res 28} 29 30define zeroext i8 @funci8z(i8 zeroext %a) { 31; CHECK-LABEL: funci8z: 32; CHECK: # %bb.0: 33; CHECK-NEXT: lea %s1, 251 34; CHECK-NEXT: xor %s0, %s0, %s1 35; CHECK-NEXT: b.l.t (, %s10) 36 %res = xor i8 -5, %a 37 ret i8 %res 38} 39 40define signext i16 @func16s(i16 signext %a, i16 signext %b) { 41; CHECK-LABEL: func16s: 42; CHECK: # %bb.0: 43; CHECK-NEXT: xor %s0, %s0, %s1 44; CHECK-NEXT: b.l.t (, %s10) 45 %res = xor i16 %a, %b 46 ret i16 %res 47} 48 49define zeroext i16 @func16z(i16 zeroext %a, i16 zeroext %b) { 50; CHECK-LABEL: func16z: 51; CHECK: # %bb.0: 52; CHECK-NEXT: xor %s0, %s1, %s0 53; CHECK-NEXT: b.l.t (, %s10) 54 %res = xor i16 %b, %a 55 ret i16 %res 56} 57 58define signext i16 @funci16s(i16 signext %a) { 59; CHECK-LABEL: funci16s: 60; CHECK: # %bb.0: 61; CHECK-NEXT: xor %s0, -1, %s0 62; CHECK-NEXT: b.l.t (, %s10) 63 %res = xor i16 %a, 65535 64 ret i16 %res 65} 66 67define zeroext i16 @funci16z(i16 zeroext %a) { 68; CHECK-LABEL: funci16z: 69; CHECK: # %bb.0: 70; CHECK-NEXT: xor %s0, %s0, (52)0 71; CHECK-NEXT: b.l.t (, %s10) 72 %res = xor i16 4095, %a 73 ret i16 %res 74} 75 76define signext i32 @func32s(i32 signext %a, i32 signext %b) { 77; CHECK-LABEL: func32s: 78; CHECK: # %bb.0: 79; CHECK-NEXT: xor %s0, %s0, %s1 80; CHECK-NEXT: b.l.t (, %s10) 81 %res = xor i32 %a, %b 82 ret i32 %res 83} 84 85define zeroext i32 @func32z(i32 zeroext %a, i32 zeroext %b) { 86; CHECK-LABEL: func32z: 87; CHECK: # %bb.0: 88; CHECK-NEXT: xor %s0, %s0, %s1 89; CHECK-NEXT: b.l.t (, %s10) 90 %res = xor i32 %a, %b 91 ret i32 %res 92} 93 94define signext i32 @funci32s(i32 signext %a) { 95; CHECK-LABEL: funci32s: 96; CHECK: # %bb.0: 97; CHECK-NEXT: xor %s0, %s0, (36)0 98; CHECK-NEXT: b.l.t (, %s10) 99 %res = xor i32 %a, 268435455 100 ret i32 %res 101} 102 103define zeroext i32 @funci32z(i32 zeroext %a) { 104; CHECK-LABEL: funci32z: 105; CHECK: # %bb.0: 106; CHECK-NEXT: xor %s0, %s0, (36)0 107; CHECK-NEXT: b.l.t (, %s10) 108 %res = xor i32 %a, 268435455 109 ret i32 %res 110} 111 112define i32 @funci32_another(i32 %0) { 113; CHECK-LABEL: funci32_another: 114; CHECK: # %bb.0: 115; CHECK-NEXT: lea %s1, -2147483648 116; CHECK-NEXT: and %s1, %s1, (32)0 117; CHECK-NEXT: xor %s0, %s0, %s1 118; CHECK-NEXT: b.l.t (, %s10) 119 %2 = xor i32 %0, -2147483648 120 ret i32 %2 121} 122 123 124define i64 @func64(i64 %a, i64 %b) { 125; CHECK-LABEL: func64: 126; CHECK: # %bb.0: 127; CHECK-NEXT: xor %s0, %s0, %s1 128; CHECK-NEXT: b.l.t (, %s10) 129 %res = xor i64 %a, %b 130 ret i64 %res 131} 132 133define i64 @func64i(i64 %a) { 134; CHECK-LABEL: func64i: 135; CHECK: # %bb.0: 136; CHECK-NEXT: xor %s0, %s0, (24)0 137; CHECK-NEXT: b.l.t (, %s10) 138 %res = xor i64 %a, 1099511627775 139 ret i64 %res 140} 141 142define i128 @func128(i128 %a, i128 %b) { 143; CHECK-LABEL: func128: 144; CHECK: # %bb.0: 145; CHECK-NEXT: xor %s0, %s2, %s0 146; CHECK-NEXT: xor %s1, %s3, %s1 147; CHECK-NEXT: b.l.t (, %s10) 148 %res = xor i128 %b, %a 149 ret i128 %res 150} 151 152define i128 @funci128(i128 %a) { 153; CHECK-LABEL: funci128: 154; CHECK: # %bb.0: 155; CHECK-NEXT: xor %s0, 5, %s0 156; CHECK-NEXT: b.l.t (, %s10) 157 %res = xor i128 %a, 5 158 ret i128 %res 159} 160