|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
2 | | -; RUN: llc -o - %s --mcpu=cheriot --mtriple=riscv32cheriot-unknown-cheriotrtos -target-abi cheriot -mattr=+xcheri,+xcheriot,+xcheripurecap | FileCheck %s |
| 2 | +; RUN: llc -o - %s -mcpu=cheriot --mtriple=riscv32cheriot-unknown-cheriotrtos -target-abi cheriot -mattr=+xcheri,+xcheriot,+xcheripurecap | FileCheck %s |
3 | 3 |
|
4 | 4 | target datalayout = "e-m:e-p:32:32-i64:64-n32-S128-pf200:64:64:64:32-A200-P200-G200" |
5 | 5 | target triple = "riscv32cheriot-unknown-cheriotrtos" |
@@ -290,6 +290,77 @@ entry: |
290 | 290 | ret double %b |
291 | 291 | } |
292 | 292 |
|
| 293 | +; Function Attrs: nounwind uwtable |
| 294 | +define dso_local noundef double @float2double(float noundef %x) local_unnamed_addr addrspace(200) #0 { |
| 295 | +; CHECK-LABEL: float2double: |
| 296 | +; CHECK: # %bb.0: # %start |
| 297 | +; CHECK-NEXT: ct.cincoffset csp, csp, -16 |
| 298 | +; CHECK-NEXT: ct.csc cra, 8(csp) # 8-byte Folded Spill |
| 299 | +; CHECK-NEXT: .LBB16_1: # %start |
| 300 | +; CHECK-NEXT: # Label of block must be emitted |
| 301 | +; CHECK-NEXT: ct.auipcc ct2, %cheriot_compartment_hi(__library_import_libcalls___extendsfdf2) |
| 302 | +; CHECK-NEXT: ct.clc ct2, %cheriot_compartment_lo_i(.LBB16_1)(ct2) |
| 303 | +; CHECK-NEXT: ct.cjalr ct2 |
| 304 | +; CHECK-NEXT: ct.clc cra, 8(csp) # 8-byte Folded Reload |
| 305 | +; CHECK-NEXT: ct.cincoffset csp, csp, 16 |
| 306 | +; CHECK-NEXT: ct.cret |
| 307 | +start: |
| 308 | + %a = fpext float %x to double |
| 309 | + ret double %a |
| 310 | +} |
| 311 | + |
| 312 | +define dso_local noundef float @double2float(double noundef %x) local_unnamed_addr addrspace(200) #0 { |
| 313 | +; CHECK-LABEL: double2float: |
| 314 | +; CHECK: # %bb.0: # %start |
| 315 | +; CHECK-NEXT: ct.cincoffset csp, csp, -16 |
| 316 | +; CHECK-NEXT: ct.csc cra, 8(csp) # 8-byte Folded Spill |
| 317 | +; CHECK-NEXT: .LBB17_1: # %start |
| 318 | +; CHECK-NEXT: # Label of block must be emitted |
| 319 | +; CHECK-NEXT: ct.auipcc ct2, %cheriot_compartment_hi(__library_import_libcalls___truncdfsf2) |
| 320 | +; CHECK-NEXT: ct.clc ct2, %cheriot_compartment_lo_i(.LBB17_1)(ct2) |
| 321 | +; CHECK-NEXT: ct.cjalr ct2 |
| 322 | +; CHECK-NEXT: ct.clc cra, 8(csp) # 8-byte Folded Reload |
| 323 | +; CHECK-NEXT: ct.cincoffset csp, csp, 16 |
| 324 | +; CHECK-NEXT: ct.cret |
| 325 | +start: |
| 326 | + %a = fptrunc double %x to float |
| 327 | + ret float %a |
| 328 | +} |
| 329 | + |
| 330 | +define dso_local noundef double @select_on_int(double noundef %x, double noundef %y, i64 noundef %z) local_unnamed_addr addrspace(200) #0 { |
| 331 | +; CHECK-LABEL: select_on_int: |
| 332 | +; CHECK: # %bb.0: # %start |
| 333 | +; CHECK-NEXT: ct.cincoffset csp, csp, -16 |
| 334 | +; CHECK-NEXT: ct.csc cra, 8(csp) # 8-byte Folded Spill |
| 335 | +; CHECK-NEXT: ct.csc cs0, 0(csp) # 8-byte Folded Spill |
| 336 | +; CHECK-NEXT: slti s0, a3, 0 |
| 337 | +; CHECK-NEXT: .LBB18_4: # %start |
| 338 | +; CHECK-NEXT: # Label of block must be emitted |
| 339 | +; CHECK-NEXT: ct.auipcc ct2, %cheriot_compartment_hi(__library_import_libcalls___ltdf2) |
| 340 | +; CHECK-NEXT: ct.clc ct2, %cheriot_compartment_lo_i(.LBB18_4)(ct2) |
| 341 | +; CHECK-NEXT: ct.cjalr ct2 |
| 342 | +; CHECK-NEXT: slti a0, a0, 0 |
| 343 | +; CHECK-NEXT: bne s0, a0, .LBB18_2 |
| 344 | +; CHECK-NEXT: # %bb.1: # %start |
| 345 | +; CHECK-NEXT: ct.cmove ca0, cnull |
| 346 | +; CHECK-NEXT: j .LBB18_3 |
| 347 | +; CHECK-NEXT: .LBB18_2: |
| 348 | +; CHECK-NEXT: lui a0, 261888 |
| 349 | +; CHECK-NEXT: ct.csethigh ca0, cnull, a0 |
| 350 | +; CHECK-NEXT: .LBB18_3: # %start |
| 351 | +; CHECK-NEXT: ct.clc cra, 8(csp) # 8-byte Folded Reload |
| 352 | +; CHECK-NEXT: ct.clc cs0, 0(csp) # 8-byte Folded Reload |
| 353 | +; CHECK-NEXT: ct.cincoffset csp, csp, 16 |
| 354 | +; CHECK-NEXT: ct.cret |
| 355 | +start: |
| 356 | + %a = icmp slt i64 %z, 0 |
| 357 | + %b = fcmp olt double %x, %y |
| 358 | + %0 = xor i1 %a, %b |
| 359 | + %c = select i1 %0, double 1.0, double 0.0 |
| 360 | + ret double %c |
| 361 | +} |
| 362 | + |
| 363 | + |
293 | 364 | attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) "cheri-compartment"="qoi_decode" "no-builtin-longjmp" "no-builtin-printf" "no-builtin-setjmp" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cheriot" "target-features"="+32bit,+c,+e,+m,+relax,+unaligned-scalar-mem,+xcheri,+xcheriot,+zmmul,-a,-b,-d,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-i,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcheri-norvc,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zacas,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b" } |
294 | 365 | attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) "cheri-compartment"="qoi_decode" "no-builtin-longjmp" "no-builtin-printf" "no-builtin-setjmp" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cheriot" "target-features"="+32bit,+c,+e,+m,+relax,+unaligned-scalar-mem,+xcheri,+xcheriot,+zmmul,-a,-b,-d,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-i,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcheri-norvc,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zacas,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b" } |
295 | 366 | attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) "cheri-compartment"="qoi_decode" "no-builtin-longjmp" "no-builtin-printf" "no-builtin-setjmp" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cheriot" "target-features"="+32bit,+c,+e,+m,+relax,+unaligned-scalar-mem,+xcheri,+xcheriot,+zmmul,-a,-b,-d,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-i,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcheri-norvc,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zacas,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b" } |
|
0 commit comments