Tree @a813b38 (Download .tar.gz)
- ..
- Large
- addr-01.ll
- addr-02.ll
- addr-03.ll
- alias-01.ll
- alloca-01.ll
- alloca-02.ll
- alloca-03.ll
- alloca-04.ll
- and-01.ll
- and-02.ll
- and-03.ll
- and-04.ll
- and-05.ll
- and-06.ll
- and-07.ll
- and-08.ll
- and-xor-01.ll
- anyregcc-novec.ll
- anyregcc-vec.ll
- anyregcc.ll
- args-01.ll
- args-02.ll
- args-03.ll
- args-04.ll
- args-05.ll
- args-06.ll
- args-07.ll
- args-08.ll
- args-09.ll
- args-10.ll
- asm-01.ll
- asm-02.ll
- asm-03.ll
- asm-04.ll
- asm-05.ll
- asm-06.ll
- asm-07.ll
- asm-08.ll
- asm-09.ll
- asm-10.ll
- asm-11.ll
- asm-12.ll
- asm-13.ll
- asm-14.ll
- asm-15.ll
- asm-16.ll
- asm-17.ll
- asm-18.ll
- asm-19.ll
- atomic-fence-01.ll
- atomic-fence-02.ll
- atomic-load-01.ll
- atomic-load-02.ll
- atomic-load-03.ll
- atomic-load-04.ll
- atomic-load-05.ll
- atomic-store-01.ll
- atomic-store-02.ll
- atomic-store-03.ll
- atomic-store-04.ll
- atomic-store-05.ll
- atomicrmw-add-01.ll
- atomicrmw-add-02.ll
- atomicrmw-add-03.ll
- atomicrmw-add-04.ll
- atomicrmw-add-05.ll
- atomicrmw-add-06.ll
- atomicrmw-and-01.ll
- atomicrmw-and-02.ll
- atomicrmw-and-03.ll
- atomicrmw-and-04.ll
- atomicrmw-and-05.ll
- atomicrmw-and-06.ll
- atomicrmw-minmax-01.ll
- atomicrmw-minmax-02.ll
- atomicrmw-minmax-03.ll
- atomicrmw-minmax-04.ll
- atomicrmw-nand-01.ll
- atomicrmw-nand-02.ll
- atomicrmw-nand-03.ll
- atomicrmw-nand-04.ll
- atomicrmw-or-01.ll
- atomicrmw-or-02.ll
- atomicrmw-or-03.ll
- atomicrmw-or-04.ll
- atomicrmw-or-05.ll
- atomicrmw-or-06.ll
- atomicrmw-sub-01.ll
- atomicrmw-sub-02.ll
- atomicrmw-sub-03.ll
- atomicrmw-sub-04.ll
- atomicrmw-sub-05.ll
- atomicrmw-sub-06.ll
- atomicrmw-xchg-01.ll
- atomicrmw-xchg-02.ll
- atomicrmw-xchg-03.ll
- atomicrmw-xchg-04.ll
- atomicrmw-xor-01.ll
- atomicrmw-xor-02.ll
- atomicrmw-xor-03.ll
- atomicrmw-xor-04.ll
- atomicrmw-xor-05.ll
- atomicrmw-xor-06.ll
- backchain.ll
- branch-01.ll
- branch-02.ll
- branch-03.ll
- branch-04.ll
- branch-05.ll
- branch-06.ll
- branch-07.ll
- branch-08.ll
- branch-09.ll
- branch-10.ll
- branch-11.ll
- branch-folder-hoist-livein.mir
- bswap-01.ll
- bswap-02.ll
- bswap-03.ll
- bswap-04.ll
- bswap-05.ll
- bswap-06.ll
- bswap-07.ll
- bswap-08.ll
- buildvector-00.ll
- builtins.ll
- call-01.ll
- call-02.ll
- call-03.ll
- call-04.ll
- call-05.ll
- cc-liveness.ll
- clear-liverange-spillreg.mir
- cmpxchg-01.ll
- cmpxchg-02.ll
- cmpxchg-03.ll
- cmpxchg-04.ll
- cmpxchg-05.ll
- cmpxchg-06.ll
- codegenprepare-splitstore.ll
- codemodel.ll
- combine_loads_from_build_pair.ll
- cond-load-01.ll
- cond-load-02.ll
- cond-load-03.ll
- cond-move-01.ll
- cond-move-02.ll
- cond-move-03.ll
- cond-move-04.mir
- cond-move-05.mir
- cond-move-regalloc-hints.mir
- cond-store-01.ll
- cond-store-02.ll
- cond-store-03.ll
- cond-store-04.ll
- cond-store-05.ll
- cond-store-06.ll
- cond-store-07.ll
- cond-store-08.ll
- cond-store-09.ll
- copy-physreg-128.ll
- ctpop-01.ll
- dag-combine-01.ll
- dag-combine-02.ll
- dag-combine-03.ll
- dag-combine-04.ll
- dag-combine-05.ll
- DAGCombine_trunc_extract.ll
- DAGCombiner_illegal_BUILD_VECTOR.ll
- DAGCombiner_isAlias.ll
- debuginstr-00.mir
- debuginstr-01.mir
- debuginstr-02.mir
- debuginstr-cgp.mir
- dyn-alloca-offset.ll
- expand-zext-pseudo.ll
- extract-vector-elt-zEC12.ll
- fold-memory-op-impl.ll
- fp-abs-01.ll
- fp-abs-02.ll
- fp-abs-03.ll
- fp-abs-04.ll
- fp-add-01.ll
- fp-add-02.ll
- fp-add-03.ll
- fp-add-04.ll
- fp-cmp-01.ll
- fp-cmp-02.ll
- fp-cmp-03.ll
- fp-cmp-04.ll
- fp-cmp-05.ll
- fp-cmp-06.ll
- fp-cmp-07.mir
- fp-const-01.ll
- fp-const-02.ll
- fp-const-03.ll
- fp-const-04.ll
- fp-const-05.ll
- fp-const-06.ll
- fp-const-07.ll
- fp-const-08.ll
- fp-const-09.ll
- fp-const-10.ll
- fp-const-11.ll
- fp-const-12.ll
- fp-conv-01.ll
- fp-conv-02.ll
- fp-conv-03.ll
- fp-conv-04.ll
- fp-conv-05.ll
- fp-conv-06.ll
- fp-conv-07.ll
- fp-conv-08.ll
- fp-conv-09.ll
- fp-conv-10.ll
- fp-conv-11.ll
- fp-conv-12.ll
- fp-conv-13.ll
- fp-conv-14.ll
- fp-conv-15.ll
- fp-conv-16.ll
- fp-conv-17.mir
- fp-conv-18.ll
- fp-copysign-01.ll
- fp-copysign-02.ll
- fp-div-01.ll
- fp-div-02.ll
- fp-div-03.ll
- fp-div-04.ll
- fp-libcall.ll
- fp-move-01.ll
- fp-move-02.ll
- fp-move-03.ll
- fp-move-04.ll
- fp-move-05.ll
- fp-move-06.ll
- fp-move-07.ll
- fp-move-08.ll
- fp-move-09.ll
- fp-move-10.ll
- fp-move-11.ll
- fp-move-12.ll
- fp-move-13.ll
- fp-mul-01.ll
- fp-mul-02.ll
- fp-mul-03.ll
- fp-mul-04.ll
- fp-mul-05.ll
- fp-mul-06.ll
- fp-mul-07.ll
- fp-mul-08.ll
- fp-mul-09.ll
- fp-mul-10.ll
- fp-mul-11.ll
- fp-mul-12.ll
- fp-neg-01.ll
- fp-neg-02.ll
- fp-round-01.ll
- fp-round-02.ll
- fp-round-03.ll
- fp-sincos-01.ll
- fp-sqrt-01.ll
- fp-sqrt-02.ll
- fp-sqrt-03.ll
- fp-sqrt-04.ll
- fp-strict-add-01.ll
- fp-strict-add-02.ll
- fp-strict-add-03.ll
- fp-strict-add-04.ll
- fp-strict-alias.ll
- fp-strict-conv-01.ll
- fp-strict-conv-02.ll
- fp-strict-conv-03.ll
- fp-strict-conv-04.ll
- fp-strict-conv-15.ll
- fp-strict-div-01.ll
- fp-strict-div-02.ll
- fp-strict-div-03.ll
- fp-strict-div-04.ll
- fp-strict-mul-01.ll
- fp-strict-mul-02.ll
- fp-strict-mul-03.ll
- fp-strict-mul-04.ll
- fp-strict-mul-05.ll
- fp-strict-mul-06.ll
- fp-strict-mul-07.ll
- fp-strict-mul-08.ll
- fp-strict-mul-09.ll
- fp-strict-mul-10.ll
- fp-strict-mul-11.ll
- fp-strict-round-01.ll
- fp-strict-round-02.ll
- fp-strict-round-03.ll
- fp-strict-sqrt-01.ll
- fp-strict-sqrt-02.ll
- fp-strict-sqrt-03.ll
- fp-strict-sqrt-04.ll
- fp-strict-sub-01.ll
- fp-strict-sub-02.ll
- fp-strict-sub-03.ll
- fp-strict-sub-04.ll
- fp-sub-01.ll
- fp-sub-02.ll
- fp-sub-03.ll
- fp-sub-04.ll
- fpc-intrinsics.ll
- frame-01.ll
- frame-02.ll
- frame-03.ll
- frame-04.ll
- frame-05.ll
- frame-06.ll
- frame-07.ll
- frame-08.ll
- frame-09.ll
- frame-10.ll
- frame-11.ll
- frame-13.ll
- frame-14.ll
- frame-15.ll
- frame-16.ll
- frame-17.ll
- frame-18.ll
- frame-19.ll
- frame-20.ll
- frame-21.ll
- frameaddr-01.ll
- hoist-const-stores.ll
- htm-intrinsics.ll
- inline-asm-i-constraint-i1.ll
- inlineasm-output-template.ll
- insert-01.ll
- insert-02.ll
- insert-03.ll
- insert-04.ll
- insert-05.ll
- insert-06.ll
- int-abs-01.ll
- int-add-01.ll
- int-add-02.ll
- int-add-03.ll
- int-add-04.ll
- int-add-05.ll
- int-add-06.ll
- int-add-07.ll
- int-add-08.ll
- int-add-09.ll
- int-add-10.ll
- int-add-11.ll
- int-add-12.ll
- int-add-13.ll
- int-add-14.ll
- int-add-15.ll
- int-add-16.ll
- int-add-17.ll
- int-cmp-01.ll
- int-cmp-02.ll
- int-cmp-03.ll
- int-cmp-04.ll
- int-cmp-05.ll
- int-cmp-06.ll
- int-cmp-07.ll
- int-cmp-08.ll
- int-cmp-09.ll
- int-cmp-10.ll
- int-cmp-11.ll
- int-cmp-12.ll
- int-cmp-13.ll
- int-cmp-14.ll
- int-cmp-15.ll
- int-cmp-16.ll
- int-cmp-17.ll
- int-cmp-18.ll
- int-cmp-19.ll
- int-cmp-20.ll
- int-cmp-21.ll
- int-cmp-22.ll
- int-cmp-23.ll
- int-cmp-24.ll
- int-cmp-25.ll
- int-cmp-26.ll
- int-cmp-27.ll
- int-cmp-28.ll
- int-cmp-29.ll
- int-cmp-30.ll
- int-cmp-31.ll
- int-cmp-32.ll
- int-cmp-33.ll
- int-cmp-34.ll
- int-cmp-35.ll
- int-cmp-36.ll
- int-cmp-37.ll
- int-cmp-38.ll
- int-cmp-39.ll
- int-cmp-40.ll
- int-cmp-41.ll
- int-cmp-42.ll
- int-cmp-43.ll
- int-cmp-44.ll
- int-cmp-45.ll
- int-cmp-46.ll
- int-cmp-47.ll
- int-cmp-48.ll
- int-cmp-49.ll
- int-cmp-50.ll
- int-cmp-51.ll
- int-cmp-52.ll
- int-cmp-53.ll
- int-cmp-54.ll
- int-cmp-55.ll
- int-const-01.ll
- int-const-02.ll
- int-const-03.ll
- int-const-04.ll
- int-const-05.ll
- int-const-06.ll
- int-conv-01.ll
- int-conv-02.ll
- int-conv-03.ll
- int-conv-04.ll
- int-conv-05.ll
- int-conv-06.ll
- int-conv-07.ll
- int-conv-08.ll
- int-conv-09.ll
- int-conv-10.ll
- int-conv-11.ll
- int-conv-12.ll
- int-conv-13.ll
- int-div-01.ll
- int-div-02.ll
- int-div-03.ll
- int-div-04.ll
- int-div-05.ll
- int-div-06.ll
- int-move-01.ll
- int-move-02.ll
- int-move-03.ll
- int-move-04.ll
- int-move-05.ll
- int-move-06.ll
- int-move-07.ll
- int-move-08.ll
- int-move-09.ll
- int-mul-01.ll
- int-mul-02.ll
- int-mul-03.ll
- int-mul-04.ll
- int-mul-05.ll
- int-mul-06.ll
- int-mul-07.ll
- int-mul-08.ll
- int-mul-09.ll
- int-mul-10.ll
- int-mul-11.ll
- int-neg-01.ll
- int-neg-02.ll
- int-sadd-01.ll
- int-sadd-02.ll
- int-sadd-03.ll
- int-sadd-04.ll
- int-sadd-05.ll
- int-sadd-06.ll
- int-sadd-07.ll
- int-sadd-08.ll
- int-sadd-09.ll
- int-ssub-01.ll
- int-ssub-02.ll
- int-ssub-03.ll
- int-ssub-04.ll
- int-ssub-05.ll
- int-ssub-06.ll
- int-ssub-07.ll
- int-ssub-08.ll
- int-ssub-09.ll
- int-sub-01.ll
- int-sub-02.ll
- int-sub-03.ll
- int-sub-04.ll
- int-sub-05.ll
- int-sub-06.ll
- int-sub-07.ll
- int-sub-08.ll
- int-sub-09.ll
- int-sub-10.ll
- int-sub-11.ll
- int-uadd-01.ll
- int-uadd-02.ll
- int-uadd-03.ll
- int-uadd-04.ll
- int-uadd-05.ll
- int-uadd-06.ll
- int-uadd-07.ll
- int-uadd-08.ll
- int-uadd-09.ll
- int-uadd-10.ll
- int-uadd-11.ll
- int-uadd-12.ll
- int-usub-01.ll
- int-usub-02.ll
- int-usub-03.ll
- int-usub-04.ll
- int-usub-05.ll
- int-usub-06.ll
- int-usub-07.ll
- int-usub-08.ll
- int-usub-09.ll
- int-usub-10.ll
- int-usub-11.ll
- ipra-04.ll
- ipra.ll
- isel-debug.ll
- knownbits-intrinsics-binop.ll
- knownbits-intrinsics-unpack.ll
- knownbits.ll
- la-01.ll
- la-02.ll
- la-03.ll
- la-04.ll
- list-ilp-crash.ll
- lit.local.cfg
- load-and-test-RA-hints.mir
- load-and-test.mir
- locr-legal-regclass.ll
- loop-01.ll
- loop-02.ll
- loop-03.ll
- loop-04.ll
- lower-copy-undef-src.mir
- mature-mc-support.ll
- memchr-01.ll
- memchr-nobuiltin.ll
- memcmp-01.ll
- memcmp-02.ll
- memcmp-nobuiltin.ll
- memcpy-01.ll
- memcpy-02.ll
- memset-01.ll
- memset-02.ll
- memset-03.ll
- memset-04.ll
- misched-readadvances.mir
- multiselect.ll
- no-postra-sink.mir
- or-01.ll
- or-02.ll
- or-03.ll
- or-04.ll
- or-05.ll
- or-06.ll
- or-07.ll
- or-08.ll
- patchpoint-invoke.ll
- patchpoint.ll
- pie.ll
- postra-sched-expandedops.mir
- pr31710.ll
- pr32372.ll
- pr32505.ll
- pr36164.ll
- prefetch-01.ll
- RAbasic-invalid-LR-update.mir
- regalloc-fast-invalid-kill-flag.mir
- regalloc-GR128-02.mir
- regalloc-GR128.ll
- regcoal-subranges-update.mir
- ret-addr-01.ll
- risbg-01.ll
- risbg-02.ll
- risbg-03.ll
- risbg-04.ll
- rnsbg-01.ll
- rosbg-01.ll
- rosbg-02.ll
- rot-01.ll
- rot-02.ll
- rot-shift-64-sub-amt.ll
- rxsbg-01.ll
- scalar-ctlz.ll
- selectcc-01.ll
- selectcc-02.ll
- selectcc-03.ll
- selectcc-04.ll
- setcc-01.ll
- setcc-02.ll
- setcc-03.ll
- setcc-04.ll
- shift-01.ll
- shift-02.ll
- shift-03.ll
- shift-04.ll
- shift-05.ll
- shift-06.ll
- shift-07.ll
- shift-08.ll
- shift-09.ll
- shift-10.ll
- shift-11.ll
- shift-12.ll
- signbits-intrinsics-binop.ll
- signbits-intrinsics-unpack.ll
- signbits.ll
- spill-01.ll
- splitMove_undefReg_mverifier.ll
- splitMove_undefReg_mverifier_2.ll
- stack-guard.ll
- stack-size-section.ll
- stackmap-nops.ll
- stackmap-shadow-optimization.ll
- stackmap.ll
- store_nonbytesized_vecs.ll
- strcmp-01.ll
- strcmp-nobuiltin.ll
- strcpy-01.ll
- strcpy-nobuiltin.ll
- strlen-01.ll
- strlen-nobuiltin.ll
- subregliveness-01.ll
- subregliveness-02.ll
- subregliveness-03.ll
- subregliveness-04.ll
- subregliveness-05.ll
- subregliveness-06.mir
- subregliveness-07.mir
- swift-return.ll
- swifterror.ll
- swiftself.ll
- tail-call-mem-intrinsics.ll
- tdc-01.ll
- tdc-02.ll
- tdc-03.ll
- tdc-04.ll
- tdc-05.ll
- tdc-06.ll
- tdc-07.ll
- tls-01.ll
- tls-02.ll
- tls-03.ll
- tls-04.ll
- tls-05.ll
- tls-06.ll
- tls-07.ll
- trap-01.ll
- trap-02.ll
- trap-03.ll
- trap-04.ll
- trap-05.ll
- twoaddr-sink.ll
- unaligned-01.ll
- undef-flag.ll
- vec-abi-align.ll
- vec-abs-01.ll
- vec-abs-02.ll
- vec-abs-03.ll
- vec-abs-04.ll
- vec-abs-05.ll
- vec-abs-06.ll
- vec-add-01.ll
- vec-add-02.ll
- vec-and-01.ll
- vec-and-02.ll
- vec-and-03.ll
- vec-and-04.ll
- vec-args-01.ll
- vec-args-02.ll
- vec-args-03.ll
- vec-args-04.ll
- vec-args-05.ll
- vec-args-06.ll
- vec-args-07.ll
- vec-args-error-01.ll
- vec-args-error-02.ll
- vec-args-error-03.ll
- vec-args-error-04.ll
- vec-args-error-05.ll
- vec-args-error-06.ll
- vec-args-error-07.ll
- vec-args-error-08.ll
- vec-cmp-01.ll
- vec-cmp-02.ll
- vec-cmp-03.ll
- vec-cmp-04.ll
- vec-cmp-05.ll
- vec-cmp-06.ll
- vec-cmp-07.ll
- vec-cmp-cmp-logic-select.ll
- vec-cmpsel.ll
- vec-combine-01.ll
- vec-combine-02.ll
- vec-const-01.ll
- vec-const-02.ll
- vec-const-03.ll
- vec-const-04.ll
- vec-const-05.ll
- vec-const-06.ll
- vec-const-07.ll
- vec-const-08.ll
- vec-const-09.ll
- vec-const-10.ll
- vec-const-11.ll
- vec-const-12.ll
- vec-const-13.ll
- vec-const-14.ll
- vec-const-15.ll
- vec-const-16.ll
- vec-const-17.ll
- vec-const-18.ll
- vec-const-19.ll
- vec-conv-01.ll
- vec-conv-02.ll
- vec-ctlz-01.ll
- vec-ctpop-01.ll
- vec-ctpop-02.ll
- vec-cttz-01.ll
- vec-div-01.ll
- vec-div-02.ll
- vec-extract-01.ll
- vec-extract-02.ll
- vec-intrinsics-01.ll
- vec-intrinsics-02.ll
- vec-load-element.ll
- vec-log-01.ll
- vec-max-01.ll
- vec-max-02.ll
- vec-max-03.ll
- vec-max-04.ll
- vec-max-05.ll
- vec-min-01.ll
- vec-min-02.ll
- vec-min-03.ll
- vec-min-04.ll
- vec-min-05.ll
- vec-move-01.ll
- vec-move-02.ll
- vec-move-03.ll
- vec-move-04.ll
- vec-move-05.ll
- vec-move-06.ll
- vec-move-07.ll
- vec-move-08.ll
- vec-move-09.ll
- vec-move-10.ll
- vec-move-11.ll
- vec-move-12.ll
- vec-move-13.ll
- vec-move-14.ll
- vec-move-15.ll
- vec-move-16.ll
- vec-move-17.ll
- vec-move-18.ll
- vec-move-19.ll
- vec-move-20.ll
- vec-move-21.ll
- vec-move-22.ll
- vec-mul-01.ll
- vec-mul-02.ll
- vec-mul-03.ll
- vec-mul-04.ll
- vec-mul-05.ll
- vec-neg-01.ll
- vec-neg-02.ll
- vec-or-01.ll
- vec-or-02.ll
- vec-or-03.ll
- vec-perm-01.ll
- vec-perm-02.ll
- vec-perm-03.ll
- vec-perm-04.ll
- vec-perm-05.ll
- vec-perm-06.ll
- vec-perm-07.ll
- vec-perm-08.ll
- vec-perm-09.ll
- vec-perm-10.ll
- vec-perm-11.ll
- vec-perm-12.ll
- vec-perm-13.ll
- vec-rem.ll
- vec-round-01.ll
- vec-round-02.ll
- vec-sext.ll
- vec-shift-01.ll
- vec-shift-02.ll
- vec-shift-03.ll
- vec-shift-04.ll
- vec-shift-05.ll
- vec-shift-06.ll
- vec-shift-07.ll
- vec-sqrt-01.ll
- vec-sqrt-02.ll
- vec-strict-add-01.ll
- vec-strict-add-02.ll
- vec-strict-div-01.ll
- vec-strict-div-02.ll
- vec-strict-max-01.ll
- vec-strict-min-01.ll
- vec-strict-mul-01.ll
- vec-strict-mul-02.ll
- vec-strict-mul-03.ll
- vec-strict-mul-04.ll
- vec-strict-mul-05.ll
- vec-strict-round-01.ll
- vec-strict-round-02.ll
- vec-strict-sqrt-01.ll
- vec-strict-sqrt-02.ll
- vec-strict-sub-01.ll
- vec-strict-sub-02.ll
- vec-sub-01.ll
- vec-sub-02.ll
- vec-trunc-to-i1.ll
- vec-xor-01.ll
- vec-xor-02.ll
- vec-zext.ll
- vector-constrained-fp-intrinsics.ll
- vectorizer-output-3xi32.ll
- xor-01.ll
- xor-02.ll
- xor-03.ll
- xor-04.ll
- xor-05.ll
- xor-06.ll
- xor-07.ll
- xor-08.ll
int-move-08.ll @a813b38 — raw · history · blame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | ; Test 32-bit GPR accesses to a PC-relative location.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
@gsrc16 = global i16 1
@gsrc32 = global i32 1
@gdst16 = global i16 2
@gdst32 = global i32 2
@gsrc16u = global i16 1, align 1, section "foo"
@gsrc32u = global i32 1, align 2, section "foo"
@gdst16u = global i16 2, align 1, section "foo"
@gdst32u = global i32 2, align 2, section "foo"
@garray8 = global [2 x i8] [i8 100, i8 101]
@garray16 = global [2 x i16] [i16 102, i16 103]
; Check sign-extending loads from i16.
define i32 @f1() {
; CHECK-LABEL: f1:
; CHECK: lhrl %r2, gsrc16
; CHECK: br %r14
%val = load i16, i16 *@gsrc16
%ext = sext i16 %val to i32
ret i32 %ext
}
; Check zero-extending loads from i16.
define i32 @f2() {
; CHECK-LABEL: f2:
; CHECK: llhrl %r2, gsrc16
; CHECK: br %r14
%val = load i16, i16 *@gsrc16
%ext = zext i16 %val to i32
ret i32 %ext
}
; Check truncating 16-bit stores.
define void @f3(i32 %val) {
; CHECK-LABEL: f3:
; CHECK: sthrl %r2, gdst16
; CHECK: br %r14
%half = trunc i32 %val to i16
store i16 %half, i16 *@gdst16
ret void
}
; Check plain loads and stores.
define void @f4() {
; CHECK-LABEL: f4:
; CHECK: lrl %r0, gsrc32
; CHECK: strl %r0, gdst32
; CHECK: br %r14
%val = load i32, i32 *@gsrc32
store i32 %val, i32 *@gdst32
ret void
}
; Repeat f1 with an unaligned variable.
define i32 @f5() {
; CHECK-LABEL: f5:
; CHECK: lgrl [[REG:%r[0-5]]], gsrc16u
; CHECK: lh %r2, 0([[REG]])
; CHECK: br %r14
%val = load i16, i16 *@gsrc16u, align 1
%ext = sext i16 %val to i32
ret i32 %ext
}
; Repeat f2 with an unaligned variable.
define i32 @f6() {
; CHECK-LABEL: f6:
; CHECK: lgrl [[REG:%r[0-5]]], gsrc16u
; CHECK: llh %r2, 0([[REG]])
; CHECK: br %r14
%val = load i16, i16 *@gsrc16u, align 1
%ext = zext i16 %val to i32
ret i32 %ext
}
; Repeat f3 with an unaligned variable.
define void @f7(i32 %val) {
; CHECK-LABEL: f7:
; CHECK: lgrl [[REG:%r[0-5]]], gdst16u
; CHECK: sth %r2, 0([[REG]])
; CHECK: br %r14
%half = trunc i32 %val to i16
store i16 %half, i16 *@gdst16u, align 1
ret void
}
; Repeat f4 with unaligned variables.
define void @f8() {
; CHECK-LABEL: f8:
; CHECK: larl [[REG:%r[0-5]]], gsrc32u
; CHECK: l [[VAL:%r[0-5]]], 0([[REG]])
; CHECK: larl [[REG:%r[0-5]]], gdst32u
; CHECK: st [[VAL]], 0([[REG]])
; CHECK: br %r14
%val = load i32, i32 *@gsrc32u, align 2
store i32 %val, i32 *@gdst32u, align 2
ret void
}
; Test a case where we want to use one LARL for accesses to two different
; parts of a variable.
define void @f9() {
; CHECK-LABEL: f9:
; CHECK: larl [[REG:%r[0-5]]], garray8
; CHECK: llc [[VAL:%r[0-5]]], 0([[REG]])
; CHECK: srl [[VAL]], 1
; CHECK: stc [[VAL]], 1([[REG]])
; CHECK: br %r14
%ptr1 = getelementptr [2 x i8], [2 x i8] *@garray8, i64 0, i64 0
%ptr2 = getelementptr [2 x i8], [2 x i8] *@garray8, i64 0, i64 1
%val = load i8, i8 *%ptr1
%shr = lshr i8 %val, 1
store i8 %shr, i8 *%ptr2
ret void
}
; Test a case where we want to use separate relative-long addresses for
; two different parts of a variable.
define void @f10() {
; CHECK-LABEL: f10:
; CHECK: llhrl [[VAL:%r[0-5]]], garray16
; CHECK: srl [[VAL]], 1
; CHECK: sthrl [[VAL]], garray16+2
; CHECK: br %r14
%ptr1 = getelementptr [2 x i16], [2 x i16] *@garray16, i64 0, i64 0
%ptr2 = getelementptr [2 x i16], [2 x i16] *@garray16, i64 0, i64 1
%val = load i16, i16 *%ptr1
%shr = lshr i16 %val, 1
store i16 %shr, i16 *%ptr2
ret void
}
|