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: or %s0, %s0, %s1 7; CHECK-NEXT: b.l.t (, %s10) 8 %res = or 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: or %s0, %s1, %s0 16; CHECK-NEXT: b.l.t (, %s10) 17 %res = or 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: or %s0, 5, %s0 25; CHECK-NEXT: b.l.t (, %s10) 26 %res = or 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: or %s0, %s0, %s1 35; CHECK-NEXT: b.l.t (, %s10) 36 %res = or 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: or %s0, %s0, %s1 44; CHECK-NEXT: b.l.t (, %s10) 45 %res = or 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: or %s0, %s1, %s0 53; CHECK-NEXT: b.l.t (, %s10) 54 %res = or 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: or %s0, -1, (0)1 62; CHECK-NEXT: b.l.t (, %s10) 63 %res = or 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: or %s0, %s0, (52)0 71; CHECK-NEXT: b.l.t (, %s10) 72 %res = or 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: or %s0, %s0, %s1 80; CHECK-NEXT: b.l.t (, %s10) 81 %res = or 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: or %s0, %s0, %s1 89; CHECK-NEXT: b.l.t (, %s10) 90 %res = or 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: or %s0, %s0, (36)0 98; CHECK-NEXT: b.l.t (, %s10) 99 %res = or 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: or %s0, %s0, (36)0 107; CHECK-NEXT: b.l.t (, %s10) 108 %res = or i32 %a, 268435455 109 ret i32 %res 110} 111 112define i64 @func64(i64 %a, i64 %b) { 113; CHECK-LABEL: func64: 114; CHECK: # %bb.0: 115; CHECK-NEXT: or %s0, %s0, %s1 116; CHECK-NEXT: b.l.t (, %s10) 117 %res = or i64 %a, %b 118 ret i64 %res 119} 120 121define i64 @func64i(i64 %a) { 122; CHECK-LABEL: func64i: 123; CHECK: # %bb.0: 124; CHECK-NEXT: or %s0, %s0, (24)0 125; CHECK-NEXT: b.l.t (, %s10) 126 %res = or i64 %a, 1099511627775 127 ret i64 %res 128} 129 130define i128 @func128(i128 %a, i128 %b) { 131; CHECK-LABEL: func128: 132; CHECK: # %bb.0: 133; CHECK-NEXT: or %s0, %s2, %s0 134; CHECK-NEXT: or %s1, %s3, %s1 135; CHECK-NEXT: b.l.t (, %s10) 136 %res = or i128 %b, %a 137 ret i128 %res 138} 139 140define i128 @funci128(i128 %a) { 141; CHECK-LABEL: funci128: 142; CHECK: # %bb.0: 143; CHECK-NEXT: or %s0, 5, %s0 144; CHECK-NEXT: b.l.t (, %s10) 145 %res = or i128 %a, 5 146 ret i128 %res 147} 148