1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s 2 3define i8 @p0i8() { 4; CHECK-LABEL: p0i8: 5; CHECK: # %bb.0: 6; CHECK-NEXT: or %s0, 0, (0)1 7; CHECK-NEXT: b.l.t (, %s10) 8 ret i8 0 9} 10 11define signext i8 @p0si8() { 12; CHECK-LABEL: p0si8: 13; CHECK: # %bb.0: 14; CHECK-NEXT: or %s0, 0, (0)1 15; CHECK-NEXT: b.l.t (, %s10) 16 ret i8 0 17} 18 19define zeroext i8 @p0zi8() { 20; CHECK-LABEL: p0zi8: 21; CHECK: # %bb.0: 22; CHECK-NEXT: or %s0, 0, (0)1 23; CHECK-NEXT: b.l.t (, %s10) 24 ret i8 0 25} 26 27define i8 @p128i8() { 28; CHECK-LABEL: p128i8: 29; CHECK: # %bb.0: 30; CHECK-NEXT: lea %s0, 128 31; CHECK-NEXT: b.l.t (, %s10) 32 ret i8 128 33} 34 35define signext i8 @p128si8() { 36; CHECK-LABEL: p128si8: 37; CHECK: # %bb.0: 38; CHECK-NEXT: lea %s0, -128 39; CHECK-NEXT: b.l.t (, %s10) 40 ret i8 128 41} 42 43define zeroext i8 @p128zi8() { 44; CHECK-LABEL: p128zi8: 45; CHECK: # %bb.0: 46; CHECK-NEXT: lea %s0, 128 47; CHECK-NEXT: b.l.t (, %s10) 48 ret i8 128 49} 50 51define i8 @p256i8() { 52; CHECK-LABEL: p256i8: 53; CHECK: # %bb.0: 54; CHECK-NEXT: or %s0, 0, (0)1 55; CHECK-NEXT: b.l.t (, %s10) 56 ret i8 256 57} 58 59define signext i8 @p256si8() { 60; CHECK-LABEL: p256si8: 61; CHECK: # %bb.0: 62; CHECK-NEXT: or %s0, 0, (0)1 63; CHECK-NEXT: b.l.t (, %s10) 64 ret i8 256 65} 66 67define zeroext i8 @p256zi8() { 68; CHECK-LABEL: p256zi8: 69; CHECK: # %bb.0: 70; CHECK-NEXT: or %s0, 0, (0)1 71; CHECK-NEXT: b.l.t (, %s10) 72 ret i8 256 73} 74 75define i16 @p0i16() { 76; CHECK-LABEL: p0i16: 77; CHECK: # %bb.0: 78; CHECK-NEXT: or %s0, 0, (0)1 79; CHECK-NEXT: b.l.t (, %s10) 80 ret i16 0 81} 82 83define signext i16 @p0si16() { 84; CHECK-LABEL: p0si16: 85; CHECK: # %bb.0: 86; CHECK-NEXT: or %s0, 0, (0)1 87; CHECK-NEXT: b.l.t (, %s10) 88 ret i16 0 89} 90 91define zeroext i16 @p0zi16() { 92; CHECK-LABEL: p0zi16: 93; CHECK: # %bb.0: 94; CHECK-NEXT: or %s0, 0, (0)1 95; CHECK-NEXT: b.l.t (, %s10) 96 ret i16 0 97} 98 99define i32 @p0i32() { 100; CHECK-LABEL: p0i32: 101; CHECK: # %bb.0: 102; CHECK-NEXT: or %s0, 0, (0)1 103; CHECK-NEXT: b.l.t (, %s10) 104 ret i32 0 105} 106 107define signext i32 @p0si32() { 108; CHECK-LABEL: p0si32: 109; CHECK: # %bb.0: 110; CHECK-NEXT: or %s0, 0, (0)1 111; CHECK-NEXT: b.l.t (, %s10) 112 ret i32 0 113} 114 115define zeroext i32 @p0zi32() { 116; CHECK-LABEL: p0zi32: 117; CHECK: # %bb.0: 118; CHECK-NEXT: or %s0, 0, (0)1 119; CHECK-NEXT: b.l.t (, %s10) 120 ret i32 0 121} 122 123define i32 @p128i32() { 124; CHECK-LABEL: p128i32: 125; CHECK: # %bb.0: 126; CHECK-NEXT: lea %s0, 128 127; CHECK-NEXT: b.l.t (, %s10) 128 ret i32 128 129} 130 131define signext i32 @p128si32() { 132; CHECK-LABEL: p128si32: 133; CHECK: # %bb.0: 134; CHECK-NEXT: lea %s0, 128 135; CHECK-NEXT: b.l.t (, %s10) 136 ret i32 128 137} 138 139define zeroext i32 @p128zi32() { 140; CHECK-LABEL: p128zi32: 141; CHECK: # %bb.0: 142; CHECK-NEXT: lea %s0, 128 143; CHECK-NEXT: b.l.t (, %s10) 144 ret i32 128 145} 146 147define i64 @p0i64() { 148; CHECK-LABEL: p0i64: 149; CHECK: # %bb.0: 150; CHECK-NEXT: or %s0, 0, (0)1 151; CHECK-NEXT: b.l.t (, %s10) 152 ret i64 0 153} 154 155define signext i64 @p0si64() { 156; CHECK-LABEL: p0si64: 157; CHECK: # %bb.0: 158; CHECK-NEXT: or %s0, 0, (0)1 159; CHECK-NEXT: b.l.t (, %s10) 160 ret i64 0 161} 162 163define zeroext i64 @p0zi64() { 164; CHECK-LABEL: p0zi64: 165; CHECK: # %bb.0: 166; CHECK-NEXT: or %s0, 0, (0)1 167; CHECK-NEXT: b.l.t (, %s10) 168 ret i64 0 169} 170 171define i64 @p128i64() { 172; CHECK-LABEL: p128i64: 173; CHECK: # %bb.0: 174; CHECK-NEXT: lea %s0, 128 175; CHECK-NEXT: b.l.t (, %s10) 176 ret i64 128 177} 178 179define signext i64 @p128si64() { 180; CHECK-LABEL: p128si64: 181; CHECK: # %bb.0: 182; CHECK-NEXT: lea %s0, 128 183; CHECK-NEXT: b.l.t (, %s10) 184 ret i64 128 185} 186 187define zeroext i64 @p128zi64() { 188; CHECK-LABEL: p128zi64: 189; CHECK: # %bb.0: 190; CHECK-NEXT: lea %s0, 128 191; CHECK-NEXT: b.l.t (, %s10) 192 ret i64 128 193} 194 195define i64 @p2264924160i64() { 196; CHECK-LABEL: p2264924160i64: 197; CHECK: # %bb.0: 198; CHECK-NEXT: lea %s0, -2030043136 199; CHECK-NEXT: and %s0, %s0, (32)0 200; CHECK-NEXT: b.l.t (, %s10) 201 ret i64 2264924160 202} 203 204define signext i64 @p2264924160si64() { 205; CHECK-LABEL: p2264924160si64: 206; CHECK: # %bb.0: 207; CHECK-NEXT: lea %s0, -2030043136 208; CHECK-NEXT: and %s0, %s0, (32)0 209; CHECK-NEXT: b.l.t (, %s10) 210 ret i64 2264924160 211} 212 213define zeroext i64 @p2264924160zi64() { 214; CHECK-LABEL: p2264924160zi64: 215; CHECK: # %bb.0: 216; CHECK-NEXT: lea %s0, -2030043136 217; CHECK-NEXT: and %s0, %s0, (32)0 218; CHECK-NEXT: b.l.t (, %s10) 219 ret i64 2264924160 220} 221 222define i64 @p2147483647i64() { 223; CHECK-LABEL: p2147483647i64: 224; CHECK: # %bb.0: 225; CHECK-NEXT: lea %s0, 2147483647 226; CHECK-NEXT: b.l.t (, %s10) 227 ret i64 2147483647 228} 229 230define signext i64 @p2147483647si64() { 231; CHECK-LABEL: p2147483647si64: 232; CHECK: # %bb.0: 233; CHECK-NEXT: lea %s0, 2147483647 234; CHECK-NEXT: b.l.t (, %s10) 235 ret i64 2147483647 236} 237 238define zeroext i64 @p2147483647zi64() { 239; CHECK-LABEL: p2147483647zi64: 240; CHECK: # %bb.0: 241; CHECK-NEXT: lea %s0, 2147483647 242; CHECK-NEXT: b.l.t (, %s10) 243 ret i64 2147483647 244} 245 246define i64 @p15032385535i64() { 247; CHECK-LABEL: p15032385535i64: 248; CHECK: # %bb.0: 249; CHECK-NEXT: lea %s0, 2147483647 250; CHECK-NEXT: lea.sl %s0, 3(, %s0) 251; CHECK-NEXT: b.l.t (, %s10) 252 ret i64 15032385535 253} 254 255define signext i64 @p15032385535si64() { 256; CHECK-LABEL: p15032385535si64: 257; CHECK: # %bb.0: 258; CHECK-NEXT: lea %s0, 2147483647 259; CHECK-NEXT: lea.sl %s0, 3(, %s0) 260; CHECK-NEXT: b.l.t (, %s10) 261 ret i64 15032385535 262} 263 264define zeroext i64 @p15032385535zi64() { 265; CHECK-LABEL: p15032385535zi64: 266; CHECK: # %bb.0: 267; CHECK-NEXT: lea %s0, 2147483647 268; CHECK-NEXT: lea.sl %s0, 3(, %s0) 269; CHECK-NEXT: b.l.t (, %s10) 270 ret i64 15032385535 271} 272 273define i64 @p15032385536i64() { 274; CHECK-LABEL: p15032385536i64: 275; CHECK: # %bb.0: 276; CHECK-NEXT: lea %s0, -2147483648 277; CHECK-NEXT: and %s0, %s0, (32)0 278; CHECK-NEXT: lea.sl %s0, 3(, %s0) 279; CHECK-NEXT: b.l.t (, %s10) 280 ret i64 15032385536 281} 282 283define signext i64 @p15032385536si64() { 284; CHECK-LABEL: p15032385536si64: 285; CHECK: # %bb.0: 286; CHECK-NEXT: lea %s0, -2147483648 287; CHECK-NEXT: and %s0, %s0, (32)0 288; CHECK-NEXT: lea.sl %s0, 3(, %s0) 289; CHECK-NEXT: b.l.t (, %s10) 290 ret i64 15032385536 291} 292 293define zeroext i64 @p15032385536zi64() { 294; CHECK-LABEL: p15032385536zi64: 295; CHECK: # %bb.0: 296; CHECK-NEXT: lea %s0, -2147483648 297; CHECK-NEXT: and %s0, %s0, (32)0 298; CHECK-NEXT: lea.sl %s0, 3(, %s0) 299; CHECK-NEXT: b.l.t (, %s10) 300 ret i64 15032385536 301} 302 303define float @m5f32() { 304; CHECK-LABEL: m5f32: 305; CHECK: # %bb.0: 306; CHECK-NEXT: lea.sl %s0, -1063256064 307; CHECK-NEXT: b.l.t (, %s10) 308 ret float -5.000000e+00 309} 310 311define double @m5f64() { 312; CHECK-LABEL: m5f64: 313; CHECK: # %bb.0: 314; CHECK-NEXT: lea.sl %s0, -1072431104 315; CHECK-NEXT: b.l.t (, %s10) 316 ret double -5.000000e+00 317} 318 319define float @p2p3f32() { 320; CHECK-LABEL: p2p3f32: 321; CHECK: # %bb.0: 322; CHECK-NEXT: lea.sl %s0, 1075000115 323; CHECK-NEXT: b.l.t (, %s10) 324 ret float 0x4002666660000000 ; 2.3 325} 326 327define double @p2p3f64() { 328; CHECK-LABEL: p2p3f64: 329; CHECK: # %bb.0: 330; CHECK-NEXT: lea %s0, 1717986918 331; CHECK-NEXT: lea.sl %s0, 1073899110(, %s0) 332; CHECK-NEXT: b.l.t (, %s10) 333 ret double 2.3 334} 335 336define float @p128p3f32() { 337; CHECK-LABEL: p128p3f32: 338; CHECK: # %bb.0: 339; CHECK-NEXT: lea.sl %s0, 1124093133 340; CHECK-NEXT: b.l.t (, %s10) 341 ret float 0x40600999A0000000 ; 128.3 342} 343 344define double @p128p3f64() { 345; CHECK-LABEL: p128p3f64: 346; CHECK: # %bb.0: 347; CHECK-NEXT: lea %s0, -1717986918 348; CHECK-NEXT: and %s0, %s0, (32)0 349; CHECK-NEXT: lea.sl %s0, 1080035737(, %s0) 350; CHECK-NEXT: b.l.t (, %s10) 351 ret double 128.3 352} 353