diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
| commit | f8af5cf600354830d4ccf59732403f0f073eccb9 (patch) | |
| tree | 2ba0398b4c42ad4f55561327538044fd2c925a8b /test/CodeGen/Hexagon | |
| parent | 59d6cff90eecf31cb3dd860c4e786674cfdd42eb (diff) | |
Notes
Diffstat (limited to 'test/CodeGen/Hexagon')
| -rw-r--r-- | test/CodeGen/Hexagon/BranchPredict.ll | 76 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/adde.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/args.ll | 9 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/combine_ir.ll | 15 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/extload-combine.ll | 80 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/hwloop-dbg.ll | 27 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/i16_VarArg.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/i1_VarArg.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/i8_VarArg.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/indirect-br.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/lit.local.cfg | 2 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/memops.ll | 509 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/packetize_cond_inst.ll | 32 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/pred-gp.ll | 28 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/pred-instrs.ll | 30 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/split-const32-const64.ll | 26 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/sube.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/tail-call-trunc.ll | 28 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/tfr-to-combine.ll | 35 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/union-1.ll | 8 | ||||
| -rw-r--r-- | test/CodeGen/Hexagon/zextloadi1.ll | 2 |
21 files changed, 619 insertions, 300 deletions
diff --git a/test/CodeGen/Hexagon/BranchPredict.ll b/test/CodeGen/Hexagon/BranchPredict.ll new file mode 100644 index 000000000000..4ab1966bf04d --- /dev/null +++ b/test/CodeGen/Hexagon/BranchPredict.ll @@ -0,0 +1,76 @@ +; RUN: llc -march=hexagon -mcpu=hexagonv4 < %s | FileCheck %s + +; Check if the branch probabilities are reflected in the instructions: +; The basic block placement pass should place the more probable successor +; block as the fall-through block. The unconditional jump in the predecessor +; should then get the right hint (not_taken or ":nt") + + +@j = external global i32 + +define i32 @foo(i32 %a) nounwind { +; CHECK: if{{ *}}(!p{{[0-3]}}.new) jump:nt +entry: + %tobool = icmp eq i32 %a, 0 + br i1 %tobool, label %if.else, label %if.then, !prof !0 + +if.then: ; preds = %entry + %add = add nsw i32 %a, 10 + %call = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add) nounwind + br label %return + +if.else: ; preds = %entry + %call2 = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 4) nounwind + br label %return + +return: ; preds = %if.else, %if.then + %retval.0 = phi i32 [ %call, %if.then ], [ %call2, %if.else ] + ret i32 %retval.0 +} + +declare i32 @foobar(...) + +define i32 @bar(i32 %a) nounwind { +; CHECK: if{{ *}}(p{{[0-3]}}.new) jump:nt +entry: + %tobool = icmp eq i32 %a, 0 + br i1 %tobool, label %if.else, label %if.then, !prof !1 + +if.then: ; preds = %entry + %add = add nsw i32 %a, 10 + %call = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add) nounwind + br label %return + +if.else: ; preds = %entry + %call2 = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 4) nounwind + br label %return + +return: ; preds = %if.else, %if.then + %retval.0 = phi i32 [ %call, %if.then ], [ %call2, %if.else ] + ret i32 %retval.0 +} + +define i32 @foo_bar(i32 %a, i16 signext %b) nounwind { +; CHECK: if{{ *}}(!cmp.eq(r{{[0-9]*}}.new, #0)) jump:nt +entry: + %0 = load i32* @j, align 4 + %tobool = icmp eq i32 %0, 0 + br i1 %tobool, label %if.else, label %if.then, !prof !0 + +if.then: ; preds = %entry + %add = add nsw i32 %a, 10 + %call = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add) nounwind + br label %return + +if.else: ; preds = %entry + %add1 = add nsw i32 %a, 4 + %call2 = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add1) nounwind + br label %return + +return: ; preds = %if.else, %if.then + %retval.0 = phi i32 [ %call, %if.then ], [ %call2, %if.else ] + ret i32 %retval.0 +} + +!0 = metadata !{metadata !"branch_weights", i32 64, i32 4} +!1 = metadata !{metadata !"branch_weights", i32 4, i32 64} diff --git a/test/CodeGen/Hexagon/adde.ll b/test/CodeGen/Hexagon/adde.ll index 9cee3e215d62..6d060c1b9e26 100644 --- a/test/CodeGen/Hexagon/adde.ll +++ b/test/CodeGen/Hexagon/adde.ll @@ -31,4 +31,4 @@ entry: %tmp2122 = trunc i128 %tmp21 to i64 store i64 %tmp2122, i64* %RH ret void -}
\ No newline at end of file +} diff --git a/test/CodeGen/Hexagon/args.ll b/test/CodeGen/Hexagon/args.ll index f8c9e44c831d..aea4ffe2eee5 100644 --- a/test/CodeGen/Hexagon/args.ll +++ b/test/CodeGen/Hexagon/args.ll @@ -1,11 +1,8 @@ ; RUN: llc -march=hexagon -mcpu=hexagonv4 -disable-dfa-sched -disable-hexagon-misched < %s | FileCheck %s ; CHECK: memw(r29{{ *}}+{{ *}}#0){{ *}}={{ *}}#7 -; CHECK: r0 = #1 -; CHECK: r1 = #2 -; CHECK: r2 = #3 -; CHECK: r3 = #4 -; CHECK: r4 = #5 -; CHECK: r5 = #6 +; CHECK: r1:0 = combine(#2, #1) +; CHECK: r3:2 = combine(#4, #3) +; CHECK: r5:4 = combine(#6, #5) define void @foo() nounwind { diff --git a/test/CodeGen/Hexagon/combine_ir.ll b/test/CodeGen/Hexagon/combine_ir.ll index 8b99ef715546..e100cf7196f1 100644 --- a/test/CodeGen/Hexagon/combine_ir.ll +++ b/test/CodeGen/Hexagon/combine_ir.ll @@ -4,7 +4,7 @@ define void @word(i32* nocapture %a) nounwind { entry: - %0 = load i32* %a, align 4, !tbaa !0 + %0 = load i32* %a, align 4 %1 = zext i32 %0 to i64 tail call void @bar(i64 %1) nounwind ret void @@ -17,10 +17,10 @@ declare void @bar(i64) define void @halfword(i16* nocapture %a) nounwind { entry: - %0 = load i16* %a, align 2, !tbaa !3 + %0 = load i16* %a, align 2 %1 = zext i16 %0 to i64 %add.ptr = getelementptr inbounds i16* %a, i32 1 - %2 = load i16* %add.ptr, align 2, !tbaa !3 + %2 = load i16* %add.ptr, align 2 %3 = zext i16 %2 to i64 %4 = shl nuw nsw i64 %3, 16 %ins = or i64 %4, %1 @@ -33,18 +33,13 @@ entry: define void @byte(i8* nocapture %a) nounwind { entry: - %0 = load i8* %a, align 1, !tbaa !1 + %0 = load i8* %a, align 1 %1 = zext i8 %0 to i64 %add.ptr = getelementptr inbounds i8* %a, i32 1 - %2 = load i8* %add.ptr, align 1, !tbaa !1 + %2 = load i8* %add.ptr, align 1 %3 = zext i8 %2 to i64 %4 = shl nuw nsw i64 %3, 8 %ins = or i64 %4, %1 tail call void @bar(i64 %ins) nounwind ret void } - -!0 = metadata !{metadata !"int", metadata !1} -!1 = metadata !{metadata !"omnipotent char", metadata !2} -!2 = metadata !{metadata !"Simple C/C++ TBAA"} -!3 = metadata !{metadata !"short", metadata !1} diff --git a/test/CodeGen/Hexagon/extload-combine.ll b/test/CodeGen/Hexagon/extload-combine.ll new file mode 100644 index 000000000000..b3b8bf07032a --- /dev/null +++ b/test/CodeGen/Hexagon/extload-combine.ll @@ -0,0 +1,80 @@ +; RUN: llc -march=hexagon -mcpu=hexagonv4 -O3 < %s | FileCheck %s +; Check that the combine/stxw instructions are being generated. +; In case of combine one of the operand should be 0 and another should be +; the output of absolute addressing load instruction. + +@a = external global i16 +@b = external global i16 +@c = external global i16 +@char_a = external global i8 +@char_b = external global i8 +@char_c = external global i8 +@int_a = external global i32 +@int_b = external global i32 +@int_c = external global i32 + +; Function Attrs: nounwind +define i64 @short_test1() #0 { +; CHECK: [[VAR:r[0-9]+]]{{ *}}={{ *}}memuh(## +; CHECK: combine(#0, [[VAR]]) +entry: + store i16 0, i16* @a, align 2 + %0 = load i16* @b, align 2 + %conv2 = zext i16 %0 to i64 + ret i64 %conv2 +} + +; Function Attrs: nounwind +define i64 @short_test2() #0 { +; CHECK: [[VAR1:r[0-9]+]]{{ *}}={{ *}}memh(## +; CHECK: sxtw([[VAR1]]) +entry: + store i16 0, i16* @a, align 2 + %0 = load i16* @c, align 2 + %conv2 = sext i16 %0 to i64 + ret i64 %conv2 +} + +; Function Attrs: nounwind +define i64 @char_test1() #0 { +; CHECK: [[VAR2:r[0-9]+]]{{ *}}={{ *}}memub(## +; CHECK: combine(#0, [[VAR2]]) +entry: + store i8 0, i8* @char_a, align 1 + %0 = load i8* @char_b, align 1 + %conv2 = zext i8 %0 to i64 + ret i64 %conv2 +} + +; Function Attrs: nounwind +define i64 @char_test2() #0 { +; CHECK: [[VAR3:r[0-9]+]]{{ *}}={{ *}}memb(## +; CHECK: sxtw([[VAR3]]) +entry: + store i8 0, i8* @char_a, align 1 + %0 = load i8* @char_c, align 1 + %conv2 = sext i8 %0 to i64 + ret i64 %conv2 +} + +; Function Attrs: nounwind +define i64 @int_test1() #0 { +; CHECK: [[VAR4:r[0-9]+]]{{ *}}={{ *}}memw(## +; CHECK: combine(#0, [[VAR4]]) +entry: + store i32 0, i32* @int_a, align 4 + %0 = load i32* @int_b, align 4 + %conv = zext i32 %0 to i64 + ret i64 %conv +} + +; Function Attrs: nounwind +define i64 @int_test2() #0 { +; CHECK: [[VAR5:r[0-9]+]]{{ *}}={{ *}}memw(## +; CHECK: sxtw([[VAR5]]) +entry: + store i32 0, i32* @int_a, align 4 + %0 = load i32* @int_c, align 4 + %conv = sext i32 %0 to i64 + ret i64 %conv +} diff --git a/test/CodeGen/Hexagon/hwloop-dbg.ll b/test/CodeGen/Hexagon/hwloop-dbg.ll index 17fe7b982d8f..bfdd8130d5bf 100644 --- a/test/CodeGen/Hexagon/hwloop-dbg.ll +++ b/test/CodeGen/Hexagon/hwloop-dbg.ll @@ -34,28 +34,31 @@ for.end: ; preds = %for.body declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone -!0 = metadata !{i32 786449, i32 0, i32 12, metadata !"hwloop-dbg.c", metadata !"/usr2/kparzysz/s.hex/t", metadata !"QuIC LLVM Hexagon Clang version 6.1-pre-unknown, (git://git-hexagon-aus.quicinc.com/llvm/clang-mainline.git e9382867661454cdf44addb39430741578e9765c) (llvm/llvm-mainline.git 36412bb1fcf03ed426d4437b41198bae066675ac)", i1 true, i1 true, metadata !"", i32 0, metadata !1, metadata !1, metadata !3, metadata !1} ; [ DW_TAG_compile_unit ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] [DW_LANG_C99] -!1 = metadata !{metadata !2} +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!29} + +!0 = metadata !{i32 786449, metadata !28, i32 12, metadata !"QuIC LLVM Hexagon Clang version 6.1-pre-unknown, (git://git-hexagon-aus.quicinc.com/llvm/clang-mainline.git e9382867661454cdf44addb39430741578e9765c) (llvm/llvm-mainline.git 36412bb1fcf03ed426d4437b41198bae066675ac)", i1 true, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, null, metadata !""} ; [ DW_TAG_compile_unit ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] [DW_LANG_C99] !2 = metadata !{i32 0} -!3 = metadata !{metadata !4} -!4 = metadata !{metadata !5} -!5 = metadata !{i32 786478, i32 0, metadata !6, metadata !"foo", metadata !"foo", metadata !"", metadata !6, i32 1, metadata !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, void (i32*, i32*)* @foo, null, null, metadata !11, i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [foo] -!6 = metadata !{i32 786473, metadata !"hwloop-dbg.c", metadata !"/usr2/kparzysz/s.hex/t", null} ; [ DW_TAG_file_type ] -!7 = metadata !{i32 786453, i32 0, metadata !"", i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !8, i32 0, i32 0} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!3 = metadata !{metadata !5} +!5 = metadata !{i32 786478, metadata !28, null, metadata !"foo", metadata !"foo", metadata !"", i32 1, metadata !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, void (i32*, i32*)* @foo, null, null, metadata !11, i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [foo] +!6 = metadata !{i32 786473, metadata !28} ; [ DW_TAG_file_type ] +!7 = metadata !{i32 786453, i32 0, null, i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !8, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] !8 = metadata !{null, metadata !9, metadata !9} -!9 = metadata !{i32 786447, null, metadata !"", null, i32 0, i64 32, i64 32, i64 0, i32 0, metadata !10} ; [ DW_TAG_pointer_type ] [line 0, size 32, align 32, offset 0] [from int] -!10 = metadata !{i32 786468, null, metadata !"int", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!9 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 32, i64 32, i64 0, i32 0, metadata !10} ; [ DW_TAG_pointer_type ] [line 0, size 32, align 32, offset 0] [from int] +!10 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] !11 = metadata !{metadata !12} !12 = metadata !{metadata !13, metadata !14, metadata !15} !13 = metadata !{i32 786689, metadata !5, metadata !"a", metadata !6, i32 16777217, metadata !9, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [a] [line 1] !14 = metadata !{i32 786689, metadata !5, metadata !"b", metadata !6, i32 33554433, metadata !9, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [b] [line 1] !15 = metadata !{i32 786688, metadata !16, metadata !"i", metadata !6, i32 2, metadata !10, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [i] [line 2] -!16 = metadata !{i32 786443, metadata !5, i32 1, i32 26, metadata !6, i32 0} ; [ DW_TAG_lexical_block ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] +!16 = metadata !{i32 786443, metadata !28, metadata !5, i32 1, i32 26, i32 0} ; [ DW_TAG_lexical_block ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] !17 = metadata !{i32 1, i32 15, metadata !5, null} !18 = metadata !{i32 1, i32 23, metadata !5, null} !19 = metadata !{i32 3, i32 8, metadata !20, null} -!20 = metadata !{i32 786443, metadata !16, i32 3, i32 3, metadata !6, i32 1} ; [ DW_TAG_lexical_block ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] +!20 = metadata !{i32 786443, metadata !28, metadata !16, i32 3, i32 3, i32 1} ; [ DW_TAG_lexical_block ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] !21 = metadata !{i32 4, i32 5, metadata !22, null} -!22 = metadata !{i32 786443, metadata !20, i32 3, i32 28, metadata !6, i32 2} ; [ DW_TAG_lexical_block ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] +!22 = metadata !{i32 786443, metadata !28, metadata !20, i32 3, i32 28, i32 2} ; [ DW_TAG_lexical_block ] [/usr2/kparzysz/s.hex/t/hwloop-dbg.c] !26 = metadata !{i32 3, i32 23, metadata !20, null} !27 = metadata !{i32 6, i32 1, metadata !16, null} +!28 = metadata !{metadata !"hwloop-dbg.c", metadata !"/usr2/kparzysz/s.hex/t"} +!29 = metadata !{i32 1, metadata !"Debug Info Version", i32 1} diff --git a/test/CodeGen/Hexagon/i16_VarArg.ll b/test/CodeGen/Hexagon/i16_VarArg.ll index eb44c2905c9d..c5d05a5e6ed8 100644 --- a/test/CodeGen/Hexagon/i16_VarArg.ll +++ b/test/CodeGen/Hexagon/i16_VarArg.ll @@ -37,4 +37,4 @@ define i32 @main() { %ne_s = getelementptr [13 x i8]* @ne_str, i64 0, i64 0 call i32 (i8*, ...)* @printf( i8* %lt_s, i16 %val1 ) ret i32 0 -}
\ No newline at end of file +} diff --git a/test/CodeGen/Hexagon/i1_VarArg.ll b/test/CodeGen/Hexagon/i1_VarArg.ll index 7dbfb25cd2b7..37f27787c186 100644 --- a/test/CodeGen/Hexagon/i1_VarArg.ll +++ b/test/CodeGen/Hexagon/i1_VarArg.ll @@ -41,4 +41,4 @@ define i32 @main() { call i32 (i8*, ...)* @printf( i8* %eq_s, i1 %eq_r ) call i32 (i8*, ...)* @printf( i8* %ne_s, i1 %ne_r ) ret i32 0 -}
\ No newline at end of file +} diff --git a/test/CodeGen/Hexagon/i8_VarArg.ll b/test/CodeGen/Hexagon/i8_VarArg.ll index 687b178824ce..6f056ff417af 100644 --- a/test/CodeGen/Hexagon/i8_VarArg.ll +++ b/test/CodeGen/Hexagon/i8_VarArg.ll @@ -37,4 +37,4 @@ define i32 @main() { %ne_s = getelementptr [13 x i8]* @ne_str, i64 0, i64 0 call i32 (i8*, ...)* @printf( i8* %lt_s, i8 %val1 ) ret i32 0 -}
\ No newline at end of file +} diff --git a/test/CodeGen/Hexagon/indirect-br.ll b/test/CodeGen/Hexagon/indirect-br.ll index 919e50189160..188eebff5c73 100644 --- a/test/CodeGen/Hexagon/indirect-br.ll +++ b/test/CodeGen/Hexagon/indirect-br.ll @@ -11,4 +11,4 @@ test_label: ret: ret i32 -1 -}
\ No newline at end of file +} diff --git a/test/CodeGen/Hexagon/lit.local.cfg b/test/CodeGen/Hexagon/lit.local.cfg index 24324b2792e3..e96bab818a3c 100644 --- a/test/CodeGen/Hexagon/lit.local.cfg +++ b/test/CodeGen/Hexagon/lit.local.cfg @@ -1,5 +1,3 @@ -config.suffixes = ['.ll', '.c', '.cpp'] - targets = set(config.root.targets_to_build.split()) if not 'Hexagon' in targets: config.unsupported = True diff --git a/test/CodeGen/Hexagon/memops.ll b/test/CodeGen/Hexagon/memops.ll index 5498848d8560..fca1a73811a9 100644 --- a/test/CodeGen/Hexagon/memops.ll +++ b/test/CodeGen/Hexagon/memops.ll @@ -4,11 +4,11 @@ define void @memop_unsigned_char_add5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv = zext i8 %0 to i32 %add = add nsw i32 %conv, 5 %conv1 = trunc i32 %add to i8 - store i8 %conv1, i8* %p, align 1, !tbaa !0 + store i8 %conv1, i8* %p, align 1 ret void } @@ -16,11 +16,11 @@ define void @memop_unsigned_char_add(i8* nocapture %p, i8 zeroext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv = zext i8 %x to i32 - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv1 = zext i8 %0 to i32 %add = add nsw i32 %conv1, %conv %conv2 = trunc i32 %add to i8 - store i8 %conv2, i8* %p, align 1, !tbaa !0 + store i8 %conv2, i8* %p, align 1 ret void } @@ -28,51 +28,51 @@ define void @memop_unsigned_char_sub(i8* nocapture %p, i8 zeroext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv = zext i8 %x to i32 - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv1 = zext i8 %0 to i32 %sub = sub nsw i32 %conv1, %conv %conv2 = trunc i32 %sub to i8 - store i8 %conv2, i8* %p, align 1, !tbaa !0 + store i8 %conv2, i8* %p, align 1 ret void } define void @memop_unsigned_char_or(i8* nocapture %p, i8 zeroext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %or3 = or i8 %0, %x - store i8 %or3, i8* %p, align 1, !tbaa !0 + store i8 %or3, i8* %p, align 1 ret void } define void @memop_unsigned_char_and(i8* nocapture %p, i8 zeroext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %and3 = and i8 %0, %x - store i8 %and3, i8* %p, align 1, !tbaa !0 + store i8 %and3, i8* %p, align 1 ret void } define void @memop_unsigned_char_clrbit(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv = zext i8 %0 to i32 %and = and i32 %conv, 223 %conv1 = trunc i32 %and to i8 - store i8 %conv1, i8* %p, align 1, !tbaa !0 + store i8 %conv1, i8* %p, align 1 ret void } define void @memop_unsigned_char_setbit(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv = zext i8 %0 to i32 %or = or i32 %conv, 128 %conv1 = trunc i32 %or to i8 - store i8 %conv1, i8* %p, align 1, !tbaa !0 + store i8 %conv1, i8* %p, align 1 ret void } @@ -80,11 +80,11 @@ define void @memop_unsigned_char_add5_index(i8* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv = zext i8 %0 to i32 %add = add nsw i32 %conv, 5 %conv1 = trunc i32 %add to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -93,11 +93,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv1 = zext i8 %0 to i32 %add = add nsw i32 %conv1, %conv %conv2 = trunc i32 %add to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -106,11 +106,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv1 = zext i8 %0 to i32 %sub = sub nsw i32 %conv1, %conv %conv2 = trunc i32 %sub to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -118,9 +118,9 @@ define void @memop_unsigned_char_or_index(i8* nocapture %p, i32 %i, i8 zeroext % entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %or3 = or i8 %0, %x - store i8 %or3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %or3, i8* %add.ptr, align 1 ret void } @@ -128,9 +128,9 @@ define void @memop_unsigned_char_and_index(i8* nocapture %p, i32 %i, i8 zeroext entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %and3 = and i8 %0, %x - store i8 %and3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %and3, i8* %add.ptr, align 1 ret void } @@ -138,11 +138,11 @@ define void @memop_unsigned_char_clrbit_index(i8* nocapture %p, i32 %i) nounwind entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv = zext i8 %0 to i32 %and = and i32 %conv, 223 %conv1 = trunc i32 %and to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -150,11 +150,11 @@ define void @memop_unsigned_char_setbit_index(i8* nocapture %p, i32 %i) nounwind entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv = zext i8 %0 to i32 %or = or i32 %conv, 128 %conv1 = trunc i32 %or to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -162,11 +162,11 @@ define void @memop_unsigned_char_add5_index5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv = zext i8 %0 to i32 %add = add nsw i32 %conv, 5 %conv1 = trunc i32 %add to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -175,11 +175,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}r{{[0-9]+}} %conv = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv1 = zext i8 %0 to i32 %add = add nsw i32 %conv1, %conv %conv2 = trunc i32 %add to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -188,11 +188,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}-={{ *}}r{{[0-9]+}} %conv = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv1 = zext i8 %0 to i32 %sub = sub nsw i32 %conv1, %conv %conv2 = trunc i32 %sub to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -200,9 +200,9 @@ define void @memop_unsigned_char_or_index5(i8* nocapture %p, i8 zeroext %x) noun entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %or3 = or i8 %0, %x - store i8 %or3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %or3, i8* %add.ptr, align 1 ret void } @@ -210,9 +210,9 @@ define void @memop_unsigned_char_and_index5(i8* nocapture %p, i8 zeroext %x) nou entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %and3 = and i8 %0, %x - store i8 %and3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %and3, i8* %add.ptr, align 1 ret void } @@ -220,11 +220,11 @@ define void @memop_unsigned_char_clrbit_index5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv = zext i8 %0 to i32 %and = and i32 %conv, 223 %conv1 = trunc i32 %and to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -232,22 +232,22 @@ define void @memop_unsigned_char_setbit_index5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv = zext i8 %0 to i32 %or = or i32 %conv, 128 %conv1 = trunc i32 %or to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } define void @memop_signed_char_add5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv2 = zext i8 %0 to i32 %add = add nsw i32 %conv2, 5 %conv1 = trunc i32 %add to i8 - store i8 %conv1, i8* %p, align 1, !tbaa !0 + store i8 %conv1, i8* %p, align 1 ret void } @@ -255,11 +255,11 @@ define void @memop_signed_char_add(i8* nocapture %p, i8 signext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv4 = zext i8 %x to i32 - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv13 = zext i8 %0 to i32 %add = add nsw i32 %conv13, %conv4 %conv2 = trunc i32 %add to i8 - store i8 %conv2, i8* %p, align 1, !tbaa !0 + store i8 %conv2, i8* %p, align 1 ret void } @@ -267,51 +267,51 @@ define void @memop_signed_char_sub(i8* nocapture %p, i8 signext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv4 = zext i8 %x to i32 - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv13 = zext i8 %0 to i32 %sub = sub nsw i32 %conv13, %conv4 %conv2 = trunc i32 %sub to i8 - store i8 %conv2, i8* %p, align 1, !tbaa !0 + store i8 %conv2, i8* %p, align 1 ret void } define void @memop_signed_char_or(i8* nocapture %p, i8 signext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %or3 = or i8 %0, %x - store i8 %or3, i8* %p, align 1, !tbaa !0 + store i8 %or3, i8* %p, align 1 ret void } define void @memop_signed_char_and(i8* nocapture %p, i8 signext %x) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %and3 = and i8 %0, %x - store i8 %and3, i8* %p, align 1, !tbaa !0 + store i8 %and3, i8* %p, align 1 ret void } define void @memop_signed_char_clrbit(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv2 = zext i8 %0 to i32 %and = and i32 %conv2, 223 %conv1 = trunc i32 %and to i8 - store i8 %conv1, i8* %p, align 1, !tbaa !0 + store i8 %conv1, i8* %p, align 1 ret void } define void @memop_signed_char_setbit(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) - %0 = load i8* %p, align 1, !tbaa !0 + %0 = load i8* %p, align 1 %conv2 = zext i8 %0 to i32 %or = or i32 %conv2, 128 %conv1 = trunc i32 %or to i8 - store i8 %conv1, i8* %p, align 1, !tbaa !0 + store i8 %conv1, i8* %p, align 1 ret void } @@ -319,11 +319,11 @@ define void @memop_signed_char_add5_index(i8* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv2 = zext i8 %0 to i32 %add = add nsw i32 %conv2, 5 %conv1 = trunc i32 %add to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -332,11 +332,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv4 = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv13 = zext i8 %0 to i32 %add = add nsw i32 %conv13, %conv4 %conv2 = trunc i32 %add to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -345,11 +345,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv4 = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv13 = zext i8 %0 to i32 %sub = sub nsw i32 %conv13, %conv4 %conv2 = trunc i32 %sub to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -357,9 +357,9 @@ define void @memop_signed_char_or_index(i8* nocapture %p, i32 %i, i8 signext %x) entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %or3 = or i8 %0, %x - store i8 %or3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %or3, i8* %add.ptr, align 1 ret void } @@ -367,9 +367,9 @@ define void @memop_signed_char_and_index(i8* nocapture %p, i32 %i, i8 signext %x entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %and3 = and i8 %0, %x - store i8 %and3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %and3, i8* %add.ptr, align 1 ret void } @@ -377,11 +377,11 @@ define void @memop_signed_char_clrbit_index(i8* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv2 = zext i8 %0 to i32 %and = and i32 %conv2, 223 %conv1 = trunc i32 %and to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -389,11 +389,11 @@ define void @memop_signed_char_setbit_index(i8* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 %i - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv2 = zext i8 %0 to i32 %or = or i32 %conv2, 128 %conv1 = trunc i32 %or to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -401,11 +401,11 @@ define void @memop_signed_char_add5_index5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv2 = zext i8 %0 to i32 %add = add nsw i32 %conv2, 5 %conv1 = trunc i32 %add to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -414,11 +414,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}r{{[0-9]+}} %conv4 = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv13 = zext i8 %0 to i32 %add = add nsw i32 %conv13, %conv4 %conv2 = trunc i32 %add to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -427,11 +427,11 @@ entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}-={{ *}}r{{[0-9]+}} %conv4 = zext i8 %x to i32 %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv13 = zext i8 %0 to i32 %sub = sub nsw i32 %conv13, %conv4 %conv2 = trunc i32 %sub to i8 - store i8 %conv2, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv2, i8* %add.ptr, align 1 ret void } @@ -439,9 +439,9 @@ define void @memop_signed_char_or_index5(i8* nocapture %p, i8 signext %x) nounwi entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %or3 = or i8 %0, %x - store i8 %or3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %or3, i8* %add.ptr, align 1 ret void } @@ -449,9 +449,9 @@ define void @memop_signed_char_and_index5(i8* nocapture %p, i8 signext %x) nounw entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %and3 = and i8 %0, %x - store i8 %and3, i8* %add.ptr, align 1, !tbaa !0 + store i8 %and3, i8* %add.ptr, align 1 ret void } @@ -459,11 +459,11 @@ define void @memop_signed_char_clrbit_index5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv2 = zext i8 %0 to i32 %and = and i32 %conv2, 223 %conv1 = trunc i32 %and to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } @@ -471,22 +471,22 @@ define void @memop_signed_char_setbit_index5(i8* nocapture %p) nounwind { entry: ; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i8* %p, i32 5 - %0 = load i8* %add.ptr, align 1, !tbaa !0 + %0 = load i8* %add.ptr, align 1 %conv2 = zext i8 %0 to i32 %or = or i32 %conv2, 128 %conv1 = trunc i32 %or to i8 - store i8 %conv1, i8* %add.ptr, align 1, !tbaa !0 + store i8 %conv1, i8* %add.ptr, align 1 ret void } define void @memop_unsigned_short_add5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv = zext i16 %0 to i32 %add = add nsw i32 %conv, 5 %conv1 = trunc i32 %add to i16 - store i16 %conv1, i16* %p, align 2, !tbaa !2 + store i16 %conv1, i16* %p, align 2 ret void } @@ -494,11 +494,11 @@ define void @memop_unsigned_short_add(i16* nocapture %p, i16 zeroext %x) nounwin entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv = zext i16 %x to i32 - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv1 = zext i16 %0 to i32 %add = add nsw i32 %conv1, %conv %conv2 = trunc i32 %add to i16 - store i16 %conv2, i16* %p, align 2, !tbaa !2 + store i16 %conv2, i16* %p, align 2 ret void } @@ -506,51 +506,51 @@ define void @memop_unsigned_short_sub(i16* nocapture %p, i16 zeroext %x) nounwin entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv = zext i16 %x to i32 - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv1 = zext i16 %0 to i32 %sub = sub nsw i32 %conv1, %conv %conv2 = trunc i32 %sub to i16 - store i16 %conv2, i16* %p, align 2, !tbaa !2 + store i16 %conv2, i16* %p, align 2 ret void } define void @memop_unsigned_short_or(i16* nocapture %p, i16 zeroext %x) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %or3 = or i16 %0, %x - store i16 %or3, i16* %p, align 2, !tbaa !2 + store i16 %or3, i16* %p, align 2 ret void } define void @memop_unsigned_short_and(i16* nocapture %p, i16 zeroext %x) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %and3 = and i16 %0, %x - store i16 %and3, i16* %p, align 2, !tbaa !2 + store i16 %and3, i16* %p, align 2 ret void } define void @memop_unsigned_short_clrbit(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv = zext i16 %0 to i32 %and = and i32 %conv, 65503 %conv1 = trunc i32 %and to i16 - store i16 %conv1, i16* %p, align 2, !tbaa !2 + store i16 %conv1, i16* %p, align 2 ret void } define void @memop_unsigned_short_setbit(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv = zext i16 %0 to i32 %or = or i32 %conv, 128 %conv1 = trunc i32 %or to i16 - store i16 %conv1, i16* %p, align 2, !tbaa !2 + store i16 %conv1, i16* %p, align 2 ret void } @@ -558,11 +558,11 @@ define void @memop_unsigned_short_add5_index(i16* nocapture %p, i32 %i) nounwind entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv = zext i16 %0 to i32 %add = add nsw i32 %conv, 5 %conv1 = trunc i32 %add to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -571,11 +571,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv1 = zext i16 %0 to i32 %add = add nsw i32 %conv1, %conv %conv2 = trunc i32 %add to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -584,11 +584,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv1 = zext i16 %0 to i32 %sub = sub nsw i32 %conv1, %conv %conv2 = trunc i32 %sub to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -596,9 +596,9 @@ define void @memop_unsigned_short_or_index(i16* nocapture %p, i32 %i, i16 zeroex entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %or3 = or i16 %0, %x - store i16 %or3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %or3, i16* %add.ptr, align 2 ret void } @@ -606,9 +606,9 @@ define void @memop_unsigned_short_and_index(i16* nocapture %p, i32 %i, i16 zeroe entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %and3 = and i16 %0, %x - store i16 %and3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %and3, i16* %add.ptr, align 2 ret void } @@ -616,11 +616,11 @@ define void @memop_unsigned_short_clrbit_index(i16* nocapture %p, i32 %i) nounwi entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv = zext i16 %0 to i32 %and = and i32 %conv, 65503 %conv1 = trunc i32 %and to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -628,11 +628,11 @@ define void @memop_unsigned_short_setbit_index(i16* nocapture %p, i32 %i) nounwi entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv = zext i16 %0 to i32 %or = or i32 %conv, 128 %conv1 = trunc i32 %or to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -640,11 +640,11 @@ define void @memop_unsigned_short_add5_index5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv = zext i16 %0 to i32 %add = add nsw i32 %conv, 5 %conv1 = trunc i32 %add to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -653,11 +653,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}r{{[0-9]+}} %conv = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv1 = zext i16 %0 to i32 %add = add nsw i32 %conv1, %conv %conv2 = trunc i32 %add to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -666,11 +666,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}-={{ *}}r{{[0-9]+}} %conv = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv1 = zext i16 %0 to i32 %sub = sub nsw i32 %conv1, %conv %conv2 = trunc i32 %sub to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -678,9 +678,9 @@ define void @memop_unsigned_short_or_index5(i16* nocapture %p, i16 zeroext %x) n entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %or3 = or i16 %0, %x - store i16 %or3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %or3, i16* %add.ptr, align 2 ret void } @@ -688,9 +688,9 @@ define void @memop_unsigned_short_and_index5(i16* nocapture %p, i16 zeroext %x) entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %and3 = and i16 %0, %x - store i16 %and3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %and3, i16* %add.ptr, align 2 ret void } @@ -698,11 +698,11 @@ define void @memop_unsigned_short_clrbit_index5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv = zext i16 %0 to i32 %and = and i32 %conv, 65503 %conv1 = trunc i32 %and to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -710,22 +710,22 @@ define void @memop_unsigned_short_setbit_index5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv = zext i16 %0 to i32 %or = or i32 %conv, 128 %conv1 = trunc i32 %or to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } define void @memop_signed_short_add5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv2 = zext i16 %0 to i32 %add = add nsw i32 %conv2, 5 %conv1 = trunc i32 %add to i16 - store i16 %conv1, i16* %p, align 2, !tbaa !2 + store i16 %conv1, i16* %p, align 2 ret void } @@ -733,11 +733,11 @@ define void @memop_signed_short_add(i16* nocapture %p, i16 signext %x) nounwind entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv4 = zext i16 %x to i32 - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv13 = zext i16 %0 to i32 %add = add nsw i32 %conv13, %conv4 %conv2 = trunc i32 %add to i16 - store i16 %conv2, i16* %p, align 2, !tbaa !2 + store i16 %conv2, i16* %p, align 2 ret void } @@ -745,51 +745,51 @@ define void @memop_signed_short_sub(i16* nocapture %p, i16 signext %x) nounwind entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv4 = zext i16 %x to i32 - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv13 = zext i16 %0 to i32 %sub = sub nsw i32 %conv13, %conv4 %conv2 = trunc i32 %sub to i16 - store i16 %conv2, i16* %p, align 2, !tbaa !2 + store i16 %conv2, i16* %p, align 2 ret void } define void @memop_signed_short_or(i16* nocapture %p, i16 signext %x) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %or3 = or i16 %0, %x - store i16 %or3, i16* %p, align 2, !tbaa !2 + store i16 %or3, i16* %p, align 2 ret void } define void @memop_signed_short_and(i16* nocapture %p, i16 signext %x) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %and3 = and i16 %0, %x - store i16 %and3, i16* %p, align 2, !tbaa !2 + store i16 %and3, i16* %p, align 2 ret void } define void @memop_signed_short_clrbit(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv2 = zext i16 %0 to i32 %and = and i32 %conv2, 65503 %conv1 = trunc i32 %and to i16 - store i16 %conv1, i16* %p, align 2, !tbaa !2 + store i16 %conv1, i16* %p, align 2 ret void } define void @memop_signed_short_setbit(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) - %0 = load i16* %p, align 2, !tbaa !2 + %0 = load i16* %p, align 2 %conv2 = zext i16 %0 to i32 %or = or i32 %conv2, 128 %conv1 = trunc i32 %or to i16 - store i16 %conv1, i16* %p, align 2, !tbaa !2 + store i16 %conv1, i16* %p, align 2 ret void } @@ -797,11 +797,11 @@ define void @memop_signed_short_add5_index(i16* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv2 = zext i16 %0 to i32 %add = add nsw i32 %conv2, 5 %conv1 = trunc i32 %add to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -810,11 +810,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %conv4 = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv13 = zext i16 %0 to i32 %add = add nsw i32 %conv13, %conv4 %conv2 = trunc i32 %add to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -823,11 +823,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %conv4 = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv13 = zext i16 %0 to i32 %sub = sub nsw i32 %conv13, %conv4 %conv2 = trunc i32 %sub to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -835,9 +835,9 @@ define void @memop_signed_short_or_index(i16* nocapture %p, i32 %i, i16 signext entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %or3 = or i16 %0, %x - store i16 %or3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %or3, i16* %add.ptr, align 2 ret void } @@ -845,9 +845,9 @@ define void @memop_signed_short_and_index(i16* nocapture %p, i32 %i, i16 signext entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %and3 = and i16 %0, %x - store i16 %and3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %and3, i16* %add.ptr, align 2 ret void } @@ -855,11 +855,11 @@ define void @memop_signed_short_clrbit_index(i16* nocapture %p, i32 %i) nounwind entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv2 = zext i16 %0 to i32 %and = and i32 %conv2, 65503 %conv1 = trunc i32 %and to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -867,11 +867,11 @@ define void @memop_signed_short_setbit_index(i16* nocapture %p, i32 %i) nounwind entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 %i - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv2 = zext i16 %0 to i32 %or = or i32 %conv2, 128 %conv1 = trunc i32 %or to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -879,11 +879,11 @@ define void @memop_signed_short_add5_index5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv2 = zext i16 %0 to i32 %add = add nsw i32 %conv2, 5 %conv1 = trunc i32 %add to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -892,11 +892,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}r{{[0-9]+}} %conv4 = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv13 = zext i16 %0 to i32 %add = add nsw i32 %conv13, %conv4 %conv2 = trunc i32 %add to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -905,11 +905,11 @@ entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}-={{ *}}r{{[0-9]+}} %conv4 = zext i16 %x to i32 %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv13 = zext i16 %0 to i32 %sub = sub nsw i32 %conv13, %conv4 %conv2 = trunc i32 %sub to i16 - store i16 %conv2, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv2, i16* %add.ptr, align 2 ret void } @@ -917,9 +917,9 @@ define void @memop_signed_short_or_index5(i16* nocapture %p, i16 signext %x) nou entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %or3 = or i16 %0, %x - store i16 %or3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %or3, i16* %add.ptr, align 2 ret void } @@ -927,9 +927,9 @@ define void @memop_signed_short_and_index5(i16* nocapture %p, i16 signext %x) no entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %and3 = and i16 %0, %x - store i16 %and3, i16* %add.ptr, align 2, !tbaa !2 + store i16 %and3, i16* %add.ptr, align 2 ret void } @@ -937,11 +937,11 @@ define void @memop_signed_short_clrbit_index5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv2 = zext i16 %0 to i32 %and = and i32 %conv2, 65503 %conv1 = trunc i32 %and to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } @@ -949,74 +949,74 @@ define void @memop_signed_short_setbit_index5(i16* nocapture %p) nounwind { entry: ; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i16* %p, i32 5 - %0 = load i16* %add.ptr, align 2, !tbaa !2 + %0 = load i16* %add.ptr, align 2 %conv2 = zext i16 %0 to i32 %or = or i32 %conv2, 128 %conv1 = trunc i32 %or to i16 - store i16 %conv1, i16* %add.ptr, align 2, !tbaa !2 + store i16 %conv1, i16* %add.ptr, align 2 ret void } define void @memop_signed_int_add5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %add = add i32 %0, 5 - store i32 %add, i32* %p, align 4, !tbaa !3 + store i32 %add, i32* %p, align 4 ret void } define void @memop_signed_int_add(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %add = add i32 %0, %x - store i32 %add, i32* %p, align 4, !tbaa !3 + store i32 %add, i32* %p, align 4 ret void } define void @memop_signed_int_sub(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %sub = sub i32 %0, %x - store i32 %sub, i32* %p, align 4, !tbaa !3 + store i32 %sub, i32* %p, align 4 ret void } define void @memop_signed_int_or(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %or = or i32 %0, %x - store i32 %or, i32* %p, align 4, !tbaa !3 + store i32 %or, i32* %p, align 4 ret void } define void @memop_signed_int_and(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %and = and i32 %0, %x - store i32 %and, i32* %p, align 4, !tbaa !3 + store i32 %and, i32* %p, align 4 ret void } define void @memop_signed_int_clrbit(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %and = and i32 %0, -33 - store i32 %and, i32* %p, align 4, !tbaa !3 + store i32 %and, i32* %p, align 4 ret void } define void @memop_signed_int_setbit(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %or = or i32 %0, 128 - store i32 %or, i32* %p, align 4, !tbaa !3 + store i32 %or, i32* %p, align 4 ret void } @@ -1024,9 +1024,9 @@ define void @memop_signed_int_add5_index(i32* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add i32 %0, 5 - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1034,9 +1034,9 @@ define void @memop_signed_int_add_index(i32* nocapture %p, i32 %i, i32 %x) nounw entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add i32 %0, %x - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1044,9 +1044,9 @@ define void @memop_signed_int_sub_index(i32* nocapture %p, i32 %i, i32 %x) nounw entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %sub = sub i32 %0, %x - store i32 %sub, i32* %add.ptr, align 4, !tbaa !3 + store i32 %sub, i32* %add.ptr, align 4 ret void } @@ -1054,9 +1054,9 @@ define void @memop_signed_int_or_index(i32* nocapture %p, i32 %i, i32 %x) nounwi entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, %x - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } @@ -1064,9 +1064,9 @@ define void @memop_signed_int_and_index(i32* nocapture %p, i32 %i, i32 %x) nounw entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, %x - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1074,9 +1074,9 @@ define void @memop_signed_int_clrbit_index(i32* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, -33 - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1084,9 +1084,9 @@ define void @memop_signed_int_setbit_index(i32* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, 128 - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } @@ -1094,9 +1094,9 @@ define void @memop_signed_int_add5_index5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add i32 %0, 5 - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1104,9 +1104,9 @@ define void @memop_signed_int_add_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add i32 %0, %x - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1114,9 +1114,9 @@ define void @memop_signed_int_sub_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}-={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %sub = sub i32 %0, %x - store i32 %sub, i32* %add.ptr, align 4, !tbaa !3 + store i32 %sub, i32* %add.ptr, align 4 ret void } @@ -1124,9 +1124,9 @@ define void @memop_signed_int_or_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, %x - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } @@ -1134,9 +1134,9 @@ define void @memop_signed_int_and_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, %x - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1144,9 +1144,9 @@ define void @memop_signed_int_clrbit_index5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, -33 - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1154,72 +1154,72 @@ define void @memop_signed_int_setbit_index5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, 128 - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } define void @memop_unsigned_int_add5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %add = add nsw i32 %0, 5 - store i32 %add, i32* %p, align 4, !tbaa !3 + store i32 %add, i32* %p, align 4 ret void } define void @memop_unsigned_int_add(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %add = add nsw i32 %0, %x - store i32 %add, i32* %p, align 4, !tbaa !3 + store i32 %add, i32* %p, align 4 ret void } define void @memop_unsigned_int_sub(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %sub = sub nsw i32 %0, %x - store i32 %sub, i32* %p, align 4, !tbaa !3 + store i32 %sub, i32* %p, align 4 ret void } define void @memop_unsigned_int_or(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %or = or i32 %0, %x - store i32 %or, i32* %p, align 4, !tbaa !3 + store i32 %or, i32* %p, align 4 ret void } define void @memop_unsigned_int_and(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %and = and i32 %0, %x - store i32 %and, i32* %p, align 4, !tbaa !3 + store i32 %and, i32* %p, align 4 ret void } define void @memop_unsigned_int_clrbit(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %and = and i32 %0, -33 - store i32 %and, i32* %p, align 4, !tbaa !3 + store i32 %and, i32* %p, align 4 ret void } define void @memop_unsigned_int_setbit(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) - %0 = load i32* %p, align 4, !tbaa !3 + %0 = load i32* %p, align 4 %or = or i32 %0, 128 - store i32 %or, i32* %p, align 4, !tbaa !3 + store i32 %or, i32* %p, align 4 ret void } @@ -1227,9 +1227,9 @@ define void @memop_unsigned_int_add5_index(i32* nocapture %p, i32 %i) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add nsw i32 %0, 5 - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1237,9 +1237,9 @@ define void @memop_unsigned_int_add_index(i32* nocapture %p, i32 %i, i32 %x) nou entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add nsw i32 %0, %x - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1247,9 +1247,9 @@ define void @memop_unsigned_int_sub_index(i32* nocapture %p, i32 %i, i32 %x) nou entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %sub = sub nsw i32 %0, %x - store i32 %sub, i32* %add.ptr, align 4, !tbaa !3 + store i32 %sub, i32* %add.ptr, align 4 ret void } @@ -1257,9 +1257,9 @@ define void @memop_unsigned_int_or_index(i32* nocapture %p, i32 %i, i32 %x) noun entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, %x - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } @@ -1267,9 +1267,9 @@ define void @memop_unsigned_int_and_index(i32* nocapture %p, i32 %i, i32 %x) nou entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, %x - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1277,9 +1277,9 @@ define void @memop_unsigned_int_clrbit_index(i32* nocapture %p, i32 %i) nounwind entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, -33 - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1287,9 +1287,9 @@ define void @memop_unsigned_int_setbit_index(i32* nocapture %p, i32 %i) nounwind entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 %i - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, 128 - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } @@ -1297,9 +1297,9 @@ define void @memop_unsigned_int_add5_index5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}#5 %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add nsw i32 %0, 5 - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1307,9 +1307,9 @@ define void @memop_unsigned_int_add_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %add = add nsw i32 %0, %x - store i32 %add, i32* %add.ptr, align 4, !tbaa !3 + store i32 %add, i32* %add.ptr, align 4 ret void } @@ -1317,9 +1317,9 @@ define void @memop_unsigned_int_sub_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}-={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %sub = sub nsw i32 %0, %x - store i32 %sub, i32* %add.ptr, align 4, !tbaa !3 + store i32 %sub, i32* %add.ptr, align 4 ret void } @@ -1327,9 +1327,9 @@ define void @memop_unsigned_int_or_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}|={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, %x - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } @@ -1337,9 +1337,9 @@ define void @memop_unsigned_int_and_index5(i32* nocapture %p, i32 %x) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}&={{ *}}r{{[0-9]+}} %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, %x - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1347,9 +1347,9 @@ define void @memop_unsigned_int_clrbit_index5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}clrbit({{ *}}#5{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %and = and i32 %0, -33 - store i32 %and, i32* %add.ptr, align 4, !tbaa !3 + store i32 %and, i32* %add.ptr, align 4 ret void } @@ -1357,13 +1357,8 @@ define void @memop_unsigned_int_setbit_index5(i32* nocapture %p) nounwind { entry: ; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}setbit({{ *}}#7{{ *}}) %add.ptr = getelementptr inbounds i32* %p, i32 5 - %0 = load i32* %add.ptr, align 4, !tbaa !3 + %0 = load i32* %add.ptr, align 4 %or = or i32 %0, 128 - store i32 %or, i32* %add.ptr, align 4, !tbaa !3 + store i32 %or, i32* %add.ptr, align 4 ret void } - -!0 = metadata !{metadata !"omnipotent char", metadata !1} -!1 = metadata !{metadata !"Simple C/C++ TBAA"} -!2 = metadata !{metadata !"short", metadata !0} -!3 = metadata !{metadata !"int", metadata !0} diff --git a/test/CodeGen/Hexagon/packetize_cond_inst.ll b/test/CodeGen/Hexagon/packetize_cond_inst.ll new file mode 100644 index 000000000000..a48a9f62ec61 --- /dev/null +++ b/test/CodeGen/Hexagon/packetize_cond_inst.ll @@ -0,0 +1,32 @@ +; RUN: llc -mcpu=hexagonv4 -tail-dup-size=1 < %s | FileCheck %s + +target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-v64:64:64-v32:32:32-a0:0-n16:32" +target triple = "hexagon-unknown--elf" + +; Make sure we put the two conditionally executed adds in a packet. +; ifcnv_add: +; { +; p0 = cmp.gt(r2, r1) +; if (!p0.new) r0 = add(r2, r1) +; if (p0.new) r0 = add(r0, #10) +; } +; CHECK: cmp +; CHECK-NEXT: add +; CHECH-NEXT: add +define i32 @ifcnv_add(i32, i32, i32) nounwind readnone { + %4 = icmp sgt i32 %2, %1 + br i1 %4, label %5, label %7 + +; <label>:5 ; preds = %3 + %6 = add nsw i32 %0, 10 + br label %9 + +; <label>:7 ; preds = %3 + %8 = add nsw i32 %2, %1 + br label %9 + +; <label>:9 ; preds = %7, %5 + %10 = phi i32 [ %6, %5 ], [ %8, %7 ] + %11 = add nsw i32 %10, 1 + ret i32 %11 +} diff --git a/test/CodeGen/Hexagon/pred-gp.ll b/test/CodeGen/Hexagon/pred-gp.ll new file mode 100644 index 000000000000..299bd8679dad --- /dev/null +++ b/test/CodeGen/Hexagon/pred-gp.ll @@ -0,0 +1,28 @@ +; RUN: llc -march=hexagon -mcpu=hexagonv4 < %s | FileCheck %s +; Check that we are able to predicate instructions with gp-relative +; addressing mode. + +@d = external global i32 +@c = common global i32 0, align 4 + +; Function Attrs: nounwind +define i32 @test2(i8 zeroext %a, i8 zeroext %b) #0 { +; CHECK: if{{ *}}({{!*}}p{{[0-3]+}}{{[.new]*}}){{ *}}r{{[0-9]+}}{{ *}}={{ *}}memw(##{{[cd]}}) +; CHECK: if{{ *}}({{!*}}p{{[0-3]+}}){{ *}}r{{[0-9]+}}{{ *}}={{ *}}memw(##{{[cd]}}) +entry: + %cmp = icmp eq i8 %a, %b + br i1 %cmp, label %if.then, label %entry.if.end_crit_edge + +entry.if.end_crit_edge: + %.pre = load i32* @c, align 4 + br label %if.end + +if.then: + %0 = load i32* @d, align 4 + store i32 %0, i32* @c, align 4 + br label %if.end + +if.end: + %1 = phi i32 [ %.pre, %entry.if.end_crit_edge ], [ %0, %if.then ] + ret i32 %1 +} diff --git a/test/CodeGen/Hexagon/pred-instrs.ll b/test/CodeGen/Hexagon/pred-instrs.ll new file mode 100644 index 000000000000..800073e49b03 --- /dev/null +++ b/test/CodeGen/Hexagon/pred-instrs.ll @@ -0,0 +1,30 @@ +; RUN: llc -march=hexagon -mcpu=hexagonv4 < %s | FileCheck %s +; Check that we are able to predicate instructions. + +; CHECK: if{{ *}}({{!*}}p{{[0-3]}}{{[.new]*}}){{ *}}r{{[0-9]+}}{{ *}}={{ *}}{{and|aslh}} +; CHECK: if{{ *}}({{!*}}p{{[0-3]}}{{[.new]*}}){{ *}}r{{[0-9]+}}{{ *}}={{ *}}{{and|aslh}} +@a = external global i32 +@d = external global i32 + +; Function Attrs: nounwind +define i32 @test1(i8 zeroext %la, i8 zeroext %lb) { +entry: + %cmp = icmp eq i8 %la, %lb + br i1 %cmp, label %if.then, label %if.else + +if.then: ; preds = %entry + %conv1 = zext i8 %la to i32 + %shl = shl nuw nsw i32 %conv1, 16 + br label %if.end + +if.else: ; preds = %entry + %and8 = and i8 %lb, %la + %and = zext i8 %and8 to i32 + br label %if.end + +if.end: ; preds = %if.else, %if.then + %storemerge = phi i32 [ %and, %if.else ], [ %shl, %if.then ] + store i32 %storemerge, i32* @a, align 4 + %0 = load i32* @d, align 4 + ret i32 %0 +} diff --git a/test/CodeGen/Hexagon/split-const32-const64.ll b/test/CodeGen/Hexagon/split-const32-const64.ll new file mode 100644 index 000000000000..2815253545c5 --- /dev/null +++ b/test/CodeGen/Hexagon/split-const32-const64.ll @@ -0,0 +1,26 @@ +; RUN: llc -march=hexagon -mcpu=hexagonv5 -hexagon-small-data-threshold=0 < %s | FileCheck %s + +; Check that CONST32/CONST64 instructions are 'not' generated when +; small-data-threshold is set to 0. + +; with immediate value. +@a = external global i32 +@b = external global i32 +@la = external global i64 +@lb = external global i64 + +define void @test1() nounwind { +; CHECK-NOT: CONST32 +entry: + store i32 12345670, i32* @a, align 4 + store i32 12345670, i32* @b, align 4 + ret void +} + +define void @test2() nounwind { +; CHECK-NOT: CONST64 +entry: + store i64 1234567890123, i64* @la, align 8 + store i64 1234567890123, i64* @lb, align 8 + ret void +} diff --git a/test/CodeGen/Hexagon/sube.ll b/test/CodeGen/Hexagon/sube.ll index 84172e957d04..735ac9eb82e4 100644 --- a/test/CodeGen/Hexagon/sube.ll +++ b/test/CodeGen/Hexagon/sube.ll @@ -26,4 +26,4 @@ entry: %tmp2122 = trunc i128 %tmp21 to i64 store i64 %tmp2122, i64* %RH ret void -}
\ No newline at end of file +} diff --git a/test/CodeGen/Hexagon/tail-call-trunc.ll b/test/CodeGen/Hexagon/tail-call-trunc.ll new file mode 100644 index 000000000000..98214c7b1e97 --- /dev/null +++ b/test/CodeGen/Hexagon/tail-call-trunc.ll @@ -0,0 +1,28 @@ +; RUN: llc -march=hexagon < %s | FileCheck %s + +declare i32 @ret_i32() + +define i8 @test_i8() { +; CHECK-LABEL: test_i8: +; CHECK: jump ret_i32 + %res = tail call i32 @ret_i32() + %val = trunc i32 %res to i8 + ret i8 %val +} + +define i16 @test_i16() { +; CHECK-LABEL: test_i16: +; CHECK: jump ret_i32 + %res = tail call i32 @ret_i32() + %val = trunc i32 %res to i16 + ret i16 %val +} + +declare i64 @ret_i64() +define i32 @test_i32() { +; CHECK-LABEL: test_i32: +; CHECK: call ret_i64 + %res = tail call i64 @ret_i64() + %val = trunc i64 %res to i32 + ret i32 42 +} diff --git a/test/CodeGen/Hexagon/tfr-to-combine.ll b/test/CodeGen/Hexagon/tfr-to-combine.ll new file mode 100644 index 000000000000..e3057cd1611d --- /dev/null +++ b/test/CodeGen/Hexagon/tfr-to-combine.ll @@ -0,0 +1,35 @@ +; RUN: llc -march=hexagon -mcpu=hexagonv5 -O3 < %s | FileCheck %s + +; Check that we combine TFRs and TFRIs into COMBINEs. + +@a = external global i16 +@b = external global i16 +@c = external global i16 + +; Function Attrs: nounwind +define i64 @test1() #0 { +; CHECK: combine(#10, #0) +entry: + store i16 0, i16* @a, align 2 + store i16 10, i16* @b, align 2 + ret i64 10 +} + +; Function Attrs: nounwind +define i64 @test2() #0 { +; CHECK: combine(#0, r{{[0-9]+}}) +entry: + store i16 0, i16* @a, align 2 + %0 = load i16* @c, align 2 + %conv2 = zext i16 %0 to i64 + ret i64 %conv2 +} + +; Function Attrs: nounwind +define i64 @test4() #0 { +; CHECK: combine(#0, ##100) +entry: + store i16 100, i16* @b, align 2 + store i16 0, i16* @a, align 2 + ret i64 0 +} diff --git a/test/CodeGen/Hexagon/union-1.ll b/test/CodeGen/Hexagon/union-1.ll index 7c6da744ec51..fe79f9510fe8 100644 --- a/test/CodeGen/Hexagon/union-1.ll +++ b/test/CodeGen/Hexagon/union-1.ll @@ -5,10 +5,10 @@ define void @word(i32* nocapture %a) nounwind { entry: - %0 = load i32* %a, align 4, !tbaa !0 + %0 = load i32* %a, align 4 %1 = zext i32 %0 to i64 %add.ptr = getelementptr inbounds i32* %a, i32 1 - %2 = load i32* %add.ptr, align 4, !tbaa !0 + %2 = load i32* %add.ptr, align 4 %3 = zext i32 %2 to i64 %4 = shl nuw i64 %3, 32 %ins = or i64 %4, %1 @@ -17,7 +17,3 @@ entry: } declare void @bar(i64) - -!0 = metadata !{metadata !"int", metadata !1} -!1 = metadata !{metadata !"omnipotent char", metadata !2} -!2 = metadata !{metadata !"Simple C/C++ TBAA"} diff --git a/test/CodeGen/Hexagon/zextloadi1.ll b/test/CodeGen/Hexagon/zextloadi1.ll index cb6e6fdf84a5..b58d9332695d 100644 --- a/test/CodeGen/Hexagon/zextloadi1.ll +++ b/test/CodeGen/Hexagon/zextloadi1.ll @@ -22,4 +22,4 @@ define void @i65_ls() nounwind { %tmp = load i65* @i65_l store i65 %tmp, i65* @i65_s ret void -}
\ No newline at end of file +} |
