Advertisement
Guest User

Untitled

a guest
Oct 9th, 2017
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 20.05 KB | None | 0 0
  1. ; ModuleID = 'cbpf_ir'
  2. source_filename = "cbpf_ir"
  3.  
  4. define i32 @main(i8*) {
  5. entry:
  6.   %A = alloca i32
  7.   %X = alloca i32
  8.   %MEM = alloca i32, i32 16
  9.   store i32 0, i32* %A
  10.   store i32 0, i32* %X
  11.   br label %insn.0
  12.  
  13. insn.0:                                           ; preds = %entry
  14.   %A1 = load i32, i32* %A
  15.   %X2 = load i32, i32* %X
  16.   %1 = call i32 @ldh(i8* %0, i32 12)
  17.   store i32 %1, i32* %A
  18.   br label %insn.1
  19.  
  20. insn.1:                                           ; preds = %insn.0
  21.   %A3 = load i32, i32* %A
  22.   %X4 = load i32, i32* %X
  23.   %2 = icmp eq i32 %A3, 34525
  24.   br i1 %2, label %insn.2, label %insn.8
  25.  
  26. insn.2:                                           ; preds = %insn.1
  27.   %A5 = load i32, i32* %A
  28.   %X6 = load i32, i32* %X
  29.   %3 = call i32 @ldb(i8* %0, i32 20)
  30.   store i32 %3, i32* %A
  31.   br label %insn.3
  32.  
  33. insn.3:                                           ; preds = %insn.2
  34.   %A7 = load i32, i32* %A
  35.   %X8 = load i32, i32* %X
  36.   %4 = icmp eq i32 %A7, 6
  37.   br i1 %4, label %insn.4, label %insn.8
  38.  
  39. insn.4:                                           ; preds = %insn.3
  40.   %A9 = load i32, i32* %A
  41.   %X10 = load i32, i32* %X
  42.   %5 = call i32 @ldh(i8* %0, i32 54)
  43.   store i32 %5, i32* %A
  44.   br label %insn.5
  45.  
  46. insn.5:                                           ; preds = %insn.4
  47.   %A11 = load i32, i32* %A
  48.   %X12 = load i32, i32* %X
  49.   %6 = icmp eq i32 %A11, 80
  50.   br i1 %6, label %insn.20, label %insn.6
  51.  
  52. insn.6:                                           ; preds = %insn.5
  53.   %A13 = load i32, i32* %A
  54.   %X14 = load i32, i32* %X
  55.   %7 = call i32 @ldh(i8* %0, i32 56)
  56.   store i32 %7, i32* %A
  57.   br label %insn.7
  58.  
  59. insn.7:                                           ; preds = %insn.6
  60.   %A15 = load i32, i32* %A
  61.   %X16 = load i32, i32* %X
  62.   %8 = icmp eq i32 %A15, 80
  63.   br i1 %8, label %insn.20, label %insn.8
  64.  
  65. insn.8:                                           ; preds = %insn.7, %insn.3, %insn.1
  66.   %A17 = load i32, i32* %A
  67.   %X18 = load i32, i32* %X
  68.   %9 = call i32 @ldh(i8* %0, i32 12)
  69.   store i32 %9, i32* %A
  70.   br label %insn.9
  71.  
  72. insn.9:                                           ; preds = %insn.8
  73.   %A19 = load i32, i32* %A
  74.   %X20 = load i32, i32* %X
  75.   %10 = icmp eq i32 %A19, 2048
  76.   br i1 %10, label %insn.10, label %insn.79
  77.  
  78. insn.10:                                          ; preds = %insn.9
  79.   %A21 = load i32, i32* %A
  80.   %X22 = load i32, i32* %X
  81.   %11 = call i32 @ldb(i8* %0, i32 23)
  82.   store i32 %11, i32* %A
  83.   br label %insn.11
  84.  
  85. insn.11:                                          ; preds = %insn.10
  86.   %A23 = load i32, i32* %A
  87.   %X24 = load i32, i32* %X
  88.   %12 = icmp eq i32 %A23, 6
  89.   br i1 %12, label %insn.12, label %insn.79
  90.  
  91. insn.12:                                          ; preds = %insn.11
  92.   %A25 = load i32, i32* %A
  93.   %X26 = load i32, i32* %X
  94.   %13 = call i32 @ldh(i8* %0, i32 20)
  95.   store i32 %13, i32* %A
  96.   br label %insn.13
  97.  
  98. insn.13:                                          ; preds = %insn.12
  99.   %A27 = load i32, i32* %A
  100.   %X28 = load i32, i32* %X
  101.   %14 = and i32 %A27, 8191
  102.   %15 = icmp sgt i32 %14, 0
  103.   br i1 %15, label %insn.79, label %insn.14
  104.  
  105. insn.14:                                          ; preds = %insn.13
  106.   %A29 = load i32, i32* %A
  107.   %X30 = load i32, i32* %X
  108.   %16 = call i32 @msh(i8* %0, i32 14)
  109.   store i32 %16, i32* %X
  110.   br label %insn.15
  111.  
  112. insn.15:                                          ; preds = %insn.14
  113.   %A31 = load i32, i32* %A
  114.   %X32 = load i32, i32* %X
  115.   %17 = add i32 %X32, 14
  116.   %18 = call i32 @ldh(i8* %0, i32 %17)
  117.   store i32 %18, i32* %A
  118.   br label %insn.16
  119.  
  120. insn.16:                                          ; preds = %insn.15
  121.   %A33 = load i32, i32* %A
  122.   %X34 = load i32, i32* %X
  123.   %19 = icmp eq i32 %A33, 80
  124.   br i1 %19, label %insn.20, label %insn.17
  125.  
  126. insn.17:                                          ; preds = %insn.16
  127.   %A35 = load i32, i32* %A
  128.   %X36 = load i32, i32* %X
  129.   %20 = call i32 @msh(i8* %0, i32 14)
  130.   store i32 %20, i32* %X
  131.   br label %insn.18
  132.  
  133. insn.18:                                          ; preds = %insn.17
  134.   %A37 = load i32, i32* %A
  135.   %X38 = load i32, i32* %X
  136.   %21 = add i32 %X38, 16
  137.   %22 = call i32 @ldh(i8* %0, i32 %21)
  138.   store i32 %22, i32* %A
  139.   br label %insn.19
  140.  
  141. insn.19:                                          ; preds = %insn.18
  142.   %A39 = load i32, i32* %A
  143.   %X40 = load i32, i32* %X
  144.   %23 = icmp eq i32 %A39, 80
  145.   br i1 %23, label %insn.20, label %insn.79
  146.  
  147. insn.20:                                          ; preds = %insn.19, %insn.16, %insn.7, %insn.5
  148.   %A41 = load i32, i32* %A
  149.   %X42 = load i32, i32* %X
  150.   %24 = call i32 @ldh(i8* %0, i32 12)
  151.   store i32 %24, i32* %A
  152.   br label %insn.21
  153.  
  154. insn.21:                                          ; preds = %insn.20
  155.   %A43 = load i32, i32* %A
  156.   %X44 = load i32, i32* %X
  157.   %25 = icmp eq i32 %A43, 2048
  158.   br i1 %25, label %insn.22, label %insn.79
  159.  
  160. insn.22:                                          ; preds = %insn.21
  161.   %A45 = load i32, i32* %A
  162.   %X46 = load i32, i32* %X
  163.   store i32 2, i32* %A
  164.   br label %insn.23
  165.  
  166. insn.23:                                          ; preds = %insn.22
  167.   %A47 = load i32, i32* %A
  168.   %X48 = load i32, i32* %X
  169.   %26 = getelementptr inbounds i32, i32* %MEM, i32 0
  170.   store i32 %A47, i32* %26
  171.   br label %insn.24
  172.  
  173. insn.24:                                          ; preds = %insn.23
  174.   %A49 = load i32, i32* %A
  175.   %X50 = load i32, i32* %X
  176.   %27 = getelementptr inbounds i32, i32* %MEM, i32 0
  177.   %28 = load i32, i32* %27
  178.   store i32 %28, i32* %X
  179.   br label %insn.25
  180.  
  181. insn.25:                                          ; preds = %insn.24
  182.   %A51 = load i32, i32* %A
  183.   %X52 = load i32, i32* %X
  184.   %29 = add i32 %X52, 14
  185.   %30 = call i32 @ldh(i8* %0, i32 %29)
  186.   store i32 %30, i32* %A
  187.   br label %insn.26
  188.  
  189. insn.26:                                          ; preds = %insn.25
  190.   %A53 = load i32, i32* %A
  191.   %X54 = load i32, i32* %X
  192.   %31 = getelementptr inbounds i32, i32* %MEM, i32 1
  193.   store i32 %A53, i32* %31
  194.   br label %insn.27
  195.  
  196. insn.27:                                          ; preds = %insn.26
  197.   %A55 = load i32, i32* %A
  198.   %X56 = load i32, i32* %X
  199.   store i32 0, i32* %A
  200.   br label %insn.28
  201.  
  202. insn.28:                                          ; preds = %insn.27
  203.   %A57 = load i32, i32* %A
  204.   %X58 = load i32, i32* %X
  205.   %32 = getelementptr inbounds i32, i32* %MEM, i32 2
  206.   store i32 %A57, i32* %32
  207.   br label %insn.29
  208.  
  209. insn.29:                                          ; preds = %insn.28
  210.   %A59 = load i32, i32* %A
  211.   %X60 = load i32, i32* %X
  212.   %33 = getelementptr inbounds i32, i32* %MEM, i32 2
  213.   %34 = load i32, i32* %33
  214.   store i32 %34, i32* %X
  215.   br label %insn.30
  216.  
  217. insn.30:                                          ; preds = %insn.29
  218.   %A61 = load i32, i32* %A
  219.   %X62 = load i32, i32* %X
  220.   %35 = add i32 %X62, 14
  221.   %36 = call i32 @ldb(i8* %0, i32 %35)
  222.   store i32 %36, i32* %A
  223.   br label %insn.31
  224.  
  225. insn.31:                                          ; preds = %insn.30
  226.   %A63 = load i32, i32* %A
  227.   %X64 = load i32, i32* %X
  228.   %37 = getelementptr inbounds i32, i32* %MEM, i32 3
  229.   store i32 %A63, i32* %37
  230.   br label %insn.32
  231.  
  232. insn.32:                                          ; preds = %insn.31
  233.   %A65 = load i32, i32* %A
  234.   %X66 = load i32, i32* %X
  235.   store i32 15, i32* %A
  236.   br label %insn.33
  237.  
  238. insn.33:                                          ; preds = %insn.32
  239.   %A67 = load i32, i32* %A
  240.   %X68 = load i32, i32* %X
  241.   %38 = getelementptr inbounds i32, i32* %MEM, i32 4
  242.   store i32 %A67, i32* %38
  243.   br label %insn.34
  244.  
  245. insn.34:                                          ; preds = %insn.33
  246.   %A69 = load i32, i32* %A
  247.   %X70 = load i32, i32* %X
  248.   %39 = getelementptr inbounds i32, i32* %MEM, i32 4
  249.   %40 = load i32, i32* %39
  250.   store i32 %40, i32* %X
  251.   br label %insn.35
  252.  
  253. insn.35:                                          ; preds = %insn.34
  254.   %A71 = load i32, i32* %A
  255.   %X72 = load i32, i32* %X
  256.   %41 = getelementptr inbounds i32, i32* %MEM, i32 3
  257.   %42 = load i32, i32* %41
  258.   store i32 %42, i32* %A
  259.   br label %insn.36
  260.  
  261. insn.36:                                          ; preds = %insn.35
  262.   %A73 = load i32, i32* %A
  263.   %X74 = load i32, i32* %X
  264.   %43 = and i32 %A73, %X74
  265.   store i32 %43, i32* %A
  266.   br label %insn.37
  267.  
  268. insn.37:                                          ; preds = %insn.36
  269.   %A75 = load i32, i32* %A
  270.   %X76 = load i32, i32* %X
  271.   %44 = getelementptr inbounds i32, i32* %MEM, i32 4
  272.   store i32 %A75, i32* %44
  273.   br label %insn.38
  274.  
  275. insn.38:                                          ; preds = %insn.37
  276.   %A77 = load i32, i32* %A
  277.   %X78 = load i32, i32* %X
  278.   store i32 2, i32* %A
  279.   br label %insn.39
  280.  
  281. insn.39:                                          ; preds = %insn.38
  282.   %A79 = load i32, i32* %A
  283.   %X80 = load i32, i32* %X
  284.   %45 = getelementptr inbounds i32, i32* %MEM, i32 5
  285.   store i32 %A79, i32* %45
  286.   br label %insn.40
  287.  
  288. insn.40:                                          ; preds = %insn.39
  289.   %A81 = load i32, i32* %A
  290.   %X82 = load i32, i32* %X
  291.   %46 = getelementptr inbounds i32, i32* %MEM, i32 5
  292.   %47 = load i32, i32* %46
  293.   store i32 %47, i32* %X
  294.   br label %insn.41
  295.  
  296. insn.41:                                          ; preds = %insn.40
  297.   %A83 = load i32, i32* %A
  298.   %X84 = load i32, i32* %X
  299.   %48 = getelementptr inbounds i32, i32* %MEM, i32 4
  300.   %49 = load i32, i32* %48
  301.   store i32 %49, i32* %A
  302.   br label %insn.42
  303.  
  304. insn.42:                                          ; preds = %insn.41
  305.   %A85 = load i32, i32* %A
  306.   %X86 = load i32, i32* %X
  307.   %50 = shl i32 %A85, %X86
  308.   store i32 %50, i32* %A
  309.   br label %insn.43
  310.  
  311. insn.43:                                          ; preds = %insn.42
  312.   %A87 = load i32, i32* %A
  313.   %X88 = load i32, i32* %X
  314.   %51 = getelementptr inbounds i32, i32* %MEM, i32 5
  315.   store i32 %A87, i32* %51
  316.   br label %insn.44
  317.  
  318. insn.44:                                          ; preds = %insn.43
  319.   %A89 = load i32, i32* %A
  320.   %X90 = load i32, i32* %X
  321.   %52 = getelementptr inbounds i32, i32* %MEM, i32 5
  322.   %53 = load i32, i32* %52
  323.   store i32 %53, i32* %X
  324.   br label %insn.45
  325.  
  326. insn.45:                                          ; preds = %insn.44
  327.   %A91 = load i32, i32* %A
  328.   %X92 = load i32, i32* %X
  329.   %54 = getelementptr inbounds i32, i32* %MEM, i32 1
  330.   %55 = load i32, i32* %54
  331.   store i32 %55, i32* %A
  332.   br label %insn.46
  333.  
  334. insn.46:                                          ; preds = %insn.45
  335.   %A93 = load i32, i32* %A
  336.   %X94 = load i32, i32* %X
  337.   %56 = sub i32 %A93, %X94
  338.   store i32 %56, i32* %A
  339.   br label %insn.47
  340.  
  341. insn.47:                                          ; preds = %insn.46
  342.   %A95 = load i32, i32* %A
  343.   %X96 = load i32, i32* %X
  344.   %57 = getelementptr inbounds i32, i32* %MEM, i32 5
  345.   store i32 %A95, i32* %57
  346.   br label %insn.48
  347.  
  348. insn.48:                                          ; preds = %insn.47
  349.   %A97 = load i32, i32* %A
  350.   %X98 = load i32, i32* %X
  351.   store i32 12, i32* %A
  352.   br label %insn.49
  353.  
  354. insn.49:                                          ; preds = %insn.48
  355.   %A99 = load i32, i32* %A
  356.   %X100 = load i32, i32* %X
  357.   %58 = getelementptr inbounds i32, i32* %MEM, i32 6
  358.   store i32 %A99, i32* %58
  359.   br label %insn.50
  360.  
  361. insn.50:                                          ; preds = %insn.49
  362.   %A101 = load i32, i32* %A
  363.   %X102 = load i32, i32* %X
  364.   %59 = call i32 @msh(i8* %0, i32 14)
  365.   store i32 %59, i32* %X
  366.   br label %insn.51
  367.  
  368. insn.51:                                          ; preds = %insn.50
  369.   %A103 = load i32, i32* %A
  370.   %X104 = load i32, i32* %X
  371.   %60 = getelementptr inbounds i32, i32* %MEM, i32 6
  372.   %61 = load i32, i32* %60
  373.   store i32 %61, i32* %A
  374.   br label %insn.52
  375.  
  376. insn.52:                                          ; preds = %insn.51
  377.   %A105 = load i32, i32* %A
  378.   %X106 = load i32, i32* %X
  379.   %62 = add i32 %A105, %X106
  380.   store i32 %62, i32* %A
  381.   br label %insn.53
  382.  
  383. insn.53:                                          ; preds = %insn.52
  384.   %A107 = load i32, i32* %A
  385.   %X108 = load i32, i32* %X
  386.   store i32 %A107, i32* %X
  387.   br label %insn.54
  388.  
  389. insn.54:                                          ; preds = %insn.53
  390.   %A109 = load i32, i32* %A
  391.   %X110 = load i32, i32* %X
  392.   %63 = add i32 %X110, 14
  393.   %64 = call i32 @ldb(i8* %0, i32 %63)
  394.   store i32 %64, i32* %A
  395.   br label %insn.55
  396.  
  397. insn.55:                                          ; preds = %insn.54
  398.   %A111 = load i32, i32* %A
  399.   %X112 = load i32, i32* %X
  400.   %65 = getelementptr inbounds i32, i32* %MEM, i32 7
  401.   store i32 %A111, i32* %65
  402.   br label %insn.56
  403.  
  404. insn.56:                                          ; preds = %insn.55
  405.   %A113 = load i32, i32* %A
  406.   %X114 = load i32, i32* %X
  407.   store i32 240, i32* %A
  408.   br label %insn.57
  409.  
  410. insn.57:                                          ; preds = %insn.56
  411.   %A115 = load i32, i32* %A
  412.   %X116 = load i32, i32* %X
  413.   %66 = getelementptr inbounds i32, i32* %MEM, i32 8
  414.   store i32 %A115, i32* %66
  415.   br label %insn.58
  416.  
  417. insn.58:                                          ; preds = %insn.57
  418.   %A117 = load i32, i32* %A
  419.   %X118 = load i32, i32* %X
  420.   %67 = getelementptr inbounds i32, i32* %MEM, i32 8
  421.   %68 = load i32, i32* %67
  422.   store i32 %68, i32* %X
  423.   br label %insn.59
  424.  
  425. insn.59:                                          ; preds = %insn.58
  426.   %A119 = load i32, i32* %A
  427.   %X120 = load i32, i32* %X
  428.   %69 = getelementptr inbounds i32, i32* %MEM, i32 7
  429.   %70 = load i32, i32* %69
  430.   store i32 %70, i32* %A
  431.   br label %insn.60
  432.  
  433. insn.60:                                          ; preds = %insn.59
  434.   %A121 = load i32, i32* %A
  435.   %X122 = load i32, i32* %X
  436.   %71 = and i32 %A121, %X122
  437.   store i32 %71, i32* %A
  438.   br label %insn.61
  439.  
  440. insn.61:                                          ; preds = %insn.60
  441.   %A123 = load i32, i32* %A
  442.   %X124 = load i32, i32* %X
  443.   %72 = getelementptr inbounds i32, i32* %MEM, i32 8
  444.   store i32 %A123, i32* %72
  445.   br label %insn.62
  446.  
  447. insn.62:                                          ; preds = %insn.61
  448.   %A125 = load i32, i32* %A
  449.   %X126 = load i32, i32* %X
  450.   store i32 2, i32* %A
  451.   br label %insn.63
  452.  
  453. insn.63:                                          ; preds = %insn.62
  454.   %A127 = load i32, i32* %A
  455.   %X128 = load i32, i32* %X
  456.   %73 = getelementptr inbounds i32, i32* %MEM, i32 9
  457.   store i32 %A127, i32* %73
  458.   br label %insn.64
  459.  
  460. insn.64:                                          ; preds = %insn.63
  461.   %A129 = load i32, i32* %A
  462.   %X130 = load i32, i32* %X
  463.   %74 = getelementptr inbounds i32, i32* %MEM, i32 9
  464.   %75 = load i32, i32* %74
  465.   store i32 %75, i32* %X
  466.   br label %insn.65
  467.  
  468. insn.65:                                          ; preds = %insn.64
  469.   %A131 = load i32, i32* %A
  470.   %X132 = load i32, i32* %X
  471.   %76 = getelementptr inbounds i32, i32* %MEM, i32 8
  472.   %77 = load i32, i32* %76
  473.   store i32 %77, i32* %A
  474.   br label %insn.66
  475.  
  476. insn.66:                                          ; preds = %insn.65
  477.   %A133 = load i32, i32* %A
  478.   %X134 = load i32, i32* %X
  479.   %78 = ashr i32 %A133, %X134
  480.   store i32 %78, i32* %A
  481.   br label %insn.67
  482.  
  483. insn.67:                                          ; preds = %insn.66
  484.   %A135 = load i32, i32* %A
  485.   %X136 = load i32, i32* %X
  486.   %79 = getelementptr inbounds i32, i32* %MEM, i32 9
  487.   store i32 %A135, i32* %79
  488.   br label %insn.68
  489.  
  490. insn.68:                                          ; preds = %insn.67
  491.   %A137 = load i32, i32* %A
  492.   %X138 = load i32, i32* %X
  493.   %80 = getelementptr inbounds i32, i32* %MEM, i32 9
  494.   %81 = load i32, i32* %80
  495.   store i32 %81, i32* %X
  496.   br label %insn.69
  497.  
  498. insn.69:                                          ; preds = %insn.68
  499.   %A139 = load i32, i32* %A
  500.   %X140 = load i32, i32* %X
  501.   %82 = getelementptr inbounds i32, i32* %MEM, i32 5
  502.   %83 = load i32, i32* %82
  503.   store i32 %83, i32* %A
  504.   br label %insn.70
  505.  
  506. insn.70:                                          ; preds = %insn.69
  507.   %A141 = load i32, i32* %A
  508.   %X142 = load i32, i32* %X
  509.   %84 = sub i32 %A141, %X142
  510.   store i32 %84, i32* %A
  511.   br label %insn.71
  512.  
  513. insn.71:                                          ; preds = %insn.70
  514.   %A143 = load i32, i32* %A
  515.   %X144 = load i32, i32* %X
  516.   %85 = getelementptr inbounds i32, i32* %MEM, i32 9
  517.   store i32 %A143, i32* %85
  518.   br label %insn.72
  519.  
  520. insn.72:                                          ; preds = %insn.71
  521.   %A145 = load i32, i32* %A
  522.   %X146 = load i32, i32* %X
  523.   store i32 0, i32* %A
  524.   br label %insn.73
  525.  
  526. insn.73:                                          ; preds = %insn.72
  527.   %A147 = load i32, i32* %A
  528.   %X148 = load i32, i32* %X
  529.   %86 = getelementptr inbounds i32, i32* %MEM, i32 10
  530.   store i32 %A147, i32* %86
  531.   br label %insn.74
  532.  
  533. insn.74:                                          ; preds = %insn.73
  534.   %A149 = load i32, i32* %A
  535.   %X150 = load i32, i32* %X
  536.   %87 = getelementptr inbounds i32, i32* %MEM, i32 10
  537.   %88 = load i32, i32* %87
  538.   store i32 %88, i32* %X
  539.   br label %insn.75
  540.  
  541. insn.75:                                          ; preds = %insn.74
  542.   %A151 = load i32, i32* %A
  543.   %X152 = load i32, i32* %X
  544.   %89 = getelementptr inbounds i32, i32* %MEM, i32 9
  545.   %90 = load i32, i32* %89
  546.   store i32 %90, i32* %A
  547.   br label %insn.76
  548.  
  549. insn.76:                                          ; preds = %insn.75
  550.   %A153 = load i32, i32* %A
  551.   %X154 = load i32, i32* %X
  552.   %91 = sub i32 %A153, %X154
  553.   store i32 %91, i32* %A
  554.   br label %insn.77
  555.  
  556. insn.77:                                          ; preds = %insn.76
  557.   %A155 = load i32, i32* %A
  558.   %X156 = load i32, i32* %X
  559.   %92 = icmp eq i32 %A155, 0
  560.   br i1 %92, label %insn.79, label %insn.78
  561.  
  562. insn.78:                                          ; preds = %insn.77
  563.   %A157 = load i32, i32* %A
  564.   %X158 = load i32, i32* %X
  565.   ret i32 65535
  566.  
  567. insn.79:                                          ; preds = %insn.77, %insn.21, %insn.19, %insn.13, %insn.11, %insn.9
  568.   %A159 = load i32, i32* %A
  569.   %X160 = load i32, i32* %X
  570.   ret i32 0
  571. }
  572.  
  573. define i32 @be(i32) {
  574.   %2 = alloca i32, align 4
  575.   store i32 %0, i32* %2, align 4
  576.   %3 = load i32, i32* %2, align 4
  577.   %4 = and i32 %3, 255
  578.   %5 = shl i32 %4, 24
  579.   %6 = load i32, i32* %2, align 4
  580.   %7 = ashr i32 %6, 8
  581.   %8 = and i32 %7, 255
  582.   %9 = shl i32 %8, 16
  583.   %10 = or i32 %5, %9
  584.   %11 = load i32, i32* %2, align 4
  585.   %12 = ashr i32 %11, 16
  586.   %13 = and i32 %12, 255
  587.   %14 = shl i32 %13, 8
  588.   %15 = or i32 %10, %14
  589.   %16 = load i32, i32* %2, align 4
  590.   %17 = ashr i32 %16, 24
  591.   %18 = and i32 %17, 255
  592.   %19 = or i32 %15, %18
  593.   ret i32 %19
  594. }
  595.  
  596. define i32 @ldw(i8*, i32) {
  597.   %3 = alloca i8*, align 8
  598.   %4 = alloca i32, align 4
  599.   %5 = alloca i32, align 4
  600.   store i8* %0, i8** %3, align 8
  601.   store i32 %1, i32* %4, align 4
  602.   %6 = load i8*, i8** %3, align 8
  603.   %7 = load i32, i32* %4, align 4
  604.   %8 = sext i32 %7 to i64
  605.   %9 = getelementptr inbounds i8, i8* %6, i64 %8
  606.   %10 = bitcast i8* %9 to i32*
  607.   %11 = load i32, i32* %10, align 4
  608.   store i32 %11, i32* %5, align 4
  609.   %12 = load i32, i32* %5, align 4
  610.   %13 = call i32 @be(i32 %12)
  611.   ret i32 %13
  612. }
  613.  
  614. define i32 @ldh(i8*, i32) {
  615.   %3 = alloca i8*, align 8
  616.   %4 = alloca i32, align 4
  617.   %5 = alloca i32, align 4
  618.   store i8* %0, i8** %3, align 8
  619.   store i32 %1, i32* %4, align 4
  620.   %6 = load i8*, i8** %3, align 8
  621.   %7 = load i32, i32* %4, align 4
  622.   %8 = sext i32 %7 to i64
  623.   %9 = getelementptr inbounds i8, i8* %6, i64 %8
  624.   %10 = load i8, i8* %9, align 1
  625.   %11 = zext i8 %10 to i32
  626.   %12 = shl i32 %11, 8
  627.   %13 = load i8*, i8** %3, align 8
  628.   %14 = load i32, i32* %4, align 4
  629.   %15 = sext i32 %14 to i64
  630.   %16 = getelementptr inbounds i8, i8* %13, i64 %15
  631.   %17 = getelementptr inbounds i8, i8* %16, i64 1
  632.   %18 = load i8, i8* %17, align 1
  633.   %19 = zext i8 %18 to i32
  634.   %20 = or i32 %12, %19
  635.   store i32 %20, i32* %5, align 4
  636.   %21 = load i32, i32* %5, align 4
  637.   ret i32 %21
  638. }
  639.  
  640. define i32 @ldb(i8*, i32) {
  641.   %3 = alloca i8*, align 8
  642.   %4 = alloca i32, align 4
  643.   store i8* %0, i8** %3, align 8
  644.   store i32 %1, i32* %4, align 4
  645.   %5 = load i8*, i8** %3, align 8
  646.   %6 = load i32, i32* %4, align 4
  647.   %7 = sext i32 %6 to i64
  648.   %8 = getelementptr inbounds i8, i8* %5, i64 %7
  649.   %9 = load i8, i8* %8, align 1
  650.   %10 = zext i8 %9 to i32
  651.   ret i32 %10
  652. }
  653.  
  654. define i32 @msh(i8*, i32) {
  655.   %3 = alloca i8*, align 8
  656.   %4 = alloca i32, align 4
  657.   store i8* %0, i8** %3, align 8
  658.   store i32 %1, i32* %4, align 4
  659.   %5 = load i8*, i8** %3, align 8
  660.   %6 = load i32, i32* %4, align 4
  661.   %7 = call i32 @ldb(i8* %5, i32 %6)
  662.   %8 = and i32 %7, 15
  663.   %9 = shl i32 %8, 2
  664.   ret i32 %9
  665. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement