brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.0 KiB · c642014 Raw
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