625 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=riscv64 -mattr=+v | FileCheck %s3 4define signext i32 @vsetvlmax_sext() {5; CHECK-LABEL: vsetvlmax_sext:6; CHECK: # %bb.0:7; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma8; CHECK-NEXT: ret9 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 1)10 %b = trunc i64 %a to i3211 ret i32 %b12}13 14define zeroext i32 @vsetvlmax_zext() {15; CHECK-LABEL: vsetvlmax_zext:16; CHECK: # %bb.0:17; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma18; CHECK-NEXT: ret19 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 1)20 %b = trunc i64 %a to i3221 ret i32 %b22}23 24define i64 @vsetvlmax_e8m1_and14bits() {25; CHECK-LABEL: vsetvlmax_e8m1_and14bits:26; CHECK: # %bb.0:27; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma28; CHECK-NEXT: ret29 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 0)30 %b = and i64 %a, 1638331 ret i64 %b32}33 34define i64 @vsetvlmax_e8m1_and13bits() {35; CHECK-LABEL: vsetvlmax_e8m1_and13bits:36; CHECK: # %bb.0:37; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma38; CHECK-NEXT: slli a0, a0, 5139; CHECK-NEXT: srli a0, a0, 5140; CHECK-NEXT: ret41 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 0)42 %b = and i64 %a, 819143 ret i64 %b44}45 46define i64 @vsetvlmax_e8m2_and15bits() {47; CHECK-LABEL: vsetvlmax_e8m2_and15bits:48; CHECK: # %bb.0:49; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma50; CHECK-NEXT: ret51 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 1)52 %b = and i64 %a, 3276753 ret i64 %b54}55 56define i64 @vsetvlmax_e8m2_and14bits() {57; CHECK-LABEL: vsetvlmax_e8m2_and14bits:58; CHECK: # %bb.0:59; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma60; CHECK-NEXT: slli a0, a0, 5061; CHECK-NEXT: srli a0, a0, 5062; CHECK-NEXT: ret63 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 1)64 %b = and i64 %a, 1638365 ret i64 %b66}67 68define i64 @vsetvlmax_e8m4_and16bits() {69; CHECK-LABEL: vsetvlmax_e8m4_and16bits:70; CHECK: # %bb.0:71; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma72; CHECK-NEXT: ret73 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 2)74 %b = and i64 %a, 6553575 ret i64 %b76}77 78define i64 @vsetvlmax_e8m4_and15bits() {79; CHECK-LABEL: vsetvlmax_e8m4_and15bits:80; CHECK: # %bb.0:81; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma82; CHECK-NEXT: slli a0, a0, 4983; CHECK-NEXT: srli a0, a0, 4984; CHECK-NEXT: ret85 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 2)86 %b = and i64 %a, 3276787 ret i64 %b88}89 90define i64 @vsetvlmax_e8m8_and17bits() {91; CHECK-LABEL: vsetvlmax_e8m8_and17bits:92; CHECK: # %bb.0:93; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma94; CHECK-NEXT: ret95 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 3)96 %b = and i64 %a, 13107197 ret i64 %b98}99 100define i64 @vsetvlmax_e8m8_and16bits() {101; CHECK-LABEL: vsetvlmax_e8m8_and16bits:102; CHECK: # %bb.0:103; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma104; CHECK-NEXT: slli a0, a0, 48105; CHECK-NEXT: srli a0, a0, 48106; CHECK-NEXT: ret107 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 3)108 %b = and i64 %a, 65535109 ret i64 %b110}111 112define i64 @vsetvlmax_e8mf2_and11bits() {113; CHECK-LABEL: vsetvlmax_e8mf2_and11bits:114; CHECK: # %bb.0:115; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma116; CHECK-NEXT: ret117 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 5)118 %b = and i64 %a, 2047119 ret i64 %b120}121 122define i64 @vsetvlmax_e8mf2_and10bits() {123; CHECK-LABEL: vsetvlmax_e8mf2_and10bits:124; CHECK: # %bb.0:125; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma126; CHECK-NEXT: andi a0, a0, 1023127; CHECK-NEXT: ret128 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 5)129 %b = and i64 %a, 1023130 ret i64 %b131}132 133define i64 @vsetvlmax_e8mf4_and12bits() {134; CHECK-LABEL: vsetvlmax_e8mf4_and12bits:135; CHECK: # %bb.0:136; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma137; CHECK-NEXT: ret138 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 6)139 %b = and i64 %a, 4095140 ret i64 %b141}142 143define i64 @vsetvlmax_e8mf4_and11bits() {144; CHECK-LABEL: vsetvlmax_e8mf4_and11bits:145; CHECK: # %bb.0:146; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma147; CHECK-NEXT: andi a0, a0, 2047148; CHECK-NEXT: ret149 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 6)150 %b = and i64 %a, 2047151 ret i64 %b152}153 154define i64 @vsetvlmax_e8mf8_and13bits() {155; CHECK-LABEL: vsetvlmax_e8mf8_and13bits:156; CHECK: # %bb.0:157; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma158; CHECK-NEXT: ret159 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 7)160 %b = and i64 %a, 8191161 ret i64 %b162}163 164define i64 @vsetvlmax_e8mf8_and12bits() {165; CHECK-LABEL: vsetvlmax_e8mf8_and12bits:166; CHECK: # %bb.0:167; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma168; CHECK-NEXT: slli a0, a0, 52169; CHECK-NEXT: srli a0, a0, 52170; CHECK-NEXT: ret171 %a = call i64 @llvm.riscv.vsetvlimax(i64 0, i64 7)172 %b = and i64 %a, 4095173 ret i64 %b174}175 176define i64 @vsetvlmax_e16m1_and13bits() {177; CHECK-LABEL: vsetvlmax_e16m1_and13bits:178; CHECK: # %bb.0:179; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma180; CHECK-NEXT: ret181 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 0)182 %b = and i64 %a, 8191183 ret i64 %b184}185 186define i64 @vsetvlmax_e16m1_and12bits() {187; CHECK-LABEL: vsetvlmax_e16m1_and12bits:188; CHECK: # %bb.0:189; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma190; CHECK-NEXT: slli a0, a0, 52191; CHECK-NEXT: srli a0, a0, 52192; CHECK-NEXT: ret193 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 0)194 %b = and i64 %a, 4095195 ret i64 %b196}197 198define i64 @vsetvlmax_e16m2_and14bits() {199; CHECK-LABEL: vsetvlmax_e16m2_and14bits:200; CHECK: # %bb.0:201; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma202; CHECK-NEXT: ret203 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 1)204 %b = and i64 %a, 16383205 ret i64 %b206}207 208define i64 @vsetvlmax_e16m2_and13bits() {209; CHECK-LABEL: vsetvlmax_e16m2_and13bits:210; CHECK: # %bb.0:211; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma212; CHECK-NEXT: slli a0, a0, 51213; CHECK-NEXT: srli a0, a0, 51214; CHECK-NEXT: ret215 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 1)216 %b = and i64 %a, 8191217 ret i64 %b218}219 220define i64 @vsetvlmax_e16m4_and15bits() {221; CHECK-LABEL: vsetvlmax_e16m4_and15bits:222; CHECK: # %bb.0:223; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma224; CHECK-NEXT: ret225 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 2)226 %b = and i64 %a, 32767227 ret i64 %b228}229 230define i64 @vsetvlmax_e16m4_and14bits() {231; CHECK-LABEL: vsetvlmax_e16m4_and14bits:232; CHECK: # %bb.0:233; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma234; CHECK-NEXT: slli a0, a0, 50235; CHECK-NEXT: srli a0, a0, 50236; CHECK-NEXT: ret237 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 2)238 %b = and i64 %a, 16383239 ret i64 %b240}241 242define i64 @vsetvlmax_e16m8_and16bits() {243; CHECK-LABEL: vsetvlmax_e16m8_and16bits:244; CHECK: # %bb.0:245; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma246; CHECK-NEXT: ret247 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 3)248 %b = and i64 %a, 65535249 ret i64 %b250}251 252define i64 @vsetvlmax_e16m8_and15bits() {253; CHECK-LABEL: vsetvlmax_e16m8_and15bits:254; CHECK: # %bb.0:255; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma256; CHECK-NEXT: slli a0, a0, 49257; CHECK-NEXT: srli a0, a0, 49258; CHECK-NEXT: ret259 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 3)260 %b = and i64 %a, 32767261 ret i64 %b262}263 264define i64 @vsetvlmax_e16mf2_and10bits() {265; CHECK-LABEL: vsetvlmax_e16mf2_and10bits:266; CHECK: # %bb.0:267; CHECK-NEXT: vsetvli a0, zero, e16, mf8, ta, ma268; CHECK-NEXT: ret269 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 5)270 %b = and i64 %a, 1023271 ret i64 %b272}273 274define i64 @vsetvlmax_e16mf2_and9bits() {275; CHECK-LABEL: vsetvlmax_e16mf2_and9bits:276; CHECK: # %bb.0:277; CHECK-NEXT: vsetvli a0, zero, e16, mf8, ta, ma278; CHECK-NEXT: andi a0, a0, 511279; CHECK-NEXT: ret280 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 5)281 %b = and i64 %a, 511282 ret i64 %b283}284 285define i64 @vsetvlmax_e16mf4_and11bits() {286; CHECK-LABEL: vsetvlmax_e16mf4_and11bits:287; CHECK: # %bb.0:288; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma289; CHECK-NEXT: ret290 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 6)291 %b = and i64 %a, 2047292 ret i64 %b293}294 295define i64 @vsetvlmax_e16mf4_and10bits() {296; CHECK-LABEL: vsetvlmax_e16mf4_and10bits:297; CHECK: # %bb.0:298; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma299; CHECK-NEXT: andi a0, a0, 1023300; CHECK-NEXT: ret301 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 6)302 %b = and i64 %a, 1023303 ret i64 %b304}305 306define i64 @vsetvlmax_e16mf8_and12bits() {307; CHECK-LABEL: vsetvlmax_e16mf8_and12bits:308; CHECK: # %bb.0:309; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma310; CHECK-NEXT: ret311 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 7)312 %b = and i64 %a, 4095313 ret i64 %b314}315 316define i64 @vsetvlmax_e16mf8_and11bits() {317; CHECK-LABEL: vsetvlmax_e16mf8_and11bits:318; CHECK: # %bb.0:319; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma320; CHECK-NEXT: andi a0, a0, 2047321; CHECK-NEXT: ret322 %a = call i64 @llvm.riscv.vsetvlimax(i64 1, i64 7)323 %b = and i64 %a, 2047324 ret i64 %b325}326 327define i64 @vsetvlmax_e32m1_and12bits() {328; CHECK-LABEL: vsetvlmax_e32m1_and12bits:329; CHECK: # %bb.0:330; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma331; CHECK-NEXT: ret332 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 0)333 %b = and i64 %a, 4095334 ret i64 %b335}336 337define i64 @vsetvlmax_e32m1_and11bits() {338; CHECK-LABEL: vsetvlmax_e32m1_and11bits:339; CHECK: # %bb.0:340; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma341; CHECK-NEXT: andi a0, a0, 2047342; CHECK-NEXT: ret343 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 0)344 %b = and i64 %a, 2047345 ret i64 %b346}347 348define i64 @vsetvlmax_e32m2_and13bits() {349; CHECK-LABEL: vsetvlmax_e32m2_and13bits:350; CHECK: # %bb.0:351; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma352; CHECK-NEXT: ret353 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 1)354 %b = and i64 %a, 8191355 ret i64 %b356}357 358define i64 @vsetvlmax_e32m2_and12bits() {359; CHECK-LABEL: vsetvlmax_e32m2_and12bits:360; CHECK: # %bb.0:361; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma362; CHECK-NEXT: slli a0, a0, 52363; CHECK-NEXT: srli a0, a0, 52364; CHECK-NEXT: ret365 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 1)366 %b = and i64 %a, 4095367 ret i64 %b368}369 370define i64 @vsetvlmax_e32m4_and14bits() {371; CHECK-LABEL: vsetvlmax_e32m4_and14bits:372; CHECK: # %bb.0:373; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma374; CHECK-NEXT: ret375 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 2)376 %b = and i64 %a, 16383377 ret i64 %b378}379 380define i64 @vsetvlmax_e32m4_and13bits() {381; CHECK-LABEL: vsetvlmax_e32m4_and13bits:382; CHECK: # %bb.0:383; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma384; CHECK-NEXT: slli a0, a0, 51385; CHECK-NEXT: srli a0, a0, 51386; CHECK-NEXT: ret387 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 2)388 %b = and i64 %a, 8191389 ret i64 %b390}391 392define i64 @vsetvlmax_e32m8_and15bits() {393; CHECK-LABEL: vsetvlmax_e32m8_and15bits:394; CHECK: # %bb.0:395; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma396; CHECK-NEXT: ret397 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 3)398 %b = and i64 %a, 32767399 ret i64 %b400}401 402define i64 @vsetvlmax_e32m8_and14bits() {403; CHECK-LABEL: vsetvlmax_e32m8_and14bits:404; CHECK: # %bb.0:405; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma406; CHECK-NEXT: slli a0, a0, 50407; CHECK-NEXT: srli a0, a0, 50408; CHECK-NEXT: ret409 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 3)410 %b = and i64 %a, 16383411 ret i64 %b412}413 414define i64 @vsetvlmax_e32mf2_and9bits() {415; CHECK-LABEL: vsetvlmax_e32mf2_and9bits:416; CHECK: # %bb.0:417; CHECK-NEXT: vsetvli a0, zero, e32, mf8, ta, ma418; CHECK-NEXT: ret419 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 5)420 %b = and i64 %a, 511421 ret i64 %b422}423 424define i64 @vsetvlmax_e32mf2_and8bits() {425; CHECK-LABEL: vsetvlmax_e32mf2_and8bits:426; CHECK: # %bb.0:427; CHECK-NEXT: vsetvli a0, zero, e32, mf8, ta, ma428; CHECK-NEXT: zext.b a0, a0429; CHECK-NEXT: ret430 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 5)431 %b = and i64 %a, 255432 ret i64 %b433}434 435define i64 @vsetvlmax_e32mf4_and10bits() {436; CHECK-LABEL: vsetvlmax_e32mf4_and10bits:437; CHECK: # %bb.0:438; CHECK-NEXT: vsetvli a0, zero, e32, mf4, ta, ma439; CHECK-NEXT: ret440 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 6)441 %b = and i64 %a, 1023442 ret i64 %b443}444 445define i64 @vsetvlmax_e32mf4_and9bits() {446; CHECK-LABEL: vsetvlmax_e32mf4_and9bits:447; CHECK: # %bb.0:448; CHECK-NEXT: vsetvli a0, zero, e32, mf4, ta, ma449; CHECK-NEXT: andi a0, a0, 511450; CHECK-NEXT: ret451 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 6)452 %b = and i64 %a, 511453 ret i64 %b454}455 456define i64 @vsetvlmax_e32mf8_and11bits() {457; CHECK-LABEL: vsetvlmax_e32mf8_and11bits:458; CHECK: # %bb.0:459; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma460; CHECK-NEXT: ret461 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 7)462 %b = and i64 %a, 2047463 ret i64 %b464}465 466define i64 @vsetvlmax_e32mf8_and10bits() {467; CHECK-LABEL: vsetvlmax_e32mf8_and10bits:468; CHECK: # %bb.0:469; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma470; CHECK-NEXT: andi a0, a0, 1023471; CHECK-NEXT: ret472 %a = call i64 @llvm.riscv.vsetvlimax(i64 2, i64 7)473 %b = and i64 %a, 1023474 ret i64 %b475}476 477define i64 @vsetvlmax_e64m1_and11bits() {478; CHECK-LABEL: vsetvlmax_e64m1_and11bits:479; CHECK: # %bb.0:480; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma481; CHECK-NEXT: ret482 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 0)483 %b = and i64 %a, 2047484 ret i64 %b485}486 487define i64 @vsetvlmax_e64m1_and10bits() {488; CHECK-LABEL: vsetvlmax_e64m1_and10bits:489; CHECK: # %bb.0:490; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma491; CHECK-NEXT: andi a0, a0, 1023492; CHECK-NEXT: ret493 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 0)494 %b = and i64 %a, 1023495 ret i64 %b496}497 498define i64 @vsetvlmax_e64m2_and12bits() {499; CHECK-LABEL: vsetvlmax_e64m2_and12bits:500; CHECK: # %bb.0:501; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma502; CHECK-NEXT: ret503 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 1)504 %b = and i64 %a, 4095505 ret i64 %b506}507 508define i64 @vsetvlmax_e64m2_and11bits() {509; CHECK-LABEL: vsetvlmax_e64m2_and11bits:510; CHECK: # %bb.0:511; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma512; CHECK-NEXT: andi a0, a0, 2047513; CHECK-NEXT: ret514 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 1)515 %b = and i64 %a, 2047516 ret i64 %b517}518 519define i64 @vsetvlmax_e64m4_and13bits() {520; CHECK-LABEL: vsetvlmax_e64m4_and13bits:521; CHECK: # %bb.0:522; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma523; CHECK-NEXT: ret524 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 2)525 %b = and i64 %a, 8191526 ret i64 %b527}528 529define i64 @vsetvlmax_e64m4_and12bits() {530; CHECK-LABEL: vsetvlmax_e64m4_and12bits:531; CHECK: # %bb.0:532; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma533; CHECK-NEXT: slli a0, a0, 52534; CHECK-NEXT: srli a0, a0, 52535; CHECK-NEXT: ret536 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 2)537 %b = and i64 %a, 4095538 ret i64 %b539}540 541define i64 @vsetvlmax_e64m8_and14bits() {542; CHECK-LABEL: vsetvlmax_e64m8_and14bits:543; CHECK: # %bb.0:544; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma545; CHECK-NEXT: ret546 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 3)547 %b = and i64 %a, 16383548 ret i64 %b549}550 551define i64 @vsetvlmax_e64m8_and13bits() {552; CHECK-LABEL: vsetvlmax_e64m8_and13bits:553; CHECK: # %bb.0:554; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma555; CHECK-NEXT: slli a0, a0, 51556; CHECK-NEXT: srli a0, a0, 51557; CHECK-NEXT: ret558 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 3)559 %b = and i64 %a, 8191560 ret i64 %b561}562 563define i64 @vsetvlmax_e64mf2_and8bits() {564; CHECK-LABEL: vsetvlmax_e64mf2_and8bits:565; CHECK: # %bb.0:566; CHECK-NEXT: vsetvli a0, zero, e64, mf8, ta, ma567; CHECK-NEXT: ret568 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 5)569 %b = and i64 %a, 255570 ret i64 %b571}572 573define i64 @vsetvlmax_e64mf2_and7bits() {574; CHECK-LABEL: vsetvlmax_e64mf2_and7bits:575; CHECK: # %bb.0:576; CHECK-NEXT: vsetvli a0, zero, e64, mf8, ta, ma577; CHECK-NEXT: andi a0, a0, 127578; CHECK-NEXT: ret579 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 5)580 %b = and i64 %a, 127581 ret i64 %b582}583 584define i64 @vsetvlmax_e64mf4_and9bits() {585; CHECK-LABEL: vsetvlmax_e64mf4_and9bits:586; CHECK: # %bb.0:587; CHECK-NEXT: vsetvli a0, zero, e64, mf4, ta, ma588; CHECK-NEXT: ret589 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 6)590 %b = and i64 %a, 511591 ret i64 %b592}593 594define i64 @vsetvlmax_e64mf4_and8bits() {595; CHECK-LABEL: vsetvlmax_e64mf4_and8bits:596; CHECK: # %bb.0:597; CHECK-NEXT: vsetvli a0, zero, e64, mf4, ta, ma598; CHECK-NEXT: zext.b a0, a0599; CHECK-NEXT: ret600 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 6)601 %b = and i64 %a, 255602 ret i64 %b603}604 605define i64 @vsetvlmax_e64mf8_and10bits() {606; CHECK-LABEL: vsetvlmax_e64mf8_and10bits:607; CHECK: # %bb.0:608; CHECK-NEXT: vsetvli a0, zero, e64, mf2, ta, ma609; CHECK-NEXT: ret610 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 7)611 %b = and i64 %a, 1023612 ret i64 %b613}614 615define i64 @vsetvlmax_e64mf8_and9bits() {616; CHECK-LABEL: vsetvlmax_e64mf8_and9bits:617; CHECK: # %bb.0:618; CHECK-NEXT: vsetvli a0, zero, e64, mf2, ta, ma619; CHECK-NEXT: andi a0, a0, 511620; CHECK-NEXT: ret621 %a = call i64 @llvm.riscv.vsetvlimax(i64 3, i64 7)622 %b = and i64 %a, 511623 ret i64 %b624}625