From 59d6cff90eecf31cb3dd860c4e786674cfdd42eb Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Mon, 10 Jun 2013 20:36:52 +0000 Subject: Vendor import of llvm tags/RELEASE_33/final r183502 (effectively, 3.3 release): http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_33/final@183502 --- test/CodeGen/AArch64/adrp-relocation.ll | 22 +- test/CodeGen/AArch64/atomic-ops-not-barriers.ll | 6 +- test/CodeGen/AArch64/atomic-ops.ll | 381 ++++++------ test/CodeGen/AArch64/blockaddress.ll | 9 + test/CodeGen/AArch64/code-model-large-abs.ll | 61 ++ test/CodeGen/AArch64/elf-extern.ll | 16 +- test/CodeGen/AArch64/extern-weak.ll | 19 + test/CodeGen/AArch64/jump-table.ll | 28 +- test/CodeGen/AArch64/literal_pools.ll | 40 ++ test/CodeGen/ARM/2010-08-04-StackVariable.ll | 2 +- test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll | 59 +- test/CodeGen/ARM/2010-11-30-reloc-movt.ll | 39 +- test/CodeGen/ARM/2010-12-08-tpsoft.ll | 24 +- test/CodeGen/ARM/2010-12-15-elf-lcomm.ll | 27 +- test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll | 2 +- test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll | 2 +- test/CodeGen/ARM/2011-12-14-machine-sink.ll | 9 +- test/CodeGen/ARM/2012-01-23-PostRA-LICM.ll | 18 +- .../CodeGen/ARM/2012-01-24-RegSequenceLiveRange.ll | 5 +- test/CodeGen/ARM/2012-01-26-CopyPropKills.ll | 9 +- test/CodeGen/ARM/2012-04-02-TwoAddrInstrCrash.ll | 11 +- test/CodeGen/ARM/2012-04-10-DAGCombine.ll | 5 +- test/CodeGen/ARM/2012-06-12-SchedMemLatency.ll | 12 +- test/CodeGen/ARM/2012-08-04-DtripleSpillReload.ll | 8 +- test/CodeGen/ARM/2013-01-21-PR14992.ll | 10 +- .../ARM/2013-04-05-Small-ByVal-Structs-PR15293.ll | 73 +++ .../ARM/2013-04-05-overridden-loads-PR14824.ll | 110 ---- test/CodeGen/ARM/2013-04-16-AAPCS-C4-vs-VFP.ll | 95 +++ test/CodeGen/ARM/2013-04-16-AAPCS-C5-vs-VFP.ll | 61 ++ .../CodeGen/ARM/2013-04-18-load-overlap-PR14824.ll | 82 +++ test/CodeGen/ARM/2013-04-21-AAPCS-VA-C.1.cp.ll | 28 + .../2013-05-02-AAPCS-ByVal-Structs-C4-C5-VFP.ll | 48 ++ .../2013-05-02-AAPCS-ByVal-Structs-C4-C5-VFP2.ll | 45 ++ test/CodeGen/ARM/2013-05-05-IfConvertBug.ll | 71 +++ test/CodeGen/ARM/avoid-cpsr-rmw.ll | 2 +- test/CodeGen/ARM/commute-movcc.ll | 8 +- test/CodeGen/ARM/dagcombine-concatvector.ll | 23 + test/CodeGen/ARM/debug-info-arg.ll | 2 +- test/CodeGen/ARM/debug-info-branch-folding.ll | 2 +- test/CodeGen/ARM/debug-info-d16-reg.ll | 2 +- test/CodeGen/ARM/debug-info-qreg.ll | 2 +- test/CodeGen/ARM/debug-info-s16-reg.ll | 2 +- test/CodeGen/ARM/debug-info-sreg2.ll | 2 +- test/CodeGen/ARM/ehabi-filters.ll | 6 +- test/CodeGen/ARM/ehabi-mc-compact-pr0.ll | 49 ++ test/CodeGen/ARM/ehabi-mc-compact-pr1.ll | 62 ++ test/CodeGen/ARM/ehabi-mc-section-group.ll | 29 +- test/CodeGen/ARM/ehabi-mc-section.ll | 18 +- test/CodeGen/ARM/ehabi-mc-sh_link.ll | 63 +- test/CodeGen/ARM/ehabi-mc.ll | 18 +- test/CodeGen/ARM/gpr-paired-spill-thumbinst.ll | 30 + test/CodeGen/ARM/gpr-paired-spill.ll | 44 ++ test/CodeGen/ARM/lsr-unfolded-offset.ll | 12 +- test/CodeGen/ARM/misched-copy-arm.ll | 30 + test/CodeGen/ARM/neon_vabs.ll | 91 +++ test/CodeGen/ARM/nop_concat_vectors.ll | 13 + test/CodeGen/ARM/private.ll | 11 +- test/CodeGen/ARM/returned-ext.ll | 178 ++++++ test/CodeGen/ARM/tail-dup.ll | 10 +- test/CodeGen/ARM/this-return.ll | 105 ++++ test/CodeGen/ARM/v1-constant-fold.ll | 18 + test/CodeGen/ARM/vcvt-cost.ll | 153 +++++ test/CodeGen/ARM/vcvt.ll | 172 ------ test/CodeGen/ARM/vcvt_combine.ll | 16 +- test/CodeGen/ARM/vdiv_combine.ll | 17 +- test/CodeGen/ARM/vmul.ll | 24 + test/CodeGen/Generic/annotate.ll | 15 + test/CodeGen/Generic/crash.ll | 5 +- test/CodeGen/Generic/ptr-annotate.ll | 18 + test/CodeGen/Hexagon/absimm.ll | 18 + test/CodeGen/Hexagon/always-ext.ll | 45 ++ test/CodeGen/Hexagon/cmp_pred2.ll | 87 +++ test/CodeGen/Hexagon/cmpb_pred.ll | 9 +- test/CodeGen/Hexagon/combine_ir.ll | 7 +- test/CodeGen/Hexagon/hwloop-const.ll | 8 +- test/CodeGen/Hexagon/hwloop-dbg.ll | 7 +- test/CodeGen/Hexagon/memops2.ll | 12 +- test/CodeGen/Hexagon/memops3.ll | 11 +- test/CodeGen/Hexagon/remove_lsr.ll | 12 +- test/CodeGen/Hexagon/union-1.ll | 23 + test/CodeGen/Mips/alloca.ll | 18 +- test/CodeGen/Mips/divrem.ll | 8 +- test/CodeGen/Mips/dsp-patterns-cmp-vselect.ll | 641 +++++++++++++++++++++ test/CodeGen/Mips/dsp-patterns.ll | 244 +++++++- test/CodeGen/Mips/dsp-r1.ll | 11 +- test/CodeGen/Mips/eh.ll | 8 +- test/CodeGen/Mips/fpneeded.ll | 149 +++++ test/CodeGen/Mips/fpnotneeded.ll | 77 +++ test/CodeGen/Mips/inlineasmmemop.ll | 40 ++ test/CodeGen/Mips/mips16_32_1.ll | 14 + test/CodeGen/Mips/mips16_32_10.ll | 59 ++ test/CodeGen/Mips/mips16_32_3.ll | 70 +++ test/CodeGen/Mips/mips16_32_4.ll | 65 +++ test/CodeGen/Mips/mips16_32_5.ll | 80 +++ test/CodeGen/Mips/mips16_32_6.ll | 86 +++ test/CodeGen/Mips/mips16_32_7.ll | 76 +++ test/CodeGen/Mips/mips16_32_8.ll | 74 +++ test/CodeGen/Mips/mips16_32_9.ll | 51 ++ test/CodeGen/Mips/select.ll | 16 +- test/CodeGen/Mips/spill-copy-acreg.ll | 41 ++ test/CodeGen/Mips/tnaked.ll | 29 + test/CodeGen/Mips/zeroreg.ll | 8 +- test/CodeGen/NVPTX/generic-to-nvvm.ll | 25 + test/CodeGen/NVPTX/i1-global.ll | 19 + test/CodeGen/NVPTX/i1-param.ll | 18 + test/CodeGen/NVPTX/intrinsics.ll | 7 + test/CodeGen/NVPTX/refl1.ll | 37 ++ .../PowerPC/2007-09-07-LoadStoreIdxForms.ll | 6 +- test/CodeGen/PowerPC/2011-12-05-NoSpillDupCR.ll | 35 +- .../PowerPC/2011-12-06-SpillAndRestoreCR.ll | 41 +- test/CodeGen/PowerPC/bdzlr.ll | 64 ++ test/CodeGen/PowerPC/crsave.ll | 30 +- test/CodeGen/PowerPC/ctrloop-s000.ll | 68 +-- test/CodeGen/PowerPC/ctrloop-sums.ll | 12 +- test/CodeGen/PowerPC/ctrloops.ll | 16 +- test/CodeGen/PowerPC/early-ret.ll | 48 ++ test/CodeGen/PowerPC/early-ret2.ll | 25 + test/CodeGen/PowerPC/fma.ll | 27 +- test/CodeGen/PowerPC/fold-zero.ll | 14 + test/CodeGen/PowerPC/fsel.ll | 137 +++++ test/CodeGen/PowerPC/ifcvt.ll | 34 ++ test/CodeGen/PowerPC/lbzux.ll | 6 +- test/CodeGen/PowerPC/lsa.ll | 43 ++ test/CodeGen/PowerPC/mcm-obj-2.ll | 45 +- test/CodeGen/PowerPC/mcm-obj.ll | 151 ++--- test/CodeGen/PowerPC/optcmp.ll | 143 +++++ test/CodeGen/PowerPC/pr15359.ll | 12 +- test/CodeGen/PowerPC/rounding-ops.ll | 10 +- test/CodeGen/PowerPC/s000-alias-misched.ll | 20 +- test/CodeGen/PowerPC/stubs.ll | 10 +- test/CodeGen/PowerPC/stwu-gta.ll | 8 +- test/CodeGen/PowerPC/stwu8.ll | 6 +- test/CodeGen/PowerPC/tls-gd-obj.ll | 28 +- test/CodeGen/PowerPC/tls-ie-obj.ll | 23 +- test/CodeGen/PowerPC/tls-ld-obj.ll | 38 +- test/CodeGen/R600/README | 21 + test/CodeGen/R600/add.ll | 15 + test/CodeGen/R600/add.v4i32.ll | 15 - test/CodeGen/R600/alu-split.ll | 1 + test/CodeGen/R600/and.ll | 15 + test/CodeGen/R600/and.v4i32.ll | 15 - test/CodeGen/R600/bfe_uint.ll | 26 + test/CodeGen/R600/bfi_int.ll | 52 ++ test/CodeGen/R600/call_fs.ll | 15 + test/CodeGen/R600/cf_end.ll | 9 + .../R600/dagcombiner-bug-illegal-vec4-int-to-fp.ll | 4 +- .../CodeGen/R600/disconnected-predset-break-bug.ll | 2 +- test/CodeGen/R600/elf.ll | 20 + test/CodeGen/R600/elf.r600.ll | 17 + test/CodeGen/R600/fabs.ll | 2 +- test/CodeGen/R600/fadd.ll | 21 +- test/CodeGen/R600/fadd.v4f32.ll | 15 - test/CodeGen/R600/fcmp-cnd.ll | 2 +- test/CodeGen/R600/fcmp.ll | 5 +- test/CodeGen/R600/fdiv.ll | 19 + test/CodeGen/R600/fdiv.v4f32.ll | 19 - test/CodeGen/R600/floor.ll | 2 +- test/CodeGen/R600/fmad.ll | 2 +- test/CodeGen/R600/fmax.ll | 2 +- test/CodeGen/R600/fmin.ll | 2 +- test/CodeGen/R600/fmul.ll | 21 +- test/CodeGen/R600/fmul.v4f32.ll | 6 +- test/CodeGen/R600/fp_to_sint.ll | 14 + test/CodeGen/R600/fp_to_uint.ll | 14 + test/CodeGen/R600/fsub.ll | 21 +- test/CodeGen/R600/fsub.v4f32.ll | 15 - test/CodeGen/R600/i8-to-double-to-float.ll | 11 + test/CodeGen/R600/i8_to_double_to_float.ll | 11 - test/CodeGen/R600/icmp-select-sete-reverse-args.ll | 2 +- test/CodeGen/R600/imm.ll | 23 + test/CodeGen/R600/jump-address.ll | 52 ++ test/CodeGen/R600/jump_address.ll | 50 -- test/CodeGen/R600/literals.ll | 171 +++++- test/CodeGen/R600/llvm.AMDGPU.mul.ll | 2 +- test/CodeGen/R600/llvm.AMDGPU.trunc.ll | 2 +- test/CodeGen/R600/llvm.SI.fs.interp.constant.ll | 2 +- test/CodeGen/R600/llvm.SI.sample.ll | 132 +++-- test/CodeGen/R600/llvm.cos.ll | 2 +- test/CodeGen/R600/llvm.pow.ll | 6 +- test/CodeGen/R600/llvm.sin.ll | 2 +- test/CodeGen/R600/load.constant_addrspace.f32.ll | 9 - test/CodeGen/R600/load.i8.ll | 10 - test/CodeGen/R600/load.ll | 20 + test/CodeGen/R600/loop-address.ll | 41 ++ test/CodeGen/R600/lshl.ll | 2 +- test/CodeGen/R600/lshr.ll | 2 +- test/CodeGen/R600/mul.ll | 16 + test/CodeGen/R600/mulhu.ll | 2 +- test/CodeGen/R600/or.ll | 13 + test/CodeGen/R600/predicates.ll | 24 +- test/CodeGen/R600/pv.ll | 244 ++++++++ test/CodeGen/R600/r600-encoding.ll | 24 + test/CodeGen/R600/reciprocal.ll | 2 +- test/CodeGen/R600/sdiv.ll | 2 +- test/CodeGen/R600/selectcc-cnd.ll | 12 + test/CodeGen/R600/selectcc-cnde-int.ll | 12 + test/CodeGen/R600/selectcc-icmp-select-float.ll | 3 +- test/CodeGen/R600/selectcc_cnde.ll | 11 - test/CodeGen/R600/selectcc_cnde_int.ll | 11 - test/CodeGen/R600/set-dx10.ll | 36 +- test/CodeGen/R600/setcc.ll | 12 + test/CodeGen/R600/setcc.v4i32.ll | 12 - test/CodeGen/R600/seto.ll | 2 +- test/CodeGen/R600/setuo.ll | 2 +- test/CodeGen/R600/shl.ll | 13 + test/CodeGen/R600/sint_to_fp.ll | 14 + test/CodeGen/R600/sra.ll | 13 + test/CodeGen/R600/srl.ll | 13 + test/CodeGen/R600/store.ll | 13 + test/CodeGen/R600/store.r600.ll | 22 + test/CodeGen/R600/store.v4f32.ll | 9 - test/CodeGen/R600/store.v4i32.ll | 9 - test/CodeGen/R600/sub.ll | 15 + test/CodeGen/R600/udiv.ll | 15 + test/CodeGen/R600/udiv.v4i32.ll | 15 - test/CodeGen/R600/uint_to_fp.ll | 14 + test/CodeGen/R600/unsupported-cc.ll | 24 +- test/CodeGen/R600/urecip.ll | 12 + test/CodeGen/R600/urem.ll | 15 + test/CodeGen/R600/urem.v4i32.ll | 15 - test/CodeGen/R600/vec4-expand.ll | 53 -- test/CodeGen/R600/vselect.ll | 17 + test/CodeGen/R600/xor.ll | 13 + test/CodeGen/SPARC/64abi.ll | 378 ++++++++++++ test/CodeGen/SPARC/64bit.ll | 37 ++ test/CodeGen/SPARC/constpool.ll | 48 ++ test/CodeGen/SPARC/globals.ll | 50 ++ test/CodeGen/SPARC/varargs.ll | 75 +++ test/CodeGen/SystemZ/addr-01.ll | 107 ++++ test/CodeGen/SystemZ/addr-02.ll | 116 ++++ test/CodeGen/SystemZ/addr-03.ll | 48 ++ test/CodeGen/SystemZ/alloca-01.ll | 81 +++ test/CodeGen/SystemZ/alloca-02.ll | 49 ++ test/CodeGen/SystemZ/and-01.ll | 129 +++++ test/CodeGen/SystemZ/and-02.ll | 93 +++ test/CodeGen/SystemZ/and-03.ll | 94 +++ test/CodeGen/SystemZ/and-04.ll | 180 ++++++ test/CodeGen/SystemZ/and-05.ll | 165 ++++++ test/CodeGen/SystemZ/and-06.ll | 108 ++++ test/CodeGen/SystemZ/args-01.ll | 74 +++ test/CodeGen/SystemZ/args-02.ll | 76 +++ test/CodeGen/SystemZ/args-03.ll | 78 +++ test/CodeGen/SystemZ/args-04.ll | 126 ++++ test/CodeGen/SystemZ/args-05.ll | 47 ++ test/CodeGen/SystemZ/args-06.ll | 76 +++ test/CodeGen/SystemZ/asm-01.ll | 61 ++ test/CodeGen/SystemZ/asm-02.ll | 52 ++ test/CodeGen/SystemZ/asm-03.ll | 16 + test/CodeGen/SystemZ/asm-04.ll | 16 + test/CodeGen/SystemZ/asm-05.ll | 15 + test/CodeGen/SystemZ/asm-06.ll | 39 ++ test/CodeGen/SystemZ/asm-07.ll | 39 ++ test/CodeGen/SystemZ/asm-08.ll | 39 ++ test/CodeGen/SystemZ/asm-09.ll | 83 +++ test/CodeGen/SystemZ/asm-10.ll | 30 + test/CodeGen/SystemZ/asm-11.ll | 41 ++ test/CodeGen/SystemZ/asm-12.ll | 41 ++ test/CodeGen/SystemZ/asm-13.ll | 41 ++ test/CodeGen/SystemZ/asm-14.ll | 41 ++ test/CodeGen/SystemZ/asm-15.ll | 32 + test/CodeGen/SystemZ/asm-16.ll | 32 + test/CodeGen/SystemZ/atomic-load-01.ll | 13 + test/CodeGen/SystemZ/atomic-load-02.ll | 13 + test/CodeGen/SystemZ/atomic-load-03.ll | 14 + test/CodeGen/SystemZ/atomic-load-04.ll | 14 + test/CodeGen/SystemZ/atomic-store-01.ll | 13 + test/CodeGen/SystemZ/atomic-store-02.ll | 13 + test/CodeGen/SystemZ/atomic-store-03.ll | 16 + test/CodeGen/SystemZ/atomic-store-04.ll | 16 + test/CodeGen/SystemZ/atomicrmw-add-01.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-add-02.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-add-03.ll | 94 +++ test/CodeGen/SystemZ/atomicrmw-add-04.ll | 112 ++++ test/CodeGen/SystemZ/atomicrmw-and-01.ll | 133 +++++ test/CodeGen/SystemZ/atomicrmw-and-02.ll | 133 +++++ test/CodeGen/SystemZ/atomicrmw-and-03.ll | 85 +++ test/CodeGen/SystemZ/atomicrmw-and-04.ll | 157 +++++ test/CodeGen/SystemZ/atomicrmw-minmax-01.ll | 228 ++++++++ test/CodeGen/SystemZ/atomicrmw-minmax-02.ll | 228 ++++++++ test/CodeGen/SystemZ/atomicrmw-minmax-03.ll | 176 ++++++ test/CodeGen/SystemZ/atomicrmw-minmax-04.ll | 143 +++++ test/CodeGen/SystemZ/atomicrmw-nand-01.ll | 139 +++++ test/CodeGen/SystemZ/atomicrmw-nand-02.ll | 139 +++++ test/CodeGen/SystemZ/atomicrmw-nand-03.ll | 93 +++ test/CodeGen/SystemZ/atomicrmw-nand-04.ll | 183 ++++++ test/CodeGen/SystemZ/atomicrmw-or-01.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-or-02.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-or-03.ll | 85 +++ test/CodeGen/SystemZ/atomicrmw-or-04.ll | 158 +++++ test/CodeGen/SystemZ/atomicrmw-sub-01.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-sub-02.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-sub-03.ll | 94 +++ test/CodeGen/SystemZ/atomicrmw-sub-04.ll | 112 ++++ test/CodeGen/SystemZ/atomicrmw-xchg-01.ll | 55 ++ test/CodeGen/SystemZ/atomicrmw-xchg-02.ll | 55 ++ test/CodeGen/SystemZ/atomicrmw-xchg-03.ll | 122 ++++ test/CodeGen/SystemZ/atomicrmw-xchg-04.ll | 88 +++ test/CodeGen/SystemZ/atomicrmw-xor-01.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-xor-02.ll | 132 +++++ test/CodeGen/SystemZ/atomicrmw-xor-03.ll | 49 ++ test/CodeGen/SystemZ/atomicrmw-xor-04.ll | 77 +++ test/CodeGen/SystemZ/branch-01.ll | 14 + test/CodeGen/SystemZ/branch-02.ll | 94 +++ test/CodeGen/SystemZ/branch-03.ll | 63 ++ test/CodeGen/SystemZ/branch-04.ll | 218 +++++++ test/CodeGen/SystemZ/branch-05.ll | 58 ++ test/CodeGen/SystemZ/bswap-01.ll | 24 + test/CodeGen/SystemZ/bswap-02.ll | 87 +++ test/CodeGen/SystemZ/bswap-03.ll | 87 +++ test/CodeGen/SystemZ/bswap-04.ll | 87 +++ test/CodeGen/SystemZ/bswap-05.ll | 87 +++ test/CodeGen/SystemZ/call-01.ll | 18 + test/CodeGen/SystemZ/call-02.ll | 16 + test/CodeGen/SystemZ/cmpxchg-01.ll | 56 ++ test/CodeGen/SystemZ/cmpxchg-02.ll | 56 ++ test/CodeGen/SystemZ/cmpxchg-03.ll | 131 +++++ test/CodeGen/SystemZ/cmpxchg-04.ll | 98 ++++ test/CodeGen/SystemZ/fp-abs-01.ll | 40 ++ test/CodeGen/SystemZ/fp-abs-02.ll | 43 ++ test/CodeGen/SystemZ/fp-add-01.ll | 71 +++ test/CodeGen/SystemZ/fp-add-02.ll | 71 +++ test/CodeGen/SystemZ/fp-add-03.ll | 20 + test/CodeGen/SystemZ/fp-cmp-01.ll | 89 +++ test/CodeGen/SystemZ/fp-cmp-02.ll | 89 +++ test/CodeGen/SystemZ/fp-cmp-03.ll | 20 + test/CodeGen/SystemZ/fp-const-01.ll | 30 + test/CodeGen/SystemZ/fp-const-02.ll | 31 + test/CodeGen/SystemZ/fp-const-03.ll | 14 + test/CodeGen/SystemZ/fp-const-04.ll | 15 + test/CodeGen/SystemZ/fp-const-05.ll | 18 + test/CodeGen/SystemZ/fp-const-06.ll | 14 + test/CodeGen/SystemZ/fp-const-07.ll | 18 + test/CodeGen/SystemZ/fp-const-08.ll | 21 + test/CodeGen/SystemZ/fp-const-09.ll | 20 + test/CodeGen/SystemZ/fp-conv-01.ll | 61 ++ test/CodeGen/SystemZ/fp-conv-02.ll | 71 +++ test/CodeGen/SystemZ/fp-conv-03.ll | 89 +++ test/CodeGen/SystemZ/fp-conv-04.ll | 89 +++ test/CodeGen/SystemZ/fp-conv-05.ll | 33 ++ test/CodeGen/SystemZ/fp-conv-06.ll | 37 ++ test/CodeGen/SystemZ/fp-conv-07.ll | 33 ++ test/CodeGen/SystemZ/fp-conv-08.ll | 35 ++ test/CodeGen/SystemZ/fp-conv-09.ll | 33 ++ test/CodeGen/SystemZ/fp-conv-10.ll | 45 ++ test/CodeGen/SystemZ/fp-conv-11.ll | 33 ++ test/CodeGen/SystemZ/fp-conv-12.ll | 44 ++ test/CodeGen/SystemZ/fp-copysign-01.ll | 128 ++++ test/CodeGen/SystemZ/fp-div-01.ll | 71 +++ test/CodeGen/SystemZ/fp-div-02.ll | 71 +++ test/CodeGen/SystemZ/fp-div-03.ll | 20 + test/CodeGen/SystemZ/fp-move-01.ll | 30 + test/CodeGen/SystemZ/fp-move-02.ll | 103 ++++ test/CodeGen/SystemZ/fp-move-03.ll | 110 ++++ test/CodeGen/SystemZ/fp-move-04.ll | 110 ++++ test/CodeGen/SystemZ/fp-move-05.ll | 151 +++++ test/CodeGen/SystemZ/fp-move-06.ll | 110 ++++ test/CodeGen/SystemZ/fp-move-07.ll | 110 ++++ test/CodeGen/SystemZ/fp-move-08.ll | 151 +++++ test/CodeGen/SystemZ/fp-mul-01.ll | 71 +++ test/CodeGen/SystemZ/fp-mul-02.ll | 83 +++ test/CodeGen/SystemZ/fp-mul-03.ll | 71 +++ test/CodeGen/SystemZ/fp-mul-04.ll | 103 ++++ test/CodeGen/SystemZ/fp-mul-05.ll | 20 + test/CodeGen/SystemZ/fp-mul-06.ll | 102 ++++ test/CodeGen/SystemZ/fp-mul-07.ll | 102 ++++ test/CodeGen/SystemZ/fp-mul-08.ll | 110 ++++ test/CodeGen/SystemZ/fp-mul-09.ll | 110 ++++ test/CodeGen/SystemZ/fp-neg-01.ll | 38 ++ test/CodeGen/SystemZ/fp-round-01.ll | 36 ++ test/CodeGen/SystemZ/fp-sqrt-01.ll | 73 +++ test/CodeGen/SystemZ/fp-sqrt-02.ll | 73 +++ test/CodeGen/SystemZ/fp-sqrt-03.ll | 20 + test/CodeGen/SystemZ/fp-sub-01.ll | 71 +++ test/CodeGen/SystemZ/fp-sub-02.ll | 71 +++ test/CodeGen/SystemZ/fp-sub-03.ll | 20 + test/CodeGen/SystemZ/frame-01.ll | 110 ++++ test/CodeGen/SystemZ/frame-02.ll | 257 +++++++++ test/CodeGen/SystemZ/frame-03.ll | 259 +++++++++ test/CodeGen/SystemZ/frame-04.ll | 187 ++++++ test/CodeGen/SystemZ/frame-05.ll | 219 +++++++ test/CodeGen/SystemZ/frame-06.ll | 216 +++++++ test/CodeGen/SystemZ/frame-07.ll | 249 ++++++++ test/CodeGen/SystemZ/frame-08.ll | 277 +++++++++ test/CodeGen/SystemZ/frame-09.ll | 153 +++++ test/CodeGen/SystemZ/frame-10.ll | 14 + test/CodeGen/SystemZ/frame-11.ll | 18 + test/CodeGen/SystemZ/frame-13.ll | 299 ++++++++++ test/CodeGen/SystemZ/frame-14.ll | 322 +++++++++++ test/CodeGen/SystemZ/frame-15.ll | 352 +++++++++++ test/CodeGen/SystemZ/frame-16.ll | 327 +++++++++++ test/CodeGen/SystemZ/frame-17.ll | 177 ++++++ test/CodeGen/SystemZ/frame-18.ll | 91 +++ test/CodeGen/SystemZ/insert-01.ll | 230 ++++++++ test/CodeGen/SystemZ/insert-02.ll | 230 ++++++++ test/CodeGen/SystemZ/insert-03.ll | 71 +++ test/CodeGen/SystemZ/insert-04.ll | 137 +++++ test/CodeGen/SystemZ/insert-05.ll | 224 +++++++ test/CodeGen/SystemZ/insert-06.ll | 167 ++++++ test/CodeGen/SystemZ/int-add-01.ll | 131 +++++ test/CodeGen/SystemZ/int-add-02.ll | 129 +++++ test/CodeGen/SystemZ/int-add-03.ll | 102 ++++ test/CodeGen/SystemZ/int-add-04.ll | 102 ++++ test/CodeGen/SystemZ/int-add-05.ll | 94 +++ test/CodeGen/SystemZ/int-add-06.ll | 93 +++ test/CodeGen/SystemZ/int-add-07.ll | 131 +++++ test/CodeGen/SystemZ/int-add-08.ll | 110 ++++ test/CodeGen/SystemZ/int-add-09.ll | 56 ++ test/CodeGen/SystemZ/int-add-10.ll | 165 ++++++ test/CodeGen/SystemZ/int-add-11.ll | 128 ++++ test/CodeGen/SystemZ/int-add-12.ll | 128 ++++ test/CodeGen/SystemZ/int-cmp-01.ll | 151 +++++ test/CodeGen/SystemZ/int-cmp-02.ll | 162 ++++++ test/CodeGen/SystemZ/int-cmp-03.ll | 162 ++++++ test/CodeGen/SystemZ/int-cmp-04.ll | 107 ++++ test/CodeGen/SystemZ/int-cmp-05.ll | 203 +++++++ test/CodeGen/SystemZ/int-cmp-06.ll | 253 ++++++++ test/CodeGen/SystemZ/int-cmp-07.ll | 118 ++++ test/CodeGen/SystemZ/int-cmp-08.ll | 118 ++++ test/CodeGen/SystemZ/int-cmp-09.ll | 135 +++++ test/CodeGen/SystemZ/int-cmp-10.ll | 28 + test/CodeGen/SystemZ/int-cmp-11.ll | 135 +++++ test/CodeGen/SystemZ/int-cmp-12.ll | 40 ++ test/CodeGen/SystemZ/int-cmp-13.ll | 147 +++++ test/CodeGen/SystemZ/int-cmp-14.ll | 147 +++++ test/CodeGen/SystemZ/int-cmp-15.ll | 241 ++++++++ test/CodeGen/SystemZ/int-cmp-16.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-17.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-18.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-19.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-20.ll | 220 +++++++ test/CodeGen/SystemZ/int-cmp-21.ll | 220 +++++++ test/CodeGen/SystemZ/int-cmp-22.ll | 128 ++++ test/CodeGen/SystemZ/int-cmp-23.ll | 89 +++ test/CodeGen/SystemZ/int-cmp-24.ll | 55 ++ test/CodeGen/SystemZ/int-cmp-25.ll | 55 ++ test/CodeGen/SystemZ/int-cmp-26.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-27.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-28.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-29.ll | 133 +++++ test/CodeGen/SystemZ/int-cmp-30.ll | 225 ++++++++ test/CodeGen/SystemZ/int-cmp-31.ll | 225 ++++++++ test/CodeGen/SystemZ/int-cmp-32.ll | 237 ++++++++ test/CodeGen/SystemZ/int-cmp-33.ll | 139 +++++ test/CodeGen/SystemZ/int-cmp-34.ll | 237 ++++++++ test/CodeGen/SystemZ/int-cmp-35.ll | 139 +++++ test/CodeGen/SystemZ/int-cmp-36.ll | 81 +++ test/CodeGen/SystemZ/int-cmp-37.ll | 81 +++ test/CodeGen/SystemZ/int-cmp-38.ll | 78 +++ test/CodeGen/SystemZ/int-cmp-39.ll | 81 +++ test/CodeGen/SystemZ/int-cmp-40.ll | 81 +++ test/CodeGen/SystemZ/int-cmp-41.ll | 81 +++ test/CodeGen/SystemZ/int-cmp-42.ll | 81 +++ test/CodeGen/SystemZ/int-cmp-43.ll | 78 +++ test/CodeGen/SystemZ/int-const-01.ll | 91 +++ test/CodeGen/SystemZ/int-const-02.ll | 251 ++++++++ test/CodeGen/SystemZ/int-const-03.ll | 166 ++++++ test/CodeGen/SystemZ/int-const-04.ll | 111 ++++ test/CodeGen/SystemZ/int-const-05.ll | 102 ++++ test/CodeGen/SystemZ/int-const-06.ll | 102 ++++ test/CodeGen/SystemZ/int-conv-01.ll | 105 ++++ test/CodeGen/SystemZ/int-conv-02.ll | 114 ++++ test/CodeGen/SystemZ/int-conv-03.ll | 105 ++++ test/CodeGen/SystemZ/int-conv-04.ll | 114 ++++ test/CodeGen/SystemZ/int-conv-05.ll | 140 +++++ test/CodeGen/SystemZ/int-conv-06.ll | 114 ++++ test/CodeGen/SystemZ/int-conv-07.ll | 105 ++++ test/CodeGen/SystemZ/int-conv-08.ll | 114 ++++ test/CodeGen/SystemZ/int-conv-09.ll | 104 ++++ test/CodeGen/SystemZ/int-conv-10.ll | 113 ++++ test/CodeGen/SystemZ/int-div-01.ll | 190 ++++++ test/CodeGen/SystemZ/int-div-02.ll | 166 ++++++ test/CodeGen/SystemZ/int-div-03.ll | 189 ++++++ test/CodeGen/SystemZ/int-div-04.ll | 154 +++++ test/CodeGen/SystemZ/int-div-05.ll | 166 ++++++ test/CodeGen/SystemZ/int-move-01.ll | 35 ++ test/CodeGen/SystemZ/int-move-02.ll | 110 ++++ test/CodeGen/SystemZ/int-move-03.ll | 78 +++ test/CodeGen/SystemZ/int-move-04.ll | 130 +++++ test/CodeGen/SystemZ/int-move-05.ll | 130 +++++ test/CodeGen/SystemZ/int-move-06.ll | 117 ++++ test/CodeGen/SystemZ/int-move-07.ll | 78 +++ test/CodeGen/SystemZ/int-move-08.ll | 49 ++ test/CodeGen/SystemZ/int-move-09.ll | 81 +++ test/CodeGen/SystemZ/int-mul-01.ll | 131 +++++ test/CodeGen/SystemZ/int-mul-02.ll | 129 +++++ test/CodeGen/SystemZ/int-mul-03.ll | 102 ++++ test/CodeGen/SystemZ/int-mul-04.ll | 94 +++ test/CodeGen/SystemZ/int-mul-05.ll | 159 +++++ test/CodeGen/SystemZ/int-mul-06.ll | 159 +++++ test/CodeGen/SystemZ/int-mul-07.ll | 64 ++ test/CodeGen/SystemZ/int-mul-08.ll | 188 ++++++ test/CodeGen/SystemZ/int-neg-01.ll | 42 ++ test/CodeGen/SystemZ/int-sub-01.ll | 129 +++++ test/CodeGen/SystemZ/int-sub-02.ll | 102 ++++ test/CodeGen/SystemZ/int-sub-03.ll | 102 ++++ test/CodeGen/SystemZ/int-sub-04.ll | 94 +++ test/CodeGen/SystemZ/int-sub-05.ll | 118 ++++ test/CodeGen/SystemZ/int-sub-06.ll | 165 ++++++ test/CodeGen/SystemZ/la-01.ll | 80 +++ test/CodeGen/SystemZ/la-02.ll | 87 +++ test/CodeGen/SystemZ/la-03.ll | 85 +++ test/CodeGen/SystemZ/la-04.ll | 18 + test/CodeGen/SystemZ/lit.local.cfg | 6 + test/CodeGen/SystemZ/or-01.ll | 129 +++++ test/CodeGen/SystemZ/or-02.ll | 66 +++ test/CodeGen/SystemZ/or-03.ll | 94 +++ test/CodeGen/SystemZ/or-04.ll | 182 ++++++ test/CodeGen/SystemZ/or-05.ll | 165 ++++++ test/CodeGen/SystemZ/or-06.ll | 108 ++++ test/CodeGen/SystemZ/shift-01.ll | 114 ++++ test/CodeGen/SystemZ/shift-02.ll | 114 ++++ test/CodeGen/SystemZ/shift-03.ll | 114 ++++ test/CodeGen/SystemZ/shift-04.ll | 189 ++++++ test/CodeGen/SystemZ/shift-05.ll | 149 +++++ test/CodeGen/SystemZ/shift-06.ll | 149 +++++ test/CodeGen/SystemZ/shift-07.ll | 149 +++++ test/CodeGen/SystemZ/shift-08.ll | 190 ++++++ test/CodeGen/SystemZ/tls-01.ll | 22 + test/CodeGen/SystemZ/xor-01.ll | 129 +++++ test/CodeGen/SystemZ/xor-02.ll | 40 ++ test/CodeGen/SystemZ/xor-03.ll | 94 +++ test/CodeGen/SystemZ/xor-04.ll | 69 +++ test/CodeGen/SystemZ/xor-05.ll | 165 ++++++ test/CodeGen/SystemZ/xor-06.ll | 108 ++++ test/CodeGen/Thumb/large-stack.ll | 4 +- .../Thumb2/2013-02-19-tail-call-register-hint.ll | 10 +- test/CodeGen/X86/2003-08-03-CallArgLiveRanges.ll | 4 +- test/CodeGen/X86/2006-07-31-SingleRegClass.ll | 7 +- test/CodeGen/X86/2006-11-27-SelectLegalize.ll | 4 +- test/CodeGen/X86/2007-03-24-InlineAsmVectorOp.ll | 5 +- test/CodeGen/X86/2007-04-24-Huge-Stack.ll | 4 +- test/CodeGen/X86/2007-05-17-ShuffleISelBug.ll | 5 +- test/CodeGen/X86/2007-06-15-IntToMMX.ll | 5 +- test/CodeGen/X86/2007-08-01-LiveVariablesBug.ll | 4 +- test/CodeGen/X86/2007-10-19-SpillerUnfold.ll | 6 +- .../X86/2007-11-04-rip-immediate-constant.ll | 4 +- test/CodeGen/X86/2008-01-09-LongDoubleSin.ll | 4 +- test/CodeGen/X86/2008-02-20-InlineAsmClobber.ll | 10 +- test/CodeGen/X86/2008-11-06-testb.ll | 4 +- test/CodeGen/X86/2009-02-25-CommuteBug.ll | 4 +- test/CodeGen/X86/2009-03-25-TestBug.ll | 7 +- test/CodeGen/X86/2009-04-16-SpillerUnfold.ll | 4 +- test/CodeGen/X86/2009-04-24.ll | 7 +- test/CodeGen/X86/2009-05-08-InlineAsmIOffset.ll | 7 +- .../CodeGen/X86/2009-05-23-available_externally.ll | 5 +- .../X86/2009-06-05-ScalarToVectorByteMMX.ll | 4 +- test/CodeGen/X86/2009-08-08-CastError.ll | 4 +- test/CodeGen/X86/2010-05-25-DotDebugLoc.ll | 2 +- test/CodeGen/X86/2010-05-26-DotDebugLoc.ll | 2 +- test/CodeGen/X86/2010-05-28-Crash.ll | 2 +- test/CodeGen/X86/2010-06-14-fast-isel-fs-load.ll | 3 +- test/CodeGen/X86/2010-08-04-StackVariable.ll | 2 +- test/CodeGen/X86/2010-11-02-DbgParameter.ll | 2 +- test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll | 2 +- test/CodeGen/X86/2011-09-14-valcoalesce.ll | 6 +- test/CodeGen/X86/2012-01-10-UndefExceptionEdge.ll | 8 +- test/CodeGen/X86/2012-11-30-handlemove-dbg.ll | 5 +- test/CodeGen/X86/2013-03-13-VEX-DestReg.ll | 7 +- test/CodeGen/X86/2013-05-06-ConactVectorCrash.ll | 14 + test/CodeGen/X86/MachineSink-DbgValue.ll | 2 +- test/CodeGen/X86/add.ll | 4 +- .../X86/asm-invalid-register-class-crasher.ll | 9 + .../X86/atom-call-reg-indirect-foldedreload32.ll | 15 +- .../X86/atom-call-reg-indirect-foldedreload64.ll | 14 +- test/CodeGen/X86/atom-fixup-lea1.ll | 38 ++ test/CodeGen/X86/atom-fixup-lea2.ll | 84 +++ test/CodeGen/X86/atom-fixup-lea3.ll | 51 ++ test/CodeGen/X86/atomic-dagsched.ll | 18 +- test/CodeGen/X86/avx-basic.ll | 10 + test/CodeGen/X86/avx-brcond.ll | 150 +++++ test/CodeGen/X86/block-placement.ll | 4 +- test/CodeGen/X86/brcond.ll | 147 +++++ test/CodeGen/X86/bswap-inline-asm.ll | 7 +- test/CodeGen/X86/bt.ll | 5 +- test/CodeGen/X86/call-imm.ll | 13 +- test/CodeGen/X86/coalescer-identity.ll | 12 +- test/CodeGen/X86/code_placement_align_all.ll | 22 + test/CodeGen/X86/codegen-prepare.ll | 44 ++ test/CodeGen/X86/commute-intrinsic.ll | 4 +- test/CodeGen/X86/compact-unwind.ll | 30 + test/CodeGen/X86/compiler_used.ll | 7 +- test/CodeGen/X86/crash.ll | 2 +- test/CodeGen/X86/dbg-byval-parameter.ll | 2 +- test/CodeGen/X86/dbg-const-int.ll | 2 +- test/CodeGen/X86/dbg-const.ll | 2 +- test/CodeGen/X86/dbg-i128-const.ll | 2 +- test/CodeGen/X86/dbg-large-unsigned-const.ll | 7 +- test/CodeGen/X86/dbg-merge-loc-entry.ll | 2 +- test/CodeGen/X86/dbg-prolog-end.ll | 2 +- test/CodeGen/X86/dbg-subrange.ll | 2 +- test/CodeGen/X86/dbg-value-dag-combine.ll | 2 +- test/CodeGen/X86/dbg-value-isel.ll | 2 +- test/CodeGen/X86/dbg-value-location.ll | 2 +- test/CodeGen/X86/dbg-value-range.ll | 7 +- test/CodeGen/X86/fast-cc-merge-stack-adj.ll | 4 +- .../X86/fast-isel-avoid-unnecessary-pic-base.ll | 3 +- test/CodeGen/X86/fast-isel-constpool.ll | 4 +- test/CodeGen/X86/fast-isel-divrem-x86-64.ll | 41 ++ test/CodeGen/X86/fast-isel-divrem.ll | 122 ++++ test/CodeGen/X86/fast-isel-fneg.ll | 6 +- test/CodeGen/X86/fast-isel-gv.ll | 4 +- test/CodeGen/X86/fast-isel-tailcall.ll | 3 +- test/CodeGen/X86/fast-isel-unaligned-store.ll | 18 + test/CodeGen/X86/fastcall-correct-mangling.ll | 5 + test/CodeGen/X86/fastcc-2.ll | 5 +- test/CodeGen/X86/fastcc-byval.ll | 6 +- test/CodeGen/X86/fastcc-sret.ll | 6 +- test/CodeGen/X86/fastcc3struct.ll | 9 +- test/CodeGen/X86/fold-imm.ll | 11 +- test/CodeGen/X86/fp-elim-and-no-fp-elim.ll | 32 + test/CodeGen/X86/fp-immediate-shorten.ll | 5 +- test/CodeGen/X86/fp_load_cast_fold.ll | 8 +- test/CodeGen/X86/long-setcc.ll | 19 +- test/CodeGen/X86/lsr-normalization.ll | 5 +- test/CodeGen/X86/lsr-static-addr.ll | 2 +- test/CodeGen/X86/misched-copy.ll | 49 ++ test/CodeGen/X86/misched-matmul.ll | 68 +-- test/CodeGen/X86/misched-matrix.ll | 76 ++- test/CodeGen/X86/mmx-pinsrw.ll | 4 +- test/CodeGen/X86/mul-legalize.ll | 4 +- test/CodeGen/X86/negative_zero.ll | 4 +- test/CodeGen/X86/no-compact-unwind.ll | 56 ++ test/CodeGen/X86/nosse-error1.ll | 11 +- test/CodeGen/X86/nosse-error2.ll | 11 +- test/CodeGen/X86/optimize-max-2.ll | 8 +- test/CodeGen/X86/peep-test-2.ll | 4 +- test/CodeGen/X86/phys_subreg_coalesce.ll | 4 +- test/CodeGen/X86/pr12889.ll | 5 +- test/CodeGen/X86/pr2656.ll | 5 +- test/CodeGen/X86/private-2.ll | 4 +- test/CodeGen/X86/rd-mod-wr-eflags.ll | 21 +- test/CodeGen/X86/select-with-and-or.ll | 72 +++ test/CodeGen/X86/sincos-opt.ll | 4 +- test/CodeGen/X86/stdcall.ll | 24 +- test/CodeGen/X86/store-fp-constant.ll | 7 +- test/CodeGen/X86/subreg-to-reg-1.ll | 5 +- test/CodeGen/X86/subreg-to-reg-3.ll | 4 +- test/CodeGen/X86/subtarget-feature-change.ll | 16 +- test/CodeGen/X86/switch-crit-edge-constant.ll | 6 +- test/CodeGen/X86/tailcall-64.ll | 96 ++- test/CodeGen/X86/this-return-64.ll | 89 +++ test/CodeGen/X86/unwindraise.ll | 53 +- test/CodeGen/X86/v4f32-immediate.ll | 4 +- test/CodeGen/X86/vararg_tailcall.ll | 32 +- test/CodeGen/X86/vec_compare.ll | 156 +++++ test/CodeGen/X86/vec_set-9.ll | 9 +- test/CodeGen/X86/vec_set-B.ll | 4 +- test/CodeGen/X86/vec_set-D.ll | 4 +- test/CodeGen/X86/vec_set-I.ll | 7 +- test/CodeGen/X86/vec_shuffle-28.ll | 6 +- test/CodeGen/X86/vec_zero_cse.ll | 10 +- test/CodeGen/X86/vector.ll | 4 +- test/CodeGen/X86/viabs.ll | 183 ++++++ test/CodeGen/X86/win32_sret.ll | 13 +- test/CodeGen/X86/x86-64-frameaddr.ll | 7 +- test/CodeGen/X86/x86-64-pic-3.ll | 9 +- test/CodeGen/X86/x86-64-shortint.ll | 4 +- test/CodeGen/X86/zext-extract_subreg.ll | 6 +- test/CodeGen/X86/zext-inreg-0.ll | 15 +- test/CodeGen/XCore/global_negative_offset.ll | 25 - test/CodeGen/XCore/offset_folding.ll | 42 ++ test/CodeGen/XCore/unaligned_load.ll | 25 +- test/CodeGen/XCore/unaligned_store.ll | 14 +- 663 files changed, 39880 insertions(+), 2057 deletions(-) create mode 100644 test/CodeGen/AArch64/code-model-large-abs.ll create mode 100644 test/CodeGen/ARM/2013-04-05-Small-ByVal-Structs-PR15293.ll delete mode 100644 test/CodeGen/ARM/2013-04-05-overridden-loads-PR14824.ll create mode 100644 test/CodeGen/ARM/2013-04-16-AAPCS-C4-vs-VFP.ll create mode 100644 test/CodeGen/ARM/2013-04-16-AAPCS-C5-vs-VFP.ll create mode 100644 test/CodeGen/ARM/2013-04-18-load-overlap-PR14824.ll create mode 100644 test/CodeGen/ARM/2013-04-21-AAPCS-VA-C.1.cp.ll create mode 100644 test/CodeGen/ARM/2013-05-02-AAPCS-ByVal-Structs-C4-C5-VFP.ll create mode 100644 test/CodeGen/ARM/2013-05-02-AAPCS-ByVal-Structs-C4-C5-VFP2.ll create mode 100644 test/CodeGen/ARM/2013-05-05-IfConvertBug.ll create mode 100644 test/CodeGen/ARM/dagcombine-concatvector.ll create mode 100644 test/CodeGen/ARM/ehabi-mc-compact-pr0.ll create mode 100644 test/CodeGen/ARM/ehabi-mc-compact-pr1.ll create mode 100644 test/CodeGen/ARM/gpr-paired-spill-thumbinst.ll create mode 100644 test/CodeGen/ARM/gpr-paired-spill.ll create mode 100644 test/CodeGen/ARM/misched-copy-arm.ll create mode 100644 test/CodeGen/ARM/neon_vabs.ll create mode 100644 test/CodeGen/ARM/nop_concat_vectors.ll create mode 100644 test/CodeGen/ARM/returned-ext.ll create mode 100644 test/CodeGen/ARM/this-return.ll create mode 100644 test/CodeGen/ARM/v1-constant-fold.ll create mode 100644 test/CodeGen/ARM/vcvt-cost.ll create mode 100644 test/CodeGen/Generic/annotate.ll create mode 100644 test/CodeGen/Generic/ptr-annotate.ll create mode 100644 test/CodeGen/Hexagon/absimm.ll create mode 100644 test/CodeGen/Hexagon/always-ext.ll create mode 100644 test/CodeGen/Hexagon/cmp_pred2.ll create mode 100644 test/CodeGen/Hexagon/union-1.ll create mode 100644 test/CodeGen/Mips/dsp-patterns-cmp-vselect.ll create mode 100644 test/CodeGen/Mips/fpneeded.ll create mode 100644 test/CodeGen/Mips/fpnotneeded.ll create mode 100644 test/CodeGen/Mips/mips16_32_1.ll create mode 100644 test/CodeGen/Mips/mips16_32_10.ll create mode 100644 test/CodeGen/Mips/mips16_32_3.ll create mode 100644 test/CodeGen/Mips/mips16_32_4.ll create mode 100644 test/CodeGen/Mips/mips16_32_5.ll create mode 100644 test/CodeGen/Mips/mips16_32_6.ll create mode 100644 test/CodeGen/Mips/mips16_32_7.ll create mode 100644 test/CodeGen/Mips/mips16_32_8.ll create mode 100644 test/CodeGen/Mips/mips16_32_9.ll create mode 100644 test/CodeGen/Mips/spill-copy-acreg.ll create mode 100644 test/CodeGen/Mips/tnaked.ll create mode 100644 test/CodeGen/NVPTX/generic-to-nvvm.ll create mode 100644 test/CodeGen/NVPTX/i1-global.ll create mode 100644 test/CodeGen/NVPTX/i1-param.ll create mode 100644 test/CodeGen/NVPTX/refl1.ll create mode 100644 test/CodeGen/PowerPC/bdzlr.ll create mode 100644 test/CodeGen/PowerPC/early-ret.ll create mode 100644 test/CodeGen/PowerPC/early-ret2.ll create mode 100644 test/CodeGen/PowerPC/fold-zero.ll create mode 100644 test/CodeGen/PowerPC/fsel.ll create mode 100644 test/CodeGen/PowerPC/ifcvt.ll create mode 100644 test/CodeGen/PowerPC/lsa.ll create mode 100644 test/CodeGen/PowerPC/optcmp.ll create mode 100644 test/CodeGen/R600/README create mode 100644 test/CodeGen/R600/add.ll delete mode 100644 test/CodeGen/R600/add.v4i32.ll create mode 100644 test/CodeGen/R600/and.ll delete mode 100644 test/CodeGen/R600/and.v4i32.ll create mode 100644 test/CodeGen/R600/bfe_uint.ll create mode 100644 test/CodeGen/R600/bfi_int.ll create mode 100644 test/CodeGen/R600/call_fs.ll create mode 100644 test/CodeGen/R600/cf_end.ll create mode 100644 test/CodeGen/R600/elf.ll create mode 100644 test/CodeGen/R600/elf.r600.ll delete mode 100644 test/CodeGen/R600/fadd.v4f32.ll create mode 100644 test/CodeGen/R600/fdiv.ll delete mode 100644 test/CodeGen/R600/fdiv.v4f32.ll create mode 100644 test/CodeGen/R600/fp_to_sint.ll create mode 100644 test/CodeGen/R600/fp_to_uint.ll delete mode 100644 test/CodeGen/R600/fsub.v4f32.ll create mode 100644 test/CodeGen/R600/i8-to-double-to-float.ll delete mode 100644 test/CodeGen/R600/i8_to_double_to_float.ll create mode 100644 test/CodeGen/R600/imm.ll create mode 100644 test/CodeGen/R600/jump-address.ll delete mode 100644 test/CodeGen/R600/jump_address.ll delete mode 100644 test/CodeGen/R600/load.constant_addrspace.f32.ll delete mode 100644 test/CodeGen/R600/load.i8.ll create mode 100644 test/CodeGen/R600/load.ll create mode 100644 test/CodeGen/R600/loop-address.ll create mode 100644 test/CodeGen/R600/mul.ll create mode 100644 test/CodeGen/R600/or.ll create mode 100644 test/CodeGen/R600/pv.ll create mode 100644 test/CodeGen/R600/r600-encoding.ll create mode 100644 test/CodeGen/R600/selectcc-cnd.ll create mode 100644 test/CodeGen/R600/selectcc-cnde-int.ll delete mode 100644 test/CodeGen/R600/selectcc_cnde.ll delete mode 100644 test/CodeGen/R600/selectcc_cnde_int.ll create mode 100644 test/CodeGen/R600/setcc.ll delete mode 100644 test/CodeGen/R600/setcc.v4i32.ll create mode 100644 test/CodeGen/R600/shl.ll create mode 100644 test/CodeGen/R600/sint_to_fp.ll create mode 100644 test/CodeGen/R600/sra.ll create mode 100644 test/CodeGen/R600/srl.ll create mode 100644 test/CodeGen/R600/store.ll create mode 100644 test/CodeGen/R600/store.r600.ll delete mode 100644 test/CodeGen/R600/store.v4f32.ll delete mode 100644 test/CodeGen/R600/store.v4i32.ll create mode 100644 test/CodeGen/R600/sub.ll create mode 100644 test/CodeGen/R600/udiv.ll delete mode 100644 test/CodeGen/R600/udiv.v4i32.ll create mode 100644 test/CodeGen/R600/uint_to_fp.ll create mode 100644 test/CodeGen/R600/urecip.ll create mode 100644 test/CodeGen/R600/urem.ll delete mode 100644 test/CodeGen/R600/urem.v4i32.ll delete mode 100644 test/CodeGen/R600/vec4-expand.ll create mode 100644 test/CodeGen/R600/vselect.ll create mode 100644 test/CodeGen/R600/xor.ll create mode 100644 test/CodeGen/SPARC/64abi.ll create mode 100644 test/CodeGen/SPARC/constpool.ll create mode 100644 test/CodeGen/SPARC/globals.ll create mode 100644 test/CodeGen/SPARC/varargs.ll create mode 100644 test/CodeGen/SystemZ/addr-01.ll create mode 100644 test/CodeGen/SystemZ/addr-02.ll create mode 100644 test/CodeGen/SystemZ/addr-03.ll create mode 100644 test/CodeGen/SystemZ/alloca-01.ll create mode 100644 test/CodeGen/SystemZ/alloca-02.ll create mode 100644 test/CodeGen/SystemZ/and-01.ll create mode 100644 test/CodeGen/SystemZ/and-02.ll create mode 100644 test/CodeGen/SystemZ/and-03.ll create mode 100644 test/CodeGen/SystemZ/and-04.ll create mode 100644 test/CodeGen/SystemZ/and-05.ll create mode 100644 test/CodeGen/SystemZ/and-06.ll create mode 100644 test/CodeGen/SystemZ/args-01.ll create mode 100644 test/CodeGen/SystemZ/args-02.ll create mode 100644 test/CodeGen/SystemZ/args-03.ll create mode 100644 test/CodeGen/SystemZ/args-04.ll create mode 100644 test/CodeGen/SystemZ/args-05.ll create mode 100644 test/CodeGen/SystemZ/args-06.ll create mode 100644 test/CodeGen/SystemZ/asm-01.ll create mode 100644 test/CodeGen/SystemZ/asm-02.ll create mode 100644 test/CodeGen/SystemZ/asm-03.ll create mode 100644 test/CodeGen/SystemZ/asm-04.ll create mode 100644 test/CodeGen/SystemZ/asm-05.ll create mode 100644 test/CodeGen/SystemZ/asm-06.ll create mode 100644 test/CodeGen/SystemZ/asm-07.ll create mode 100644 test/CodeGen/SystemZ/asm-08.ll create mode 100644 test/CodeGen/SystemZ/asm-09.ll create mode 100644 test/CodeGen/SystemZ/asm-10.ll create mode 100644 test/CodeGen/SystemZ/asm-11.ll create mode 100644 test/CodeGen/SystemZ/asm-12.ll create mode 100644 test/CodeGen/SystemZ/asm-13.ll create mode 100644 test/CodeGen/SystemZ/asm-14.ll create mode 100644 test/CodeGen/SystemZ/asm-15.ll create mode 100644 test/CodeGen/SystemZ/asm-16.ll create mode 100644 test/CodeGen/SystemZ/atomic-load-01.ll create mode 100644 test/CodeGen/SystemZ/atomic-load-02.ll create mode 100644 test/CodeGen/SystemZ/atomic-load-03.ll create mode 100644 test/CodeGen/SystemZ/atomic-load-04.ll create mode 100644 test/CodeGen/SystemZ/atomic-store-01.ll create mode 100644 test/CodeGen/SystemZ/atomic-store-02.ll create mode 100644 test/CodeGen/SystemZ/atomic-store-03.ll create mode 100644 test/CodeGen/SystemZ/atomic-store-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-add-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-add-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-add-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-add-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-and-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-and-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-and-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-and-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-minmax-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-minmax-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-minmax-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-minmax-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-nand-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-nand-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-nand-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-nand-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-or-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-or-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-or-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-or-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-sub-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-sub-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-sub-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-sub-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xchg-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xchg-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xchg-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xchg-04.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xor-01.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xor-02.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xor-03.ll create mode 100644 test/CodeGen/SystemZ/atomicrmw-xor-04.ll create mode 100644 test/CodeGen/SystemZ/branch-01.ll create mode 100644 test/CodeGen/SystemZ/branch-02.ll create mode 100644 test/CodeGen/SystemZ/branch-03.ll create mode 100644 test/CodeGen/SystemZ/branch-04.ll create mode 100644 test/CodeGen/SystemZ/branch-05.ll create mode 100644 test/CodeGen/SystemZ/bswap-01.ll create mode 100644 test/CodeGen/SystemZ/bswap-02.ll create mode 100644 test/CodeGen/SystemZ/bswap-03.ll create mode 100644 test/CodeGen/SystemZ/bswap-04.ll create mode 100644 test/CodeGen/SystemZ/bswap-05.ll create mode 100644 test/CodeGen/SystemZ/call-01.ll create mode 100644 test/CodeGen/SystemZ/call-02.ll create mode 100644 test/CodeGen/SystemZ/cmpxchg-01.ll create mode 100644 test/CodeGen/SystemZ/cmpxchg-02.ll create mode 100644 test/CodeGen/SystemZ/cmpxchg-03.ll create mode 100644 test/CodeGen/SystemZ/cmpxchg-04.ll create mode 100644 test/CodeGen/SystemZ/fp-abs-01.ll create mode 100644 test/CodeGen/SystemZ/fp-abs-02.ll create mode 100644 test/CodeGen/SystemZ/fp-add-01.ll create mode 100644 test/CodeGen/SystemZ/fp-add-02.ll create mode 100644 test/CodeGen/SystemZ/fp-add-03.ll create mode 100644 test/CodeGen/SystemZ/fp-cmp-01.ll create mode 100644 test/CodeGen/SystemZ/fp-cmp-02.ll create mode 100644 test/CodeGen/SystemZ/fp-cmp-03.ll create mode 100644 test/CodeGen/SystemZ/fp-const-01.ll create mode 100644 test/CodeGen/SystemZ/fp-const-02.ll create mode 100644 test/CodeGen/SystemZ/fp-const-03.ll create mode 100644 test/CodeGen/SystemZ/fp-const-04.ll create mode 100644 test/CodeGen/SystemZ/fp-const-05.ll create mode 100644 test/CodeGen/SystemZ/fp-const-06.ll create mode 100644 test/CodeGen/SystemZ/fp-const-07.ll create mode 100644 test/CodeGen/SystemZ/fp-const-08.ll create mode 100644 test/CodeGen/SystemZ/fp-const-09.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-01.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-02.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-03.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-04.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-05.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-06.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-07.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-08.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-09.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-10.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-11.ll create mode 100644 test/CodeGen/SystemZ/fp-conv-12.ll create mode 100644 test/CodeGen/SystemZ/fp-copysign-01.ll create mode 100644 test/CodeGen/SystemZ/fp-div-01.ll create mode 100644 test/CodeGen/SystemZ/fp-div-02.ll create mode 100644 test/CodeGen/SystemZ/fp-div-03.ll create mode 100644 test/CodeGen/SystemZ/fp-move-01.ll create mode 100644 test/CodeGen/SystemZ/fp-move-02.ll create mode 100644 test/CodeGen/SystemZ/fp-move-03.ll create mode 100644 test/CodeGen/SystemZ/fp-move-04.ll create mode 100644 test/CodeGen/SystemZ/fp-move-05.ll create mode 100644 test/CodeGen/SystemZ/fp-move-06.ll create mode 100644 test/CodeGen/SystemZ/fp-move-07.ll create mode 100644 test/CodeGen/SystemZ/fp-move-08.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-01.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-02.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-03.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-04.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-05.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-06.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-07.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-08.ll create mode 100644 test/CodeGen/SystemZ/fp-mul-09.ll create mode 100644 test/CodeGen/SystemZ/fp-neg-01.ll create mode 100644 test/CodeGen/SystemZ/fp-round-01.ll create mode 100644 test/CodeGen/SystemZ/fp-sqrt-01.ll create mode 100644 test/CodeGen/SystemZ/fp-sqrt-02.ll create mode 100644 test/CodeGen/SystemZ/fp-sqrt-03.ll create mode 100644 test/CodeGen/SystemZ/fp-sub-01.ll create mode 100644 test/CodeGen/SystemZ/fp-sub-02.ll create mode 100644 test/CodeGen/SystemZ/fp-sub-03.ll create mode 100644 test/CodeGen/SystemZ/frame-01.ll create mode 100644 test/CodeGen/SystemZ/frame-02.ll create mode 100644 test/CodeGen/SystemZ/frame-03.ll create mode 100644 test/CodeGen/SystemZ/frame-04.ll create mode 100644 test/CodeGen/SystemZ/frame-05.ll create mode 100644 test/CodeGen/SystemZ/frame-06.ll create mode 100644 test/CodeGen/SystemZ/frame-07.ll create mode 100644 test/CodeGen/SystemZ/frame-08.ll create mode 100644 test/CodeGen/SystemZ/frame-09.ll create mode 100644 test/CodeGen/SystemZ/frame-10.ll create mode 100644 test/CodeGen/SystemZ/frame-11.ll create mode 100644 test/CodeGen/SystemZ/frame-13.ll create mode 100644 test/CodeGen/SystemZ/frame-14.ll create mode 100644 test/CodeGen/SystemZ/frame-15.ll create mode 100644 test/CodeGen/SystemZ/frame-16.ll create mode 100644 test/CodeGen/SystemZ/frame-17.ll create mode 100644 test/CodeGen/SystemZ/frame-18.ll create mode 100644 test/CodeGen/SystemZ/insert-01.ll create mode 100644 test/CodeGen/SystemZ/insert-02.ll create mode 100644 test/CodeGen/SystemZ/insert-03.ll create mode 100644 test/CodeGen/SystemZ/insert-04.ll create mode 100644 test/CodeGen/SystemZ/insert-05.ll create mode 100644 test/CodeGen/SystemZ/insert-06.ll create mode 100644 test/CodeGen/SystemZ/int-add-01.ll create mode 100644 test/CodeGen/SystemZ/int-add-02.ll create mode 100644 test/CodeGen/SystemZ/int-add-03.ll create mode 100644 test/CodeGen/SystemZ/int-add-04.ll create mode 100644 test/CodeGen/SystemZ/int-add-05.ll create mode 100644 test/CodeGen/SystemZ/int-add-06.ll create mode 100644 test/CodeGen/SystemZ/int-add-07.ll create mode 100644 test/CodeGen/SystemZ/int-add-08.ll create mode 100644 test/CodeGen/SystemZ/int-add-09.ll create mode 100644 test/CodeGen/SystemZ/int-add-10.ll create mode 100644 test/CodeGen/SystemZ/int-add-11.ll create mode 100644 test/CodeGen/SystemZ/int-add-12.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-01.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-02.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-03.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-04.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-05.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-06.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-07.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-08.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-09.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-10.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-11.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-12.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-13.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-14.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-15.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-16.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-17.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-18.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-19.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-20.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-21.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-22.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-23.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-24.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-25.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-26.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-27.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-28.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-29.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-30.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-31.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-32.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-33.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-34.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-35.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-36.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-37.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-38.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-39.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-40.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-41.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-42.ll create mode 100644 test/CodeGen/SystemZ/int-cmp-43.ll create mode 100644 test/CodeGen/SystemZ/int-const-01.ll create mode 100644 test/CodeGen/SystemZ/int-const-02.ll create mode 100644 test/CodeGen/SystemZ/int-const-03.ll create mode 100644 test/CodeGen/SystemZ/int-const-04.ll create mode 100644 test/CodeGen/SystemZ/int-const-05.ll create mode 100644 test/CodeGen/SystemZ/int-const-06.ll create mode 100644 test/CodeGen/SystemZ/int-conv-01.ll create mode 100644 test/CodeGen/SystemZ/int-conv-02.ll create mode 100644 test/CodeGen/SystemZ/int-conv-03.ll create mode 100644 test/CodeGen/SystemZ/int-conv-04.ll create mode 100644 test/CodeGen/SystemZ/int-conv-05.ll create mode 100644 test/CodeGen/SystemZ/int-conv-06.ll create mode 100644 test/CodeGen/SystemZ/int-conv-07.ll create mode 100644 test/CodeGen/SystemZ/int-conv-08.ll create mode 100644 test/CodeGen/SystemZ/int-conv-09.ll create mode 100644 test/CodeGen/SystemZ/int-conv-10.ll create mode 100644 test/CodeGen/SystemZ/int-div-01.ll create mode 100644 test/CodeGen/SystemZ/int-div-02.ll create mode 100644 test/CodeGen/SystemZ/int-div-03.ll create mode 100644 test/CodeGen/SystemZ/int-div-04.ll create mode 100644 test/CodeGen/SystemZ/int-div-05.ll create mode 100644 test/CodeGen/SystemZ/int-move-01.ll create mode 100644 test/CodeGen/SystemZ/int-move-02.ll create mode 100644 test/CodeGen/SystemZ/int-move-03.ll create mode 100644 test/CodeGen/SystemZ/int-move-04.ll create mode 100644 test/CodeGen/SystemZ/int-move-05.ll create mode 100644 test/CodeGen/SystemZ/int-move-06.ll create mode 100644 test/CodeGen/SystemZ/int-move-07.ll create mode 100644 test/CodeGen/SystemZ/int-move-08.ll create mode 100644 test/CodeGen/SystemZ/int-move-09.ll create mode 100644 test/CodeGen/SystemZ/int-mul-01.ll create mode 100644 test/CodeGen/SystemZ/int-mul-02.ll create mode 100644 test/CodeGen/SystemZ/int-mul-03.ll create mode 100644 test/CodeGen/SystemZ/int-mul-04.ll create mode 100644 test/CodeGen/SystemZ/int-mul-05.ll create mode 100644 test/CodeGen/SystemZ/int-mul-06.ll create mode 100644 test/CodeGen/SystemZ/int-mul-07.ll create mode 100644 test/CodeGen/SystemZ/int-mul-08.ll create mode 100644 test/CodeGen/SystemZ/int-neg-01.ll create mode 100644 test/CodeGen/SystemZ/int-sub-01.ll create mode 100644 test/CodeGen/SystemZ/int-sub-02.ll create mode 100644 test/CodeGen/SystemZ/int-sub-03.ll create mode 100644 test/CodeGen/SystemZ/int-sub-04.ll create mode 100644 test/CodeGen/SystemZ/int-sub-05.ll create mode 100644 test/CodeGen/SystemZ/int-sub-06.ll create mode 100644 test/CodeGen/SystemZ/la-01.ll create mode 100644 test/CodeGen/SystemZ/la-02.ll create mode 100644 test/CodeGen/SystemZ/la-03.ll create mode 100644 test/CodeGen/SystemZ/la-04.ll create mode 100644 test/CodeGen/SystemZ/lit.local.cfg create mode 100644 test/CodeGen/SystemZ/or-01.ll create mode 100644 test/CodeGen/SystemZ/or-02.ll create mode 100644 test/CodeGen/SystemZ/or-03.ll create mode 100644 test/CodeGen/SystemZ/or-04.ll create mode 100644 test/CodeGen/SystemZ/or-05.ll create mode 100644 test/CodeGen/SystemZ/or-06.ll create mode 100644 test/CodeGen/SystemZ/shift-01.ll create mode 100644 test/CodeGen/SystemZ/shift-02.ll create mode 100644 test/CodeGen/SystemZ/shift-03.ll create mode 100644 test/CodeGen/SystemZ/shift-04.ll create mode 100644 test/CodeGen/SystemZ/shift-05.ll create mode 100644 test/CodeGen/SystemZ/shift-06.ll create mode 100644 test/CodeGen/SystemZ/shift-07.ll create mode 100644 test/CodeGen/SystemZ/shift-08.ll create mode 100644 test/CodeGen/SystemZ/tls-01.ll create mode 100644 test/CodeGen/SystemZ/xor-01.ll create mode 100644 test/CodeGen/SystemZ/xor-02.ll create mode 100644 test/CodeGen/SystemZ/xor-03.ll create mode 100644 test/CodeGen/SystemZ/xor-04.ll create mode 100644 test/CodeGen/SystemZ/xor-05.ll create mode 100644 test/CodeGen/SystemZ/xor-06.ll create mode 100644 test/CodeGen/X86/2013-05-06-ConactVectorCrash.ll create mode 100644 test/CodeGen/X86/asm-invalid-register-class-crasher.ll create mode 100644 test/CodeGen/X86/atom-fixup-lea1.ll create mode 100644 test/CodeGen/X86/atom-fixup-lea2.ll create mode 100644 test/CodeGen/X86/atom-fixup-lea3.ll create mode 100644 test/CodeGen/X86/avx-brcond.ll create mode 100644 test/CodeGen/X86/code_placement_align_all.ll create mode 100644 test/CodeGen/X86/codegen-prepare.ll create mode 100644 test/CodeGen/X86/compact-unwind.ll create mode 100644 test/CodeGen/X86/fast-isel-divrem-x86-64.ll create mode 100644 test/CodeGen/X86/fast-isel-divrem.ll create mode 100644 test/CodeGen/X86/fast-isel-unaligned-store.ll create mode 100644 test/CodeGen/X86/fp-elim-and-no-fp-elim.ll create mode 100644 test/CodeGen/X86/misched-copy.ll create mode 100644 test/CodeGen/X86/no-compact-unwind.ll create mode 100644 test/CodeGen/X86/select-with-and-or.ll create mode 100644 test/CodeGen/X86/this-return-64.ll create mode 100644 test/CodeGen/X86/viabs.ll delete mode 100644 test/CodeGen/XCore/global_negative_offset.ll create mode 100644 test/CodeGen/XCore/offset_folding.ll (limited to 'test/CodeGen') diff --git a/test/CodeGen/AArch64/adrp-relocation.ll b/test/CodeGen/AArch64/adrp-relocation.ll index c33b442624a5..cf411166a3a0 100644 --- a/test/CodeGen/AArch64/adrp-relocation.ll +++ b/test/CodeGen/AArch64/adrp-relocation.ll @@ -1,4 +1,4 @@ -; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -filetype=obj < %s | elf-dump | FileCheck %s +; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -filetype=obj < %s | llvm-readobj -s -r | FileCheck %s define i64 @testfn() nounwind { entry: @@ -19,17 +19,9 @@ entry: ; relative offsets of testfn and foo) because its value depends on where this ; object file's .text section gets relocated in memory. -; CHECK: .rela.text - -; CHECK: # Relocation 0 -; CHECK-NEXT: (('r_offset', 0x0000000000000010) -; CHECK-NEXT: ('r_sym', 0x00000007) -; CHECK-NEXT: ('r_type', 0x00000113) -; CHECK-NEXT: ('r_addend', 0x0000000000000000) -; CHECK-NEXT: ), -; CHECK-NEXT: Relocation 1 -; CHECK-NEXT: (('r_offset', 0x0000000000000014) -; CHECK-NEXT: ('r_sym', 0x00000007) -; CHECK-NEXT: ('r_type', 0x00000115) -; CHECK-NEXT: ('r_addend', 0x0000000000000000) -; CHECK-NEXT: ), +; CHECK: Relocations [ +; CHECK-NEXT: Section (1) .text { +; CHECK-NEXT: 0x10 R_AARCH64_ADR_PREL_PG_HI21 testfn 0x0 +; CHECK-NEXT: 0x14 R_AARCH64_ADD_ABS_LO12_NC testfn 0x0 +; CHECK-NEXT: } +; CHECK-NEXT: ] diff --git a/test/CodeGen/AArch64/atomic-ops-not-barriers.ll b/test/CodeGen/AArch64/atomic-ops-not-barriers.ll index 3c03e47147b0..9888a742e32b 100644 --- a/test/CodeGen/AArch64/atomic-ops-not-barriers.ll +++ b/test/CodeGen/AArch64/atomic-ops-not-barriers.ll @@ -1,4 +1,4 @@ -; RUN: llc -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s +; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs < %s | FileCheck %s define i32 @foo(i32* %var, i1 %cond) { ; CHECK: foo: @@ -9,7 +9,9 @@ simple_ver: store i32 %newval, i32* %var br label %somewhere atomic_ver: - %val = atomicrmw add i32* %var, i32 -1 seq_cst + fence seq_cst + %val = atomicrmw add i32* %var, i32 -1 monotonic + fence seq_cst br label %somewhere ; CHECK: dmb ; CHECK: ldxr diff --git a/test/CodeGen/AArch64/atomic-ops.ll b/test/CodeGen/AArch64/atomic-ops.ll index f3c16171cc83..5e87f21a217d 100644 --- a/test/CodeGen/AArch64/atomic-ops.ll +++ b/test/CodeGen/AArch64/atomic-ops.ll @@ -8,18 +8,18 @@ define i8 @test_atomic_load_add_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_add_i8: %old = atomicrmw add i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrb w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrb w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: add [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -27,19 +27,19 @@ define i8 @test_atomic_load_add_i8(i8 %offset) nounwind { define i16 @test_atomic_load_add_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_add_i16: - %old = atomicrmw add i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw add i16* @var16, i16 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrh w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrh w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: add [[NEW:w[0-9]+]], w[[OLD]], w0 ; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -47,8 +47,8 @@ define i16 @test_atomic_load_add_i16(i16 %offset) nounwind { define i32 @test_atomic_load_add_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_add_i32: - %old = atomicrmw add i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw add i32* @var32, i32 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 @@ -57,9 +57,9 @@ define i32 @test_atomic_load_add_i32(i32 %offset) nounwind { ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: add [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -67,8 +67,8 @@ define i32 @test_atomic_load_add_i32(i32 %offset) nounwind { define i64 @test_atomic_load_add_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_add_i64: - %old = atomicrmw add i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw add i64* @var64, i64 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 @@ -79,7 +79,7 @@ define i64 @test_atomic_load_add_i64(i64 %offset) nounwind { ; CHECK-NEXT: add [[NEW:x[0-9]+]], x[[OLD]], x0 ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -87,8 +87,8 @@ define i64 @test_atomic_load_add_i64(i64 %offset) nounwind { define i8 @test_atomic_load_sub_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_sub_i8: - %old = atomicrmw sub i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw sub i8* @var8, i8 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 @@ -99,7 +99,7 @@ define i8 @test_atomic_load_sub_i8(i8 %offset) nounwind { ; CHECK-NEXT: sub [[NEW:w[0-9]+]], w[[OLD]], w0 ; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -107,8 +107,8 @@ define i8 @test_atomic_load_sub_i8(i8 %offset) nounwind { define i16 @test_atomic_load_sub_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_sub_i16: - %old = atomicrmw sub i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw sub i16* @var16, i16 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 @@ -117,9 +117,9 @@ define i16 @test_atomic_load_sub_i16(i16 %offset) nounwind { ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: sub [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -127,19 +127,19 @@ define i16 @test_atomic_load_sub_i16(i16 %offset) nounwind { define i32 @test_atomic_load_sub_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_sub_i32: - %old = atomicrmw sub i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw sub i32* @var32, i32 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: sub [[NEW:w[0-9]+]], w[[OLD]], w0 ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -148,18 +148,18 @@ define i32 @test_atomic_load_sub_i32(i32 %offset) nounwind { define i64 @test_atomic_load_sub_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_sub_i64: %old = atomicrmw sub i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr x[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr x[[OLD:[0-9]+]], [x[[ADDR]]] ; x0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: sub [[NEW:x[0-9]+]], x[[OLD]], x0 -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -167,8 +167,8 @@ define i64 @test_atomic_load_sub_i64(i64 %offset) nounwind { define i8 @test_atomic_load_and_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_and_i8: - %old = atomicrmw and i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw and i8* @var8, i8 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 @@ -177,9 +177,9 @@ define i8 @test_atomic_load_and_i8(i8 %offset) nounwind { ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: and [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -187,8 +187,8 @@ define i8 @test_atomic_load_and_i8(i8 %offset) nounwind { define i16 @test_atomic_load_and_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_and_i16: - %old = atomicrmw and i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw and i16* @var16, i16 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 @@ -199,7 +199,7 @@ define i16 @test_atomic_load_and_i16(i16 %offset) nounwind { ; CHECK-NEXT: and [[NEW:w[0-9]+]], w[[OLD]], w0 ; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -208,18 +208,18 @@ define i16 @test_atomic_load_and_i16(i16 %offset) nounwind { define i32 @test_atomic_load_and_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_and_i32: %old = atomicrmw and i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: and [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -227,19 +227,19 @@ define i32 @test_atomic_load_and_i32(i32 %offset) nounwind { define i64 @test_atomic_load_and_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_and_i64: - %old = atomicrmw and i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw and i64* @var64, i64 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr x[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr x[[OLD:[0-9]+]], [x[[ADDR]]] ; x0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: and [[NEW:x[0-9]+]], x[[OLD]], x0 ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -248,18 +248,18 @@ define i64 @test_atomic_load_and_i64(i64 %offset) nounwind { define i8 @test_atomic_load_or_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_or_i8: %old = atomicrmw or i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrb w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrb w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: orr [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -267,8 +267,8 @@ define i8 @test_atomic_load_or_i8(i8 %offset) nounwind { define i16 @test_atomic_load_or_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_or_i16: - %old = atomicrmw or i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw or i16* @var16, i16 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 @@ -279,7 +279,7 @@ define i16 @test_atomic_load_or_i16(i16 %offset) nounwind { ; CHECK-NEXT: orr [[NEW:w[0-9]+]], w[[OLD]], w0 ; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -287,19 +287,19 @@ define i16 @test_atomic_load_or_i16(i16 %offset) nounwind { define i32 @test_atomic_load_or_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_or_i32: - %old = atomicrmw or i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw or i32* @var32, i32 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: orr [[NEW:w[0-9]+]], w[[OLD]], w0 ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -307,8 +307,8 @@ define i32 @test_atomic_load_or_i32(i32 %offset) nounwind { define i64 @test_atomic_load_or_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_or_i64: - %old = atomicrmw or i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw or i64* @var64, i64 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 @@ -317,9 +317,9 @@ define i64 @test_atomic_load_or_i64(i64 %offset) nounwind { ; x0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: orr [[NEW:x[0-9]+]], x[[OLD]], x0 -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -327,19 +327,19 @@ define i64 @test_atomic_load_or_i64(i64 %offset) nounwind { define i8 @test_atomic_load_xor_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_xor_i8: - %old = atomicrmw xor i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw xor i8* @var8, i8 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrb w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrb w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: eor [[NEW:w[0-9]+]], w[[OLD]], w0 ; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -347,8 +347,8 @@ define i8 @test_atomic_load_xor_i8(i8 %offset) nounwind { define i16 @test_atomic_load_xor_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_xor_i16: - %old = atomicrmw xor i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw xor i16* @var16, i16 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 @@ -357,9 +357,9 @@ define i16 @test_atomic_load_xor_i16(i16 %offset) nounwind { ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: eor [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -368,18 +368,18 @@ define i16 @test_atomic_load_xor_i16(i16 %offset) nounwind { define i32 @test_atomic_load_xor_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_xor_i32: %old = atomicrmw xor i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: eor [[NEW:w[0-9]+]], w[[OLD]], w0 -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -387,8 +387,8 @@ define i32 @test_atomic_load_xor_i32(i32 %offset) nounwind { define i64 @test_atomic_load_xor_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_xor_i64: - %old = atomicrmw xor i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw xor i64* @var64, i64 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 @@ -399,7 +399,7 @@ define i64 @test_atomic_load_xor_i64(i64 %offset) nounwind { ; CHECK-NEXT: eor [[NEW:x[0-9]+]], x[[OLD]], x0 ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -407,8 +407,8 @@ define i64 @test_atomic_load_xor_i64(i64 %offset) nounwind { define i8 @test_atomic_load_xchg_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_xchg_i8: - %old = atomicrmw xchg i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw xchg i8* @var8, i8 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 @@ -418,7 +418,7 @@ define i8 @test_atomic_load_xchg_i8(i8 %offset) nounwind { ; function there. ; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], w0, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -427,17 +427,17 @@ define i8 @test_atomic_load_xchg_i8(i8 %offset) nounwind { define i16 @test_atomic_load_xchg_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_xchg_i16: %old = atomicrmw xchg i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrh w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrh w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. -; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], w0, [x[[ADDR]]] +; CHECK-NEXT: stlxrh [[STATUS:w[0-9]+]], w0, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -445,8 +445,8 @@ define i16 @test_atomic_load_xchg_i16(i16 %offset) nounwind { define i32 @test_atomic_load_xchg_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_xchg_i32: - %old = atomicrmw xchg i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw xchg i32* @var32, i32 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 @@ -454,9 +454,9 @@ define i32 @test_atomic_load_xchg_i32(i32 %offset) nounwind { ; CHECK-NEXT: ldxr w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], w0, [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], w0, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -464,18 +464,18 @@ define i32 @test_atomic_load_xchg_i32(i32 %offset) nounwind { define i64 @test_atomic_load_xchg_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_xchg_i64: - %old = atomicrmw xchg i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw xchg i64* @var64, i64 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr x[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr x[[OLD:[0-9]+]], [x[[ADDR]]] ; x0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], x0, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -484,20 +484,20 @@ define i64 @test_atomic_load_xchg_i64(i64 %offset) nounwind { define i8 @test_atomic_load_min_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_min_i8: - %old = atomicrmw min i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw min i8* @var8, i8 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrb w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrb w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]], sxtb ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, gt ; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -505,8 +505,8 @@ define i8 @test_atomic_load_min_i8(i8 %offset) nounwind { define i16 @test_atomic_load_min_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_min_i16: - %old = atomicrmw min i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw min i16* @var16, i16 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 @@ -516,9 +516,9 @@ define i16 @test_atomic_load_min_i16(i16 %offset) nounwind { ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]], sxth ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, gt -; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -526,8 +526,8 @@ define i16 @test_atomic_load_min_i16(i16 %offset) nounwind { define i32 @test_atomic_load_min_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_min_i32: - %old = atomicrmw min i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw min i32* @var32, i32 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 @@ -539,7 +539,7 @@ define i32 @test_atomic_load_min_i32(i32 %offset) nounwind { ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, gt ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -548,19 +548,19 @@ define i32 @test_atomic_load_min_i32(i32 %offset) nounwind { define i64 @test_atomic_load_min_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_min_i64: %old = atomicrmw min i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr x[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr x[[OLD:[0-9]+]], [x[[ADDR]]] ; x0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp x0, x[[OLD]] ; CHECK-NEXT: csel [[NEW:x[0-9]+]], x[[OLD]], x0, gt -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -569,19 +569,19 @@ define i64 @test_atomic_load_min_i64(i64 %offset) nounwind { define i8 @test_atomic_load_max_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_max_i8: %old = atomicrmw max i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrb w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrb w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]], sxtb ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, lt -; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -589,20 +589,20 @@ define i8 @test_atomic_load_max_i8(i8 %offset) nounwind { define i16 @test_atomic_load_max_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_max_i16: - %old = atomicrmw max i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw max i16* @var16, i16 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrh w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrh w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]], sxth ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, lt ; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -610,8 +610,8 @@ define i16 @test_atomic_load_max_i16(i16 %offset) nounwind { define i32 @test_atomic_load_max_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_max_i32: - %old = atomicrmw max i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw max i32* @var32, i32 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 @@ -621,9 +621,9 @@ define i32 @test_atomic_load_max_i32(i32 %offset) nounwind { ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]] ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, lt -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -631,8 +631,8 @@ define i32 @test_atomic_load_max_i32(i32 %offset) nounwind { define i64 @test_atomic_load_max_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_max_i64: - %old = atomicrmw max i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw max i64* @var64, i64 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 @@ -644,7 +644,7 @@ define i64 @test_atomic_load_max_i64(i64 %offset) nounwind { ; CHECK-NEXT: csel [[NEW:x[0-9]+]], x[[OLD]], x0, lt ; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -652,8 +652,8 @@ define i64 @test_atomic_load_max_i64(i64 %offset) nounwind { define i8 @test_atomic_load_umin_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_umin_i8: - %old = atomicrmw umin i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw umin i8* @var8, i8 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 @@ -665,7 +665,7 @@ define i8 @test_atomic_load_umin_i8(i8 %offset) nounwind { ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, hi ; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -673,20 +673,20 @@ define i8 @test_atomic_load_umin_i8(i8 %offset) nounwind { define i16 @test_atomic_load_umin_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_umin_i16: - %old = atomicrmw umin i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw umin i16* @var16, i16 %offset acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrh w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrh w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]], uxth ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, hi ; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -695,19 +695,19 @@ define i16 @test_atomic_load_umin_i16(i16 %offset) nounwind { define i32 @test_atomic_load_umin_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_umin_i32: %old = atomicrmw umin i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]] ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, hi -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -715,20 +715,20 @@ define i32 @test_atomic_load_umin_i32(i32 %offset) nounwind { define i64 @test_atomic_load_umin_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_umin_i64: - %old = atomicrmw umin i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw umin i64* @var64, i64 %offset acq_rel +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr x[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr x[[OLD:[0-9]+]], [x[[ADDR]]] ; x0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp x0, x[[OLD]] ; CHECK-NEXT: csel [[NEW:x[0-9]+]], x[[OLD]], x0, hi -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -736,20 +736,20 @@ define i64 @test_atomic_load_umin_i64(i64 %offset) nounwind { define i8 @test_atomic_load_umax_i8(i8 %offset) nounwind { ; CHECK: test_atomic_load_umax_i8: - %old = atomicrmw umax i8* @var8, i8 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw umax i8* @var8, i8 %offset acq_rel +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxrb w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrb w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]], uxtb ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, lo -; CHECK-NEXT: stxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxrb [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -757,8 +757,8 @@ define i8 @test_atomic_load_umax_i8(i8 %offset) nounwind { define i16 @test_atomic_load_umax_i16(i16 %offset) nounwind { ; CHECK: test_atomic_load_umax_i16: - %old = atomicrmw umax i16* @var16, i16 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw umax i16* @var16, i16 %offset monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 @@ -770,7 +770,7 @@ define i16 @test_atomic_load_umax_i16(i16 %offset) nounwind { ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, lo ; CHECK-NEXT: stxrh [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -779,19 +779,19 @@ define i16 @test_atomic_load_umax_i16(i16 %offset) nounwind { define i32 @test_atomic_load_umax_i32(i32 %offset) nounwind { ; CHECK: test_atomic_load_umax_i32: %old = atomicrmw umax i32* @var32, i32 %offset seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 ; CHECK: .LBB{{[0-9]+}}_1: -; CHECK-NEXT: ldxr w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxr w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w0, w[[OLD]] ; CHECK-NEXT: csel [[NEW:w[0-9]+]], w[[OLD]], w0, lo -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -799,8 +799,8 @@ define i32 @test_atomic_load_umax_i32(i32 %offset) nounwind { define i64 @test_atomic_load_umax_i64(i64 %offset) nounwind { ; CHECK: test_atomic_load_umax_i64: - %old = atomicrmw umax i64* @var64, i64 %offset seq_cst -; CHECK: dmb ish + %old = atomicrmw umax i64* @var64, i64 %offset release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 @@ -810,9 +810,9 @@ define i64 @test_atomic_load_umax_i64(i64 %offset) nounwind { ; function there. ; CHECK-NEXT: cmp x0, x[[OLD]] ; CHECK-NEXT: csel [[NEW:x[0-9]+]], x[[OLD]], x0, lo -; CHECK-NEXT: stxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] +; CHECK-NEXT: stlxr [[STATUS:w[0-9]+]], [[NEW]], [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], .LBB{{[0-9]+}}_1 -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -820,13 +820,13 @@ define i64 @test_atomic_load_umax_i64(i64 %offset) nounwind { define i8 @test_atomic_cmpxchg_i8(i8 %wanted, i8 %new) nounwind { ; CHECK: test_atomic_cmpxchg_i8: - %old = cmpxchg i8* @var8, i8 %wanted, i8 %new seq_cst -; CHECK: dmb ish + %old = cmpxchg i8* @var8, i8 %wanted, i8 %new acquire +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 ; CHECK: [[STARTAGAIN:.LBB[0-9]+_[0-9]+]]: -; CHECK-NEXT: ldxrb w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrb w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w[[OLD]], w0 @@ -834,7 +834,7 @@ define i8 @test_atomic_cmpxchg_i8(i8 %wanted, i8 %new) nounwind { ; As above, w1 is a reasonable guess. ; CHECK: stxrb [[STATUS:w[0-9]+]], w1, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], [[STARTAGAIN]] -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i8 %old @@ -843,20 +843,20 @@ define i8 @test_atomic_cmpxchg_i8(i8 %wanted, i8 %new) nounwind { define i16 @test_atomic_cmpxchg_i16(i16 %wanted, i16 %new) nounwind { ; CHECK: test_atomic_cmpxchg_i16: %old = cmpxchg i16* @var16, i16 %wanted, i16 %new seq_cst -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var16 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var16 ; CHECK: [[STARTAGAIN:.LBB[0-9]+_[0-9]+]]: -; CHECK-NEXT: ldxrh w[[OLD:[0-9]+]], [x[[ADDR]]] +; CHECK-NEXT: ldaxrh w[[OLD:[0-9]+]], [x[[ADDR]]] ; w0 below is a reasonable guess but could change: it certainly comes into the ; function there. ; CHECK-NEXT: cmp w[[OLD]], w0 ; CHECK-NEXT: b.ne [[GET_OUT:.LBB[0-9]+_[0-9]+]] ; As above, w1 is a reasonable guess. -; CHECK: stxrh [[STATUS:w[0-9]+]], w1, [x[[ADDR]]] +; CHECK: stlxrh [[STATUS:w[0-9]+]], w1, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], [[STARTAGAIN]] -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i16 %old @@ -864,8 +864,8 @@ define i16 @test_atomic_cmpxchg_i16(i16 %wanted, i16 %new) nounwind { define i32 @test_atomic_cmpxchg_i32(i32 %wanted, i32 %new) nounwind { ; CHECK: test_atomic_cmpxchg_i32: - %old = cmpxchg i32* @var32, i32 %wanted, i32 %new seq_cst -; CHECK: dmb ish + %old = cmpxchg i32* @var32, i32 %wanted, i32 %new release +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var32 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var32 @@ -876,9 +876,9 @@ define i32 @test_atomic_cmpxchg_i32(i32 %wanted, i32 %new) nounwind { ; CHECK-NEXT: cmp w[[OLD]], w0 ; CHECK-NEXT: b.ne [[GET_OUT:.LBB[0-9]+_[0-9]+]] ; As above, w1 is a reasonable guess. -; CHECK: stxr [[STATUS:w[0-9]+]], w1, [x[[ADDR]]] +; CHECK: stlxr [[STATUS:w[0-9]+]], w1, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], [[STARTAGAIN]] -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i32 %old @@ -886,8 +886,8 @@ define i32 @test_atomic_cmpxchg_i32(i32 %wanted, i32 %new) nounwind { define i64 @test_atomic_cmpxchg_i64(i64 %wanted, i64 %new) nounwind { ; CHECK: test_atomic_cmpxchg_i64: - %old = cmpxchg i64* @var64, i64 %wanted, i64 %new seq_cst -; CHECK: dmb ish + %old = cmpxchg i64* @var64, i64 %wanted, i64 %new monotonic +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var64 ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var64 @@ -900,7 +900,7 @@ define i64 @test_atomic_cmpxchg_i64(i64 %wanted, i64 %new) nounwind { ; As above, w1 is a reasonable guess. ; CHECK: stxr [[STATUS:w[0-9]+]], x1, [x[[ADDR]]] ; CHECK-NEXT: cbnz [[STATUS]], [[STARTAGAIN]] -; CHECK: dmb ish +; CHECK-NOT: dmb ; CHECK: mov x0, x[[OLD]] ret i64 %old @@ -933,19 +933,26 @@ define i8 @test_atomic_load_monotonic_regoff_i8(i64 %base, i64 %off) nounwind { define i8 @test_atomic_load_acquire_i8() nounwind { ; CHECK: test_atomic_load_acquire_i8: %val = load atomic i8* @var8 acquire, align 1 +; CHECK-NOT: dmb ; CHECK: adrp [[TMPADDR:x[0-9]+]], var8 +; CHECK-NOT: dmb ; CHECK: add x[[ADDR:[0-9]+]], [[TMPADDR]], #:lo12:var8 - +; CHECK-NOT: dmb ; CHECK: ldarb w0, [x[[ADDR]]] +; CHECK-NOT: dmb ret i8 %val } define i8 @test_atomic_load_seq_cst_i8() nounwind { ; CHECK: test_atomic_load_seq_cst_i8: %val = load atomic i8* @var8 seq_cst, align 1 -; CHECK: adrp x[[HIADDR:[0-9]+]], var8 -; CHECK: ldrb w0, [x[[HIADDR]], #:lo12:var8] -; CHECK: dmb ish +; CHECK-NOT: dmb +; CHECK: adrp [[HIADDR:x[0-9]+]], var8 +; CHECK-NOT: dmb +; CHECK: add x[[ADDR:[0-9]+]], [[HIADDR]], #:lo12:var8 +; CHECK-NOT: dmb +; CHECK: ldarb w0, [x[[ADDR]]] +; CHECK-NOT: dmb ret i8 %val } @@ -954,6 +961,7 @@ define i16 @test_atomic_load_monotonic_i16() nounwind { %val = load atomic i16* @var16 monotonic, align 2 ; CHECK-NOT: dmb ; CHECK: adrp x[[HIADDR:[0-9]+]], var16 +; CHECK-NOT: dmb ; CHECK: ldrh w0, [x[[HIADDR]], #:lo12:var16] ; CHECK-NOT: dmb @@ -976,9 +984,13 @@ define i32 @test_atomic_load_monotonic_regoff_i32(i64 %base, i64 %off) nounwind define i64 @test_atomic_load_seq_cst_i64() nounwind { ; CHECK: test_atomic_load_seq_cst_i64: %val = load atomic i64* @var64 seq_cst, align 8 -; CHECK: adrp x[[HIADDR:[0-9]+]], var64 -; CHECK: ldr x0, [x[[HIADDR]], #:lo12:var64] -; CHECK: dmb ish +; CHECK-NOT: dmb +; CHECK: adrp [[HIADDR:x[0-9]+]], var64 +; CHECK-NOT: dmb +; CHECK: add x[[ADDR:[0-9]+]], [[HIADDR]], #:lo12:var64 +; CHECK-NOT: dmb +; CHECK: ldar x0, [x[[ADDR]]] +; CHECK-NOT: dmb ret i64 %val } @@ -1005,20 +1017,26 @@ define void @test_atomic_store_monotonic_regoff_i8(i64 %base, i64 %off, i8 %val) define void @test_atomic_store_release_i8(i8 %val) nounwind { ; CHECK: test_atomic_store_release_i8: store atomic i8 %val, i8* @var8 release, align 1 +; CHECK-NOT: dmb ; CHECK: adrp [[HIADDR:x[0-9]+]], var8 +; CHECK-NOT: dmb ; CHECK: add x[[ADDR:[0-9]+]], [[HIADDR]], #:lo12:var8 +; CHECK-NOT: dmb ; CHECK: stlrb w0, [x[[ADDR]]] - +; CHECK-NOT: dmb ret void } define void @test_atomic_store_seq_cst_i8(i8 %val) nounwind { ; CHECK: test_atomic_store_seq_cst_i8: store atomic i8 %val, i8* @var8 seq_cst, align 1 +; CHECK-NOT: dmb ; CHECK: adrp [[HIADDR:x[0-9]+]], var8 +; CHECK-NOT: dmb ; CHECK: add x[[ADDR:[0-9]+]], [[HIADDR]], #:lo12:var8 +; CHECK-NOT: dmb ; CHECK: stlrb w0, [x[[ADDR]]] -; CHECK: dmb ish +; CHECK-NOT: dmb ret void } @@ -1026,9 +1044,11 @@ define void @test_atomic_store_seq_cst_i8(i8 %val) nounwind { define void @test_atomic_store_monotonic_i16(i16 %val) nounwind { ; CHECK: test_atomic_store_monotonic_i16: store atomic i16 %val, i16* @var16 monotonic, align 2 +; CHECK-NOT: dmb ; CHECK: adrp x[[HIADDR:[0-9]+]], var16 +; CHECK-NOT: dmb ; CHECK: strh w0, [x[[HIADDR]], #:lo12:var16] - +; CHECK-NOT: dmb ret void } @@ -1039,7 +1059,9 @@ define void @test_atomic_store_monotonic_regoff_i32(i64 %base, i64 %off, i32 %va %addr = inttoptr i64 %addr_int to i32* store atomic i32 %val, i32* %addr monotonic, align 4 +; CHECK-NOT: dmb ; CHECK: str w2, [x0, x1] +; CHECK-NOT: dmb ret void } @@ -1047,9 +1069,12 @@ define void @test_atomic_store_monotonic_regoff_i32(i64 %base, i64 %off, i32 %va define void @test_atomic_store_release_i64(i64 %val) nounwind { ; CHECK: test_atomic_store_release_i64: store atomic i64 %val, i64* @var64 release, align 8 +; CHECK-NOT: dmb ; CHECK: adrp [[HIADDR:x[0-9]+]], var64 +; CHECK-NOT: dmb ; CHECK: add x[[ADDR:[0-9]+]], [[HIADDR]], #:lo12:var64 +; CHECK-NOT: dmb ; CHECK: stlr x0, [x[[ADDR]]] - +; CHECK-NOT: dmb ret void } diff --git a/test/CodeGen/AArch64/blockaddress.ll b/test/CodeGen/AArch64/blockaddress.ll index 3d0a5cf96bcd..5e85057a3c3b 100644 --- a/test/CodeGen/AArch64/blockaddress.ll +++ b/test/CodeGen/AArch64/blockaddress.ll @@ -1,4 +1,5 @@ ; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs < %s | FileCheck %s +; RUN: llc -code-model=large -mtriple=aarch64-none-linux-gnu -verify-machineinstrs < %s | FileCheck --check-prefix=CHECK-LARGE %s @addr = global i8* null @@ -13,6 +14,14 @@ define void @test_blockaddress() { ; CHECK: ldr [[NEWDEST:x[0-9]+]] ; CHECK: br [[NEWDEST]] +; CHECK-LARGE: movz [[ADDR_REG:x[0-9]+]], #:abs_g3:[[DEST_LBL:.Ltmp[0-9]+]] +; CHECK-LARGE: movk [[ADDR_REG]], #:abs_g2_nc:[[DEST_LBL]] +; CHECK-LARGE: movk [[ADDR_REG]], #:abs_g1_nc:[[DEST_LBL]] +; CHECK-LARGE: movk [[ADDR_REG]], #:abs_g0_nc:[[DEST_LBL]] +; CHECK-LARGE: str [[ADDR_REG]], +; CHECK-LARGE: ldr [[NEWDEST:x[0-9]+]] +; CHECK-LARGE: br [[NEWDEST]] + block: ret void } diff --git a/test/CodeGen/AArch64/code-model-large-abs.ll b/test/CodeGen/AArch64/code-model-large-abs.ll new file mode 100644 index 000000000000..a365568e11ee --- /dev/null +++ b/test/CodeGen/AArch64/code-model-large-abs.ll @@ -0,0 +1,61 @@ +; RUN: llc -mtriple=aarch64-none-linux-gnu -code-model=large < %s | FileCheck %s + +@var8 = global i8 0 +@var16 = global i16 0 +@var32 = global i32 0 +@var64 = global i64 0 + +define i8* @global_addr() { +; CHECK: global_addr: + ret i8* @var8 + ; The movz/movk calculation should end up returned directly in x0. +; CHECK: movz x0, #:abs_g3:var8 +; CHECK: movk x0, #:abs_g2_nc:var8 +; CHECK: movk x0, #:abs_g1_nc:var8 +; CHECK: movk x0, #:abs_g0_nc:var8 +; CHECK-NEXT: ret +} + +define i8 @global_i8() { +; CHECK: global_i8: + %val = load i8* @var8 + ret i8 %val +; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var8 +; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var8 +; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var8 +; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var8 +; CHECK: ldrb w0, [x[[ADDR_REG]]] +} + +define i16 @global_i16() { +; CHECK: global_i16: + %val = load i16* @var16 + ret i16 %val +; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var16 +; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var16 +; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var16 +; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var16 +; CHECK: ldrh w0, [x[[ADDR_REG]]] +} + +define i32 @global_i32() { +; CHECK: global_i32: + %val = load i32* @var32 + ret i32 %val +; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var32 +; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var32 +; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var32 +; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var32 +; CHECK: ldr w0, [x[[ADDR_REG]]] +} + +define i64 @global_i64() { +; CHECK: global_i64: + %val = load i64* @var64 + ret i64 %val +; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var64 +; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var64 +; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var64 +; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var64 +; CHECK: ldr x0, [x[[ADDR_REG]]] +} diff --git a/test/CodeGen/AArch64/elf-extern.ll b/test/CodeGen/AArch64/elf-extern.ll index ee89d8d94ba4..8bf1b2ff4fa9 100644 --- a/test/CodeGen/AArch64/elf-extern.ll +++ b/test/CodeGen/AArch64/elf-extern.ll @@ -1,4 +1,4 @@ -; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -filetype=obj | elf-dump | FileCheck %s +; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -filetype=obj | llvm-readobj -r | FileCheck %s ; External symbols are a different concept to global variables but should still ; get relocations and so on when used. @@ -10,12 +10,8 @@ define i32 @check_extern() { ret i32 0 } -; CHECK: .rela.text -; CHECK: ('r_sym', 0x00000009) -; CHECK-NEXT: ('r_type', 0x0000011b) - -; CHECK: .symtab -; CHECK: Symbol 9 -; CHECK-NEXT: memcpy - - +; CHECK: Relocations [ +; CHECK: Section (1) .text { +; CHECK: 0x{{[0-9,A-F]+}} R_AARCH64_CALL26 memcpy +; CHECK: } +; CHECK: ] diff --git a/test/CodeGen/AArch64/extern-weak.ll b/test/CodeGen/AArch64/extern-weak.ll index 3d3d8676818a..bc0acc253388 100644 --- a/test/CodeGen/AArch64/extern-weak.ll +++ b/test/CodeGen/AArch64/extern-weak.ll @@ -1,4 +1,5 @@ ; RUN: llc -mtriple=aarch64-none-linux-gnu -o - < %s | FileCheck %s +; RUN: llc -mtriple=aarch64-none-linux-gnu -code-model=large -o - < %s | FileCheck --check-prefix=CHECK-LARGE %s declare extern_weak i32 @var() @@ -11,6 +12,12 @@ define i32()* @foo() { ; CHECK: ldr x0, [{{x[0-9]+}}, #:lo12:.LCPI0_0] + ; In the large model, the usual relocations are absolute and can + ; materialise 0. +; CHECK-LARGE: movz x0, #:abs_g3:var +; CHECK-LARGE: movk x0, #:abs_g2_nc:var +; CHECK-LARGE: movk x0, #:abs_g1_nc:var +; CHECK-LARGE: movk x0, #:abs_g0_nc:var } @@ -24,6 +31,13 @@ define i32* @bar() { ; CHECK: ldr [[BASE:x[0-9]+]], [{{x[0-9]+}}, #:lo12:.LCPI1_0] ; CHECK: add x0, [[BASE]], #20 ret i32* %addr + + ; In the large model, the usual relocations are absolute and can + ; materialise 0. +; CHECK-LARGE: movz x0, #:abs_g3:arr_var +; CHECK-LARGE: movk x0, #:abs_g2_nc:arr_var +; CHECK-LARGE: movk x0, #:abs_g1_nc:arr_var +; CHECK-LARGE: movk x0, #:abs_g0_nc:arr_var } @defined_weak_var = internal unnamed_addr global i32 0 @@ -32,4 +46,9 @@ define i32* @wibble() { ret i32* @defined_weak_var ; CHECK: adrp [[BASE:x[0-9]+]], defined_weak_var ; CHECK: add x0, [[BASE]], #:lo12:defined_weak_var + +; CHECK-LARGE: movz x0, #:abs_g3:defined_weak_var +; CHECK-LARGE: movk x0, #:abs_g2_nc:defined_weak_var +; CHECK-LARGE: movk x0, #:abs_g1_nc:defined_weak_var +; CHECK-LARGE: movk x0, #:abs_g0_nc:defined_weak_var } \ No newline at end of file diff --git a/test/CodeGen/AArch64/jump-table.ll b/test/CodeGen/AArch64/jump-table.ll index dcf9f4ed455c..3c7f5f9ec1b0 100644 --- a/test/CodeGen/AArch64/jump-table.ll +++ b/test/CodeGen/AArch64/jump-table.ll @@ -1,5 +1,6 @@ ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s -; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -filetype=obj | elf-dump | FileCheck %s -check-prefix=CHECK-ELF +; RUN: llc -code-model=large -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu | FileCheck --check-prefix=CHECK-LARGE %s +; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -filetype=obj | llvm-readobj -r | FileCheck %s -check-prefix=CHECK-ELF define i32 @test_jumptable(i32 %in) { ; CHECK: test_jumptable @@ -15,6 +16,13 @@ define i32 @test_jumptable(i32 %in) { ; CHECK: ldr [[DEST:x[0-9]+]], [x[[JT]], {{x[0-9]+}}, lsl #3] ; CHECK: br [[DEST]] +; CHECK-LARGE: movz x[[JTADDR:[0-9]+]], #:abs_g3:.LJTI0_0 +; CHECK-LARGE: movk x[[JTADDR]], #:abs_g2_nc:.LJTI0_0 +; CHECK-LARGE: movk x[[JTADDR]], #:abs_g1_nc:.LJTI0_0 +; CHECK-LARGE: movk x[[JTADDR]], #:abs_g0_nc:.LJTI0_0 +; CHECK-LARGE: ldr [[DEST:x[0-9]+]], [x[[JTADDR]], {{x[0-9]+}}, lsl #3] +; CHECK-LARGE: br [[DEST]] + def: ret i32 0 @@ -44,13 +52,15 @@ lbl4: ; ELF tests: ; First make sure we get a page/lo12 pair in .text to pick up the jump-table -; CHECK-ELF: .rela.text -; CHECK-ELF: ('r_sym', 0x00000008) -; CHECK-ELF-NEXT: ('r_type', 0x00000113) -; CHECK-ELF: ('r_sym', 0x00000008) -; CHECK-ELF-NEXT: ('r_type', 0x00000115) + +; CHECK-ELF: Relocations [ +; CHECK-ELF: Section ({{[0-9]+}}) .text { +; CHECK-ELF-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 .rodata +; CHECK-ELF-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ADD_ABS_LO12_NC .rodata +; CHECK-ELF: } ; Also check the targets in .rodata are relocated -; CHECK-ELF: .rela.rodata -; CHECK-ELF: ('r_sym', 0x00000005) -; CHECK-ELF-NEXT: ('r_type', 0x00000101) \ No newline at end of file +; CHECK-ELF: Section ({{[0-9]+}}) .rodata { +; CHECK-ELF-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ABS64 .text +; CHECK-ELF: } +; CHECK-ELF: ] diff --git a/test/CodeGen/AArch64/literal_pools.ll b/test/CodeGen/AArch64/literal_pools.ll index e09084148fdf..9cfa8c5426e4 100644 --- a/test/CodeGen/AArch64/literal_pools.ll +++ b/test/CodeGen/AArch64/literal_pools.ll @@ -1,4 +1,5 @@ ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s +; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -code-model=large | FileCheck --check-prefix=CHECK-LARGE %s @var32 = global i32 0 @var64 = global i64 0 @@ -13,21 +14,45 @@ define void @foo() { ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI0_[0-9]+]] ; CHECK: ldr {{w[0-9]+}}, [x[[LITBASE]], #:lo12:[[CURLIT]]] +; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g3:[[CURLIT:.LCPI0_[0-9]+]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g0_nc:[[CURLIT]] +; CHECK-LARGE: ldr {{w[0-9]+}}, [x[[LITADDR]]] + %val64_lit32 = and i64 %val64, 305402420 store volatile i64 %val64_lit32, i64* @var64 ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI0_[0-9]+]] ; CHECK: ldr {{w[0-9]+}}, [x[[LITBASE]], #:lo12:[[CURLIT]]] +; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g3:[[CURLIT:.LCPI0_[0-9]+]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g0_nc:[[CURLIT]] +; CHECK-LARGE: ldr {{w[0-9]+}}, [x[[LITADDR]]] + %val64_lit32signed = and i64 %val64, -12345678 store volatile i64 %val64_lit32signed, i64* @var64 ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI0_[0-9]+]] ; CHECK: ldrsw {{x[0-9]+}}, [x[[LITBASE]], #:lo12:[[CURLIT]]] +; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g3:[[CURLIT:.LCPI0_[0-9]+]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g0_nc:[[CURLIT]] +; CHECK-LARGE: ldrsw {{x[0-9]+}}, [x[[LITADDR]]] + %val64_lit64 = and i64 %val64, 1234567898765432 store volatile i64 %val64_lit64, i64* @var64 ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI0_[0-9]+]] ; CHECK: ldr {{x[0-9]+}}, [x[[LITBASE]], #:lo12:[[CURLIT]]] +; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g3:[[CURLIT:.LCPI0_[0-9]+]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g0_nc:[[CURLIT]] +; CHECK-LARGE: ldr {{x[0-9]+}}, [x[[LITADDR]]] + ret void } @@ -42,6 +67,14 @@ define void @floating_lits() { ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI1_[0-9]+]] ; CHECK: ldr {{s[0-9]+}}, [x[[LITBASE]], #:lo12:[[CURLIT]]] ; CHECK: fadd + +; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g3:[[CURLIT:.LCPI1_[0-9]+]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g0_nc:[[CURLIT]] +; CHECK-LARGE: ldr {{s[0-9]+}}, [x[[LITADDR]]] +; CHECK-LARGE: fadd + store float %newfloat, float* @varfloat %doubleval = load double* @vardouble @@ -49,6 +82,13 @@ define void @floating_lits() { ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI1_[0-9]+]] ; CHECK: ldr {{d[0-9]+}}, [x[[LITBASE]], #:lo12:[[CURLIT]]] ; CHECK: fadd + +; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g3:[[CURLIT:.LCPI1_[0-9]+]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] +; CHECK-LARGE: movk x[[LITADDR]], #:abs_g0_nc:[[CURLIT]] +; CHECK-LARGE: ldr {{d[0-9]+}}, [x[[LITADDR]]] + store double %newdouble, double* @vardouble ret void diff --git a/test/CodeGen/ARM/2010-08-04-StackVariable.ll b/test/CodeGen/ARM/2010-08-04-StackVariable.ll index 91a9903f3852..112512ff59a5 100644 --- a/test/CodeGen/ARM/2010-08-04-StackVariable.ll +++ b/test/CodeGen/ARM/2010-08-04-StackVariable.ll @@ -79,7 +79,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone !0 = metadata !{i32 786478, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"", metadata !2, i32 11, metadata !14, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null} ; [ DW_TAG_subprogram ] !1 = metadata !{i32 786451, metadata !2, metadata !"SVal", metadata !2, i32 1, i64 128, i64 64, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_structure_type ] !2 = metadata !{i32 786473, metadata !48} ; [ DW_TAG_file_type ] -!3 = metadata !{i32 786449, i32 4, metadata !2, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 false, metadata !"", i32 0, metadata !47, metadata !47, metadata !46, metadata !47, metadata !""} ; [ DW_TAG_compile_unit ] +!3 = metadata !{i32 786449, i32 4, metadata !2, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 false, metadata !"", i32 0, metadata !47, metadata !47, metadata !46, metadata !47, metadata !47, metadata !""} ; [ DW_TAG_compile_unit ] !4 = metadata !{metadata !5, metadata !7, metadata !0, metadata !9} !5 = metadata !{i32 786445, metadata !1, metadata !"Data", metadata !2, i32 7, i64 64, i64 64, i64 0, i32 0, metadata !6} ; [ DW_TAG_member ] !6 = metadata !{i32 786447, metadata !2, metadata !"", metadata !2, i32 0, i64 64, i64 64, i64 0, i32 0, null} ; [ DW_TAG_pointer_type ] diff --git a/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll b/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll index 36d15757c314..b253fefe87c4 100644 --- a/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll +++ b/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll @@ -1,36 +1,47 @@ ; RUN: llc %s -mtriple=arm-linux-gnueabi -filetype=obj -o - | \ -; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=BASIC %s +; RUN: llvm-readobj -s -sd | FileCheck -check-prefix=BASIC %s ; RUN: llc %s -mtriple=armv7-linux-gnueabi -march=arm -mcpu=cortex-a8 \ ; RUN: -mattr=-neon,-vfp3,+vfp2 \ ; RUN: -arm-reserve-r9 -filetype=obj -o - | \ -; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=CORTEXA8 %s +; RUN: llvm-readobj -s -sd | FileCheck -check-prefix=CORTEXA8 %s ; This tests that the extpected ARM attributes are emitted. ; -; BASIC: .ARM.attributes -; BASIC-NEXT: 0x70000003 -; BASIC-NEXT: 0x00000000 -; BASIC-NEXT: 0x00000000 -; BASIC-NEXT: 0x0000003c -; BASIC-NEXT: 0x00000022 -; BASIC-NEXT: 0x00000000 -; BASIC-NEXT: 0x00000000 -; BASIC-NEXT: 0x00000001 -; BASIC-NEXT: 0x00000000 -; BASIC-NEXT: '41210000 00616561 62690001 17000000 060a0741 08010902 14011501 17031801 1901' +; BASIC: Section { +; BASIC: Name: .ARM.attributes +; BASIC-NEXT: Type: SHT_ARM_ATTRIBUTES +; BASIC-NEXT: Flags [ (0x0) +; BASIC-NEXT: ] +; BASIC-NEXT: Address: 0x0 +; BASIC-NEXT: Offset: 0x3C +; BASIC-NEXT: Size: 34 +; BASIC-NEXT: Link: 0 +; BASIC-NEXT: Info: 0 +; BASIC-NEXT: AddressAlignment: 1 +; BASIC-NEXT: EntrySize: 0 +; BASIC-NEXT: SectionData ( +; BASIC-NEXT: 0000: 41210000 00616561 62690001 17000000 +; BASIC-NEXT: 0010: 060A0741 08010902 14011501 17031801 +; BASIC-NEXT: 0020: 1901 +; BASIC-NEXT: ) -; CORTEXA8: .ARM.attributes -; CORTEXA8-NEXT: 0x70000003 -; CORTEXA8-NEXT: 0x00000000 -; CORTEXA8-NEXT: 0x00000000 -; CORTEXA8-NEXT: 0x0000003c -; CORTEXA8-NEXT: 0x0000002f -; CORTEXA8-NEXT: 0x00000000 -; CORTEXA8-NEXT: 0x00000000 -; CORTEXA8-NEXT: 0x00000001 -; CORTEXA8-NEXT: 0x00000000 -; CORTEXA8-NEXT: '412e0000 00616561 62690001 24000000 05434f52 5445582d 41380006 0a074108 0109020a 02140115 01170318 011901' +; CORTEXA8: Name: .ARM.attributes +; CORTEXA8-NEXT: Type: SHT_ARM_ATTRIBUTES +; CORTEXA8-NEXT: Flags [ (0x0) +; CORTEXA8-NEXT: ] +; CORTEXA8-NEXT: Address: 0x0 +; CORTEXA8-NEXT: Offset: 0x3C +; CORTEXA8-NEXT: Size: 47 +; CORTEXA8-NEXT: Link: 0 +; CORTEXA8-NEXT: Info: 0 +; CORTEXA8-NEXT: AddressAlignment: 1 +; CORTEXA8-NEXT: EntrySize: 0 +; CORTEXA8-NEXT: SectionData ( +; CORTEXA8-NEXT: 0000: 412E0000 00616561 62690001 24000000 +; CORTEXA8-NEXT: 0010: 05434F52 5445582D 41380006 0A074108 +; CORTEXA8-NEXT: 0020: 0109020A 02140115 01170318 011901 +; CORTEXA8-NEXT: ) define i32 @f(i64 %z) { ret i32 0 diff --git a/test/CodeGen/ARM/2010-11-30-reloc-movt.ll b/test/CodeGen/ARM/2010-11-30-reloc-movt.ll index 94a05412f5d4..9eecd045bfa0 100644 --- a/test/CodeGen/ARM/2010-11-30-reloc-movt.ll +++ b/test/CodeGen/ARM/2010-11-30-reloc-movt.ll @@ -1,5 +1,5 @@ ; RUN: llc %s -mtriple=armv7-linux-gnueabi -filetype=obj -o - | \ -; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=OBJ %s +; RUN: llvm-readobj -s -sr -sd | FileCheck -check-prefix=OBJ %s target triple = "armv7-none-linux-gnueabi" @@ -9,32 +9,17 @@ define arm_aapcs_vfpcc i32 @barf() nounwind { entry: %0 = tail call arm_aapcs_vfpcc i32 @foo(i8* @a) nounwind ret i32 %0 -; OBJ: '.text' -; OBJ-NEXT: 'sh_type' -; OBJ-NEXT: 'sh_flags' -; OBJ-NEXT: 'sh_addr' -; OBJ-NEXT: 'sh_offset' -; OBJ-NEXT: 'sh_size' -; OBJ-NEXT: 'sh_link' -; OBJ-NEXT: 'sh_info' -; OBJ-NEXT: 'sh_addralign' -; OBJ-NEXT: 'sh_entsize' -; OBJ-NEXT: '_section_data', '00482de9 000000e3 000040e3 feffffeb 0088bde8' - -; OBJ: Relocation 0 -; OBJ-NEXT: 'r_offset', 0x00000004 -; OBJ-NEXT: 'r_sym', 0x000009 -; OBJ-NEXT: 'r_type', 0x2b - -; OBJ: Relocation 1 -; OBJ-NEXT: 'r_offset', 0x00000008 -; OBJ-NEXT: 'r_sym' -; OBJ-NEXT: 'r_type', 0x2c - -; OBJ: # Relocation 2 -; OBJ-NEXT: 'r_offset', 0x0000000c -; OBJ-NEXT: 'r_sym', 0x00000a -; OBJ-NEXT: 'r_type', 0x1c +; OBJ: Section { +; OBJ: Name: .text +; OBJ: Relocations [ +; OBJ-NEXT: 0x4 R_ARM_MOVW_ABS_NC a +; OBJ-NEXT: 0x8 R_ARM_MOVT_ABS +; OBJ-NEXT: 0xC R_ARM_CALL foo +; OBJ-NEXT: ] +; OBJ-NEXT: SectionData ( +; OBJ-NEXT: 0000: 00482DE9 000000E3 000040E3 FEFFFFEB +; OBJ-NEXT: 0010: 0088BDE8 +; OBJ-NEXT: ) } diff --git a/test/CodeGen/ARM/2010-12-08-tpsoft.ll b/test/CodeGen/ARM/2010-12-08-tpsoft.ll index b8ed8199d398..1351a26756ef 100644 --- a/test/CodeGen/ARM/2010-12-08-tpsoft.ll +++ b/test/CodeGen/ARM/2010-12-08-tpsoft.ll @@ -1,9 +1,9 @@ ; RUN: llc %s -mtriple=armv7-linux-gnueabi -o - | \ ; RUN: FileCheck -check-prefix=ELFASM %s ; RUN: llc %s -mtriple=armv7-linux-gnueabi -filetype=obj -o - | \ -; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=ELFOBJ %s +; RUN: llvm-readobj -s -sd | FileCheck -check-prefix=ELFOBJ %s -;; Make sure that bl __aeabi_read_tp is materiazlied and fixed up correctly +;; Make sure that bl __aeabi_read_tp is materialized and fixed up correctly ;; in the obj case. @i = external thread_local global i32 @@ -24,19 +24,13 @@ bb: ; preds = %entry ; ELFASM: bl __aeabi_read_tp -; ELFOBJ: '.text' -; ELFOBJ-NEXT: 'sh_type' -; ELFOBJ-NEXT: 'sh_flags' -; ELFOBJ-NEXT: 'sh_addr' -; ELFOBJ-NEXT: 'sh_offset' -; ELFOBJ-NEXT: 'sh_size' -; ELFOBJ-NEXT: 'sh_link' -; ELFOBJ-NEXT: 'sh_info' -; ELFOBJ-NEXT: 'sh_addralign' -; ELFOBJ-NEXT: 'sh_entsize' -;;; BL __aeabi_read_tp is ---+ -;;; V -; ELFOBJ-NEXT: 00482de9 3c009fe5 00109fe7 feffffeb +; ELFOBJ: Sections [ +; ELFOBJ: Section { +; ELFOBJ: Name: .text +; ELFOBJ: SectionData ( +;;; BL __aeabi_read_tp is ---------+ +;;; V +; ELFOBJ-NEXT: 0000: 00482DE9 3C009FE5 00109FE7 FEFFFFEB bb1: ; preds = %entry diff --git a/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll b/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll index 1272a257931d..f13bc1214a5a 100644 --- a/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll +++ b/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll @@ -1,5 +1,5 @@ ; RUN: llc %s -mtriple=armv7-linux-gnueabi -filetype=obj -o - | \ -; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=OBJ %s +; RUN: llvm-readobj -s -t | FileCheck -check-prefix=OBJ %s ; RUN: llc %s -mtriple=armv7-linux-gnueabi -o - | \ ; RUN: FileCheck -check-prefix=ASM %s @@ -15,17 +15,20 @@ ; ASM-NEXT: .type _MergedGlobals,%object @ @_MergedGlobals - -; OBJ: Section 4 -; OBJ-NEXT: '.bss' - -; OBJ: 'array00' -; OBJ-NEXT: 'st_value', 0x00000000 -; OBJ-NEXT: 'st_size', 0x00000050 -; OBJ-NEXT: 'st_bind', 0x0 -; OBJ-NEXT: 'st_type', 0x1 -; OBJ-NEXT: 'st_other', 0x00 -; OBJ-NEXT: 'st_shndx', 0x0004 +; OBJ: Sections [ +; OBJ: Section { +; OBJ: Index: 4 +; OBJ-NEXT: Name: .bss + +; OBJ: Symbols [ +; OBJ: Symbol { +; OBJ: Name: array00 +; OBJ-NEXT: Value: 0x0 +; OBJ-NEXT: Size: 80 +; OBJ-NEXT: Binding: Local +; OBJ-NEXT: Type: Object +; OBJ-NEXT: Other: 0 +; OBJ-NEXT: Section: .bss define i32 @main(i32 %argc) nounwind { %1 = load i32* @sum, align 4 diff --git a/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll b/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll index 1d1b89a34f9a..98c0af35ef9a 100644 --- a/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll +++ b/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll @@ -79,7 +79,7 @@ entry: !0 = metadata !{i32 786478, metadata !1, metadata !"get1", metadata !"get1", metadata !"get1", metadata !1, i32 4, metadata !3, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, i8 (i8)* @get1, null, null, metadata !42, i32 4} ; [ DW_TAG_subprogram ] !1 = metadata !{i32 786473, metadata !47} ; [ DW_TAG_file_type ] -!2 = metadata !{i32 786449, metadata !47, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2369.8)", i1 true, metadata !"", i32 0, null, null, metadata !40, metadata !41, metadata !""} ; [ DW_TAG_compile_unit ] +!2 = metadata !{i32 786449, metadata !47, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2369.8)", i1 true, metadata !"", i32 0, null, null, metadata !40, metadata !41, metadata !41, metadata !""} ; [ DW_TAG_compile_unit ] !3 = metadata !{i32 786453, metadata !1, metadata !1, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_subroutine_type ] !4 = metadata !{metadata !5, metadata !5} !5 = metadata !{i32 786468, metadata !1, metadata !1, metadata !"_Bool", i32 0, i64 8, i64 8, i64 0, i32 0, i32 2} ; [ DW_TAG_base_type ] diff --git a/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll b/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll index 266609b8ce69..7a7ca8e0d8d9 100644 --- a/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll +++ b/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll @@ -74,7 +74,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone !llvm.dbg.cu = !{!0} -!0 = metadata !{i32 786449, metadata !47, i32 12, metadata !"clang", i1 true, metadata !"", i32 0, null, null, metadata !40, metadata !41, null} ; [ DW_TAG_compile_unit ] +!0 = metadata !{i32 786449, metadata !47, i32 12, metadata !"clang", i1 true, metadata !"", i32 0, null, null, metadata !40, metadata !41, metadata !41, null} ; [ DW_TAG_compile_unit ] !1 = metadata !{i32 786478, metadata !2, metadata !"get1", metadata !"get1", metadata !"", metadata !2, i32 5, metadata !3, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 true, i32 (i32)* @get1, null, null, metadata !42, i32 5} ; [ DW_TAG_subprogram ] !2 = metadata !{i32 786473, metadata !47} ; [ DW_TAG_file_type ] !3 = metadata !{i32 786453, metadata !2, metadata !2, metadata !"", i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !4, i32 0, i32 0} ; [ DW_TAG_subroutine_type ] diff --git a/test/CodeGen/ARM/2011-12-14-machine-sink.ll b/test/CodeGen/ARM/2011-12-14-machine-sink.ll index 1b21f7571d8e..9334bf36d805 100644 --- a/test/CodeGen/ARM/2011-12-14-machine-sink.ll +++ b/test/CodeGen/ARM/2011-12-14-machine-sink.ll @@ -15,13 +15,13 @@ for.cond: ; preds = %for.body, %entry for.body: ; preds = %for.cond %v.5 = select i1 undef, i32 undef, i32 0 - %0 = load i8* undef, align 1, !tbaa !0 + %0 = load i8* undef, align 1 %conv88 = zext i8 %0 to i32 %sub89 = sub nsw i32 0, %conv88 %v.8 = select i1 undef, i32 undef, i32 %sub89 - %1 = load i8* null, align 1, !tbaa !0 + %1 = load i8* null, align 1 %conv108 = zext i8 %1 to i32 - %2 = load i8* undef, align 1, !tbaa !0 + %2 = load i8* undef, align 1 %conv110 = zext i8 %2 to i32 %sub111 = sub nsw i32 %conv108, %conv110 %cmp112 = icmp slt i32 %sub111, 0 @@ -44,6 +44,3 @@ if.end299: ; preds = %for.body, %for.cond %s.10 = phi i32 [ %add172, %for.body ], [ 0, %for.cond ] ret i32 %s.10 } - -!0 = metadata !{metadata !"omnipotent char", metadata !1} -!1 = metadata !{metadata !"Simple C/C++ TBAA", null} diff --git a/test/CodeGen/ARM/2012-01-23-PostRA-LICM.ll b/test/CodeGen/ARM/2012-01-23-PostRA-LICM.ll index 926daafbb7f1..0f1c452b8678 100644 --- a/test/CodeGen/ARM/2012-01-23-PostRA-LICM.ll +++ b/test/CodeGen/ARM/2012-01-23-PostRA-LICM.ll @@ -18,7 +18,7 @@ bb3: ; preds = %bb4, %bb2 br i1 %tmp, label %bb4, label %bb67 bb4: ; preds = %bb3 - %tmp5 = load <4 x i32>* undef, align 16, !tbaa !0 + %tmp5 = load <4 x i32>* undef, align 16 %tmp6 = and <4 x i32> %tmp5, %tmp7 = or <4 x i32> %tmp6, %tmp8 = bitcast <4 x i32> %tmp7 to <4 x float> @@ -41,9 +41,9 @@ bb4: ; preds = %bb3 %tmp24 = trunc i128 %tmp23 to i64 %tmp25 = insertvalue [2 x i64] undef, i64 %tmp24, 0 %tmp26 = insertvalue [2 x i64] %tmp25, i64 0, 1 - %tmp27 = load float* undef, align 4, !tbaa !2 + %tmp27 = load float* undef, align 4 %tmp28 = insertelement <4 x float> undef, float %tmp27, i32 3 - %tmp29 = load <4 x i32>* undef, align 16, !tbaa !0 + %tmp29 = load <4 x i32>* undef, align 16 %tmp30 = and <4 x i32> %tmp29, %tmp31 = or <4 x i32> %tmp30, %tmp32 = bitcast <4 x i32> %tmp31 to <4 x float> @@ -52,10 +52,10 @@ bb4: ; preds = %bb3 %tmp35 = fmul <4 x float> %tmp34, undef %tmp36 = fmul <4 x float> %tmp35, undef %tmp37 = call arm_aapcs_vfpcc i8* undef(i8* undef) nounwind - %tmp38 = load float* undef, align 4, !tbaa !2 + %tmp38 = load float* undef, align 4 %tmp39 = insertelement <2 x float> undef, float %tmp38, i32 0 %tmp40 = call arm_aapcs_vfpcc i8* undef(i8* undef) nounwind - %tmp41 = load float* undef, align 4, !tbaa !2 + %tmp41 = load float* undef, align 4 %tmp42 = insertelement <4 x float> undef, float %tmp41, i32 3 %tmp43 = shufflevector <2 x float> %tmp39, <2 x float> undef, <4 x i32> zeroinitializer %tmp44 = fmul <4 x float> %tmp33, %tmp43 @@ -64,10 +64,10 @@ bb4: ; preds = %bb3 %tmp47 = fmul <4 x float> %tmp46, %tmp36 %tmp48 = fadd <4 x float> undef, %tmp47 %tmp49 = call arm_aapcs_vfpcc i8* undef(i8* undef) nounwind - %tmp50 = load float* undef, align 4, !tbaa !2 + %tmp50 = load float* undef, align 4 %tmp51 = insertelement <4 x float> undef, float %tmp50, i32 3 %tmp52 = call arm_aapcs_vfpcc float* null(i8* undef) nounwind - %tmp54 = load float* %tmp52, align 4, !tbaa !2 + %tmp54 = load float* %tmp52, align 4 %tmp55 = insertelement <4 x float> undef, float %tmp54, i32 3 %tmp56 = fsub <4 x float> , %tmp22 %tmp57 = call <4 x float> @llvm.arm.neon.vmins.v4f32(<4 x float> %tmp56, <4 x float> %tmp55) nounwind @@ -99,7 +99,3 @@ declare <4 x float> @llvm.arm.neon.vmins.v4f32(<4 x float>, <4 x float>) nounwin declare <4 x float> @llvm.arm.neon.vrecps.v4f32(<4 x float>, <4 x float>) nounwind readnone declare <4 x float> @llvm.arm.neon.vrecpe.v4f32(<4 x float>) nounwind readnone - -!0 = metadata !{metadata !"omnipotent char", metadata !1} -!1 = metadata !{metadata !"Simple C/C++ TBAA", null} -!2 = metadata !{metadata !"float", metadata !0} diff --git a/test/CodeGen/ARM/2012-01-24-RegSequenceLiveRange.ll b/test/CodeGen/ARM/2012-01-24-RegSequenceLiveRange.ll index f1c85f1b41f5..61623ec1b6a4 100644 --- a/test/CodeGen/ARM/2012-01-24-RegSequenceLiveRange.ll +++ b/test/CodeGen/ARM/2012-01-24-RegSequenceLiveRange.ll @@ -7,7 +7,7 @@ target triple = "armv7-none-linux-eabi" ; This test case is exercising REG_SEQUENCE, and chains of REG_SEQUENCE. define arm_aapcs_vfpcc void @foo(i8* nocapture %arg, i8* %arg1) nounwind align 2 { bb: - %tmp = load <2 x float>* undef, align 8, !tbaa !0 + %tmp = load <2 x float>* undef, align 8 %tmp2 = extractelement <2 x float> %tmp, i32 0 %tmp3 = insertelement <4 x float> undef, float %tmp2, i32 0 %tmp4 = insertelement <4 x float> %tmp3, float 0.000000e+00, i32 1 @@ -70,6 +70,3 @@ entry: declare arm_aapcs_vfpcc void @bar(i8*, float, float, float) declare void @llvm.arm.neon.vst1.v4f32(i8*, <4 x float>, i32) nounwind declare void @llvm.arm.neon.vst2.v4f32(i8*, <4 x float>, <4 x float>, i32) nounwind - -!0 = metadata !{metadata !"omnipotent char", metadata !1} -!1 = metadata !{metadata !"Simple C/C++ TBAA", null} diff --git a/test/CodeGen/ARM/2012-01-26-CopyPropKills.ll b/test/CodeGen/ARM/2012-01-26-CopyPropKills.ll index 5f24e427c229..a9e2ebb7fe12 100644 --- a/test/CodeGen/ARM/2012-01-26-CopyPropKills.ll +++ b/test/CodeGen/ARM/2012-01-26-CopyPropKills.ll @@ -56,9 +56,9 @@ bb3: ; preds = %bb2 %tmp39 = shufflevector <2 x i64> %tmp38, <2 x i64> undef, <1 x i32> zeroinitializer %tmp40 = bitcast <1 x i64> %tmp39 to <2 x float> %tmp41 = shufflevector <2 x float> %tmp40, <2 x float> undef, <4 x i32> - %tmp42 = load <4 x float>* null, align 16, !tbaa !0 + %tmp42 = load <4 x float>* null, align 16 %tmp43 = fmul <4 x float> %tmp42, %tmp41 - %tmp44 = load <4 x float>* undef, align 16, !tbaa !0 + %tmp44 = load <4 x float>* undef, align 16 %tmp45 = fadd <4 x float> undef, %tmp43 %tmp46 = fadd <4 x float> undef, %tmp45 %tmp47 = bitcast <4 x float> %tmp36 to <2 x i64> @@ -108,7 +108,7 @@ bb3: ; preds = %bb2 %tmp89 = fmul <4 x float> undef, %tmp88 %tmp90 = fadd <4 x float> %tmp89, undef %tmp91 = fadd <4 x float> undef, %tmp90 - store <4 x float> %tmp91, <4 x float>* undef, align 16, !tbaa !0 + store <4 x float> %tmp91, <4 x float>* undef, align 16 unreachable bb92: ; preds = %bb2 @@ -116,6 +116,3 @@ bb92: ; preds = %bb2 } declare arm_aapcs_vfpcc void @bar(i8* noalias nocapture sret, [8 x i64]) nounwind uwtable inlinehint - -!0 = metadata !{metadata !"omnipotent char", metadata !1} -!1 = metadata !{metadata !"Simple C/C++ TBAA", null} diff --git a/test/CodeGen/ARM/2012-04-02-TwoAddrInstrCrash.ll b/test/CodeGen/ARM/2012-04-02-TwoAddrInstrCrash.ll index 33ad187926bf..0843fdc4e75e 100644 --- a/test/CodeGen/ARM/2012-04-02-TwoAddrInstrCrash.ll +++ b/test/CodeGen/ARM/2012-04-02-TwoAddrInstrCrash.ll @@ -9,16 +9,13 @@ define arm_aapcs_vfpcc void @foo() nounwind align 2 { ;